1#![allow(clippy::pedantic, clippy::nursery, clippy::all)]
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct AccountEvent {
11 pub active: bool,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub comment: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub status: Option<String>,
16 pub timestamp: proto_blue_syntax::Datetime,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(rename_all = "camelCase")]
21pub struct AccountHosting {
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub created_at: Option<proto_blue_syntax::Datetime>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub deactivated_at: Option<proto_blue_syntax::Datetime>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub deleted_at: Option<proto_blue_syntax::Datetime>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub reactivated_at: Option<proto_blue_syntax::Datetime>,
30 pub status: String,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub updated_at: Option<proto_blue_syntax::Datetime>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
37#[serde(rename_all = "camelCase")]
38pub struct AccountStats {
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub appeal_count: Option<i64>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub escalate_count: Option<i64>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub report_count: Option<i64>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub suspend_count: Option<i64>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub takedown_count: Option<i64>,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct AccountStrike {
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub active_strike_count: Option<i64>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub first_strike_at: Option<proto_blue_syntax::Datetime>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub last_strike_at: Option<proto_blue_syntax::Datetime>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub total_strike_count: Option<i64>,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
67#[serde(rename_all = "camelCase")]
68pub struct AgeAssuranceEvent {
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub access: Option<crate::app::bsky::ageassurance::defs::Access>,
71 pub attempt_id: String,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub complete_ip: Option<String>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub complete_ua: Option<String>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub country_code: Option<String>,
78 pub created_at: proto_blue_syntax::Datetime,
79 #[serde(skip_serializing_if = "Option::is_none")]
80 pub init_ip: Option<String>,
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub init_ua: Option<String>,
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub region_code: Option<String>,
85 pub status: String,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(rename_all = "camelCase")]
91pub struct AgeAssuranceOverrideEvent {
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub access: Option<crate::app::bsky::ageassurance::defs::Access>,
94 pub comment: String,
95 pub status: String,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
99#[serde(tag = "$type")]
100pub enum BlobViewDetailsRefs {
101 #[serde(rename = "tools.ozone.moderation.defs#imageDetails")]
102 OzoneModerationDefsImageDetails(Box<ImageDetails>),
103 #[serde(rename = "tools.ozone.moderation.defs#videoDetails")]
104 OzoneModerationDefsVideoDetails(Box<VideoDetails>),
105 #[serde(other)]
106 Other,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
110#[serde(rename_all = "camelCase")]
111pub struct BlobView {
112 pub cid: String,
113 pub created_at: proto_blue_syntax::Datetime,
114 #[serde(skip_serializing_if = "Option::is_none")]
115 pub details: Option<BlobViewDetailsRefs>,
116 pub mime_type: String,
117 #[serde(skip_serializing_if = "Option::is_none")]
118 pub moderation: Option<Moderation>,
119 pub size: i64,
120}
121
122#[derive(Debug, Clone, Serialize, Deserialize)]
124#[serde(rename_all = "camelCase")]
125pub struct CancelScheduledTakedownEvent {
126 #[serde(skip_serializing_if = "Option::is_none")]
127 pub comment: Option<String>,
128}
129
130#[derive(Debug, Clone, Serialize, Deserialize)]
132#[serde(rename_all = "camelCase")]
133pub struct IdentityEvent {
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub comment: Option<String>,
136 #[serde(skip_serializing_if = "Option::is_none")]
137 pub handle: Option<proto_blue_syntax::Handle>,
138 #[serde(skip_serializing_if = "Option::is_none")]
139 pub pds_host: Option<String>,
140 pub timestamp: proto_blue_syntax::Datetime,
141 #[serde(skip_serializing_if = "Option::is_none")]
142 pub tombstone: Option<bool>,
143}
144
145#[derive(Debug, Clone, Serialize, Deserialize)]
146#[serde(rename_all = "camelCase")]
147pub struct ImageDetails {
148 pub height: i64,
149 pub width: i64,
150}
151
152#[derive(Debug, Clone, Serialize, Deserialize)]
153#[serde(rename_all = "camelCase")]
154pub struct ModEventAcknowledge {
155 #[serde(skip_serializing_if = "Option::is_none")]
156 pub acknowledge_account_subjects: Option<bool>,
157 #[serde(skip_serializing_if = "Option::is_none")]
158 pub comment: Option<String>,
159}
160
161#[derive(Debug, Clone, Serialize, Deserialize)]
163#[serde(rename_all = "camelCase")]
164pub struct ModEventComment {
165 #[serde(skip_serializing_if = "Option::is_none")]
166 pub comment: Option<String>,
167 #[serde(skip_serializing_if = "Option::is_none")]
168 pub sticky: Option<bool>,
169}
170
171#[derive(Debug, Clone, Serialize, Deserialize)]
173#[serde(rename_all = "camelCase")]
174pub struct ModEventDivert {
175 #[serde(skip_serializing_if = "Option::is_none")]
176 pub comment: Option<String>,
177}
178
179#[derive(Debug, Clone, Serialize, Deserialize)]
181#[serde(rename_all = "camelCase")]
182pub struct ModEventEmail {
183 #[serde(skip_serializing_if = "Option::is_none")]
184 pub comment: Option<String>,
185 #[serde(skip_serializing_if = "Option::is_none")]
186 pub content: Option<String>,
187 #[serde(skip_serializing_if = "Option::is_none")]
188 pub is_delivered: Option<bool>,
189 #[serde(skip_serializing_if = "Option::is_none")]
190 pub policies: Option<Vec<String>>,
191 #[serde(skip_serializing_if = "Option::is_none")]
192 pub severity_level: Option<String>,
193 #[serde(skip_serializing_if = "Option::is_none")]
194 pub strike_count: Option<i64>,
195 #[serde(skip_serializing_if = "Option::is_none")]
196 pub strike_expires_at: Option<proto_blue_syntax::Datetime>,
197 pub subject_line: String,
198}
199
200#[derive(Debug, Clone, Serialize, Deserialize)]
201#[serde(rename_all = "camelCase")]
202pub struct ModEventEscalate {
203 #[serde(skip_serializing_if = "Option::is_none")]
204 pub comment: Option<String>,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
209#[serde(rename_all = "camelCase")]
210pub struct ModEventLabel {
211 #[serde(skip_serializing_if = "Option::is_none")]
212 pub comment: Option<String>,
213 pub create_label_vals: Vec<String>,
214 #[serde(skip_serializing_if = "Option::is_none")]
215 pub duration_in_hours: Option<i64>,
216 pub negate_label_vals: Vec<String>,
217}
218
219#[derive(Debug, Clone, Serialize, Deserialize)]
221#[serde(rename_all = "camelCase")]
222pub struct ModEventMute {
223 #[serde(skip_serializing_if = "Option::is_none")]
224 pub comment: Option<String>,
225 pub duration_in_hours: i64,
226}
227
228#[derive(Debug, Clone, Serialize, Deserialize)]
230#[serde(rename_all = "camelCase")]
231pub struct ModEventMuteReporter {
232 #[serde(skip_serializing_if = "Option::is_none")]
233 pub comment: Option<String>,
234 #[serde(skip_serializing_if = "Option::is_none")]
235 pub duration_in_hours: Option<i64>,
236}
237
238#[derive(Debug, Clone, Serialize, Deserialize)]
240#[serde(rename_all = "camelCase")]
241pub struct ModEventPriorityScore {
242 #[serde(skip_serializing_if = "Option::is_none")]
243 pub comment: Option<String>,
244 pub score: i64,
245}
246
247#[derive(Debug, Clone, Serialize, Deserialize)]
249#[serde(rename_all = "camelCase")]
250pub struct ModEventReport {
251 #[serde(skip_serializing_if = "Option::is_none")]
252 pub comment: Option<String>,
253 #[serde(skip_serializing_if = "Option::is_none")]
254 pub is_reporter_muted: Option<bool>,
255 pub report_type: crate::com::atproto::moderation::defs::ReasonType,
256}
257
258#[derive(Debug, Clone, Serialize, Deserialize)]
260#[serde(rename_all = "camelCase")]
261pub struct ModEventResolveAppeal {
262 #[serde(skip_serializing_if = "Option::is_none")]
263 pub comment: Option<String>,
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize)]
268#[serde(rename_all = "camelCase")]
269pub struct ModEventReverseTakedown {
270 #[serde(skip_serializing_if = "Option::is_none")]
271 pub comment: Option<String>,
272 #[serde(skip_serializing_if = "Option::is_none")]
273 pub policies: Option<Vec<String>>,
274 #[serde(skip_serializing_if = "Option::is_none")]
275 pub severity_level: Option<String>,
276 #[serde(skip_serializing_if = "Option::is_none")]
277 pub strike_count: Option<i64>,
278}
279
280#[derive(Debug, Clone, Serialize, Deserialize)]
282#[serde(rename_all = "camelCase")]
283pub struct ModEventTag {
284 pub add: Vec<String>,
285 #[serde(skip_serializing_if = "Option::is_none")]
286 pub comment: Option<String>,
287 pub remove: Vec<String>,
288}
289
290#[derive(Debug, Clone, Serialize, Deserialize)]
292#[serde(rename_all = "camelCase")]
293pub struct ModEventTakedown {
294 #[serde(skip_serializing_if = "Option::is_none")]
295 pub acknowledge_account_subjects: Option<bool>,
296 #[serde(skip_serializing_if = "Option::is_none")]
297 pub comment: Option<String>,
298 #[serde(skip_serializing_if = "Option::is_none")]
299 pub duration_in_hours: Option<i64>,
300 #[serde(skip_serializing_if = "Option::is_none")]
301 pub policies: Option<Vec<String>>,
302 #[serde(skip_serializing_if = "Option::is_none")]
303 pub severity_level: Option<String>,
304 #[serde(skip_serializing_if = "Option::is_none")]
305 pub strike_count: Option<i64>,
306 #[serde(skip_serializing_if = "Option::is_none")]
307 pub strike_expires_at: Option<proto_blue_syntax::Datetime>,
308 #[serde(skip_serializing_if = "Option::is_none")]
309 pub target_services: Option<Vec<String>>,
310}
311
312#[derive(Debug, Clone, Serialize, Deserialize)]
314#[serde(rename_all = "camelCase")]
315pub struct ModEventUnmute {
316 #[serde(skip_serializing_if = "Option::is_none")]
317 pub comment: Option<String>,
318}
319
320#[derive(Debug, Clone, Serialize, Deserialize)]
322#[serde(rename_all = "camelCase")]
323pub struct ModEventUnmuteReporter {
324 #[serde(skip_serializing_if = "Option::is_none")]
325 pub comment: Option<String>,
326}
327
328#[derive(Debug, Clone, Serialize, Deserialize)]
329#[serde(tag = "$type")]
330pub enum ModEventViewEventRefs {
331 #[serde(rename = "tools.ozone.moderation.defs#modEventTakedown")]
332 OzoneModerationDefsModEventTakedown(Box<ModEventTakedown>),
333 #[serde(rename = "tools.ozone.moderation.defs#modEventReverseTakedown")]
334 OzoneModerationDefsModEventReverseTakedown(Box<ModEventReverseTakedown>),
335 #[serde(rename = "tools.ozone.moderation.defs#modEventComment")]
336 OzoneModerationDefsModEventComment(Box<ModEventComment>),
337 #[serde(rename = "tools.ozone.moderation.defs#modEventReport")]
338 OzoneModerationDefsModEventReport(Box<ModEventReport>),
339 #[serde(rename = "tools.ozone.moderation.defs#modEventLabel")]
340 OzoneModerationDefsModEventLabel(Box<ModEventLabel>),
341 #[serde(rename = "tools.ozone.moderation.defs#modEventAcknowledge")]
342 OzoneModerationDefsModEventAcknowledge(Box<ModEventAcknowledge>),
343 #[serde(rename = "tools.ozone.moderation.defs#modEventEscalate")]
344 OzoneModerationDefsModEventEscalate(Box<ModEventEscalate>),
345 #[serde(rename = "tools.ozone.moderation.defs#modEventMute")]
346 OzoneModerationDefsModEventMute(Box<ModEventMute>),
347 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmute")]
348 OzoneModerationDefsModEventUnmute(Box<ModEventUnmute>),
349 #[serde(rename = "tools.ozone.moderation.defs#modEventMuteReporter")]
350 OzoneModerationDefsModEventMuteReporter(Box<ModEventMuteReporter>),
351 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmuteReporter")]
352 OzoneModerationDefsModEventUnmuteReporter(Box<ModEventUnmuteReporter>),
353 #[serde(rename = "tools.ozone.moderation.defs#modEventEmail")]
354 OzoneModerationDefsModEventEmail(Box<ModEventEmail>),
355 #[serde(rename = "tools.ozone.moderation.defs#modEventResolveAppeal")]
356 OzoneModerationDefsModEventResolveAppeal(Box<ModEventResolveAppeal>),
357 #[serde(rename = "tools.ozone.moderation.defs#modEventDivert")]
358 OzoneModerationDefsModEventDivert(Box<ModEventDivert>),
359 #[serde(rename = "tools.ozone.moderation.defs#modEventTag")]
360 OzoneModerationDefsModEventTag(Box<ModEventTag>),
361 #[serde(rename = "tools.ozone.moderation.defs#accountEvent")]
362 OzoneModerationDefsAccountEvent(Box<AccountEvent>),
363 #[serde(rename = "tools.ozone.moderation.defs#identityEvent")]
364 OzoneModerationDefsIdentityEvent(Box<IdentityEvent>),
365 #[serde(rename = "tools.ozone.moderation.defs#recordEvent")]
366 OzoneModerationDefsRecordEvent(Box<RecordEvent>),
367 #[serde(rename = "tools.ozone.moderation.defs#modEventPriorityScore")]
368 OzoneModerationDefsModEventPriorityScore(Box<ModEventPriorityScore>),
369 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceEvent")]
370 OzoneModerationDefsAgeAssuranceEvent(Box<AgeAssuranceEvent>),
371 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceOverrideEvent")]
372 OzoneModerationDefsAgeAssuranceOverrideEvent(Box<AgeAssuranceOverrideEvent>),
373 #[serde(rename = "tools.ozone.moderation.defs#revokeAccountCredentialsEvent")]
374 OzoneModerationDefsRevokeAccountCredentialsEvent(Box<RevokeAccountCredentialsEvent>),
375 #[serde(rename = "tools.ozone.moderation.defs#scheduleTakedownEvent")]
376 OzoneModerationDefsScheduleTakedownEvent(Box<ScheduleTakedownEvent>),
377 #[serde(rename = "tools.ozone.moderation.defs#cancelScheduledTakedownEvent")]
378 OzoneModerationDefsCancelScheduledTakedownEvent(Box<CancelScheduledTakedownEvent>),
379 #[serde(other)]
380 Other,
381}
382
383#[derive(Debug, Clone, Serialize, Deserialize)]
384#[serde(tag = "$type")]
385pub enum ModEventViewSubjectRefs {
386 #[serde(rename = "com.atproto.admin.defs#repoRef")]
387 AtprotoAdminDefsRepoRef(Box<crate::com::atproto::admin::defs::RepoRef>),
388 #[serde(rename = "com.atproto.repo.strongRef")]
389 AtprotoRepoStrongRef(Box<crate::com::atproto::repo::strong_ref::Main>),
390 #[serde(rename = "chat.bsky.convo.defs#messageRef")]
391 BskyConvoDefsMessageRef(Box<crate::chat::bsky::convo::defs::MessageRef>),
392 #[serde(other)]
393 Other,
394}
395
396#[derive(Debug, Clone, Serialize, Deserialize)]
397#[serde(rename_all = "camelCase")]
398pub struct ModEventView {
399 pub created_at: proto_blue_syntax::Datetime,
400 pub created_by: proto_blue_syntax::Did,
401 #[serde(skip_serializing_if = "Option::is_none")]
402 pub creator_handle: Option<String>,
403 pub event: ModEventViewEventRefs,
404 pub id: i64,
405 #[serde(skip_serializing_if = "Option::is_none")]
406 pub mod_tool: Option<ModTool>,
407 pub subject: ModEventViewSubjectRefs,
408 pub subject_blob_cids: Vec<String>,
409 #[serde(skip_serializing_if = "Option::is_none")]
410 pub subject_handle: Option<String>,
411}
412
413#[derive(Debug, Clone, Serialize, Deserialize)]
414#[serde(tag = "$type")]
415pub enum ModEventViewDetailEventRefs {
416 #[serde(rename = "tools.ozone.moderation.defs#modEventTakedown")]
417 OzoneModerationDefsModEventTakedown(Box<ModEventTakedown>),
418 #[serde(rename = "tools.ozone.moderation.defs#modEventReverseTakedown")]
419 OzoneModerationDefsModEventReverseTakedown(Box<ModEventReverseTakedown>),
420 #[serde(rename = "tools.ozone.moderation.defs#modEventComment")]
421 OzoneModerationDefsModEventComment(Box<ModEventComment>),
422 #[serde(rename = "tools.ozone.moderation.defs#modEventReport")]
423 OzoneModerationDefsModEventReport(Box<ModEventReport>),
424 #[serde(rename = "tools.ozone.moderation.defs#modEventLabel")]
425 OzoneModerationDefsModEventLabel(Box<ModEventLabel>),
426 #[serde(rename = "tools.ozone.moderation.defs#modEventAcknowledge")]
427 OzoneModerationDefsModEventAcknowledge(Box<ModEventAcknowledge>),
428 #[serde(rename = "tools.ozone.moderation.defs#modEventEscalate")]
429 OzoneModerationDefsModEventEscalate(Box<ModEventEscalate>),
430 #[serde(rename = "tools.ozone.moderation.defs#modEventMute")]
431 OzoneModerationDefsModEventMute(Box<ModEventMute>),
432 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmute")]
433 OzoneModerationDefsModEventUnmute(Box<ModEventUnmute>),
434 #[serde(rename = "tools.ozone.moderation.defs#modEventMuteReporter")]
435 OzoneModerationDefsModEventMuteReporter(Box<ModEventMuteReporter>),
436 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmuteReporter")]
437 OzoneModerationDefsModEventUnmuteReporter(Box<ModEventUnmuteReporter>),
438 #[serde(rename = "tools.ozone.moderation.defs#modEventEmail")]
439 OzoneModerationDefsModEventEmail(Box<ModEventEmail>),
440 #[serde(rename = "tools.ozone.moderation.defs#modEventResolveAppeal")]
441 OzoneModerationDefsModEventResolveAppeal(Box<ModEventResolveAppeal>),
442 #[serde(rename = "tools.ozone.moderation.defs#modEventDivert")]
443 OzoneModerationDefsModEventDivert(Box<ModEventDivert>),
444 #[serde(rename = "tools.ozone.moderation.defs#modEventTag")]
445 OzoneModerationDefsModEventTag(Box<ModEventTag>),
446 #[serde(rename = "tools.ozone.moderation.defs#accountEvent")]
447 OzoneModerationDefsAccountEvent(Box<AccountEvent>),
448 #[serde(rename = "tools.ozone.moderation.defs#identityEvent")]
449 OzoneModerationDefsIdentityEvent(Box<IdentityEvent>),
450 #[serde(rename = "tools.ozone.moderation.defs#recordEvent")]
451 OzoneModerationDefsRecordEvent(Box<RecordEvent>),
452 #[serde(rename = "tools.ozone.moderation.defs#modEventPriorityScore")]
453 OzoneModerationDefsModEventPriorityScore(Box<ModEventPriorityScore>),
454 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceEvent")]
455 OzoneModerationDefsAgeAssuranceEvent(Box<AgeAssuranceEvent>),
456 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceOverrideEvent")]
457 OzoneModerationDefsAgeAssuranceOverrideEvent(Box<AgeAssuranceOverrideEvent>),
458 #[serde(rename = "tools.ozone.moderation.defs#revokeAccountCredentialsEvent")]
459 OzoneModerationDefsRevokeAccountCredentialsEvent(Box<RevokeAccountCredentialsEvent>),
460 #[serde(rename = "tools.ozone.moderation.defs#scheduleTakedownEvent")]
461 OzoneModerationDefsScheduleTakedownEvent(Box<ScheduleTakedownEvent>),
462 #[serde(rename = "tools.ozone.moderation.defs#cancelScheduledTakedownEvent")]
463 OzoneModerationDefsCancelScheduledTakedownEvent(Box<CancelScheduledTakedownEvent>),
464 #[serde(other)]
465 Other,
466}
467
468#[derive(Debug, Clone, Serialize, Deserialize)]
469#[serde(tag = "$type")]
470pub enum ModEventViewDetailSubjectRefs {
471 #[serde(rename = "tools.ozone.moderation.defs#repoView")]
472 OzoneModerationDefsRepoView(Box<RepoView>),
473 #[serde(rename = "tools.ozone.moderation.defs#repoViewNotFound")]
474 OzoneModerationDefsRepoViewNotFound(Box<RepoViewNotFound>),
475 #[serde(rename = "tools.ozone.moderation.defs#recordView")]
476 OzoneModerationDefsRecordView(Box<RecordView>),
477 #[serde(rename = "tools.ozone.moderation.defs#recordViewNotFound")]
478 OzoneModerationDefsRecordViewNotFound(Box<RecordViewNotFound>),
479 #[serde(other)]
480 Other,
481}
482
483#[derive(Debug, Clone, Serialize, Deserialize)]
484#[serde(rename_all = "camelCase")]
485pub struct ModEventViewDetail {
486 pub created_at: proto_blue_syntax::Datetime,
487 pub created_by: proto_blue_syntax::Did,
488 pub event: ModEventViewDetailEventRefs,
489 pub id: i64,
490 #[serde(skip_serializing_if = "Option::is_none")]
491 pub mod_tool: Option<ModTool>,
492 pub subject: ModEventViewDetailSubjectRefs,
493 pub subject_blobs: Vec<BlobView>,
494}
495
496#[derive(Debug, Clone, Serialize, Deserialize)]
498#[serde(rename_all = "camelCase")]
499pub struct ModTool {
500 #[serde(skip_serializing_if = "Option::is_none")]
501 pub meta: Option<serde_json::Value>,
502 pub name: String,
503}
504
505#[derive(Debug, Clone, Serialize, Deserialize)]
506#[serde(rename_all = "camelCase")]
507pub struct Moderation {
508 #[serde(skip_serializing_if = "Option::is_none")]
509 pub subject_status: Option<SubjectStatusView>,
510}
511
512#[derive(Debug, Clone, Serialize, Deserialize)]
513#[serde(rename_all = "camelCase")]
514pub struct ModerationDetail {
515 #[serde(skip_serializing_if = "Option::is_none")]
516 pub subject_status: Option<SubjectStatusView>,
517}
518
519#[derive(Debug, Clone, Serialize, Deserialize)]
521#[serde(rename_all = "camelCase")]
522pub struct RecordEvent {
523 #[serde(skip_serializing_if = "Option::is_none")]
524 pub cid: Option<String>,
525 #[serde(skip_serializing_if = "Option::is_none")]
526 pub comment: Option<String>,
527 pub op: String,
528 pub timestamp: proto_blue_syntax::Datetime,
529}
530
531#[derive(Debug, Clone, Serialize, Deserialize)]
532#[serde(rename_all = "camelCase")]
533pub struct RecordHosting {
534 #[serde(skip_serializing_if = "Option::is_none")]
535 pub created_at: Option<proto_blue_syntax::Datetime>,
536 #[serde(skip_serializing_if = "Option::is_none")]
537 pub deleted_at: Option<proto_blue_syntax::Datetime>,
538 pub status: String,
539 #[serde(skip_serializing_if = "Option::is_none")]
540 pub updated_at: Option<proto_blue_syntax::Datetime>,
541}
542
543#[derive(Debug, Clone, Serialize, Deserialize)]
544#[serde(rename_all = "camelCase")]
545pub struct RecordView {
546 pub blob_cids: Vec<String>,
547 pub cid: String,
548 pub indexed_at: proto_blue_syntax::Datetime,
549 pub moderation: Moderation,
550 pub repo: RepoView,
551 pub uri: proto_blue_syntax::AtUri,
552 pub value: serde_json::Value,
553}
554
555#[derive(Debug, Clone, Serialize, Deserialize)]
556#[serde(rename_all = "camelCase")]
557pub struct RecordViewDetail {
558 pub blobs: Vec<BlobView>,
559 pub cid: String,
560 pub indexed_at: proto_blue_syntax::Datetime,
561 #[serde(skip_serializing_if = "Option::is_none")]
562 pub labels: Option<Vec<crate::com::atproto::label::defs::Label>>,
563 pub moderation: ModerationDetail,
564 pub repo: RepoView,
565 pub uri: proto_blue_syntax::AtUri,
566 pub value: serde_json::Value,
567}
568
569#[derive(Debug, Clone, Serialize, Deserialize)]
570#[serde(rename_all = "camelCase")]
571pub struct RecordViewNotFound {
572 pub uri: proto_blue_syntax::AtUri,
573}
574
575#[derive(Debug, Clone, Serialize, Deserialize)]
577#[serde(rename_all = "camelCase")]
578pub struct RecordsStats {
579 #[serde(skip_serializing_if = "Option::is_none")]
580 pub appealed_count: Option<i64>,
581 #[serde(skip_serializing_if = "Option::is_none")]
582 pub escalated_count: Option<i64>,
583 #[serde(skip_serializing_if = "Option::is_none")]
584 pub pending_count: Option<i64>,
585 #[serde(skip_serializing_if = "Option::is_none")]
586 pub processed_count: Option<i64>,
587 #[serde(skip_serializing_if = "Option::is_none")]
588 pub reported_count: Option<i64>,
589 #[serde(skip_serializing_if = "Option::is_none")]
590 pub subject_count: Option<i64>,
591 #[serde(skip_serializing_if = "Option::is_none")]
592 pub takendown_count: Option<i64>,
593 #[serde(skip_serializing_if = "Option::is_none")]
594 pub total_reports: Option<i64>,
595}
596
597#[derive(Debug, Clone, Serialize, Deserialize)]
598#[serde(rename_all = "camelCase")]
599pub struct RepoView {
600 #[serde(skip_serializing_if = "Option::is_none")]
601 pub deactivated_at: Option<proto_blue_syntax::Datetime>,
602 pub did: proto_blue_syntax::Did,
603 #[serde(skip_serializing_if = "Option::is_none")]
604 pub email: Option<String>,
605 pub handle: proto_blue_syntax::Handle,
606 pub indexed_at: proto_blue_syntax::Datetime,
607 #[serde(skip_serializing_if = "Option::is_none")]
608 pub invite_note: Option<String>,
609 #[serde(skip_serializing_if = "Option::is_none")]
610 pub invited_by: Option<crate::com::atproto::server::defs::InviteCode>,
611 #[serde(skip_serializing_if = "Option::is_none")]
612 pub invites_disabled: Option<bool>,
613 pub moderation: Moderation,
614 pub related_records: Vec<serde_json::Value>,
615 #[serde(skip_serializing_if = "Option::is_none")]
616 pub threat_signatures: Option<Vec<crate::com::atproto::admin::defs::ThreatSignature>>,
617}
618
619#[derive(Debug, Clone, Serialize, Deserialize)]
620#[serde(rename_all = "camelCase")]
621pub struct RepoViewDetail {
622 #[serde(skip_serializing_if = "Option::is_none")]
623 pub deactivated_at: Option<proto_blue_syntax::Datetime>,
624 pub did: proto_blue_syntax::Did,
625 #[serde(skip_serializing_if = "Option::is_none")]
626 pub email: Option<String>,
627 #[serde(skip_serializing_if = "Option::is_none")]
628 pub email_confirmed_at: Option<proto_blue_syntax::Datetime>,
629 pub handle: proto_blue_syntax::Handle,
630 pub indexed_at: proto_blue_syntax::Datetime,
631 #[serde(skip_serializing_if = "Option::is_none")]
632 pub invite_note: Option<String>,
633 #[serde(skip_serializing_if = "Option::is_none")]
634 pub invited_by: Option<crate::com::atproto::server::defs::InviteCode>,
635 #[serde(skip_serializing_if = "Option::is_none")]
636 pub invites: Option<Vec<crate::com::atproto::server::defs::InviteCode>>,
637 #[serde(skip_serializing_if = "Option::is_none")]
638 pub invites_disabled: Option<bool>,
639 #[serde(skip_serializing_if = "Option::is_none")]
640 pub labels: Option<Vec<crate::com::atproto::label::defs::Label>>,
641 pub moderation: ModerationDetail,
642 pub related_records: Vec<serde_json::Value>,
643 #[serde(skip_serializing_if = "Option::is_none")]
644 pub threat_signatures: Option<Vec<crate::com::atproto::admin::defs::ThreatSignature>>,
645}
646
647#[derive(Debug, Clone, Serialize, Deserialize)]
648#[serde(rename_all = "camelCase")]
649pub struct RepoViewNotFound {
650 pub did: proto_blue_syntax::Did,
651}
652
653#[derive(Debug, Clone, Serialize, Deserialize)]
654#[serde(rename_all = "camelCase")]
655pub struct ReporterStats {
656 pub account_report_count: i64,
657 pub did: proto_blue_syntax::Did,
658 pub labeled_account_count: i64,
659 pub labeled_record_count: i64,
660 pub record_report_count: i64,
661 pub reported_account_count: i64,
662 pub reported_record_count: i64,
663 pub takendown_account_count: i64,
664 pub takendown_record_count: i64,
665}
666
667pub const REVIEW_CLOSED: &str = "tools.ozone.moderation.defs#reviewClosed";
669
670pub const REVIEW_ESCALATED: &str = "tools.ozone.moderation.defs#reviewEscalated";
672
673pub const REVIEW_NONE: &str = "tools.ozone.moderation.defs#reviewNone";
675
676pub const REVIEW_OPEN: &str = "tools.ozone.moderation.defs#reviewOpen";
678
679#[derive(Debug, Clone, Serialize, Deserialize)]
681#[serde(rename_all = "camelCase")]
682pub struct RevokeAccountCredentialsEvent {
683 pub comment: String,
684}
685
686#[derive(Debug, Clone, Serialize, Deserialize)]
688#[serde(rename_all = "camelCase")]
689pub struct ScheduleTakedownEvent {
690 #[serde(skip_serializing_if = "Option::is_none")]
691 pub comment: Option<String>,
692 #[serde(skip_serializing_if = "Option::is_none")]
693 pub execute_after: Option<proto_blue_syntax::Datetime>,
694 #[serde(skip_serializing_if = "Option::is_none")]
695 pub execute_at: Option<proto_blue_syntax::Datetime>,
696 #[serde(skip_serializing_if = "Option::is_none")]
697 pub execute_until: Option<proto_blue_syntax::Datetime>,
698}
699
700#[derive(Debug, Clone, Serialize, Deserialize)]
702#[serde(rename_all = "camelCase")]
703pub struct ScheduledActionView {
704 pub action: String,
705 pub created_at: proto_blue_syntax::Datetime,
706 pub created_by: proto_blue_syntax::Did,
707 pub did: proto_blue_syntax::Did,
708 #[serde(skip_serializing_if = "Option::is_none")]
709 pub event_data: Option<serde_json::Value>,
710 #[serde(skip_serializing_if = "Option::is_none")]
711 pub execute_after: Option<proto_blue_syntax::Datetime>,
712 #[serde(skip_serializing_if = "Option::is_none")]
713 pub execute_at: Option<proto_blue_syntax::Datetime>,
714 #[serde(skip_serializing_if = "Option::is_none")]
715 pub execute_until: Option<proto_blue_syntax::Datetime>,
716 #[serde(skip_serializing_if = "Option::is_none")]
717 pub execution_event_id: Option<i64>,
718 pub id: i64,
719 #[serde(skip_serializing_if = "Option::is_none")]
720 pub last_executed_at: Option<proto_blue_syntax::Datetime>,
721 #[serde(skip_serializing_if = "Option::is_none")]
722 pub last_failure_reason: Option<String>,
723 #[serde(skip_serializing_if = "Option::is_none")]
724 pub randomize_execution: Option<bool>,
725 pub status: String,
726 #[serde(skip_serializing_if = "Option::is_none")]
727 pub updated_at: Option<proto_blue_syntax::Datetime>,
728}
729
730pub type SubjectReviewState = String;
731pub const SUBJECT_REVIEW_STATE_REVIEW_OPEN: &str = "tools.ozone.moderation.defs#reviewOpen";
732pub const SUBJECT_REVIEW_STATE_REVIEW_ESCALATED: &str =
733 "tools.ozone.moderation.defs#reviewEscalated";
734pub const SUBJECT_REVIEW_STATE_REVIEW_CLOSED: &str = "tools.ozone.moderation.defs#reviewClosed";
735pub const SUBJECT_REVIEW_STATE_REVIEW_NONE: &str = "tools.ozone.moderation.defs#reviewNone";
736
737#[derive(Debug, Clone, Serialize, Deserialize)]
738#[serde(tag = "$type")]
739pub enum SubjectStatusViewHostingRefs {
740 #[serde(rename = "tools.ozone.moderation.defs#accountHosting")]
741 OzoneModerationDefsAccountHosting(Box<AccountHosting>),
742 #[serde(rename = "tools.ozone.moderation.defs#recordHosting")]
743 OzoneModerationDefsRecordHosting(Box<RecordHosting>),
744 #[serde(other)]
745 Other,
746}
747
748#[derive(Debug, Clone, Serialize, Deserialize)]
749#[serde(tag = "$type")]
750pub enum SubjectStatusViewSubjectRefs {
751 #[serde(rename = "com.atproto.admin.defs#repoRef")]
752 AtprotoAdminDefsRepoRef(Box<crate::com::atproto::admin::defs::RepoRef>),
753 #[serde(rename = "com.atproto.repo.strongRef")]
754 AtprotoRepoStrongRef(Box<crate::com::atproto::repo::strong_ref::Main>),
755 #[serde(rename = "chat.bsky.convo.defs#messageRef")]
756 BskyConvoDefsMessageRef(Box<crate::chat::bsky::convo::defs::MessageRef>),
757 #[serde(other)]
758 Other,
759}
760
761#[derive(Debug, Clone, Serialize, Deserialize)]
762#[serde(rename_all = "camelCase")]
763pub struct SubjectStatusView {
764 #[serde(skip_serializing_if = "Option::is_none")]
765 pub account_stats: Option<AccountStats>,
766 #[serde(skip_serializing_if = "Option::is_none")]
767 pub account_strike: Option<AccountStrike>,
768 #[serde(skip_serializing_if = "Option::is_none")]
769 pub age_assurance_state: Option<String>,
770 #[serde(skip_serializing_if = "Option::is_none")]
771 pub age_assurance_updated_by: Option<String>,
772 #[serde(skip_serializing_if = "Option::is_none")]
773 pub appealed: Option<bool>,
774 #[serde(skip_serializing_if = "Option::is_none")]
775 pub comment: Option<String>,
776 pub created_at: proto_blue_syntax::Datetime,
777 #[serde(skip_serializing_if = "Option::is_none")]
778 pub hosting: Option<SubjectStatusViewHostingRefs>,
779 pub id: i64,
780 #[serde(skip_serializing_if = "Option::is_none")]
781 pub last_appealed_at: Option<proto_blue_syntax::Datetime>,
782 #[serde(skip_serializing_if = "Option::is_none")]
783 pub last_reported_at: Option<proto_blue_syntax::Datetime>,
784 #[serde(skip_serializing_if = "Option::is_none")]
785 pub last_reviewed_at: Option<proto_blue_syntax::Datetime>,
786 #[serde(skip_serializing_if = "Option::is_none")]
787 pub last_reviewed_by: Option<proto_blue_syntax::Did>,
788 #[serde(skip_serializing_if = "Option::is_none")]
789 pub mute_reporting_until: Option<proto_blue_syntax::Datetime>,
790 #[serde(skip_serializing_if = "Option::is_none")]
791 pub mute_until: Option<proto_blue_syntax::Datetime>,
792 #[serde(skip_serializing_if = "Option::is_none")]
793 pub priority_score: Option<i64>,
794 #[serde(skip_serializing_if = "Option::is_none")]
795 pub records_stats: Option<RecordsStats>,
796 pub review_state: SubjectReviewState,
797 pub subject: SubjectStatusViewSubjectRefs,
798 #[serde(skip_serializing_if = "Option::is_none")]
799 pub subject_blob_cids: Option<Vec<String>>,
800 #[serde(skip_serializing_if = "Option::is_none")]
801 pub subject_repo_handle: Option<String>,
802 #[serde(skip_serializing_if = "Option::is_none")]
803 pub suspend_until: Option<proto_blue_syntax::Datetime>,
804 #[serde(skip_serializing_if = "Option::is_none")]
805 pub tags: Option<Vec<String>>,
806 #[serde(skip_serializing_if = "Option::is_none")]
807 pub takendown: Option<bool>,
808 pub updated_at: proto_blue_syntax::Datetime,
809}
810
811#[derive(Debug, Clone, Serialize, Deserialize)]
812#[serde(tag = "$type")]
813pub enum SubjectViewProfileRefs {
814 #[serde(other)]
815 Other,
816}
817
818#[derive(Debug, Clone, Serialize, Deserialize)]
820#[serde(rename_all = "camelCase")]
821pub struct SubjectView {
822 #[serde(skip_serializing_if = "Option::is_none")]
823 pub profile: Option<SubjectViewProfileRefs>,
824 #[serde(skip_serializing_if = "Option::is_none")]
825 pub record: Option<RecordViewDetail>,
826 #[serde(skip_serializing_if = "Option::is_none")]
827 pub repo: Option<RepoViewDetail>,
828 #[serde(skip_serializing_if = "Option::is_none")]
829 pub status: Option<SubjectStatusView>,
830 pub subject: String,
831 #[serde(rename = "type")]
832 pub r#type: crate::com::atproto::moderation::defs::SubjectType,
833}
834
835pub const TIMELINE_EVENT_PLC_CREATE: &str = "tools.ozone.moderation.defs#timelineEventPlcCreate";
837
838pub const TIMELINE_EVENT_PLC_OPERATION: &str =
840 "tools.ozone.moderation.defs#timelineEventPlcOperation";
841
842pub const TIMELINE_EVENT_PLC_TOMBSTONE: &str =
844 "tools.ozone.moderation.defs#timelineEventPlcTombstone";
845
846#[derive(Debug, Clone, Serialize, Deserialize)]
847#[serde(rename_all = "camelCase")]
848pub struct VideoDetails {
849 pub height: i64,
850 pub length: i64,
851 pub width: i64,
852}