1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.ozone.moderation.defs
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8pub mod cancel_scheduled_actions;
9pub mod emit_event;
10pub mod get_account_timeline;
11pub mod get_event;
12pub mod get_record;
13pub mod get_records;
14pub mod get_repo;
15pub mod get_reporter_stats;
16pub mod get_repos;
17pub mod get_subjects;
18pub mod list_scheduled_actions;
19pub mod query_events;
20pub mod query_statuses;
21pub mod schedule_action;
22pub mod search_repos;
23
24///Logs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
25#[jacquard_derive::lexicon]
26#[derive(
27 serde::Serialize,
28 serde::Deserialize,
29 Debug,
30 Clone,
31 PartialEq,
32 Eq,
33 jacquard_derive::IntoStatic
34)]
35#[serde(rename_all = "camelCase")]
36pub struct AccountEvent<'a> {
37 ///Indicates that the account has a repository which can be fetched from the host that emitted this event.
38 pub active: bool,
39 #[serde(skip_serializing_if = "std::option::Option::is_none")]
40 #[serde(borrow)]
41 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
42 #[serde(skip_serializing_if = "std::option::Option::is_none")]
43 #[serde(borrow)]
44 pub status: std::option::Option<jacquard_common::CowStr<'a>>,
45 pub timestamp: jacquard_common::types::string::Datetime,
46}
47
48#[jacquard_derive::lexicon]
49#[derive(
50 serde::Serialize,
51 serde::Deserialize,
52 Debug,
53 Clone,
54 PartialEq,
55 Eq,
56 jacquard_derive::IntoStatic
57)]
58#[serde(rename_all = "camelCase")]
59pub struct AccountHosting<'a> {
60 #[serde(skip_serializing_if = "std::option::Option::is_none")]
61 pub created_at: std::option::Option<jacquard_common::types::string::Datetime>,
62 #[serde(skip_serializing_if = "std::option::Option::is_none")]
63 pub deactivated_at: std::option::Option<jacquard_common::types::string::Datetime>,
64 #[serde(skip_serializing_if = "std::option::Option::is_none")]
65 pub deleted_at: std::option::Option<jacquard_common::types::string::Datetime>,
66 #[serde(skip_serializing_if = "std::option::Option::is_none")]
67 pub reactivated_at: std::option::Option<jacquard_common::types::string::Datetime>,
68 #[serde(borrow)]
69 pub status: jacquard_common::CowStr<'a>,
70 #[serde(skip_serializing_if = "std::option::Option::is_none")]
71 pub updated_at: std::option::Option<jacquard_common::types::string::Datetime>,
72}
73
74///Statistics about a particular account subject
75#[jacquard_derive::lexicon]
76#[derive(
77 serde::Serialize,
78 serde::Deserialize,
79 Debug,
80 Clone,
81 PartialEq,
82 Eq,
83 jacquard_derive::IntoStatic
84)]
85#[serde(rename_all = "camelCase")]
86pub struct AccountStats<'a> {
87 ///Total number of appeals against a moderation action on the account
88 #[serde(skip_serializing_if = "std::option::Option::is_none")]
89 pub appeal_count: std::option::Option<i64>,
90 ///Number of times the account was escalated
91 #[serde(skip_serializing_if = "std::option::Option::is_none")]
92 pub escalate_count: std::option::Option<i64>,
93 ///Total number of reports on the account
94 #[serde(skip_serializing_if = "std::option::Option::is_none")]
95 pub report_count: std::option::Option<i64>,
96 ///Number of times the account was suspended
97 #[serde(skip_serializing_if = "std::option::Option::is_none")]
98 pub suspend_count: std::option::Option<i64>,
99 ///Number of times the account was taken down
100 #[serde(skip_serializing_if = "std::option::Option::is_none")]
101 pub takedown_count: std::option::Option<i64>,
102}
103
104///Age assurance info coming directly from users. Only works on DID subjects.
105#[jacquard_derive::lexicon]
106#[derive(
107 serde::Serialize,
108 serde::Deserialize,
109 Debug,
110 Clone,
111 PartialEq,
112 Eq,
113 jacquard_derive::IntoStatic
114)]
115#[serde(rename_all = "camelCase")]
116pub struct AgeAssuranceEvent<'a> {
117 ///The unique identifier for this instance of the age assurance flow, in UUID format.
118 #[serde(borrow)]
119 pub attempt_id: jacquard_common::CowStr<'a>,
120 ///The IP address used when completing the AA flow.
121 #[serde(skip_serializing_if = "std::option::Option::is_none")]
122 #[serde(borrow)]
123 pub complete_ip: std::option::Option<jacquard_common::CowStr<'a>>,
124 ///The user agent used when completing the AA flow.
125 #[serde(skip_serializing_if = "std::option::Option::is_none")]
126 #[serde(borrow)]
127 pub complete_ua: std::option::Option<jacquard_common::CowStr<'a>>,
128 ///The date and time of this write operation.
129 pub created_at: jacquard_common::types::string::Datetime,
130 ///The IP address used when initiating the AA flow.
131 #[serde(skip_serializing_if = "std::option::Option::is_none")]
132 #[serde(borrow)]
133 pub init_ip: std::option::Option<jacquard_common::CowStr<'a>>,
134 ///The user agent used when initiating the AA flow.
135 #[serde(skip_serializing_if = "std::option::Option::is_none")]
136 #[serde(borrow)]
137 pub init_ua: std::option::Option<jacquard_common::CowStr<'a>>,
138 ///The status of the age assurance process.
139 #[serde(borrow)]
140 pub status: jacquard_common::CowStr<'a>,
141}
142
143///Age assurance status override by moderators. Only works on DID subjects.
144#[jacquard_derive::lexicon]
145#[derive(
146 serde::Serialize,
147 serde::Deserialize,
148 Debug,
149 Clone,
150 PartialEq,
151 Eq,
152 jacquard_derive::IntoStatic
153)]
154#[serde(rename_all = "camelCase")]
155pub struct AgeAssuranceOverrideEvent<'a> {
156 ///Comment describing the reason for the override.
157 #[serde(borrow)]
158 pub comment: jacquard_common::CowStr<'a>,
159 ///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.
160 #[serde(borrow)]
161 pub status: jacquard_common::CowStr<'a>,
162}
163
164#[jacquard_derive::lexicon]
165#[derive(
166 serde::Serialize,
167 serde::Deserialize,
168 Debug,
169 Clone,
170 PartialEq,
171 Eq,
172 jacquard_derive::IntoStatic
173)]
174#[serde(rename_all = "camelCase")]
175pub struct BlobView<'a> {
176 #[serde(borrow)]
177 pub cid: jacquard_common::types::string::Cid<'a>,
178 pub created_at: jacquard_common::types::string::Datetime,
179 #[serde(skip_serializing_if = "std::option::Option::is_none")]
180 #[serde(borrow)]
181 pub details: std::option::Option<BlobViewRecordDetails<'a>>,
182 #[serde(borrow)]
183 pub mime_type: jacquard_common::CowStr<'a>,
184 #[serde(skip_serializing_if = "std::option::Option::is_none")]
185 #[serde(borrow)]
186 pub moderation: std::option::Option<crate::tools_ozone::moderation::Moderation<'a>>,
187 pub size: i64,
188}
189
190#[jacquard_derive::open_union]
191#[derive(
192 serde::Serialize,
193 serde::Deserialize,
194 Debug,
195 Clone,
196 PartialEq,
197 Eq,
198 jacquard_derive::IntoStatic
199)]
200#[serde(tag = "$type")]
201#[serde(bound(deserialize = "'de: 'a"))]
202pub enum BlobViewRecordDetails<'a> {}
203///Logs cancellation of a scheduled takedown action for an account.
204#[jacquard_derive::lexicon]
205#[derive(
206 serde::Serialize,
207 serde::Deserialize,
208 Debug,
209 Clone,
210 PartialEq,
211 Eq,
212 jacquard_derive::IntoStatic
213)]
214#[serde(rename_all = "camelCase")]
215pub struct CancelScheduledTakedownEvent<'a> {
216 #[serde(skip_serializing_if = "std::option::Option::is_none")]
217 #[serde(borrow)]
218 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
219}
220
221///Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
222#[jacquard_derive::lexicon]
223#[derive(
224 serde::Serialize,
225 serde::Deserialize,
226 Debug,
227 Clone,
228 PartialEq,
229 Eq,
230 jacquard_derive::IntoStatic
231)]
232#[serde(rename_all = "camelCase")]
233pub struct IdentityEvent<'a> {
234 #[serde(skip_serializing_if = "std::option::Option::is_none")]
235 #[serde(borrow)]
236 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
237 #[serde(skip_serializing_if = "std::option::Option::is_none")]
238 #[serde(borrow)]
239 pub handle: std::option::Option<jacquard_common::types::string::Handle<'a>>,
240 #[serde(skip_serializing_if = "std::option::Option::is_none")]
241 #[serde(borrow)]
242 pub pds_host: std::option::Option<jacquard_common::types::string::Uri<'a>>,
243 pub timestamp: jacquard_common::types::string::Datetime,
244 #[serde(skip_serializing_if = "std::option::Option::is_none")]
245 pub tombstone: std::option::Option<bool>,
246}
247
248#[jacquard_derive::lexicon]
249#[derive(
250 serde::Serialize,
251 serde::Deserialize,
252 Debug,
253 Clone,
254 PartialEq,
255 Eq,
256 jacquard_derive::IntoStatic
257)]
258#[serde(rename_all = "camelCase")]
259pub struct ImageDetails<'a> {
260 pub height: i64,
261 pub width: i64,
262}
263
264#[jacquard_derive::lexicon]
265#[derive(
266 serde::Serialize,
267 serde::Deserialize,
268 Debug,
269 Clone,
270 PartialEq,
271 Eq,
272 jacquard_derive::IntoStatic
273)]
274#[serde(rename_all = "camelCase")]
275pub struct ModEventAcknowledge<'a> {
276 ///If true, all other reports on content authored by this account will be resolved (acknowledged).
277 #[serde(skip_serializing_if = "std::option::Option::is_none")]
278 pub acknowledge_account_subjects: std::option::Option<bool>,
279 #[serde(skip_serializing_if = "std::option::Option::is_none")]
280 #[serde(borrow)]
281 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
282}
283
284///Add a comment to a subject. An empty comment will clear any previously set sticky comment.
285#[jacquard_derive::lexicon]
286#[derive(
287 serde::Serialize,
288 serde::Deserialize,
289 Debug,
290 Clone,
291 PartialEq,
292 Eq,
293 jacquard_derive::IntoStatic
294)]
295#[serde(rename_all = "camelCase")]
296pub struct ModEventComment<'a> {
297 #[serde(skip_serializing_if = "std::option::Option::is_none")]
298 #[serde(borrow)]
299 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
300 ///Make the comment persistent on the subject
301 #[serde(skip_serializing_if = "std::option::Option::is_none")]
302 pub sticky: std::option::Option<bool>,
303}
304
305///Divert a record's blobs to a 3rd party service for further scanning/tagging
306#[jacquard_derive::lexicon]
307#[derive(
308 serde::Serialize,
309 serde::Deserialize,
310 Debug,
311 Clone,
312 PartialEq,
313 Eq,
314 jacquard_derive::IntoStatic
315)]
316#[serde(rename_all = "camelCase")]
317pub struct ModEventDivert<'a> {
318 #[serde(skip_serializing_if = "std::option::Option::is_none")]
319 #[serde(borrow)]
320 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
321}
322
323///Keep a log of outgoing email to a user
324#[jacquard_derive::lexicon]
325#[derive(
326 serde::Serialize,
327 serde::Deserialize,
328 Debug,
329 Clone,
330 PartialEq,
331 Eq,
332 jacquard_derive::IntoStatic
333)]
334#[serde(rename_all = "camelCase")]
335pub struct ModEventEmail<'a> {
336 ///Additional comment about the outgoing comm.
337 #[serde(skip_serializing_if = "std::option::Option::is_none")]
338 #[serde(borrow)]
339 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
340 ///The content of the email sent to the user.
341 #[serde(skip_serializing_if = "std::option::Option::is_none")]
342 #[serde(borrow)]
343 pub content: std::option::Option<jacquard_common::CowStr<'a>>,
344 ///The subject line of the email sent to the user.
345 #[serde(borrow)]
346 pub subject_line: jacquard_common::CowStr<'a>,
347}
348
349#[jacquard_derive::lexicon]
350#[derive(
351 serde::Serialize,
352 serde::Deserialize,
353 Debug,
354 Clone,
355 PartialEq,
356 Eq,
357 jacquard_derive::IntoStatic
358)]
359#[serde(rename_all = "camelCase")]
360pub struct ModEventEscalate<'a> {
361 #[serde(skip_serializing_if = "std::option::Option::is_none")]
362 #[serde(borrow)]
363 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
364}
365
366///Apply/Negate labels on a subject
367#[jacquard_derive::lexicon]
368#[derive(
369 serde::Serialize,
370 serde::Deserialize,
371 Debug,
372 Clone,
373 PartialEq,
374 Eq,
375 jacquard_derive::IntoStatic
376)]
377#[serde(rename_all = "camelCase")]
378pub struct ModEventLabel<'a> {
379 #[serde(skip_serializing_if = "std::option::Option::is_none")]
380 #[serde(borrow)]
381 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
382 #[serde(borrow)]
383 pub create_label_vals: Vec<jacquard_common::CowStr<'a>>,
384 ///Indicates how long the label will remain on the subject. Only applies on labels that are being added.
385 #[serde(skip_serializing_if = "std::option::Option::is_none")]
386 pub duration_in_hours: std::option::Option<i64>,
387 #[serde(borrow)]
388 pub negate_label_vals: Vec<jacquard_common::CowStr<'a>>,
389}
390
391///Mute incoming reports on a subject
392#[jacquard_derive::lexicon]
393#[derive(
394 serde::Serialize,
395 serde::Deserialize,
396 Debug,
397 Clone,
398 PartialEq,
399 Eq,
400 jacquard_derive::IntoStatic
401)]
402#[serde(rename_all = "camelCase")]
403pub struct ModEventMute<'a> {
404 #[serde(skip_serializing_if = "std::option::Option::is_none")]
405 #[serde(borrow)]
406 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
407 ///Indicates how long the subject should remain muted.
408 pub duration_in_hours: i64,
409}
410
411///Mute incoming reports from an account
412#[jacquard_derive::lexicon]
413#[derive(
414 serde::Serialize,
415 serde::Deserialize,
416 Debug,
417 Clone,
418 PartialEq,
419 Eq,
420 jacquard_derive::IntoStatic
421)]
422#[serde(rename_all = "camelCase")]
423pub struct ModEventMuteReporter<'a> {
424 #[serde(skip_serializing_if = "std::option::Option::is_none")]
425 #[serde(borrow)]
426 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
427 ///Indicates how long the account should remain muted. Falsy value here means a permanent mute.
428 #[serde(skip_serializing_if = "std::option::Option::is_none")]
429 pub duration_in_hours: std::option::Option<i64>,
430}
431
432///Set priority score of the subject. Higher score means higher priority.
433#[jacquard_derive::lexicon]
434#[derive(
435 serde::Serialize,
436 serde::Deserialize,
437 Debug,
438 Clone,
439 PartialEq,
440 Eq,
441 jacquard_derive::IntoStatic
442)]
443#[serde(rename_all = "camelCase")]
444pub struct ModEventPriorityScore<'a> {
445 #[serde(skip_serializing_if = "std::option::Option::is_none")]
446 #[serde(borrow)]
447 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
448 pub score: i64,
449}
450
451///Report a subject
452#[jacquard_derive::lexicon]
453#[derive(
454 serde::Serialize,
455 serde::Deserialize,
456 Debug,
457 Clone,
458 PartialEq,
459 Eq,
460 jacquard_derive::IntoStatic
461)]
462#[serde(rename_all = "camelCase")]
463pub struct ModEventReport<'a> {
464 #[serde(skip_serializing_if = "std::option::Option::is_none")]
465 #[serde(borrow)]
466 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
467 ///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.
468 #[serde(skip_serializing_if = "std::option::Option::is_none")]
469 pub is_reporter_muted: std::option::Option<bool>,
470 #[serde(borrow)]
471 pub report_type: crate::com_atproto::moderation::ReasonType<'a>,
472}
473
474///Resolve appeal on a subject
475#[jacquard_derive::lexicon]
476#[derive(
477 serde::Serialize,
478 serde::Deserialize,
479 Debug,
480 Clone,
481 PartialEq,
482 Eq,
483 jacquard_derive::IntoStatic
484)]
485#[serde(rename_all = "camelCase")]
486pub struct ModEventResolveAppeal<'a> {
487 ///Describe resolution.
488 #[serde(skip_serializing_if = "std::option::Option::is_none")]
489 #[serde(borrow)]
490 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
491}
492
493///Revert take down action on a subject
494#[jacquard_derive::lexicon]
495#[derive(
496 serde::Serialize,
497 serde::Deserialize,
498 Debug,
499 Clone,
500 PartialEq,
501 Eq,
502 jacquard_derive::IntoStatic
503)]
504#[serde(rename_all = "camelCase")]
505pub struct ModEventReverseTakedown<'a> {
506 ///Describe reasoning behind the reversal.
507 #[serde(skip_serializing_if = "std::option::Option::is_none")]
508 #[serde(borrow)]
509 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
510}
511
512///Add/Remove a tag on a subject
513#[jacquard_derive::lexicon]
514#[derive(
515 serde::Serialize,
516 serde::Deserialize,
517 Debug,
518 Clone,
519 PartialEq,
520 Eq,
521 jacquard_derive::IntoStatic
522)]
523#[serde(rename_all = "camelCase")]
524pub struct ModEventTag<'a> {
525 ///Tags to be added to the subject. If already exists, won't be duplicated.
526 #[serde(borrow)]
527 pub add: Vec<jacquard_common::CowStr<'a>>,
528 ///Additional comment about added/removed tags.
529 #[serde(skip_serializing_if = "std::option::Option::is_none")]
530 #[serde(borrow)]
531 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
532 ///Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.
533 #[serde(borrow)]
534 pub remove: Vec<jacquard_common::CowStr<'a>>,
535}
536
537///Take down a subject permanently or temporarily
538#[jacquard_derive::lexicon]
539#[derive(
540 serde::Serialize,
541 serde::Deserialize,
542 Debug,
543 Clone,
544 PartialEq,
545 Eq,
546 jacquard_derive::IntoStatic
547)]
548#[serde(rename_all = "camelCase")]
549pub struct ModEventTakedown<'a> {
550 ///If true, all other reports on content authored by this account will be resolved (acknowledged).
551 #[serde(skip_serializing_if = "std::option::Option::is_none")]
552 pub acknowledge_account_subjects: std::option::Option<bool>,
553 #[serde(skip_serializing_if = "std::option::Option::is_none")]
554 #[serde(borrow)]
555 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
556 ///Indicates how long the takedown should be in effect before automatically expiring.
557 #[serde(skip_serializing_if = "std::option::Option::is_none")]
558 pub duration_in_hours: std::option::Option<i64>,
559 ///Names/Keywords of the policies that drove the decision.
560 #[serde(skip_serializing_if = "std::option::Option::is_none")]
561 #[serde(borrow)]
562 pub policies: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
563}
564
565///Unmute action on a subject
566#[jacquard_derive::lexicon]
567#[derive(
568 serde::Serialize,
569 serde::Deserialize,
570 Debug,
571 Clone,
572 PartialEq,
573 Eq,
574 jacquard_derive::IntoStatic
575)]
576#[serde(rename_all = "camelCase")]
577pub struct ModEventUnmute<'a> {
578 ///Describe reasoning behind the reversal.
579 #[serde(skip_serializing_if = "std::option::Option::is_none")]
580 #[serde(borrow)]
581 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
582}
583
584///Unmute incoming reports from an account
585#[jacquard_derive::lexicon]
586#[derive(
587 serde::Serialize,
588 serde::Deserialize,
589 Debug,
590 Clone,
591 PartialEq,
592 Eq,
593 jacquard_derive::IntoStatic
594)]
595#[serde(rename_all = "camelCase")]
596pub struct ModEventUnmuteReporter<'a> {
597 ///Describe reasoning behind the reversal.
598 #[serde(skip_serializing_if = "std::option::Option::is_none")]
599 #[serde(borrow)]
600 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
601}
602
603#[jacquard_derive::lexicon]
604#[derive(
605 serde::Serialize,
606 serde::Deserialize,
607 Debug,
608 Clone,
609 PartialEq,
610 Eq,
611 jacquard_derive::IntoStatic
612)]
613#[serde(rename_all = "camelCase")]
614pub struct ModEventView<'a> {
615 pub created_at: jacquard_common::types::string::Datetime,
616 #[serde(borrow)]
617 pub created_by: jacquard_common::types::string::Did<'a>,
618 #[serde(skip_serializing_if = "std::option::Option::is_none")]
619 #[serde(borrow)]
620 pub creator_handle: std::option::Option<jacquard_common::CowStr<'a>>,
621 #[serde(borrow)]
622 pub event: ModEventViewRecordEvent<'a>,
623 pub id: i64,
624 #[serde(skip_serializing_if = "std::option::Option::is_none")]
625 #[serde(borrow)]
626 pub mod_tool: std::option::Option<crate::tools_ozone::moderation::ModTool<'a>>,
627 #[serde(borrow)]
628 pub subject: ModEventViewRecordSubject<'a>,
629 #[serde(borrow)]
630 pub subject_blob_cids: Vec<jacquard_common::CowStr<'a>>,
631 #[serde(skip_serializing_if = "std::option::Option::is_none")]
632 #[serde(borrow)]
633 pub subject_handle: std::option::Option<jacquard_common::CowStr<'a>>,
634}
635
636#[jacquard_derive::open_union]
637#[derive(
638 serde::Serialize,
639 serde::Deserialize,
640 Debug,
641 Clone,
642 PartialEq,
643 Eq,
644 jacquard_derive::IntoStatic
645)]
646#[serde(tag = "$type")]
647#[serde(bound(deserialize = "'de: 'a"))]
648pub enum ModEventViewRecordEvent<'a> {}
649#[jacquard_derive::open_union]
650#[derive(
651 serde::Serialize,
652 serde::Deserialize,
653 Debug,
654 Clone,
655 PartialEq,
656 Eq,
657 jacquard_derive::IntoStatic
658)]
659#[serde(tag = "$type")]
660#[serde(bound(deserialize = "'de: 'a"))]
661pub enum ModEventViewRecordSubject<'a> {
662 #[serde(rename = "com.atproto.admin.defs#repoRef")]
663 DefsRepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
664 #[serde(rename = "com.atproto.repo.strongRef")]
665 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
666 #[serde(rename = "chat.bsky.convo.defs#messageRef")]
667 DefsMessageRef(Box<crate::chat_bsky::convo::MessageRef<'a>>),
668}
669
670#[jacquard_derive::lexicon]
671#[derive(
672 serde::Serialize,
673 serde::Deserialize,
674 Debug,
675 Clone,
676 PartialEq,
677 Eq,
678 jacquard_derive::IntoStatic
679)]
680#[serde(rename_all = "camelCase")]
681pub struct ModEventViewDetail<'a> {
682 pub created_at: jacquard_common::types::string::Datetime,
683 #[serde(borrow)]
684 pub created_by: jacquard_common::types::string::Did<'a>,
685 #[serde(borrow)]
686 pub event: ModEventViewDetailRecordEvent<'a>,
687 pub id: i64,
688 #[serde(skip_serializing_if = "std::option::Option::is_none")]
689 #[serde(borrow)]
690 pub mod_tool: std::option::Option<crate::tools_ozone::moderation::ModTool<'a>>,
691 #[serde(borrow)]
692 pub subject: ModEventViewDetailRecordSubject<'a>,
693 #[serde(borrow)]
694 pub subject_blobs: Vec<crate::tools_ozone::moderation::BlobView<'a>>,
695}
696
697#[jacquard_derive::open_union]
698#[derive(
699 serde::Serialize,
700 serde::Deserialize,
701 Debug,
702 Clone,
703 PartialEq,
704 Eq,
705 jacquard_derive::IntoStatic
706)]
707#[serde(tag = "$type")]
708#[serde(bound(deserialize = "'de: 'a"))]
709pub enum ModEventViewDetailRecordEvent<'a> {}
710#[jacquard_derive::open_union]
711#[derive(
712 serde::Serialize,
713 serde::Deserialize,
714 Debug,
715 Clone,
716 PartialEq,
717 Eq,
718 jacquard_derive::IntoStatic
719)]
720#[serde(tag = "$type")]
721#[serde(bound(deserialize = "'de: 'a"))]
722pub enum ModEventViewDetailRecordSubject<'a> {}
723///Moderation tool information for tracing the source of the action
724#[jacquard_derive::lexicon]
725#[derive(
726 serde::Serialize,
727 serde::Deserialize,
728 Debug,
729 Clone,
730 PartialEq,
731 Eq,
732 jacquard_derive::IntoStatic
733)]
734#[serde(rename_all = "camelCase")]
735pub struct ModTool<'a> {
736 ///Additional arbitrary metadata about the source
737 #[serde(skip_serializing_if = "std::option::Option::is_none")]
738 #[serde(borrow)]
739 pub meta: std::option::Option<jacquard_common::types::value::Data<'a>>,
740 ///Name/identifier of the source (e.g., 'automod', 'ozone/workspace')
741 #[serde(borrow)]
742 pub name: jacquard_common::CowStr<'a>,
743}
744
745#[jacquard_derive::lexicon]
746#[derive(
747 serde::Serialize,
748 serde::Deserialize,
749 Debug,
750 Clone,
751 PartialEq,
752 Eq,
753 jacquard_derive::IntoStatic
754)]
755#[serde(rename_all = "camelCase")]
756pub struct Moderation<'a> {
757 #[serde(skip_serializing_if = "std::option::Option::is_none")]
758 #[serde(borrow)]
759 pub subject_status: std::option::Option<
760 crate::tools_ozone::moderation::SubjectStatusView<'a>,
761 >,
762}
763
764#[jacquard_derive::lexicon]
765#[derive(
766 serde::Serialize,
767 serde::Deserialize,
768 Debug,
769 Clone,
770 PartialEq,
771 Eq,
772 jacquard_derive::IntoStatic
773)]
774#[serde(rename_all = "camelCase")]
775pub struct ModerationDetail<'a> {
776 #[serde(skip_serializing_if = "std::option::Option::is_none")]
777 #[serde(borrow)]
778 pub subject_status: std::option::Option<
779 crate::tools_ozone::moderation::SubjectStatusView<'a>,
780 >,
781}
782
783///Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
784#[jacquard_derive::lexicon]
785#[derive(
786 serde::Serialize,
787 serde::Deserialize,
788 Debug,
789 Clone,
790 PartialEq,
791 Eq,
792 jacquard_derive::IntoStatic
793)]
794#[serde(rename_all = "camelCase")]
795pub struct RecordEvent<'a> {
796 #[serde(skip_serializing_if = "std::option::Option::is_none")]
797 #[serde(borrow)]
798 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
799 #[serde(skip_serializing_if = "std::option::Option::is_none")]
800 #[serde(borrow)]
801 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
802 #[serde(borrow)]
803 pub op: jacquard_common::CowStr<'a>,
804 pub timestamp: jacquard_common::types::string::Datetime,
805}
806
807#[jacquard_derive::lexicon]
808#[derive(
809 serde::Serialize,
810 serde::Deserialize,
811 Debug,
812 Clone,
813 PartialEq,
814 Eq,
815 jacquard_derive::IntoStatic
816)]
817#[serde(rename_all = "camelCase")]
818pub struct RecordHosting<'a> {
819 #[serde(skip_serializing_if = "std::option::Option::is_none")]
820 pub created_at: std::option::Option<jacquard_common::types::string::Datetime>,
821 #[serde(skip_serializing_if = "std::option::Option::is_none")]
822 pub deleted_at: std::option::Option<jacquard_common::types::string::Datetime>,
823 #[serde(borrow)]
824 pub status: jacquard_common::CowStr<'a>,
825 #[serde(skip_serializing_if = "std::option::Option::is_none")]
826 pub updated_at: std::option::Option<jacquard_common::types::string::Datetime>,
827}
828
829#[jacquard_derive::lexicon]
830#[derive(
831 serde::Serialize,
832 serde::Deserialize,
833 Debug,
834 Clone,
835 PartialEq,
836 Eq,
837 jacquard_derive::IntoStatic
838)]
839#[serde(rename_all = "camelCase")]
840pub struct RecordView<'a> {
841 #[serde(borrow)]
842 pub blob_cids: Vec<jacquard_common::types::string::Cid<'a>>,
843 #[serde(borrow)]
844 pub cid: jacquard_common::types::string::Cid<'a>,
845 pub indexed_at: jacquard_common::types::string::Datetime,
846 #[serde(borrow)]
847 pub moderation: crate::tools_ozone::moderation::Moderation<'a>,
848 #[serde(borrow)]
849 pub repo: crate::tools_ozone::moderation::RepoView<'a>,
850 #[serde(borrow)]
851 pub uri: jacquard_common::types::string::AtUri<'a>,
852 #[serde(borrow)]
853 pub value: jacquard_common::types::value::Data<'a>,
854}
855
856#[jacquard_derive::lexicon]
857#[derive(
858 serde::Serialize,
859 serde::Deserialize,
860 Debug,
861 Clone,
862 PartialEq,
863 Eq,
864 jacquard_derive::IntoStatic
865)]
866#[serde(rename_all = "camelCase")]
867pub struct RecordViewDetail<'a> {
868 #[serde(borrow)]
869 pub blobs: Vec<crate::tools_ozone::moderation::BlobView<'a>>,
870 #[serde(borrow)]
871 pub cid: jacquard_common::types::string::Cid<'a>,
872 pub indexed_at: jacquard_common::types::string::Datetime,
873 #[serde(skip_serializing_if = "std::option::Option::is_none")]
874 #[serde(borrow)]
875 pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>,
876 #[serde(borrow)]
877 pub moderation: crate::tools_ozone::moderation::ModerationDetail<'a>,
878 #[serde(borrow)]
879 pub repo: crate::tools_ozone::moderation::RepoView<'a>,
880 #[serde(borrow)]
881 pub uri: jacquard_common::types::string::AtUri<'a>,
882 #[serde(borrow)]
883 pub value: jacquard_common::types::value::Data<'a>,
884}
885
886#[jacquard_derive::lexicon]
887#[derive(
888 serde::Serialize,
889 serde::Deserialize,
890 Debug,
891 Clone,
892 PartialEq,
893 Eq,
894 jacquard_derive::IntoStatic
895)]
896#[serde(rename_all = "camelCase")]
897pub struct RecordViewNotFound<'a> {
898 #[serde(borrow)]
899 pub uri: jacquard_common::types::string::AtUri<'a>,
900}
901
902///Statistics about a set of record subject items
903#[jacquard_derive::lexicon]
904#[derive(
905 serde::Serialize,
906 serde::Deserialize,
907 Debug,
908 Clone,
909 PartialEq,
910 Eq,
911 jacquard_derive::IntoStatic
912)]
913#[serde(rename_all = "camelCase")]
914pub struct RecordsStats<'a> {
915 ///Number of items that were appealed at least once
916 #[serde(skip_serializing_if = "std::option::Option::is_none")]
917 pub appealed_count: std::option::Option<i64>,
918 ///Number of items that were escalated at least once
919 #[serde(skip_serializing_if = "std::option::Option::is_none")]
920 pub escalated_count: std::option::Option<i64>,
921 ///Number of item currently in "reviewOpen" or "reviewEscalated" state
922 #[serde(skip_serializing_if = "std::option::Option::is_none")]
923 pub pending_count: std::option::Option<i64>,
924 ///Number of item currently in "reviewNone" or "reviewClosed" state
925 #[serde(skip_serializing_if = "std::option::Option::is_none")]
926 pub processed_count: std::option::Option<i64>,
927 ///Number of items that were reported at least once
928 #[serde(skip_serializing_if = "std::option::Option::is_none")]
929 pub reported_count: std::option::Option<i64>,
930 ///Total number of item in the set
931 #[serde(skip_serializing_if = "std::option::Option::is_none")]
932 pub subject_count: std::option::Option<i64>,
933 ///Number of item currently taken down
934 #[serde(skip_serializing_if = "std::option::Option::is_none")]
935 pub takendown_count: std::option::Option<i64>,
936 ///Cumulative sum of the number of reports on the items in the set
937 #[serde(skip_serializing_if = "std::option::Option::is_none")]
938 pub total_reports: std::option::Option<i64>,
939}
940
941#[jacquard_derive::lexicon]
942#[derive(
943 serde::Serialize,
944 serde::Deserialize,
945 Debug,
946 Clone,
947 PartialEq,
948 Eq,
949 jacquard_derive::IntoStatic
950)]
951#[serde(rename_all = "camelCase")]
952pub struct RepoView<'a> {
953 #[serde(skip_serializing_if = "std::option::Option::is_none")]
954 pub deactivated_at: std::option::Option<jacquard_common::types::string::Datetime>,
955 #[serde(borrow)]
956 pub did: jacquard_common::types::string::Did<'a>,
957 #[serde(skip_serializing_if = "std::option::Option::is_none")]
958 #[serde(borrow)]
959 pub email: std::option::Option<jacquard_common::CowStr<'a>>,
960 #[serde(borrow)]
961 pub handle: jacquard_common::types::string::Handle<'a>,
962 pub indexed_at: jacquard_common::types::string::Datetime,
963 #[serde(skip_serializing_if = "std::option::Option::is_none")]
964 #[serde(borrow)]
965 pub invite_note: std::option::Option<jacquard_common::CowStr<'a>>,
966 #[serde(skip_serializing_if = "std::option::Option::is_none")]
967 #[serde(borrow)]
968 pub invited_by: std::option::Option<crate::com_atproto::server::InviteCode<'a>>,
969 #[serde(skip_serializing_if = "std::option::Option::is_none")]
970 pub invites_disabled: std::option::Option<bool>,
971 #[serde(borrow)]
972 pub moderation: crate::tools_ozone::moderation::Moderation<'a>,
973 #[serde(borrow)]
974 pub related_records: Vec<jacquard_common::types::value::Data<'a>>,
975 #[serde(skip_serializing_if = "std::option::Option::is_none")]
976 #[serde(borrow)]
977 pub threat_signatures: std::option::Option<
978 Vec<crate::com_atproto::admin::ThreatSignature<'a>>,
979 >,
980}
981
982#[jacquard_derive::lexicon]
983#[derive(
984 serde::Serialize,
985 serde::Deserialize,
986 Debug,
987 Clone,
988 PartialEq,
989 Eq,
990 jacquard_derive::IntoStatic
991)]
992#[serde(rename_all = "camelCase")]
993pub struct RepoViewDetail<'a> {
994 #[serde(skip_serializing_if = "std::option::Option::is_none")]
995 pub deactivated_at: std::option::Option<jacquard_common::types::string::Datetime>,
996 #[serde(borrow)]
997 pub did: jacquard_common::types::string::Did<'a>,
998 #[serde(skip_serializing_if = "std::option::Option::is_none")]
999 #[serde(borrow)]
1000 pub email: std::option::Option<jacquard_common::CowStr<'a>>,
1001 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1002 pub email_confirmed_at: std::option::Option<
1003 jacquard_common::types::string::Datetime,
1004 >,
1005 #[serde(borrow)]
1006 pub handle: jacquard_common::types::string::Handle<'a>,
1007 pub indexed_at: jacquard_common::types::string::Datetime,
1008 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1009 #[serde(borrow)]
1010 pub invite_note: std::option::Option<jacquard_common::CowStr<'a>>,
1011 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1012 #[serde(borrow)]
1013 pub invited_by: std::option::Option<crate::com_atproto::server::InviteCode<'a>>,
1014 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1015 #[serde(borrow)]
1016 pub invites: std::option::Option<Vec<crate::com_atproto::server::InviteCode<'a>>>,
1017 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1018 pub invites_disabled: std::option::Option<bool>,
1019 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1020 #[serde(borrow)]
1021 pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>,
1022 #[serde(borrow)]
1023 pub moderation: crate::tools_ozone::moderation::ModerationDetail<'a>,
1024 #[serde(borrow)]
1025 pub related_records: Vec<jacquard_common::types::value::Data<'a>>,
1026 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1027 #[serde(borrow)]
1028 pub threat_signatures: std::option::Option<
1029 Vec<crate::com_atproto::admin::ThreatSignature<'a>>,
1030 >,
1031}
1032
1033#[jacquard_derive::lexicon]
1034#[derive(
1035 serde::Serialize,
1036 serde::Deserialize,
1037 Debug,
1038 Clone,
1039 PartialEq,
1040 Eq,
1041 jacquard_derive::IntoStatic
1042)]
1043#[serde(rename_all = "camelCase")]
1044pub struct RepoViewNotFound<'a> {
1045 #[serde(borrow)]
1046 pub did: jacquard_common::types::string::Did<'a>,
1047}
1048
1049#[jacquard_derive::lexicon]
1050#[derive(
1051 serde::Serialize,
1052 serde::Deserialize,
1053 Debug,
1054 Clone,
1055 PartialEq,
1056 Eq,
1057 jacquard_derive::IntoStatic
1058)]
1059#[serde(rename_all = "camelCase")]
1060pub struct ReporterStats<'a> {
1061 ///The total number of reports made by the user on accounts.
1062 pub account_report_count: i64,
1063 #[serde(borrow)]
1064 pub did: jacquard_common::types::string::Did<'a>,
1065 ///The total number of accounts labeled as a result of the user's reports.
1066 pub labeled_account_count: i64,
1067 ///The total number of records labeled as a result of the user's reports.
1068 pub labeled_record_count: i64,
1069 ///The total number of reports made by the user on records.
1070 pub record_report_count: i64,
1071 ///The total number of accounts reported by the user.
1072 pub reported_account_count: i64,
1073 ///The total number of records reported by the user.
1074 pub reported_record_count: i64,
1075 ///The total number of accounts taken down as a result of the user's reports.
1076 pub takendown_account_count: i64,
1077 ///The total number of records taken down as a result of the user's reports.
1078 pub takendown_record_count: i64,
1079}
1080
1081///Account credentials revocation by moderators. Only works on DID subjects.
1082#[jacquard_derive::lexicon]
1083#[derive(
1084 serde::Serialize,
1085 serde::Deserialize,
1086 Debug,
1087 Clone,
1088 PartialEq,
1089 Eq,
1090 jacquard_derive::IntoStatic
1091)]
1092#[serde(rename_all = "camelCase")]
1093pub struct RevokeAccountCredentialsEvent<'a> {
1094 ///Comment describing the reason for the revocation.
1095 #[serde(borrow)]
1096 pub comment: jacquard_common::CowStr<'a>,
1097}
1098
1099///Logs a scheduled takedown action for an account.
1100#[jacquard_derive::lexicon]
1101#[derive(
1102 serde::Serialize,
1103 serde::Deserialize,
1104 Debug,
1105 Clone,
1106 PartialEq,
1107 Eq,
1108 jacquard_derive::IntoStatic
1109)]
1110#[serde(rename_all = "camelCase")]
1111pub struct ScheduleTakedownEvent<'a> {
1112 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1113 #[serde(borrow)]
1114 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
1115 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1116 pub execute_after: std::option::Option<jacquard_common::types::string::Datetime>,
1117 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1118 pub execute_at: std::option::Option<jacquard_common::types::string::Datetime>,
1119 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1120 pub execute_until: std::option::Option<jacquard_common::types::string::Datetime>,
1121}
1122
1123///View of a scheduled moderation action
1124#[jacquard_derive::lexicon]
1125#[derive(
1126 serde::Serialize,
1127 serde::Deserialize,
1128 Debug,
1129 Clone,
1130 PartialEq,
1131 Eq,
1132 jacquard_derive::IntoStatic
1133)]
1134#[serde(rename_all = "camelCase")]
1135pub struct ScheduledActionView<'a> {
1136 ///Type of action to be executed
1137 #[serde(borrow)]
1138 pub action: jacquard_common::CowStr<'a>,
1139 ///When the scheduled action was created
1140 pub created_at: jacquard_common::types::string::Datetime,
1141 ///DID of the user who created this scheduled action
1142 #[serde(borrow)]
1143 pub created_by: jacquard_common::types::string::Did<'a>,
1144 ///Subject DID for the action
1145 #[serde(borrow)]
1146 pub did: jacquard_common::types::string::Did<'a>,
1147 ///Serialized event object that will be propagated to the event when performed
1148 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1149 #[serde(borrow)]
1150 pub event_data: std::option::Option<jacquard_common::types::value::Data<'a>>,
1151 ///Earliest time to execute the action (for randomized scheduling)
1152 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1153 pub execute_after: std::option::Option<jacquard_common::types::string::Datetime>,
1154 ///Exact time to execute the action
1155 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1156 pub execute_at: std::option::Option<jacquard_common::types::string::Datetime>,
1157 ///Latest time to execute the action (for randomized scheduling)
1158 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1159 pub execute_until: std::option::Option<jacquard_common::types::string::Datetime>,
1160 ///ID of the moderation event created when action was successfully executed
1161 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1162 pub execution_event_id: std::option::Option<i64>,
1163 ///Auto-incrementing row ID
1164 pub id: i64,
1165 ///When the action was last attempted to be executed
1166 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1167 pub last_executed_at: std::option::Option<jacquard_common::types::string::Datetime>,
1168 ///Reason for the last execution failure
1169 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1170 #[serde(borrow)]
1171 pub last_failure_reason: std::option::Option<jacquard_common::CowStr<'a>>,
1172 ///Whether execution time should be randomized within the specified range
1173 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1174 pub randomize_execution: std::option::Option<bool>,
1175 ///Current status of the scheduled action
1176 #[serde(borrow)]
1177 pub status: jacquard_common::CowStr<'a>,
1178 ///When the scheduled action was last updated
1179 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1180 pub updated_at: std::option::Option<jacquard_common::types::string::Datetime>,
1181}
1182
1183#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1184pub enum SubjectReviewState<'a> {
1185 ReviewOpen,
1186 ReviewEscalated,
1187 ReviewClosed,
1188 ReviewNone,
1189 Other(jacquard_common::CowStr<'a>),
1190}
1191
1192impl<'a> SubjectReviewState<'a> {
1193 pub fn as_str(&self) -> &str {
1194 match self {
1195 Self::ReviewOpen => "#reviewOpen",
1196 Self::ReviewEscalated => "#reviewEscalated",
1197 Self::ReviewClosed => "#reviewClosed",
1198 Self::ReviewNone => "#reviewNone",
1199 Self::Other(s) => s.as_ref(),
1200 }
1201 }
1202}
1203
1204impl<'a> From<&'a str> for SubjectReviewState<'a> {
1205 fn from(s: &'a str) -> Self {
1206 match s {
1207 "#reviewOpen" => Self::ReviewOpen,
1208 "#reviewEscalated" => Self::ReviewEscalated,
1209 "#reviewClosed" => Self::ReviewClosed,
1210 "#reviewNone" => Self::ReviewNone,
1211 _ => Self::Other(jacquard_common::CowStr::from(s)),
1212 }
1213 }
1214}
1215
1216impl<'a> From<String> for SubjectReviewState<'a> {
1217 fn from(s: String) -> Self {
1218 match s.as_str() {
1219 "#reviewOpen" => Self::ReviewOpen,
1220 "#reviewEscalated" => Self::ReviewEscalated,
1221 "#reviewClosed" => Self::ReviewClosed,
1222 "#reviewNone" => Self::ReviewNone,
1223 _ => Self::Other(jacquard_common::CowStr::from(s)),
1224 }
1225 }
1226}
1227
1228impl<'a> AsRef<str> for SubjectReviewState<'a> {
1229 fn as_ref(&self) -> &str {
1230 self.as_str()
1231 }
1232}
1233
1234impl<'a> serde::Serialize for SubjectReviewState<'a> {
1235 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1236 where
1237 S: serde::Serializer,
1238 {
1239 serializer.serialize_str(self.as_str())
1240 }
1241}
1242
1243impl<'de, 'a> serde::Deserialize<'de> for SubjectReviewState<'a>
1244where
1245 'de: 'a,
1246{
1247 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1248 where
1249 D: serde::Deserializer<'de>,
1250 {
1251 let s = <&'de str>::deserialize(deserializer)?;
1252 Ok(Self::from(s))
1253 }
1254}
1255
1256impl jacquard_common::IntoStatic for SubjectReviewState<'_> {
1257 type Output = SubjectReviewState<'static>;
1258 fn into_static(self) -> Self::Output {
1259 match self {
1260 SubjectReviewState::ReviewOpen => SubjectReviewState::ReviewOpen,
1261 SubjectReviewState::ReviewEscalated => SubjectReviewState::ReviewEscalated,
1262 SubjectReviewState::ReviewClosed => SubjectReviewState::ReviewClosed,
1263 SubjectReviewState::ReviewNone => SubjectReviewState::ReviewNone,
1264 SubjectReviewState::Other(v) => SubjectReviewState::Other(v.into_static()),
1265 }
1266 }
1267}
1268
1269#[jacquard_derive::lexicon]
1270#[derive(
1271 serde::Serialize,
1272 serde::Deserialize,
1273 Debug,
1274 Clone,
1275 PartialEq,
1276 Eq,
1277 jacquard_derive::IntoStatic
1278)]
1279#[serde(rename_all = "camelCase")]
1280pub struct SubjectStatusView<'a> {
1281 ///Statistics related to the account subject
1282 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1283 #[serde(borrow)]
1284 pub account_stats: std::option::Option<
1285 crate::tools_ozone::moderation::AccountStats<'a>,
1286 >,
1287 ///Current age assurance state of the subject.
1288 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1289 #[serde(borrow)]
1290 pub age_assurance_state: std::option::Option<jacquard_common::CowStr<'a>>,
1291 ///Whether or not the last successful update to age assurance was made by the user or admin.
1292 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1293 #[serde(borrow)]
1294 pub age_assurance_updated_by: std::option::Option<jacquard_common::CowStr<'a>>,
1295 ///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.
1296 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1297 pub appealed: std::option::Option<bool>,
1298 ///Sticky comment on the subject.
1299 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1300 #[serde(borrow)]
1301 pub comment: std::option::Option<jacquard_common::CowStr<'a>>,
1302 ///Timestamp referencing the first moderation status impacting event was emitted on the subject
1303 pub created_at: jacquard_common::types::string::Datetime,
1304 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1305 #[serde(borrow)]
1306 pub hosting: std::option::Option<SubjectStatusViewRecordHosting<'a>>,
1307 pub id: i64,
1308 ///Timestamp referencing when the author of the subject appealed a moderation action
1309 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1310 pub last_appealed_at: std::option::Option<jacquard_common::types::string::Datetime>,
1311 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1312 pub last_reported_at: std::option::Option<jacquard_common::types::string::Datetime>,
1313 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1314 pub last_reviewed_at: std::option::Option<jacquard_common::types::string::Datetime>,
1315 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1316 #[serde(borrow)]
1317 pub last_reviewed_by: std::option::Option<jacquard_common::types::string::Did<'a>>,
1318 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1319 pub mute_reporting_until: std::option::Option<
1320 jacquard_common::types::string::Datetime,
1321 >,
1322 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1323 pub mute_until: std::option::Option<jacquard_common::types::string::Datetime>,
1324 ///Numeric value representing the level of priority. Higher score means higher priority.
1325 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1326 pub priority_score: std::option::Option<i64>,
1327 ///Statistics related to the record subjects authored by the subject's account
1328 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1329 #[serde(borrow)]
1330 pub records_stats: std::option::Option<
1331 crate::tools_ozone::moderation::RecordsStats<'a>,
1332 >,
1333 #[serde(borrow)]
1334 pub review_state: crate::tools_ozone::moderation::SubjectReviewState<'a>,
1335 #[serde(borrow)]
1336 pub subject: SubjectStatusViewRecordSubject<'a>,
1337 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1338 #[serde(borrow)]
1339 pub subject_blob_cids: std::option::Option<
1340 Vec<jacquard_common::types::string::Cid<'a>>,
1341 >,
1342 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1343 #[serde(borrow)]
1344 pub subject_repo_handle: std::option::Option<jacquard_common::CowStr<'a>>,
1345 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1346 pub suspend_until: std::option::Option<jacquard_common::types::string::Datetime>,
1347 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1348 #[serde(borrow)]
1349 pub tags: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
1350 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1351 pub takendown: std::option::Option<bool>,
1352 ///Timestamp referencing when the last update was made to the moderation status of the subject
1353 pub updated_at: jacquard_common::types::string::Datetime,
1354}
1355
1356#[jacquard_derive::open_union]
1357#[derive(
1358 serde::Serialize,
1359 serde::Deserialize,
1360 Debug,
1361 Clone,
1362 PartialEq,
1363 Eq,
1364 jacquard_derive::IntoStatic
1365)]
1366#[serde(tag = "$type")]
1367#[serde(bound(deserialize = "'de: 'a"))]
1368pub enum SubjectStatusViewRecordHosting<'a> {}
1369#[jacquard_derive::open_union]
1370#[derive(
1371 serde::Serialize,
1372 serde::Deserialize,
1373 Debug,
1374 Clone,
1375 PartialEq,
1376 Eq,
1377 jacquard_derive::IntoStatic
1378)]
1379#[serde(tag = "$type")]
1380#[serde(bound(deserialize = "'de: 'a"))]
1381pub enum SubjectStatusViewRecordSubject<'a> {
1382 #[serde(rename = "com.atproto.admin.defs#repoRef")]
1383 DefsRepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
1384 #[serde(rename = "com.atproto.repo.strongRef")]
1385 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
1386 #[serde(rename = "chat.bsky.convo.defs#messageRef")]
1387 DefsMessageRef(Box<crate::chat_bsky::convo::MessageRef<'a>>),
1388}
1389
1390///Detailed view of a subject. For record subjects, the author's repo and profile will be returned.
1391#[jacquard_derive::lexicon]
1392#[derive(
1393 serde::Serialize,
1394 serde::Deserialize,
1395 Debug,
1396 Clone,
1397 PartialEq,
1398 Eq,
1399 jacquard_derive::IntoStatic
1400)]
1401#[serde(rename_all = "camelCase")]
1402pub struct SubjectView<'a> {
1403 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1404 #[serde(borrow)]
1405 pub profile: std::option::Option<SubjectViewRecordProfile<'a>>,
1406 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1407 #[serde(borrow)]
1408 pub record: std::option::Option<
1409 crate::tools_ozone::moderation::RecordViewDetail<'a>,
1410 >,
1411 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1412 #[serde(borrow)]
1413 pub repo: std::option::Option<crate::tools_ozone::moderation::RepoViewDetail<'a>>,
1414 #[serde(skip_serializing_if = "std::option::Option::is_none")]
1415 #[serde(borrow)]
1416 pub status: std::option::Option<
1417 crate::tools_ozone::moderation::SubjectStatusView<'a>,
1418 >,
1419 #[serde(borrow)]
1420 pub subject: jacquard_common::CowStr<'a>,
1421 #[serde(borrow)]
1422 pub r#type: crate::com_atproto::moderation::SubjectType<'a>,
1423}
1424
1425#[jacquard_derive::open_union]
1426#[derive(
1427 serde::Serialize,
1428 serde::Deserialize,
1429 Debug,
1430 Clone,
1431 PartialEq,
1432 Eq,
1433 jacquard_derive::IntoStatic
1434)]
1435#[serde(tag = "$type")]
1436#[serde(bound(deserialize = "'de: 'a"))]
1437pub enum SubjectViewRecordProfile<'a> {}
1438#[jacquard_derive::lexicon]
1439#[derive(
1440 serde::Serialize,
1441 serde::Deserialize,
1442 Debug,
1443 Clone,
1444 PartialEq,
1445 Eq,
1446 jacquard_derive::IntoStatic
1447)]
1448#[serde(rename_all = "camelCase")]
1449pub struct VideoDetails<'a> {
1450 pub height: i64,
1451 pub length: i64,
1452 pub width: i64,
1453}