Skip to main content

atrium_api/tools/ozone/moderation/
defs.rs

1// @generated - This file is generated by atrium-codegen. DO NOT EDIT.
2//!Definitions for the `tools.ozone.moderation.defs` namespace.
3///Logs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
4#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
5#[serde(rename_all = "camelCase")]
6pub struct AccountEventData {
7    ///Indicates that the account has a repository which can be fetched from the host that emitted this event.
8    pub active: bool,
9    #[serde(skip_serializing_if = "core::option::Option::is_none")]
10    pub comment: core::option::Option<String>,
11    #[serde(skip_serializing_if = "core::option::Option::is_none")]
12    pub status: core::option::Option<String>,
13    pub timestamp: crate::types::string::Datetime,
14}
15pub type AccountEvent = crate::types::Object<AccountEventData>;
16#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
17#[serde(rename_all = "camelCase")]
18pub struct AccountHostingData {
19    #[serde(skip_serializing_if = "core::option::Option::is_none")]
20    pub created_at: core::option::Option<crate::types::string::Datetime>,
21    #[serde(skip_serializing_if = "core::option::Option::is_none")]
22    pub deactivated_at: core::option::Option<crate::types::string::Datetime>,
23    #[serde(skip_serializing_if = "core::option::Option::is_none")]
24    pub deleted_at: core::option::Option<crate::types::string::Datetime>,
25    #[serde(skip_serializing_if = "core::option::Option::is_none")]
26    pub reactivated_at: core::option::Option<crate::types::string::Datetime>,
27    pub status: String,
28    #[serde(skip_serializing_if = "core::option::Option::is_none")]
29    pub updated_at: core::option::Option<crate::types::string::Datetime>,
30}
31pub type AccountHosting = crate::types::Object<AccountHostingData>;
32///Statistics about a particular account subject
33#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
34#[serde(rename_all = "camelCase")]
35pub struct AccountStatsData {
36    ///Total number of appeals against a moderation action on the account
37    #[serde(skip_serializing_if = "core::option::Option::is_none")]
38    pub appeal_count: core::option::Option<i64>,
39    ///Number of times the account was escalated
40    #[serde(skip_serializing_if = "core::option::Option::is_none")]
41    pub escalate_count: core::option::Option<i64>,
42    ///Total number of reports on the account
43    #[serde(skip_serializing_if = "core::option::Option::is_none")]
44    pub report_count: core::option::Option<i64>,
45    ///Number of times the account was suspended
46    #[serde(skip_serializing_if = "core::option::Option::is_none")]
47    pub suspend_count: core::option::Option<i64>,
48    ///Number of times the account was taken down
49    #[serde(skip_serializing_if = "core::option::Option::is_none")]
50    pub takedown_count: core::option::Option<i64>,
51}
52pub type AccountStats = crate::types::Object<AccountStatsData>;
53///Strike information for an account
54#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
55#[serde(rename_all = "camelCase")]
56pub struct AccountStrikeData {
57    ///Current number of active strikes (excluding expired strikes)
58    #[serde(skip_serializing_if = "core::option::Option::is_none")]
59    pub active_strike_count: core::option::Option<i64>,
60    ///Timestamp of the first strike received
61    #[serde(skip_serializing_if = "core::option::Option::is_none")]
62    pub first_strike_at: core::option::Option<crate::types::string::Datetime>,
63    ///Timestamp of the most recent strike received
64    #[serde(skip_serializing_if = "core::option::Option::is_none")]
65    pub last_strike_at: core::option::Option<crate::types::string::Datetime>,
66    ///Total number of strikes ever received (including expired strikes)
67    #[serde(skip_serializing_if = "core::option::Option::is_none")]
68    pub total_strike_count: core::option::Option<i64>,
69}
70pub type AccountStrike = crate::types::Object<AccountStrikeData>;
71///Age assurance info coming directly from users. Only works on DID subjects.
72#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
73#[serde(rename_all = "camelCase")]
74pub struct AgeAssuranceEventData {
75    #[serde(skip_serializing_if = "core::option::Option::is_none")]
76    pub access: core::option::Option<crate::app::bsky::ageassurance::defs::Access>,
77    ///The unique identifier for this instance of the age assurance flow, in UUID format.
78    pub attempt_id: String,
79    ///The IP address used when completing the AA flow.
80    #[serde(skip_serializing_if = "core::option::Option::is_none")]
81    pub complete_ip: core::option::Option<String>,
82    ///The user agent used when completing the AA flow.
83    #[serde(skip_serializing_if = "core::option::Option::is_none")]
84    pub complete_ua: core::option::Option<String>,
85    ///The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow.
86    #[serde(skip_serializing_if = "core::option::Option::is_none")]
87    pub country_code: core::option::Option<String>,
88    ///The date and time of this write operation.
89    pub created_at: crate::types::string::Datetime,
90    ///The IP address used when initiating the AA flow.
91    #[serde(skip_serializing_if = "core::option::Option::is_none")]
92    pub init_ip: core::option::Option<String>,
93    ///The user agent used when initiating the AA flow.
94    #[serde(skip_serializing_if = "core::option::Option::is_none")]
95    pub init_ua: core::option::Option<String>,
96    ///The ISO 3166-2 region code provided when beginning the Age Assurance flow.
97    #[serde(skip_serializing_if = "core::option::Option::is_none")]
98    pub region_code: core::option::Option<String>,
99    ///The status of the Age Assurance process.
100    pub status: String,
101}
102pub type AgeAssuranceEvent = crate::types::Object<AgeAssuranceEventData>;
103///Age assurance status override by moderators. Only works on DID subjects.
104#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
105#[serde(rename_all = "camelCase")]
106pub struct AgeAssuranceOverrideEventData {
107    #[serde(skip_serializing_if = "core::option::Option::is_none")]
108    pub access: core::option::Option<crate::app::bsky::ageassurance::defs::Access>,
109    ///Comment describing the reason for the override.
110    pub comment: String,
111    ///The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state.
112    pub status: String,
113}
114pub type AgeAssuranceOverrideEvent = crate::types::Object<AgeAssuranceOverrideEventData>;
115///Purges all age assurance events for the subject. Only works on DID subjects. Moderator-only.
116#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
117#[serde(rename_all = "camelCase")]
118pub struct AgeAssurancePurgeEventData {
119    ///Comment describing the reason for the purge.
120    pub comment: String,
121}
122pub type AgeAssurancePurgeEvent = crate::types::Object<AgeAssurancePurgeEventData>;
123#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
124#[serde(rename_all = "camelCase")]
125pub struct BlobViewData {
126    pub cid: crate::types::string::Cid,
127    pub created_at: crate::types::string::Datetime,
128    #[serde(skip_serializing_if = "core::option::Option::is_none")]
129    pub details: core::option::Option<crate::types::Union<BlobViewDetailsRefs>>,
130    pub mime_type: String,
131    #[serde(skip_serializing_if = "core::option::Option::is_none")]
132    pub moderation: core::option::Option<Moderation>,
133    pub size: i64,
134}
135pub type BlobView = crate::types::Object<BlobViewData>;
136///Logs cancellation of a scheduled takedown action for an account.
137#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
138#[serde(rename_all = "camelCase")]
139pub struct CancelScheduledTakedownEventData {
140    #[serde(skip_serializing_if = "core::option::Option::is_none")]
141    pub comment: core::option::Option<String>,
142}
143pub type CancelScheduledTakedownEvent = crate::types::Object<
144    CancelScheduledTakedownEventData,
145>;
146#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
147#[serde(rename_all = "camelCase")]
148pub struct ConvoViewData {
149    pub convo_id: String,
150    pub did: crate::types::string::Did,
151}
152pub type ConvoView = crate::types::Object<ConvoViewData>;
153///Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
154#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
155#[serde(rename_all = "camelCase")]
156pub struct IdentityEventData {
157    #[serde(skip_serializing_if = "core::option::Option::is_none")]
158    pub comment: core::option::Option<String>,
159    #[serde(skip_serializing_if = "core::option::Option::is_none")]
160    pub handle: core::option::Option<crate::types::string::Handle>,
161    #[serde(skip_serializing_if = "core::option::Option::is_none")]
162    pub pds_host: core::option::Option<String>,
163    pub timestamp: crate::types::string::Datetime,
164    #[serde(skip_serializing_if = "core::option::Option::is_none")]
165    pub tombstone: core::option::Option<bool>,
166}
167pub type IdentityEvent = crate::types::Object<IdentityEventData>;
168#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
169#[serde(rename_all = "camelCase")]
170pub struct ImageDetailsData {
171    pub height: i64,
172    pub width: i64,
173}
174pub type ImageDetails = crate::types::Object<ImageDetailsData>;
175#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
176#[serde(rename_all = "camelCase")]
177pub struct ModEventAcknowledgeData {
178    ///If true, all other reports on content authored by this account will be resolved (acknowledged).
179    #[serde(skip_serializing_if = "core::option::Option::is_none")]
180    pub acknowledge_account_subjects: core::option::Option<bool>,
181    #[serde(skip_serializing_if = "core::option::Option::is_none")]
182    pub comment: core::option::Option<String>,
183}
184pub type ModEventAcknowledge = crate::types::Object<ModEventAcknowledgeData>;
185///Add a comment to a subject. An empty comment will clear any previously set sticky comment.
186#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
187#[serde(rename_all = "camelCase")]
188pub struct ModEventCommentData {
189    #[serde(skip_serializing_if = "core::option::Option::is_none")]
190    pub comment: core::option::Option<String>,
191    ///Make the comment persistent on the subject
192    #[serde(skip_serializing_if = "core::option::Option::is_none")]
193    pub sticky: core::option::Option<bool>,
194}
195pub type ModEventComment = crate::types::Object<ModEventCommentData>;
196///Divert a record's blobs to a 3rd party service for further scanning/tagging
197#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
198#[serde(rename_all = "camelCase")]
199pub struct ModEventDivertData {
200    #[serde(skip_serializing_if = "core::option::Option::is_none")]
201    pub comment: core::option::Option<String>,
202}
203pub type ModEventDivert = crate::types::Object<ModEventDivertData>;
204///Keep a log of outgoing email to a user
205#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
206#[serde(rename_all = "camelCase")]
207pub struct ModEventEmailData {
208    ///Additional comment about the outgoing comm.
209    #[serde(skip_serializing_if = "core::option::Option::is_none")]
210    pub comment: core::option::Option<String>,
211    ///The content of the email sent to the user.
212    #[serde(skip_serializing_if = "core::option::Option::is_none")]
213    pub content: core::option::Option<String>,
214    ///Indicates whether the email was successfully delivered to the user's inbox.
215    #[serde(skip_serializing_if = "core::option::Option::is_none")]
216    pub is_delivered: core::option::Option<bool>,
217    ///Names/Keywords of the policies that necessitated the email.
218    #[serde(skip_serializing_if = "core::option::Option::is_none")]
219    pub policies: core::option::Option<Vec<String>>,
220    ///Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense
221    #[serde(skip_serializing_if = "core::option::Option::is_none")]
222    pub severity_level: core::option::Option<String>,
223    ///Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense.
224    #[serde(skip_serializing_if = "core::option::Option::is_none")]
225    pub strike_count: core::option::Option<i64>,
226    ///When the strike should expire. If not provided, the strike never expires.
227    #[serde(skip_serializing_if = "core::option::Option::is_none")]
228    pub strike_expires_at: core::option::Option<crate::types::string::Datetime>,
229    ///The subject line of the email sent to the user.
230    pub subject_line: String,
231}
232pub type ModEventEmail = crate::types::Object<ModEventEmailData>;
233#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
234#[serde(rename_all = "camelCase")]
235pub struct ModEventEscalateData {
236    #[serde(skip_serializing_if = "core::option::Option::is_none")]
237    pub comment: core::option::Option<String>,
238}
239pub type ModEventEscalate = crate::types::Object<ModEventEscalateData>;
240///Apply/Negate labels on a subject
241#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
242#[serde(rename_all = "camelCase")]
243pub struct ModEventLabelData {
244    #[serde(skip_serializing_if = "core::option::Option::is_none")]
245    pub comment: core::option::Option<String>,
246    pub create_label_vals: Vec<String>,
247    ///Indicates how long the label will remain on the subject. Only applies on labels that are being added.
248    #[serde(skip_serializing_if = "core::option::Option::is_none")]
249    pub duration_in_hours: core::option::Option<i64>,
250    pub negate_label_vals: Vec<String>,
251}
252pub type ModEventLabel = crate::types::Object<ModEventLabelData>;
253///Mute incoming reports on a subject
254#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
255#[serde(rename_all = "camelCase")]
256pub struct ModEventMuteData {
257    #[serde(skip_serializing_if = "core::option::Option::is_none")]
258    pub comment: core::option::Option<String>,
259    ///Indicates how long the subject should remain muted.
260    pub duration_in_hours: i64,
261}
262pub type ModEventMute = crate::types::Object<ModEventMuteData>;
263///Mute incoming reports from an account
264#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
265#[serde(rename_all = "camelCase")]
266pub struct ModEventMuteReporterData {
267    #[serde(skip_serializing_if = "core::option::Option::is_none")]
268    pub comment: core::option::Option<String>,
269    ///Indicates how long the account should remain muted. Falsy value here means a permanent mute.
270    #[serde(skip_serializing_if = "core::option::Option::is_none")]
271    pub duration_in_hours: core::option::Option<i64>,
272}
273pub type ModEventMuteReporter = crate::types::Object<ModEventMuteReporterData>;
274///Set priority score of the subject. Higher score means higher priority.
275#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
276#[serde(rename_all = "camelCase")]
277pub struct ModEventPriorityScoreData {
278    #[serde(skip_serializing_if = "core::option::Option::is_none")]
279    pub comment: core::option::Option<String>,
280    pub score: crate::types::LimitedU8<100u8>,
281}
282pub type ModEventPriorityScore = crate::types::Object<ModEventPriorityScoreData>;
283///Report a subject
284#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
285#[serde(rename_all = "camelCase")]
286pub struct ModEventReportData {
287    #[serde(skip_serializing_if = "core::option::Option::is_none")]
288    pub comment: core::option::Option<String>,
289    ///Set to true if the reporter was muted from reporting at the time of the event. These reports won't impact the reviewState of the subject.
290    #[serde(skip_serializing_if = "core::option::Option::is_none")]
291    pub is_reporter_muted: core::option::Option<bool>,
292    pub report_type: crate::com::atproto::moderation::defs::ReasonType,
293}
294pub type ModEventReport = crate::types::Object<ModEventReportData>;
295///Resolve appeal on a subject
296#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
297#[serde(rename_all = "camelCase")]
298pub struct ModEventResolveAppealData {
299    ///Describe resolution.
300    #[serde(skip_serializing_if = "core::option::Option::is_none")]
301    pub comment: core::option::Option<String>,
302}
303pub type ModEventResolveAppeal = crate::types::Object<ModEventResolveAppealData>;
304///Revert take down action on a subject
305#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
306#[serde(rename_all = "camelCase")]
307pub struct ModEventReverseTakedownData {
308    ///Describe reasoning behind the reversal.
309    #[serde(skip_serializing_if = "core::option::Option::is_none")]
310    pub comment: core::option::Option<String>,
311    ///Names/Keywords of the policy infraction for which takedown is being reversed.
312    #[serde(skip_serializing_if = "core::option::Option::is_none")]
313    pub policies: core::option::Option<Vec<String>>,
314    ///Severity level of the violation. Usually set from the last policy infraction's severity.
315    #[serde(skip_serializing_if = "core::option::Option::is_none")]
316    pub severity_level: core::option::Option<String>,
317    ///Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity.
318    #[serde(skip_serializing_if = "core::option::Option::is_none")]
319    pub strike_count: core::option::Option<i64>,
320}
321pub type ModEventReverseTakedown = crate::types::Object<ModEventReverseTakedownData>;
322///Add/Remove a tag on a subject
323#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
324#[serde(rename_all = "camelCase")]
325pub struct ModEventTagData {
326    ///Tags to be added to the subject. If already exists, won't be duplicated.
327    pub add: Vec<String>,
328    ///Additional comment about added/removed tags.
329    #[serde(skip_serializing_if = "core::option::Option::is_none")]
330    pub comment: core::option::Option<String>,
331    ///Indicates how long the tags being added should remain before automatically being removed. Only applies to tags being added.
332    #[serde(skip_serializing_if = "core::option::Option::is_none")]
333    pub duration_in_hours: core::option::Option<i64>,
334    ///Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.
335    pub remove: Vec<String>,
336}
337pub type ModEventTag = crate::types::Object<ModEventTagData>;
338///Take down a subject permanently or temporarily
339#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
340#[serde(rename_all = "camelCase")]
341pub struct ModEventTakedownData {
342    ///If true, all other reports on content authored by this account will be resolved (acknowledged).
343    #[serde(skip_serializing_if = "core::option::Option::is_none")]
344    pub acknowledge_account_subjects: core::option::Option<bool>,
345    #[serde(skip_serializing_if = "core::option::Option::is_none")]
346    pub comment: core::option::Option<String>,
347    ///Indicates how long the takedown should be in effect before automatically expiring.
348    #[serde(skip_serializing_if = "core::option::Option::is_none")]
349    pub duration_in_hours: core::option::Option<i64>,
350    ///Names/Keywords of the policies that drove the decision.
351    #[serde(skip_serializing_if = "core::option::Option::is_none")]
352    pub policies: core::option::Option<Vec<String>>,
353    ///Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).
354    #[serde(skip_serializing_if = "core::option::Option::is_none")]
355    pub severity_level: core::option::Option<String>,
356    ///Number of strikes to assign to the user for this violation.
357    #[serde(skip_serializing_if = "core::option::Option::is_none")]
358    pub strike_count: core::option::Option<i64>,
359    ///When the strike should expire. If not provided, the strike never expires.
360    #[serde(skip_serializing_if = "core::option::Option::is_none")]
361    pub strike_expires_at: core::option::Option<crate::types::string::Datetime>,
362    ///List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services.
363    #[serde(skip_serializing_if = "core::option::Option::is_none")]
364    pub target_services: core::option::Option<Vec<String>>,
365}
366pub type ModEventTakedown = crate::types::Object<ModEventTakedownData>;
367///Unmute action on a subject
368#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
369#[serde(rename_all = "camelCase")]
370pub struct ModEventUnmuteData {
371    ///Describe reasoning behind the reversal.
372    #[serde(skip_serializing_if = "core::option::Option::is_none")]
373    pub comment: core::option::Option<String>,
374}
375pub type ModEventUnmute = crate::types::Object<ModEventUnmuteData>;
376///Unmute incoming reports from an account
377#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
378#[serde(rename_all = "camelCase")]
379pub struct ModEventUnmuteReporterData {
380    ///Describe reasoning behind the reversal.
381    #[serde(skip_serializing_if = "core::option::Option::is_none")]
382    pub comment: core::option::Option<String>,
383}
384pub type ModEventUnmuteReporter = crate::types::Object<ModEventUnmuteReporterData>;
385#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
386#[serde(rename_all = "camelCase")]
387pub struct ModEventViewData {
388    pub created_at: crate::types::string::Datetime,
389    pub created_by: crate::types::string::Did,
390    #[serde(skip_serializing_if = "core::option::Option::is_none")]
391    pub creator_handle: core::option::Option<String>,
392    pub event: crate::types::Union<ModEventViewEventRefs>,
393    pub id: i64,
394    #[serde(skip_serializing_if = "core::option::Option::is_none")]
395    pub mod_tool: core::option::Option<ModTool>,
396    pub subject: crate::types::Union<ModEventViewSubjectRefs>,
397    pub subject_blob_cids: Vec<String>,
398    #[serde(skip_serializing_if = "core::option::Option::is_none")]
399    pub subject_handle: core::option::Option<String>,
400}
401pub type ModEventView = crate::types::Object<ModEventViewData>;
402#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
403#[serde(rename_all = "camelCase")]
404pub struct ModEventViewDetailData {
405    pub created_at: crate::types::string::Datetime,
406    pub created_by: crate::types::string::Did,
407    pub event: crate::types::Union<ModEventViewDetailEventRefs>,
408    pub id: i64,
409    #[serde(skip_serializing_if = "core::option::Option::is_none")]
410    pub mod_tool: core::option::Option<ModTool>,
411    pub subject: crate::types::Union<ModEventViewDetailSubjectRefs>,
412    pub subject_blobs: Vec<BlobView>,
413}
414pub type ModEventViewDetail = crate::types::Object<ModEventViewDetailData>;
415///Moderation tool information for tracing the source of the action
416#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
417#[serde(rename_all = "camelCase")]
418pub struct ModToolData {
419    ///Additional arbitrary metadata about the source
420    #[serde(skip_serializing_if = "core::option::Option::is_none")]
421    pub meta: core::option::Option<crate::types::Unknown>,
422    ///Name/identifier of the source (e.g., 'automod', 'ozone/workspace')
423    pub name: String,
424}
425pub type ModTool = crate::types::Object<ModToolData>;
426#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
427#[serde(rename_all = "camelCase")]
428pub struct ModerationData {
429    #[serde(skip_serializing_if = "core::option::Option::is_none")]
430    pub subject_status: core::option::Option<SubjectStatusView>,
431}
432pub type Moderation = crate::types::Object<ModerationData>;
433#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
434#[serde(rename_all = "camelCase")]
435pub struct ModerationDetailData {
436    #[serde(skip_serializing_if = "core::option::Option::is_none")]
437    pub subject_status: core::option::Option<SubjectStatusView>,
438}
439pub type ModerationDetail = crate::types::Object<ModerationDetailData>;
440///Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
441#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
442#[serde(rename_all = "camelCase")]
443pub struct RecordEventData {
444    #[serde(skip_serializing_if = "core::option::Option::is_none")]
445    pub cid: core::option::Option<crate::types::string::Cid>,
446    #[serde(skip_serializing_if = "core::option::Option::is_none")]
447    pub comment: core::option::Option<String>,
448    pub op: String,
449    pub timestamp: crate::types::string::Datetime,
450}
451pub type RecordEvent = crate::types::Object<RecordEventData>;
452#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
453#[serde(rename_all = "camelCase")]
454pub struct RecordHostingData {
455    #[serde(skip_serializing_if = "core::option::Option::is_none")]
456    pub created_at: core::option::Option<crate::types::string::Datetime>,
457    #[serde(skip_serializing_if = "core::option::Option::is_none")]
458    pub deleted_at: core::option::Option<crate::types::string::Datetime>,
459    pub status: String,
460    #[serde(skip_serializing_if = "core::option::Option::is_none")]
461    pub updated_at: core::option::Option<crate::types::string::Datetime>,
462}
463pub type RecordHosting = crate::types::Object<RecordHostingData>;
464#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
465#[serde(rename_all = "camelCase")]
466pub struct RecordViewData {
467    pub blob_cids: Vec<crate::types::string::Cid>,
468    pub cid: crate::types::string::Cid,
469    pub indexed_at: crate::types::string::Datetime,
470    pub moderation: Moderation,
471    pub repo: RepoView,
472    pub uri: String,
473    pub value: crate::types::Unknown,
474}
475pub type RecordView = crate::types::Object<RecordViewData>;
476#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
477#[serde(rename_all = "camelCase")]
478pub struct RecordViewDetailData {
479    pub blobs: Vec<BlobView>,
480    pub cid: crate::types::string::Cid,
481    pub indexed_at: crate::types::string::Datetime,
482    #[serde(skip_serializing_if = "core::option::Option::is_none")]
483    pub labels: core::option::Option<Vec<crate::com::atproto::label::defs::Label>>,
484    pub moderation: ModerationDetail,
485    pub repo: RepoView,
486    pub uri: String,
487    pub value: crate::types::Unknown,
488}
489pub type RecordViewDetail = crate::types::Object<RecordViewDetailData>;
490#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
491#[serde(rename_all = "camelCase")]
492pub struct RecordViewNotFoundData {
493    pub uri: String,
494}
495pub type RecordViewNotFound = crate::types::Object<RecordViewNotFoundData>;
496///Statistics about a set of record subject items
497#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
498#[serde(rename_all = "camelCase")]
499pub struct RecordsStatsData {
500    ///Number of items that were appealed at least once
501    #[serde(skip_serializing_if = "core::option::Option::is_none")]
502    pub appealed_count: core::option::Option<i64>,
503    ///Number of items that were escalated at least once
504    #[serde(skip_serializing_if = "core::option::Option::is_none")]
505    pub escalated_count: core::option::Option<i64>,
506    ///Number of item currently in "reviewOpen" or "reviewEscalated" state
507    #[serde(skip_serializing_if = "core::option::Option::is_none")]
508    pub pending_count: core::option::Option<i64>,
509    ///Number of item currently in "reviewNone" or "reviewClosed" state
510    #[serde(skip_serializing_if = "core::option::Option::is_none")]
511    pub processed_count: core::option::Option<i64>,
512    ///Number of items that were reported at least once
513    #[serde(skip_serializing_if = "core::option::Option::is_none")]
514    pub reported_count: core::option::Option<i64>,
515    ///Total number of item in the set
516    #[serde(skip_serializing_if = "core::option::Option::is_none")]
517    pub subject_count: core::option::Option<i64>,
518    ///Number of item currently taken down
519    #[serde(skip_serializing_if = "core::option::Option::is_none")]
520    pub takendown_count: core::option::Option<i64>,
521    ///Cumulative sum of the number of reports on the items in the set
522    #[serde(skip_serializing_if = "core::option::Option::is_none")]
523    pub total_reports: core::option::Option<i64>,
524}
525pub type RecordsStats = crate::types::Object<RecordsStatsData>;
526#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
527#[serde(rename_all = "camelCase")]
528pub struct RepoViewData {
529    #[serde(skip_serializing_if = "core::option::Option::is_none")]
530    pub deactivated_at: core::option::Option<crate::types::string::Datetime>,
531    pub did: crate::types::string::Did,
532    #[serde(skip_serializing_if = "core::option::Option::is_none")]
533    pub email: core::option::Option<String>,
534    pub handle: crate::types::string::Handle,
535    pub indexed_at: crate::types::string::Datetime,
536    #[serde(skip_serializing_if = "core::option::Option::is_none")]
537    pub invite_note: core::option::Option<String>,
538    #[serde(skip_serializing_if = "core::option::Option::is_none")]
539    pub invited_by: core::option::Option<crate::com::atproto::server::defs::InviteCode>,
540    #[serde(skip_serializing_if = "core::option::Option::is_none")]
541    pub invites_disabled: core::option::Option<bool>,
542    pub moderation: Moderation,
543    pub related_records: Vec<crate::types::Unknown>,
544    #[serde(skip_serializing_if = "core::option::Option::is_none")]
545    pub threat_signatures: core::option::Option<
546        Vec<crate::com::atproto::admin::defs::ThreatSignature>,
547    >,
548}
549pub type RepoView = crate::types::Object<RepoViewData>;
550#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
551#[serde(rename_all = "camelCase")]
552pub struct RepoViewDetailData {
553    #[serde(skip_serializing_if = "core::option::Option::is_none")]
554    pub deactivated_at: core::option::Option<crate::types::string::Datetime>,
555    pub did: crate::types::string::Did,
556    #[serde(skip_serializing_if = "core::option::Option::is_none")]
557    pub email: core::option::Option<String>,
558    #[serde(skip_serializing_if = "core::option::Option::is_none")]
559    pub email_confirmed_at: core::option::Option<crate::types::string::Datetime>,
560    pub handle: crate::types::string::Handle,
561    pub indexed_at: crate::types::string::Datetime,
562    #[serde(skip_serializing_if = "core::option::Option::is_none")]
563    pub invite_note: core::option::Option<String>,
564    #[serde(skip_serializing_if = "core::option::Option::is_none")]
565    pub invited_by: core::option::Option<crate::com::atproto::server::defs::InviteCode>,
566    #[serde(skip_serializing_if = "core::option::Option::is_none")]
567    pub invites: core::option::Option<
568        Vec<crate::com::atproto::server::defs::InviteCode>,
569    >,
570    #[serde(skip_serializing_if = "core::option::Option::is_none")]
571    pub invites_disabled: core::option::Option<bool>,
572    #[serde(skip_serializing_if = "core::option::Option::is_none")]
573    pub labels: core::option::Option<Vec<crate::com::atproto::label::defs::Label>>,
574    pub moderation: ModerationDetail,
575    pub related_records: Vec<crate::types::Unknown>,
576    #[serde(skip_serializing_if = "core::option::Option::is_none")]
577    pub threat_signatures: core::option::Option<
578        Vec<crate::com::atproto::admin::defs::ThreatSignature>,
579    >,
580}
581pub type RepoViewDetail = crate::types::Object<RepoViewDetailData>;
582#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
583#[serde(rename_all = "camelCase")]
584pub struct RepoViewNotFoundData {
585    pub did: crate::types::string::Did,
586}
587pub type RepoViewNotFound = crate::types::Object<RepoViewNotFoundData>;
588#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
589#[serde(rename_all = "camelCase")]
590pub struct ReporterStatsData {
591    ///The total number of reports made by the user on accounts.
592    pub account_report_count: i64,
593    pub did: crate::types::string::Did,
594    ///The total number of accounts labeled as a result of the user's reports.
595    pub labeled_account_count: i64,
596    ///The total number of records labeled as a result of the user's reports.
597    pub labeled_record_count: i64,
598    ///The total number of reports made by the user on records.
599    pub record_report_count: i64,
600    ///The total number of accounts reported by the user.
601    pub reported_account_count: i64,
602    ///The total number of records reported by the user.
603    pub reported_record_count: i64,
604    ///The total number of accounts taken down as a result of the user's reports.
605    pub takendown_account_count: i64,
606    ///The total number of records taken down as a result of the user's reports.
607    pub takendown_record_count: i64,
608}
609pub type ReporterStats = crate::types::Object<ReporterStatsData>;
610///Moderator review status of a subject: Closed. Indicates that the subject was already reviewed and resolved by a moderator
611pub const REVIEW_CLOSED: &str = "tools.ozone.moderation.defs#reviewClosed";
612///Moderator review status of a subject: Escalated. Indicates that the subject was escalated for review by a moderator
613pub const REVIEW_ESCALATED: &str = "tools.ozone.moderation.defs#reviewEscalated";
614///Moderator review status of a subject: Unnecessary. Indicates that the subject does not need a review at the moment but there is probably some moderation related metadata available for it
615pub const REVIEW_NONE: &str = "tools.ozone.moderation.defs#reviewNone";
616///Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator
617pub const REVIEW_OPEN: &str = "tools.ozone.moderation.defs#reviewOpen";
618///Account credentials revocation by moderators. Only works on DID subjects.
619#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
620#[serde(rename_all = "camelCase")]
621pub struct RevokeAccountCredentialsEventData {
622    ///Comment describing the reason for the revocation.
623    pub comment: String,
624}
625pub type RevokeAccountCredentialsEvent = crate::types::Object<
626    RevokeAccountCredentialsEventData,
627>;
628///Logs a scheduled takedown action for an account.
629#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
630#[serde(rename_all = "camelCase")]
631pub struct ScheduleTakedownEventData {
632    #[serde(skip_serializing_if = "core::option::Option::is_none")]
633    pub comment: core::option::Option<String>,
634    #[serde(skip_serializing_if = "core::option::Option::is_none")]
635    pub execute_after: core::option::Option<crate::types::string::Datetime>,
636    #[serde(skip_serializing_if = "core::option::Option::is_none")]
637    pub execute_at: core::option::Option<crate::types::string::Datetime>,
638    #[serde(skip_serializing_if = "core::option::Option::is_none")]
639    pub execute_until: core::option::Option<crate::types::string::Datetime>,
640}
641pub type ScheduleTakedownEvent = crate::types::Object<ScheduleTakedownEventData>;
642///View of a scheduled moderation action
643#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
644#[serde(rename_all = "camelCase")]
645pub struct ScheduledActionViewData {
646    ///Type of action to be executed
647    pub action: String,
648    ///When the scheduled action was created
649    pub created_at: crate::types::string::Datetime,
650    ///DID of the user who created this scheduled action
651    pub created_by: crate::types::string::Did,
652    ///Subject DID for the action
653    pub did: crate::types::string::Did,
654    ///Serialized event object that will be propagated to the event when performed
655    #[serde(skip_serializing_if = "core::option::Option::is_none")]
656    pub event_data: core::option::Option<crate::types::Unknown>,
657    ///Earliest time to execute the action (for randomized scheduling)
658    #[serde(skip_serializing_if = "core::option::Option::is_none")]
659    pub execute_after: core::option::Option<crate::types::string::Datetime>,
660    ///Exact time to execute the action
661    #[serde(skip_serializing_if = "core::option::Option::is_none")]
662    pub execute_at: core::option::Option<crate::types::string::Datetime>,
663    ///Latest time to execute the action (for randomized scheduling)
664    #[serde(skip_serializing_if = "core::option::Option::is_none")]
665    pub execute_until: core::option::Option<crate::types::string::Datetime>,
666    ///ID of the moderation event created when action was successfully executed
667    #[serde(skip_serializing_if = "core::option::Option::is_none")]
668    pub execution_event_id: core::option::Option<i64>,
669    ///Auto-incrementing row ID
670    pub id: i64,
671    ///When the action was last attempted to be executed
672    #[serde(skip_serializing_if = "core::option::Option::is_none")]
673    pub last_executed_at: core::option::Option<crate::types::string::Datetime>,
674    ///Reason for the last execution failure
675    #[serde(skip_serializing_if = "core::option::Option::is_none")]
676    pub last_failure_reason: core::option::Option<String>,
677    ///Whether execution time should be randomized within the specified range
678    #[serde(skip_serializing_if = "core::option::Option::is_none")]
679    pub randomize_execution: core::option::Option<bool>,
680    ///Current status of the scheduled action
681    pub status: String,
682    ///When the scheduled action was last updated
683    #[serde(skip_serializing_if = "core::option::Option::is_none")]
684    pub updated_at: core::option::Option<crate::types::string::Datetime>,
685}
686pub type ScheduledActionView = crate::types::Object<ScheduledActionViewData>;
687pub type SubjectReviewState = String;
688#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
689#[serde(rename_all = "camelCase")]
690pub struct SubjectStatusViewData {
691    ///Statistics related to the account subject
692    #[serde(skip_serializing_if = "core::option::Option::is_none")]
693    pub account_stats: core::option::Option<AccountStats>,
694    ///Strike information for the account (account-level only)
695    #[serde(skip_serializing_if = "core::option::Option::is_none")]
696    pub account_strike: core::option::Option<AccountStrike>,
697    ///Current age assurance state of the subject.
698    #[serde(skip_serializing_if = "core::option::Option::is_none")]
699    pub age_assurance_state: core::option::Option<String>,
700    ///Whether or not the last successful update to age assurance was made by the user or admin.
701    #[serde(skip_serializing_if = "core::option::Option::is_none")]
702    pub age_assurance_updated_by: core::option::Option<String>,
703    ///True indicates that the a previously taken moderator action was appealed against, by the author of the content. False indicates last appeal was resolved by moderators.
704    #[serde(skip_serializing_if = "core::option::Option::is_none")]
705    pub appealed: core::option::Option<bool>,
706    ///Sticky comment on the subject.
707    #[serde(skip_serializing_if = "core::option::Option::is_none")]
708    pub comment: core::option::Option<String>,
709    ///Timestamp referencing the first moderation status impacting event was emitted on the subject
710    pub created_at: crate::types::string::Datetime,
711    #[serde(skip_serializing_if = "core::option::Option::is_none")]
712    pub hosting: core::option::Option<crate::types::Union<SubjectStatusViewHostingRefs>>,
713    pub id: i64,
714    ///Timestamp referencing when the author of the subject appealed a moderation action
715    #[serde(skip_serializing_if = "core::option::Option::is_none")]
716    pub last_appealed_at: core::option::Option<crate::types::string::Datetime>,
717    #[serde(skip_serializing_if = "core::option::Option::is_none")]
718    pub last_reported_at: core::option::Option<crate::types::string::Datetime>,
719    #[serde(skip_serializing_if = "core::option::Option::is_none")]
720    pub last_reviewed_at: core::option::Option<crate::types::string::Datetime>,
721    #[serde(skip_serializing_if = "core::option::Option::is_none")]
722    pub last_reviewed_by: core::option::Option<crate::types::string::Did>,
723    #[serde(skip_serializing_if = "core::option::Option::is_none")]
724    pub mute_reporting_until: core::option::Option<crate::types::string::Datetime>,
725    #[serde(skip_serializing_if = "core::option::Option::is_none")]
726    pub mute_until: core::option::Option<crate::types::string::Datetime>,
727    ///Numeric value representing the level of priority. Higher score means higher priority.
728    #[serde(skip_serializing_if = "core::option::Option::is_none")]
729    pub priority_score: core::option::Option<crate::types::LimitedU8<100u8>>,
730    ///Statistics related to the record subjects authored by the subject's account
731    #[serde(skip_serializing_if = "core::option::Option::is_none")]
732    pub records_stats: core::option::Option<RecordsStats>,
733    pub review_state: SubjectReviewState,
734    pub subject: crate::types::Union<SubjectStatusViewSubjectRefs>,
735    #[serde(skip_serializing_if = "core::option::Option::is_none")]
736    pub subject_blob_cids: core::option::Option<Vec<crate::types::string::Cid>>,
737    #[serde(skip_serializing_if = "core::option::Option::is_none")]
738    pub subject_repo_handle: core::option::Option<String>,
739    #[serde(skip_serializing_if = "core::option::Option::is_none")]
740    pub suspend_until: core::option::Option<crate::types::string::Datetime>,
741    #[serde(skip_serializing_if = "core::option::Option::is_none")]
742    pub tags: core::option::Option<Vec<String>>,
743    #[serde(skip_serializing_if = "core::option::Option::is_none")]
744    pub takendown: core::option::Option<bool>,
745    ///Timestamp referencing when the last update was made to the moderation status of the subject
746    pub updated_at: crate::types::string::Datetime,
747}
748pub type SubjectStatusView = crate::types::Object<SubjectStatusViewData>;
749///Detailed view of a subject. For record subjects, the author's repo and profile will be returned.
750#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
751#[serde(rename_all = "camelCase")]
752pub struct SubjectViewData {
753    #[serde(skip_serializing_if = "core::option::Option::is_none")]
754    pub profile: core::option::Option<crate::types::Union<SubjectViewProfileRefs>>,
755    #[serde(skip_serializing_if = "core::option::Option::is_none")]
756    pub record: core::option::Option<RecordViewDetail>,
757    #[serde(skip_serializing_if = "core::option::Option::is_none")]
758    pub repo: core::option::Option<RepoViewDetail>,
759    #[serde(skip_serializing_if = "core::option::Option::is_none")]
760    pub status: core::option::Option<SubjectStatusView>,
761    pub subject: String,
762    pub r#type: crate::com::atproto::moderation::defs::SubjectType,
763}
764pub type SubjectView = crate::types::Object<SubjectViewData>;
765///Moderation event timeline event for a PLC create operation
766pub const TIMELINE_EVENT_PLC_CREATE: &str = "tools.ozone.moderation.defs#timelineEventPlcCreate";
767///Moderation event timeline event for generic PLC operation
768pub const TIMELINE_EVENT_PLC_OPERATION: &str = "tools.ozone.moderation.defs#timelineEventPlcOperation";
769///Moderation event timeline event for a PLC tombstone operation
770pub const TIMELINE_EVENT_PLC_TOMBSTONE: &str = "tools.ozone.moderation.defs#timelineEventPlcTombstone";
771#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
772#[serde(rename_all = "camelCase")]
773pub struct VideoDetailsData {
774    pub height: i64,
775    pub length: i64,
776    pub width: i64,
777}
778pub type VideoDetails = crate::types::Object<VideoDetailsData>;
779#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
780#[serde(tag = "$type")]
781pub enum BlobViewDetailsRefs {
782    #[serde(rename = "tools.ozone.moderation.defs#imageDetails")]
783    ImageDetails(Box<ImageDetails>),
784    #[serde(rename = "tools.ozone.moderation.defs#videoDetails")]
785    VideoDetails(Box<VideoDetails>),
786}
787#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
788#[serde(tag = "$type")]
789pub enum ModEventViewDetailEventRefs {
790    #[serde(rename = "tools.ozone.moderation.defs#modEventTakedown")]
791    ModEventTakedown(Box<ModEventTakedown>),
792    #[serde(rename = "tools.ozone.moderation.defs#modEventReverseTakedown")]
793    ModEventReverseTakedown(Box<ModEventReverseTakedown>),
794    #[serde(rename = "tools.ozone.moderation.defs#modEventComment")]
795    ModEventComment(Box<ModEventComment>),
796    #[serde(rename = "tools.ozone.moderation.defs#modEventReport")]
797    ModEventReport(Box<ModEventReport>),
798    #[serde(rename = "tools.ozone.moderation.defs#modEventLabel")]
799    ModEventLabel(Box<ModEventLabel>),
800    #[serde(rename = "tools.ozone.moderation.defs#modEventAcknowledge")]
801    ModEventAcknowledge(Box<ModEventAcknowledge>),
802    #[serde(rename = "tools.ozone.moderation.defs#modEventEscalate")]
803    ModEventEscalate(Box<ModEventEscalate>),
804    #[serde(rename = "tools.ozone.moderation.defs#modEventMute")]
805    ModEventMute(Box<ModEventMute>),
806    #[serde(rename = "tools.ozone.moderation.defs#modEventUnmute")]
807    ModEventUnmute(Box<ModEventUnmute>),
808    #[serde(rename = "tools.ozone.moderation.defs#modEventMuteReporter")]
809    ModEventMuteReporter(Box<ModEventMuteReporter>),
810    #[serde(rename = "tools.ozone.moderation.defs#modEventUnmuteReporter")]
811    ModEventUnmuteReporter(Box<ModEventUnmuteReporter>),
812    #[serde(rename = "tools.ozone.moderation.defs#modEventEmail")]
813    ModEventEmail(Box<ModEventEmail>),
814    #[serde(rename = "tools.ozone.moderation.defs#modEventResolveAppeal")]
815    ModEventResolveAppeal(Box<ModEventResolveAppeal>),
816    #[serde(rename = "tools.ozone.moderation.defs#modEventDivert")]
817    ModEventDivert(Box<ModEventDivert>),
818    #[serde(rename = "tools.ozone.moderation.defs#modEventTag")]
819    ModEventTag(Box<ModEventTag>),
820    #[serde(rename = "tools.ozone.moderation.defs#accountEvent")]
821    AccountEvent(Box<AccountEvent>),
822    #[serde(rename = "tools.ozone.moderation.defs#identityEvent")]
823    IdentityEvent(Box<IdentityEvent>),
824    #[serde(rename = "tools.ozone.moderation.defs#recordEvent")]
825    RecordEvent(Box<RecordEvent>),
826    #[serde(rename = "tools.ozone.moderation.defs#modEventPriorityScore")]
827    ModEventPriorityScore(Box<ModEventPriorityScore>),
828    #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceEvent")]
829    AgeAssuranceEvent(Box<AgeAssuranceEvent>),
830    #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceOverrideEvent")]
831    AgeAssuranceOverrideEvent(Box<AgeAssuranceOverrideEvent>),
832    #[serde(rename = "tools.ozone.moderation.defs#ageAssurancePurgeEvent")]
833    AgeAssurancePurgeEvent(Box<AgeAssurancePurgeEvent>),
834    #[serde(rename = "tools.ozone.moderation.defs#revokeAccountCredentialsEvent")]
835    RevokeAccountCredentialsEvent(Box<RevokeAccountCredentialsEvent>),
836    #[serde(rename = "tools.ozone.moderation.defs#scheduleTakedownEvent")]
837    ScheduleTakedownEvent(Box<ScheduleTakedownEvent>),
838    #[serde(rename = "tools.ozone.moderation.defs#cancelScheduledTakedownEvent")]
839    CancelScheduledTakedownEvent(Box<CancelScheduledTakedownEvent>),
840}
841#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
842#[serde(tag = "$type")]
843pub enum ModEventViewDetailSubjectRefs {
844    #[serde(rename = "tools.ozone.moderation.defs#repoView")]
845    RepoView(Box<RepoView>),
846    #[serde(rename = "tools.ozone.moderation.defs#repoViewNotFound")]
847    RepoViewNotFound(Box<RepoViewNotFound>),
848    #[serde(rename = "tools.ozone.moderation.defs#recordView")]
849    RecordView(Box<RecordView>),
850    #[serde(rename = "tools.ozone.moderation.defs#recordViewNotFound")]
851    RecordViewNotFound(Box<RecordViewNotFound>),
852    #[serde(rename = "tools.ozone.moderation.defs#convoView")]
853    ConvoView(Box<ConvoView>),
854}
855#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
856#[serde(tag = "$type")]
857pub enum ModEventViewEventRefs {
858    #[serde(rename = "tools.ozone.moderation.defs#modEventTakedown")]
859    ModEventTakedown(Box<ModEventTakedown>),
860    #[serde(rename = "tools.ozone.moderation.defs#modEventReverseTakedown")]
861    ModEventReverseTakedown(Box<ModEventReverseTakedown>),
862    #[serde(rename = "tools.ozone.moderation.defs#modEventComment")]
863    ModEventComment(Box<ModEventComment>),
864    #[serde(rename = "tools.ozone.moderation.defs#modEventReport")]
865    ModEventReport(Box<ModEventReport>),
866    #[serde(rename = "tools.ozone.moderation.defs#modEventLabel")]
867    ModEventLabel(Box<ModEventLabel>),
868    #[serde(rename = "tools.ozone.moderation.defs#modEventAcknowledge")]
869    ModEventAcknowledge(Box<ModEventAcknowledge>),
870    #[serde(rename = "tools.ozone.moderation.defs#modEventEscalate")]
871    ModEventEscalate(Box<ModEventEscalate>),
872    #[serde(rename = "tools.ozone.moderation.defs#modEventMute")]
873    ModEventMute(Box<ModEventMute>),
874    #[serde(rename = "tools.ozone.moderation.defs#modEventUnmute")]
875    ModEventUnmute(Box<ModEventUnmute>),
876    #[serde(rename = "tools.ozone.moderation.defs#modEventMuteReporter")]
877    ModEventMuteReporter(Box<ModEventMuteReporter>),
878    #[serde(rename = "tools.ozone.moderation.defs#modEventUnmuteReporter")]
879    ModEventUnmuteReporter(Box<ModEventUnmuteReporter>),
880    #[serde(rename = "tools.ozone.moderation.defs#modEventEmail")]
881    ModEventEmail(Box<ModEventEmail>),
882    #[serde(rename = "tools.ozone.moderation.defs#modEventResolveAppeal")]
883    ModEventResolveAppeal(Box<ModEventResolveAppeal>),
884    #[serde(rename = "tools.ozone.moderation.defs#modEventDivert")]
885    ModEventDivert(Box<ModEventDivert>),
886    #[serde(rename = "tools.ozone.moderation.defs#modEventTag")]
887    ModEventTag(Box<ModEventTag>),
888    #[serde(rename = "tools.ozone.moderation.defs#accountEvent")]
889    AccountEvent(Box<AccountEvent>),
890    #[serde(rename = "tools.ozone.moderation.defs#identityEvent")]
891    IdentityEvent(Box<IdentityEvent>),
892    #[serde(rename = "tools.ozone.moderation.defs#recordEvent")]
893    RecordEvent(Box<RecordEvent>),
894    #[serde(rename = "tools.ozone.moderation.defs#modEventPriorityScore")]
895    ModEventPriorityScore(Box<ModEventPriorityScore>),
896    #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceEvent")]
897    AgeAssuranceEvent(Box<AgeAssuranceEvent>),
898    #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceOverrideEvent")]
899    AgeAssuranceOverrideEvent(Box<AgeAssuranceOverrideEvent>),
900    #[serde(rename = "tools.ozone.moderation.defs#ageAssurancePurgeEvent")]
901    AgeAssurancePurgeEvent(Box<AgeAssurancePurgeEvent>),
902    #[serde(rename = "tools.ozone.moderation.defs#revokeAccountCredentialsEvent")]
903    RevokeAccountCredentialsEvent(Box<RevokeAccountCredentialsEvent>),
904    #[serde(rename = "tools.ozone.moderation.defs#scheduleTakedownEvent")]
905    ScheduleTakedownEvent(Box<ScheduleTakedownEvent>),
906    #[serde(rename = "tools.ozone.moderation.defs#cancelScheduledTakedownEvent")]
907    CancelScheduledTakedownEvent(Box<CancelScheduledTakedownEvent>),
908}
909#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
910#[serde(tag = "$type")]
911pub enum ModEventViewSubjectRefs {
912    #[serde(rename = "com.atproto.admin.defs#repoRef")]
913    ComAtprotoAdminDefsRepoRef(Box<crate::com::atproto::admin::defs::RepoRef>),
914    #[serde(rename = "com.atproto.repo.strongRef")]
915    ComAtprotoRepoStrongRefMain(Box<crate::com::atproto::repo::strong_ref::Main>),
916    #[serde(rename = "chat.bsky.convo.defs#messageRef")]
917    ChatBskyConvoDefsMessageRef(Box<crate::chat::bsky::convo::defs::MessageRef>),
918    #[serde(rename = "chat.bsky.convo.defs#convoRef")]
919    ChatBskyConvoDefsConvoRef(Box<crate::chat::bsky::convo::defs::ConvoRef>),
920}
921#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
922#[serde(tag = "$type")]
923pub enum SubjectStatusViewHostingRefs {
924    #[serde(rename = "tools.ozone.moderation.defs#accountHosting")]
925    AccountHosting(Box<AccountHosting>),
926    #[serde(rename = "tools.ozone.moderation.defs#recordHosting")]
927    RecordHosting(Box<RecordHosting>),
928}
929#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
930#[serde(tag = "$type")]
931pub enum SubjectStatusViewSubjectRefs {
932    #[serde(rename = "com.atproto.admin.defs#repoRef")]
933    ComAtprotoAdminDefsRepoRef(Box<crate::com::atproto::admin::defs::RepoRef>),
934    #[serde(rename = "com.atproto.repo.strongRef")]
935    ComAtprotoRepoStrongRefMain(Box<crate::com::atproto::repo::strong_ref::Main>),
936    #[serde(rename = "chat.bsky.convo.defs#messageRef")]
937    ChatBskyConvoDefsMessageRef(Box<crate::chat::bsky::convo::defs::MessageRef>),
938    #[serde(rename = "chat.bsky.convo.defs#convoRef")]
939    ChatBskyConvoDefsConvoRef(Box<crate::chat::bsky::convo::defs::ConvoRef>),
940}
941#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
942#[serde(tag = "$type")]
943pub enum SubjectViewProfileRefs {}