A better Rust ATProto crate
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<BlobViewDetails<'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 BlobViewDetails<'a> { 203 #[serde(rename = "tools.ozone.moderation.defs#imageDetails")] 204 ImageDetails(Box<crate::tools_ozone::moderation::ImageDetails<'a>>), 205 #[serde(rename = "tools.ozone.moderation.defs#videoDetails")] 206 VideoDetails(Box<crate::tools_ozone::moderation::VideoDetails<'a>>), 207} 208 209///Logs cancellation of a scheduled takedown action for an account. 210#[jacquard_derive::lexicon] 211#[derive( 212 serde::Serialize, 213 serde::Deserialize, 214 Debug, 215 Clone, 216 PartialEq, 217 Eq, 218 jacquard_derive::IntoStatic 219)] 220#[serde(rename_all = "camelCase")] 221pub struct CancelScheduledTakedownEvent<'a> { 222 #[serde(skip_serializing_if = "std::option::Option::is_none")] 223 #[serde(borrow)] 224 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 225} 226 227///Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking. 228#[jacquard_derive::lexicon] 229#[derive( 230 serde::Serialize, 231 serde::Deserialize, 232 Debug, 233 Clone, 234 PartialEq, 235 Eq, 236 jacquard_derive::IntoStatic 237)] 238#[serde(rename_all = "camelCase")] 239pub struct IdentityEvent<'a> { 240 #[serde(skip_serializing_if = "std::option::Option::is_none")] 241 #[serde(borrow)] 242 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 243 #[serde(skip_serializing_if = "std::option::Option::is_none")] 244 #[serde(borrow)] 245 pub handle: std::option::Option<jacquard_common::types::string::Handle<'a>>, 246 #[serde(skip_serializing_if = "std::option::Option::is_none")] 247 #[serde(borrow)] 248 pub pds_host: std::option::Option<jacquard_common::types::string::Uri<'a>>, 249 pub timestamp: jacquard_common::types::string::Datetime, 250 #[serde(skip_serializing_if = "std::option::Option::is_none")] 251 pub tombstone: std::option::Option<bool>, 252} 253 254#[jacquard_derive::lexicon] 255#[derive( 256 serde::Serialize, 257 serde::Deserialize, 258 Debug, 259 Clone, 260 PartialEq, 261 Eq, 262 jacquard_derive::IntoStatic 263)] 264#[serde(rename_all = "camelCase")] 265pub struct ImageDetails<'a> { 266 pub height: i64, 267 pub width: i64, 268} 269 270#[jacquard_derive::lexicon] 271#[derive( 272 serde::Serialize, 273 serde::Deserialize, 274 Debug, 275 Clone, 276 PartialEq, 277 Eq, 278 jacquard_derive::IntoStatic 279)] 280#[serde(rename_all = "camelCase")] 281pub struct ModEventAcknowledge<'a> { 282 ///If true, all other reports on content authored by this account will be resolved (acknowledged). 283 #[serde(skip_serializing_if = "std::option::Option::is_none")] 284 pub acknowledge_account_subjects: std::option::Option<bool>, 285 #[serde(skip_serializing_if = "std::option::Option::is_none")] 286 #[serde(borrow)] 287 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 288} 289 290///Add a comment to a subject. An empty comment will clear any previously set sticky comment. 291#[jacquard_derive::lexicon] 292#[derive( 293 serde::Serialize, 294 serde::Deserialize, 295 Debug, 296 Clone, 297 PartialEq, 298 Eq, 299 jacquard_derive::IntoStatic 300)] 301#[serde(rename_all = "camelCase")] 302pub struct ModEventComment<'a> { 303 #[serde(skip_serializing_if = "std::option::Option::is_none")] 304 #[serde(borrow)] 305 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 306 ///Make the comment persistent on the subject 307 #[serde(skip_serializing_if = "std::option::Option::is_none")] 308 pub sticky: std::option::Option<bool>, 309} 310 311///Divert a record's blobs to a 3rd party service for further scanning/tagging 312#[jacquard_derive::lexicon] 313#[derive( 314 serde::Serialize, 315 serde::Deserialize, 316 Debug, 317 Clone, 318 PartialEq, 319 Eq, 320 jacquard_derive::IntoStatic 321)] 322#[serde(rename_all = "camelCase")] 323pub struct ModEventDivert<'a> { 324 #[serde(skip_serializing_if = "std::option::Option::is_none")] 325 #[serde(borrow)] 326 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 327} 328 329///Keep a log of outgoing email to a user 330#[jacquard_derive::lexicon] 331#[derive( 332 serde::Serialize, 333 serde::Deserialize, 334 Debug, 335 Clone, 336 PartialEq, 337 Eq, 338 jacquard_derive::IntoStatic 339)] 340#[serde(rename_all = "camelCase")] 341pub struct ModEventEmail<'a> { 342 ///Additional comment about the outgoing comm. 343 #[serde(skip_serializing_if = "std::option::Option::is_none")] 344 #[serde(borrow)] 345 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 346 ///The content of the email sent to the user. 347 #[serde(skip_serializing_if = "std::option::Option::is_none")] 348 #[serde(borrow)] 349 pub content: std::option::Option<jacquard_common::CowStr<'a>>, 350 ///The subject line of the email sent to the user. 351 #[serde(borrow)] 352 pub subject_line: jacquard_common::CowStr<'a>, 353} 354 355#[jacquard_derive::lexicon] 356#[derive( 357 serde::Serialize, 358 serde::Deserialize, 359 Debug, 360 Clone, 361 PartialEq, 362 Eq, 363 jacquard_derive::IntoStatic 364)] 365#[serde(rename_all = "camelCase")] 366pub struct ModEventEscalate<'a> { 367 #[serde(skip_serializing_if = "std::option::Option::is_none")] 368 #[serde(borrow)] 369 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 370} 371 372///Apply/Negate labels on a subject 373#[jacquard_derive::lexicon] 374#[derive( 375 serde::Serialize, 376 serde::Deserialize, 377 Debug, 378 Clone, 379 PartialEq, 380 Eq, 381 jacquard_derive::IntoStatic 382)] 383#[serde(rename_all = "camelCase")] 384pub struct ModEventLabel<'a> { 385 #[serde(skip_serializing_if = "std::option::Option::is_none")] 386 #[serde(borrow)] 387 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 388 #[serde(borrow)] 389 pub create_label_vals: Vec<jacquard_common::CowStr<'a>>, 390 ///Indicates how long the label will remain on the subject. Only applies on labels that are being added. 391 #[serde(skip_serializing_if = "std::option::Option::is_none")] 392 pub duration_in_hours: std::option::Option<i64>, 393 #[serde(borrow)] 394 pub negate_label_vals: Vec<jacquard_common::CowStr<'a>>, 395} 396 397///Mute incoming reports on a subject 398#[jacquard_derive::lexicon] 399#[derive( 400 serde::Serialize, 401 serde::Deserialize, 402 Debug, 403 Clone, 404 PartialEq, 405 Eq, 406 jacquard_derive::IntoStatic 407)] 408#[serde(rename_all = "camelCase")] 409pub struct ModEventMute<'a> { 410 #[serde(skip_serializing_if = "std::option::Option::is_none")] 411 #[serde(borrow)] 412 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 413 ///Indicates how long the subject should remain muted. 414 pub duration_in_hours: i64, 415} 416 417///Mute incoming reports from an account 418#[jacquard_derive::lexicon] 419#[derive( 420 serde::Serialize, 421 serde::Deserialize, 422 Debug, 423 Clone, 424 PartialEq, 425 Eq, 426 jacquard_derive::IntoStatic 427)] 428#[serde(rename_all = "camelCase")] 429pub struct ModEventMuteReporter<'a> { 430 #[serde(skip_serializing_if = "std::option::Option::is_none")] 431 #[serde(borrow)] 432 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 433 ///Indicates how long the account should remain muted. Falsy value here means a permanent mute. 434 #[serde(skip_serializing_if = "std::option::Option::is_none")] 435 pub duration_in_hours: std::option::Option<i64>, 436} 437 438///Set priority score of the subject. Higher score means higher priority. 439#[jacquard_derive::lexicon] 440#[derive( 441 serde::Serialize, 442 serde::Deserialize, 443 Debug, 444 Clone, 445 PartialEq, 446 Eq, 447 jacquard_derive::IntoStatic 448)] 449#[serde(rename_all = "camelCase")] 450pub struct ModEventPriorityScore<'a> { 451 #[serde(skip_serializing_if = "std::option::Option::is_none")] 452 #[serde(borrow)] 453 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 454 pub score: i64, 455} 456 457///Report a subject 458#[jacquard_derive::lexicon] 459#[derive( 460 serde::Serialize, 461 serde::Deserialize, 462 Debug, 463 Clone, 464 PartialEq, 465 Eq, 466 jacquard_derive::IntoStatic 467)] 468#[serde(rename_all = "camelCase")] 469pub struct ModEventReport<'a> { 470 #[serde(skip_serializing_if = "std::option::Option::is_none")] 471 #[serde(borrow)] 472 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 473 ///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. 474 #[serde(skip_serializing_if = "std::option::Option::is_none")] 475 pub is_reporter_muted: std::option::Option<bool>, 476 #[serde(borrow)] 477 pub report_type: crate::com_atproto::moderation::ReasonType<'a>, 478} 479 480///Resolve appeal on a subject 481#[jacquard_derive::lexicon] 482#[derive( 483 serde::Serialize, 484 serde::Deserialize, 485 Debug, 486 Clone, 487 PartialEq, 488 Eq, 489 jacquard_derive::IntoStatic 490)] 491#[serde(rename_all = "camelCase")] 492pub struct ModEventResolveAppeal<'a> { 493 ///Describe resolution. 494 #[serde(skip_serializing_if = "std::option::Option::is_none")] 495 #[serde(borrow)] 496 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 497} 498 499///Revert take down action on a subject 500#[jacquard_derive::lexicon] 501#[derive( 502 serde::Serialize, 503 serde::Deserialize, 504 Debug, 505 Clone, 506 PartialEq, 507 Eq, 508 jacquard_derive::IntoStatic 509)] 510#[serde(rename_all = "camelCase")] 511pub struct ModEventReverseTakedown<'a> { 512 ///Describe reasoning behind the reversal. 513 #[serde(skip_serializing_if = "std::option::Option::is_none")] 514 #[serde(borrow)] 515 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 516} 517 518///Add/Remove a tag on a subject 519#[jacquard_derive::lexicon] 520#[derive( 521 serde::Serialize, 522 serde::Deserialize, 523 Debug, 524 Clone, 525 PartialEq, 526 Eq, 527 jacquard_derive::IntoStatic 528)] 529#[serde(rename_all = "camelCase")] 530pub struct ModEventTag<'a> { 531 ///Tags to be added to the subject. If already exists, won't be duplicated. 532 #[serde(borrow)] 533 pub add: Vec<jacquard_common::CowStr<'a>>, 534 ///Additional comment about added/removed tags. 535 #[serde(skip_serializing_if = "std::option::Option::is_none")] 536 #[serde(borrow)] 537 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 538 ///Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated. 539 #[serde(borrow)] 540 pub remove: Vec<jacquard_common::CowStr<'a>>, 541} 542 543///Take down a subject permanently or temporarily 544#[jacquard_derive::lexicon] 545#[derive( 546 serde::Serialize, 547 serde::Deserialize, 548 Debug, 549 Clone, 550 PartialEq, 551 Eq, 552 jacquard_derive::IntoStatic 553)] 554#[serde(rename_all = "camelCase")] 555pub struct ModEventTakedown<'a> { 556 ///If true, all other reports on content authored by this account will be resolved (acknowledged). 557 #[serde(skip_serializing_if = "std::option::Option::is_none")] 558 pub acknowledge_account_subjects: std::option::Option<bool>, 559 #[serde(skip_serializing_if = "std::option::Option::is_none")] 560 #[serde(borrow)] 561 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 562 ///Indicates how long the takedown should be in effect before automatically expiring. 563 #[serde(skip_serializing_if = "std::option::Option::is_none")] 564 pub duration_in_hours: std::option::Option<i64>, 565 ///Names/Keywords of the policies that drove the decision. 566 #[serde(skip_serializing_if = "std::option::Option::is_none")] 567 #[serde(borrow)] 568 pub policies: std::option::Option<Vec<jacquard_common::CowStr<'a>>>, 569} 570 571///Unmute action on a subject 572#[jacquard_derive::lexicon] 573#[derive( 574 serde::Serialize, 575 serde::Deserialize, 576 Debug, 577 Clone, 578 PartialEq, 579 Eq, 580 jacquard_derive::IntoStatic 581)] 582#[serde(rename_all = "camelCase")] 583pub struct ModEventUnmute<'a> { 584 ///Describe reasoning behind the reversal. 585 #[serde(skip_serializing_if = "std::option::Option::is_none")] 586 #[serde(borrow)] 587 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 588} 589 590///Unmute incoming reports from an account 591#[jacquard_derive::lexicon] 592#[derive( 593 serde::Serialize, 594 serde::Deserialize, 595 Debug, 596 Clone, 597 PartialEq, 598 Eq, 599 jacquard_derive::IntoStatic 600)] 601#[serde(rename_all = "camelCase")] 602pub struct ModEventUnmuteReporter<'a> { 603 ///Describe reasoning behind the reversal. 604 #[serde(skip_serializing_if = "std::option::Option::is_none")] 605 #[serde(borrow)] 606 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 607} 608 609#[jacquard_derive::lexicon] 610#[derive( 611 serde::Serialize, 612 serde::Deserialize, 613 Debug, 614 Clone, 615 PartialEq, 616 Eq, 617 jacquard_derive::IntoStatic 618)] 619#[serde(rename_all = "camelCase")] 620pub struct ModEventView<'a> { 621 pub created_at: jacquard_common::types::string::Datetime, 622 #[serde(borrow)] 623 pub created_by: jacquard_common::types::string::Did<'a>, 624 #[serde(skip_serializing_if = "std::option::Option::is_none")] 625 #[serde(borrow)] 626 pub creator_handle: std::option::Option<jacquard_common::CowStr<'a>>, 627 #[serde(borrow)] 628 pub event: ModEventViewEvent<'a>, 629 pub id: i64, 630 #[serde(skip_serializing_if = "std::option::Option::is_none")] 631 #[serde(borrow)] 632 pub mod_tool: std::option::Option<crate::tools_ozone::moderation::ModTool<'a>>, 633 #[serde(borrow)] 634 pub subject: ModEventViewSubject<'a>, 635 #[serde(borrow)] 636 pub subject_blob_cids: Vec<jacquard_common::CowStr<'a>>, 637 #[serde(skip_serializing_if = "std::option::Option::is_none")] 638 #[serde(borrow)] 639 pub subject_handle: std::option::Option<jacquard_common::CowStr<'a>>, 640} 641 642#[jacquard_derive::open_union] 643#[derive( 644 serde::Serialize, 645 serde::Deserialize, 646 Debug, 647 Clone, 648 PartialEq, 649 Eq, 650 jacquard_derive::IntoStatic 651)] 652#[serde(tag = "$type")] 653#[serde(bound(deserialize = "'de: 'a"))] 654pub enum ModEventViewEvent<'a> { 655 #[serde(rename = "tools.ozone.moderation.defs#modEventTakedown")] 656 ModEventTakedown(Box<crate::tools_ozone::moderation::ModEventTakedown<'a>>), 657 #[serde(rename = "tools.ozone.moderation.defs#modEventReverseTakedown")] 658 ModEventReverseTakedown( 659 Box<crate::tools_ozone::moderation::ModEventReverseTakedown<'a>>, 660 ), 661 #[serde(rename = "tools.ozone.moderation.defs#modEventComment")] 662 ModEventComment(Box<crate::tools_ozone::moderation::ModEventComment<'a>>), 663 #[serde(rename = "tools.ozone.moderation.defs#modEventReport")] 664 ModEventReport(Box<crate::tools_ozone::moderation::ModEventReport<'a>>), 665 #[serde(rename = "tools.ozone.moderation.defs#modEventLabel")] 666 ModEventLabel(Box<crate::tools_ozone::moderation::ModEventLabel<'a>>), 667 #[serde(rename = "tools.ozone.moderation.defs#modEventAcknowledge")] 668 ModEventAcknowledge(Box<crate::tools_ozone::moderation::ModEventAcknowledge<'a>>), 669 #[serde(rename = "tools.ozone.moderation.defs#modEventEscalate")] 670 ModEventEscalate(Box<crate::tools_ozone::moderation::ModEventEscalate<'a>>), 671 #[serde(rename = "tools.ozone.moderation.defs#modEventMute")] 672 ModEventMute(Box<crate::tools_ozone::moderation::ModEventMute<'a>>), 673 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmute")] 674 ModEventUnmute(Box<crate::tools_ozone::moderation::ModEventUnmute<'a>>), 675 #[serde(rename = "tools.ozone.moderation.defs#modEventMuteReporter")] 676 ModEventMuteReporter(Box<crate::tools_ozone::moderation::ModEventMuteReporter<'a>>), 677 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmuteReporter")] 678 ModEventUnmuteReporter( 679 Box<crate::tools_ozone::moderation::ModEventUnmuteReporter<'a>>, 680 ), 681 #[serde(rename = "tools.ozone.moderation.defs#modEventEmail")] 682 ModEventEmail(Box<crate::tools_ozone::moderation::ModEventEmail<'a>>), 683 #[serde(rename = "tools.ozone.moderation.defs#modEventResolveAppeal")] 684 ModEventResolveAppeal( 685 Box<crate::tools_ozone::moderation::ModEventResolveAppeal<'a>>, 686 ), 687 #[serde(rename = "tools.ozone.moderation.defs#modEventDivert")] 688 ModEventDivert(Box<crate::tools_ozone::moderation::ModEventDivert<'a>>), 689 #[serde(rename = "tools.ozone.moderation.defs#modEventTag")] 690 ModEventTag(Box<crate::tools_ozone::moderation::ModEventTag<'a>>), 691 #[serde(rename = "tools.ozone.moderation.defs#accountEvent")] 692 AccountEvent(Box<crate::tools_ozone::moderation::AccountEvent<'a>>), 693 #[serde(rename = "tools.ozone.moderation.defs#identityEvent")] 694 IdentityEvent(Box<crate::tools_ozone::moderation::IdentityEvent<'a>>), 695 #[serde(rename = "tools.ozone.moderation.defs#recordEvent")] 696 RecordEvent(Box<crate::tools_ozone::moderation::RecordEvent<'a>>), 697 #[serde(rename = "tools.ozone.moderation.defs#modEventPriorityScore")] 698 ModEventPriorityScore( 699 Box<crate::tools_ozone::moderation::ModEventPriorityScore<'a>>, 700 ), 701 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceEvent")] 702 AgeAssuranceEvent(Box<crate::tools_ozone::moderation::AgeAssuranceEvent<'a>>), 703 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceOverrideEvent")] 704 AgeAssuranceOverrideEvent( 705 Box<crate::tools_ozone::moderation::AgeAssuranceOverrideEvent<'a>>, 706 ), 707 #[serde(rename = "tools.ozone.moderation.defs#revokeAccountCredentialsEvent")] 708 RevokeAccountCredentialsEvent( 709 Box<crate::tools_ozone::moderation::RevokeAccountCredentialsEvent<'a>>, 710 ), 711 #[serde(rename = "tools.ozone.moderation.defs#scheduleTakedownEvent")] 712 ScheduleTakedownEvent( 713 Box<crate::tools_ozone::moderation::ScheduleTakedownEvent<'a>>, 714 ), 715 #[serde(rename = "tools.ozone.moderation.defs#cancelScheduledTakedownEvent")] 716 CancelScheduledTakedownEvent( 717 Box<crate::tools_ozone::moderation::CancelScheduledTakedownEvent<'a>>, 718 ), 719} 720 721#[jacquard_derive::open_union] 722#[derive( 723 serde::Serialize, 724 serde::Deserialize, 725 Debug, 726 Clone, 727 PartialEq, 728 Eq, 729 jacquard_derive::IntoStatic 730)] 731#[serde(tag = "$type")] 732#[serde(bound(deserialize = "'de: 'a"))] 733pub enum ModEventViewSubject<'a> { 734 #[serde(rename = "com.atproto.admin.defs#repoRef")] 735 RepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>), 736 #[serde(rename = "com.atproto.repo.strongRef")] 737 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>), 738 #[serde(rename = "chat.bsky.convo.defs#messageRef")] 739 MessageRef(Box<crate::chat_bsky::convo::MessageRef<'a>>), 740} 741 742#[jacquard_derive::lexicon] 743#[derive( 744 serde::Serialize, 745 serde::Deserialize, 746 Debug, 747 Clone, 748 PartialEq, 749 Eq, 750 jacquard_derive::IntoStatic 751)] 752#[serde(rename_all = "camelCase")] 753pub struct ModEventViewDetail<'a> { 754 pub created_at: jacquard_common::types::string::Datetime, 755 #[serde(borrow)] 756 pub created_by: jacquard_common::types::string::Did<'a>, 757 #[serde(borrow)] 758 pub event: ModEventViewDetailEvent<'a>, 759 pub id: i64, 760 #[serde(skip_serializing_if = "std::option::Option::is_none")] 761 #[serde(borrow)] 762 pub mod_tool: std::option::Option<crate::tools_ozone::moderation::ModTool<'a>>, 763 #[serde(borrow)] 764 pub subject: ModEventViewDetailSubject<'a>, 765 #[serde(borrow)] 766 pub subject_blobs: Vec<crate::tools_ozone::moderation::BlobView<'a>>, 767} 768 769#[jacquard_derive::open_union] 770#[derive( 771 serde::Serialize, 772 serde::Deserialize, 773 Debug, 774 Clone, 775 PartialEq, 776 Eq, 777 jacquard_derive::IntoStatic 778)] 779#[serde(tag = "$type")] 780#[serde(bound(deserialize = "'de: 'a"))] 781pub enum ModEventViewDetailEvent<'a> { 782 #[serde(rename = "tools.ozone.moderation.defs#modEventTakedown")] 783 ModEventTakedown(Box<crate::tools_ozone::moderation::ModEventTakedown<'a>>), 784 #[serde(rename = "tools.ozone.moderation.defs#modEventReverseTakedown")] 785 ModEventReverseTakedown( 786 Box<crate::tools_ozone::moderation::ModEventReverseTakedown<'a>>, 787 ), 788 #[serde(rename = "tools.ozone.moderation.defs#modEventComment")] 789 ModEventComment(Box<crate::tools_ozone::moderation::ModEventComment<'a>>), 790 #[serde(rename = "tools.ozone.moderation.defs#modEventReport")] 791 ModEventReport(Box<crate::tools_ozone::moderation::ModEventReport<'a>>), 792 #[serde(rename = "tools.ozone.moderation.defs#modEventLabel")] 793 ModEventLabel(Box<crate::tools_ozone::moderation::ModEventLabel<'a>>), 794 #[serde(rename = "tools.ozone.moderation.defs#modEventAcknowledge")] 795 ModEventAcknowledge(Box<crate::tools_ozone::moderation::ModEventAcknowledge<'a>>), 796 #[serde(rename = "tools.ozone.moderation.defs#modEventEscalate")] 797 ModEventEscalate(Box<crate::tools_ozone::moderation::ModEventEscalate<'a>>), 798 #[serde(rename = "tools.ozone.moderation.defs#modEventMute")] 799 ModEventMute(Box<crate::tools_ozone::moderation::ModEventMute<'a>>), 800 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmute")] 801 ModEventUnmute(Box<crate::tools_ozone::moderation::ModEventUnmute<'a>>), 802 #[serde(rename = "tools.ozone.moderation.defs#modEventMuteReporter")] 803 ModEventMuteReporter(Box<crate::tools_ozone::moderation::ModEventMuteReporter<'a>>), 804 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmuteReporter")] 805 ModEventUnmuteReporter( 806 Box<crate::tools_ozone::moderation::ModEventUnmuteReporter<'a>>, 807 ), 808 #[serde(rename = "tools.ozone.moderation.defs#modEventEmail")] 809 ModEventEmail(Box<crate::tools_ozone::moderation::ModEventEmail<'a>>), 810 #[serde(rename = "tools.ozone.moderation.defs#modEventResolveAppeal")] 811 ModEventResolveAppeal( 812 Box<crate::tools_ozone::moderation::ModEventResolveAppeal<'a>>, 813 ), 814 #[serde(rename = "tools.ozone.moderation.defs#modEventDivert")] 815 ModEventDivert(Box<crate::tools_ozone::moderation::ModEventDivert<'a>>), 816 #[serde(rename = "tools.ozone.moderation.defs#modEventTag")] 817 ModEventTag(Box<crate::tools_ozone::moderation::ModEventTag<'a>>), 818 #[serde(rename = "tools.ozone.moderation.defs#accountEvent")] 819 AccountEvent(Box<crate::tools_ozone::moderation::AccountEvent<'a>>), 820 #[serde(rename = "tools.ozone.moderation.defs#identityEvent")] 821 IdentityEvent(Box<crate::tools_ozone::moderation::IdentityEvent<'a>>), 822 #[serde(rename = "tools.ozone.moderation.defs#recordEvent")] 823 RecordEvent(Box<crate::tools_ozone::moderation::RecordEvent<'a>>), 824 #[serde(rename = "tools.ozone.moderation.defs#modEventPriorityScore")] 825 ModEventPriorityScore( 826 Box<crate::tools_ozone::moderation::ModEventPriorityScore<'a>>, 827 ), 828 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceEvent")] 829 AgeAssuranceEvent(Box<crate::tools_ozone::moderation::AgeAssuranceEvent<'a>>), 830 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceOverrideEvent")] 831 AgeAssuranceOverrideEvent( 832 Box<crate::tools_ozone::moderation::AgeAssuranceOverrideEvent<'a>>, 833 ), 834 #[serde(rename = "tools.ozone.moderation.defs#revokeAccountCredentialsEvent")] 835 RevokeAccountCredentialsEvent( 836 Box<crate::tools_ozone::moderation::RevokeAccountCredentialsEvent<'a>>, 837 ), 838 #[serde(rename = "tools.ozone.moderation.defs#scheduleTakedownEvent")] 839 ScheduleTakedownEvent( 840 Box<crate::tools_ozone::moderation::ScheduleTakedownEvent<'a>>, 841 ), 842 #[serde(rename = "tools.ozone.moderation.defs#cancelScheduledTakedownEvent")] 843 CancelScheduledTakedownEvent( 844 Box<crate::tools_ozone::moderation::CancelScheduledTakedownEvent<'a>>, 845 ), 846} 847 848#[jacquard_derive::open_union] 849#[derive( 850 serde::Serialize, 851 serde::Deserialize, 852 Debug, 853 Clone, 854 PartialEq, 855 Eq, 856 jacquard_derive::IntoStatic 857)] 858#[serde(tag = "$type")] 859#[serde(bound(deserialize = "'de: 'a"))] 860pub enum ModEventViewDetailSubject<'a> { 861 #[serde(rename = "tools.ozone.moderation.defs#repoView")] 862 RepoView(Box<crate::tools_ozone::moderation::RepoView<'a>>), 863 #[serde(rename = "tools.ozone.moderation.defs#repoViewNotFound")] 864 RepoViewNotFound(Box<crate::tools_ozone::moderation::RepoViewNotFound<'a>>), 865 #[serde(rename = "tools.ozone.moderation.defs#recordView")] 866 RecordView(Box<crate::tools_ozone::moderation::RecordView<'a>>), 867 #[serde(rename = "tools.ozone.moderation.defs#recordViewNotFound")] 868 RecordViewNotFound(Box<crate::tools_ozone::moderation::RecordViewNotFound<'a>>), 869} 870 871///Moderation tool information for tracing the source of the action 872#[jacquard_derive::lexicon] 873#[derive( 874 serde::Serialize, 875 serde::Deserialize, 876 Debug, 877 Clone, 878 PartialEq, 879 Eq, 880 jacquard_derive::IntoStatic 881)] 882#[serde(rename_all = "camelCase")] 883pub struct ModTool<'a> { 884 ///Additional arbitrary metadata about the source 885 #[serde(skip_serializing_if = "std::option::Option::is_none")] 886 #[serde(borrow)] 887 pub meta: std::option::Option<jacquard_common::types::value::Data<'a>>, 888 ///Name/identifier of the source (e.g., 'automod', 'ozone/workspace') 889 #[serde(borrow)] 890 pub name: jacquard_common::CowStr<'a>, 891} 892 893#[jacquard_derive::lexicon] 894#[derive( 895 serde::Serialize, 896 serde::Deserialize, 897 Debug, 898 Clone, 899 PartialEq, 900 Eq, 901 jacquard_derive::IntoStatic 902)] 903#[serde(rename_all = "camelCase")] 904pub struct Moderation<'a> { 905 #[serde(skip_serializing_if = "std::option::Option::is_none")] 906 #[serde(borrow)] 907 pub subject_status: std::option::Option< 908 crate::tools_ozone::moderation::SubjectStatusView<'a>, 909 >, 910} 911 912#[jacquard_derive::lexicon] 913#[derive( 914 serde::Serialize, 915 serde::Deserialize, 916 Debug, 917 Clone, 918 PartialEq, 919 Eq, 920 jacquard_derive::IntoStatic 921)] 922#[serde(rename_all = "camelCase")] 923pub struct ModerationDetail<'a> { 924 #[serde(skip_serializing_if = "std::option::Option::is_none")] 925 #[serde(borrow)] 926 pub subject_status: std::option::Option< 927 crate::tools_ozone::moderation::SubjectStatusView<'a>, 928 >, 929} 930 931///Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking. 932#[jacquard_derive::lexicon] 933#[derive( 934 serde::Serialize, 935 serde::Deserialize, 936 Debug, 937 Clone, 938 PartialEq, 939 Eq, 940 jacquard_derive::IntoStatic 941)] 942#[serde(rename_all = "camelCase")] 943pub struct RecordEvent<'a> { 944 #[serde(skip_serializing_if = "std::option::Option::is_none")] 945 #[serde(borrow)] 946 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>, 947 #[serde(skip_serializing_if = "std::option::Option::is_none")] 948 #[serde(borrow)] 949 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 950 #[serde(borrow)] 951 pub op: jacquard_common::CowStr<'a>, 952 pub timestamp: jacquard_common::types::string::Datetime, 953} 954 955#[jacquard_derive::lexicon] 956#[derive( 957 serde::Serialize, 958 serde::Deserialize, 959 Debug, 960 Clone, 961 PartialEq, 962 Eq, 963 jacquard_derive::IntoStatic 964)] 965#[serde(rename_all = "camelCase")] 966pub struct RecordHosting<'a> { 967 #[serde(skip_serializing_if = "std::option::Option::is_none")] 968 pub created_at: std::option::Option<jacquard_common::types::string::Datetime>, 969 #[serde(skip_serializing_if = "std::option::Option::is_none")] 970 pub deleted_at: std::option::Option<jacquard_common::types::string::Datetime>, 971 #[serde(borrow)] 972 pub status: jacquard_common::CowStr<'a>, 973 #[serde(skip_serializing_if = "std::option::Option::is_none")] 974 pub updated_at: std::option::Option<jacquard_common::types::string::Datetime>, 975} 976 977#[jacquard_derive::lexicon] 978#[derive( 979 serde::Serialize, 980 serde::Deserialize, 981 Debug, 982 Clone, 983 PartialEq, 984 Eq, 985 jacquard_derive::IntoStatic 986)] 987#[serde(rename_all = "camelCase")] 988pub struct RecordView<'a> { 989 #[serde(borrow)] 990 pub blob_cids: Vec<jacquard_common::types::string::Cid<'a>>, 991 #[serde(borrow)] 992 pub cid: jacquard_common::types::string::Cid<'a>, 993 pub indexed_at: jacquard_common::types::string::Datetime, 994 #[serde(borrow)] 995 pub moderation: crate::tools_ozone::moderation::Moderation<'a>, 996 #[serde(borrow)] 997 pub repo: crate::tools_ozone::moderation::RepoView<'a>, 998 #[serde(borrow)] 999 pub uri: jacquard_common::types::string::AtUri<'a>, 1000 #[serde(borrow)] 1001 pub value: jacquard_common::types::value::Data<'a>, 1002} 1003 1004#[jacquard_derive::lexicon] 1005#[derive( 1006 serde::Serialize, 1007 serde::Deserialize, 1008 Debug, 1009 Clone, 1010 PartialEq, 1011 Eq, 1012 jacquard_derive::IntoStatic 1013)] 1014#[serde(rename_all = "camelCase")] 1015pub struct RecordViewDetail<'a> { 1016 #[serde(borrow)] 1017 pub blobs: Vec<crate::tools_ozone::moderation::BlobView<'a>>, 1018 #[serde(borrow)] 1019 pub cid: jacquard_common::types::string::Cid<'a>, 1020 pub indexed_at: jacquard_common::types::string::Datetime, 1021 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1022 #[serde(borrow)] 1023 pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>, 1024 #[serde(borrow)] 1025 pub moderation: crate::tools_ozone::moderation::ModerationDetail<'a>, 1026 #[serde(borrow)] 1027 pub repo: crate::tools_ozone::moderation::RepoView<'a>, 1028 #[serde(borrow)] 1029 pub uri: jacquard_common::types::string::AtUri<'a>, 1030 #[serde(borrow)] 1031 pub value: jacquard_common::types::value::Data<'a>, 1032} 1033 1034#[jacquard_derive::lexicon] 1035#[derive( 1036 serde::Serialize, 1037 serde::Deserialize, 1038 Debug, 1039 Clone, 1040 PartialEq, 1041 Eq, 1042 jacquard_derive::IntoStatic 1043)] 1044#[serde(rename_all = "camelCase")] 1045pub struct RecordViewNotFound<'a> { 1046 #[serde(borrow)] 1047 pub uri: jacquard_common::types::string::AtUri<'a>, 1048} 1049 1050///Statistics about a set of record subject items 1051#[jacquard_derive::lexicon] 1052#[derive( 1053 serde::Serialize, 1054 serde::Deserialize, 1055 Debug, 1056 Clone, 1057 PartialEq, 1058 Eq, 1059 jacquard_derive::IntoStatic 1060)] 1061#[serde(rename_all = "camelCase")] 1062pub struct RecordsStats<'a> { 1063 ///Number of items that were appealed at least once 1064 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1065 pub appealed_count: std::option::Option<i64>, 1066 ///Number of items that were escalated at least once 1067 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1068 pub escalated_count: std::option::Option<i64>, 1069 ///Number of item currently in "reviewOpen" or "reviewEscalated" state 1070 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1071 pub pending_count: std::option::Option<i64>, 1072 ///Number of item currently in "reviewNone" or "reviewClosed" state 1073 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1074 pub processed_count: std::option::Option<i64>, 1075 ///Number of items that were reported at least once 1076 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1077 pub reported_count: std::option::Option<i64>, 1078 ///Total number of item in the set 1079 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1080 pub subject_count: std::option::Option<i64>, 1081 ///Number of item currently taken down 1082 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1083 pub takendown_count: std::option::Option<i64>, 1084 ///Cumulative sum of the number of reports on the items in the set 1085 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1086 pub total_reports: std::option::Option<i64>, 1087} 1088 1089#[jacquard_derive::lexicon] 1090#[derive( 1091 serde::Serialize, 1092 serde::Deserialize, 1093 Debug, 1094 Clone, 1095 PartialEq, 1096 Eq, 1097 jacquard_derive::IntoStatic 1098)] 1099#[serde(rename_all = "camelCase")] 1100pub struct RepoView<'a> { 1101 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1102 pub deactivated_at: std::option::Option<jacquard_common::types::string::Datetime>, 1103 #[serde(borrow)] 1104 pub did: jacquard_common::types::string::Did<'a>, 1105 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1106 #[serde(borrow)] 1107 pub email: std::option::Option<jacquard_common::CowStr<'a>>, 1108 #[serde(borrow)] 1109 pub handle: jacquard_common::types::string::Handle<'a>, 1110 pub indexed_at: jacquard_common::types::string::Datetime, 1111 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1112 #[serde(borrow)] 1113 pub invite_note: std::option::Option<jacquard_common::CowStr<'a>>, 1114 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1115 #[serde(borrow)] 1116 pub invited_by: std::option::Option<crate::com_atproto::server::InviteCode<'a>>, 1117 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1118 pub invites_disabled: std::option::Option<bool>, 1119 #[serde(borrow)] 1120 pub moderation: crate::tools_ozone::moderation::Moderation<'a>, 1121 #[serde(borrow)] 1122 pub related_records: Vec<jacquard_common::types::value::Data<'a>>, 1123 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1124 #[serde(borrow)] 1125 pub threat_signatures: std::option::Option< 1126 Vec<crate::com_atproto::admin::ThreatSignature<'a>>, 1127 >, 1128} 1129 1130#[jacquard_derive::lexicon] 1131#[derive( 1132 serde::Serialize, 1133 serde::Deserialize, 1134 Debug, 1135 Clone, 1136 PartialEq, 1137 Eq, 1138 jacquard_derive::IntoStatic 1139)] 1140#[serde(rename_all = "camelCase")] 1141pub struct RepoViewDetail<'a> { 1142 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1143 pub deactivated_at: std::option::Option<jacquard_common::types::string::Datetime>, 1144 #[serde(borrow)] 1145 pub did: jacquard_common::types::string::Did<'a>, 1146 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1147 #[serde(borrow)] 1148 pub email: std::option::Option<jacquard_common::CowStr<'a>>, 1149 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1150 pub email_confirmed_at: std::option::Option< 1151 jacquard_common::types::string::Datetime, 1152 >, 1153 #[serde(borrow)] 1154 pub handle: jacquard_common::types::string::Handle<'a>, 1155 pub indexed_at: jacquard_common::types::string::Datetime, 1156 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1157 #[serde(borrow)] 1158 pub invite_note: std::option::Option<jacquard_common::CowStr<'a>>, 1159 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1160 #[serde(borrow)] 1161 pub invited_by: std::option::Option<crate::com_atproto::server::InviteCode<'a>>, 1162 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1163 #[serde(borrow)] 1164 pub invites: std::option::Option<Vec<crate::com_atproto::server::InviteCode<'a>>>, 1165 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1166 pub invites_disabled: std::option::Option<bool>, 1167 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1168 #[serde(borrow)] 1169 pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>, 1170 #[serde(borrow)] 1171 pub moderation: crate::tools_ozone::moderation::ModerationDetail<'a>, 1172 #[serde(borrow)] 1173 pub related_records: Vec<jacquard_common::types::value::Data<'a>>, 1174 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1175 #[serde(borrow)] 1176 pub threat_signatures: std::option::Option< 1177 Vec<crate::com_atproto::admin::ThreatSignature<'a>>, 1178 >, 1179} 1180 1181#[jacquard_derive::lexicon] 1182#[derive( 1183 serde::Serialize, 1184 serde::Deserialize, 1185 Debug, 1186 Clone, 1187 PartialEq, 1188 Eq, 1189 jacquard_derive::IntoStatic 1190)] 1191#[serde(rename_all = "camelCase")] 1192pub struct RepoViewNotFound<'a> { 1193 #[serde(borrow)] 1194 pub did: jacquard_common::types::string::Did<'a>, 1195} 1196 1197#[jacquard_derive::lexicon] 1198#[derive( 1199 serde::Serialize, 1200 serde::Deserialize, 1201 Debug, 1202 Clone, 1203 PartialEq, 1204 Eq, 1205 jacquard_derive::IntoStatic 1206)] 1207#[serde(rename_all = "camelCase")] 1208pub struct ReporterStats<'a> { 1209 ///The total number of reports made by the user on accounts. 1210 pub account_report_count: i64, 1211 #[serde(borrow)] 1212 pub did: jacquard_common::types::string::Did<'a>, 1213 ///The total number of accounts labeled as a result of the user's reports. 1214 pub labeled_account_count: i64, 1215 ///The total number of records labeled as a result of the user's reports. 1216 pub labeled_record_count: i64, 1217 ///The total number of reports made by the user on records. 1218 pub record_report_count: i64, 1219 ///The total number of accounts reported by the user. 1220 pub reported_account_count: i64, 1221 ///The total number of records reported by the user. 1222 pub reported_record_count: i64, 1223 ///The total number of accounts taken down as a result of the user's reports. 1224 pub takendown_account_count: i64, 1225 ///The total number of records taken down as a result of the user's reports. 1226 pub takendown_record_count: i64, 1227} 1228 1229///Moderator review status of a subject: Closed. Indicates that the subject was already reviewed and resolved by a moderator 1230#[derive( 1231 serde::Serialize, 1232 serde::Deserialize, 1233 Debug, 1234 Clone, 1235 PartialEq, 1236 Eq, 1237 Hash, 1238 jacquard_derive::IntoStatic 1239)] 1240pub struct ReviewClosed; 1241impl std::fmt::Display for ReviewClosed { 1242 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 1243 write!(f, "reviewClosed") 1244 } 1245} 1246 1247///Moderator review status of a subject: Escalated. Indicates that the subject was escalated for review by a moderator 1248#[derive( 1249 serde::Serialize, 1250 serde::Deserialize, 1251 Debug, 1252 Clone, 1253 PartialEq, 1254 Eq, 1255 Hash, 1256 jacquard_derive::IntoStatic 1257)] 1258pub struct ReviewEscalated; 1259impl std::fmt::Display for ReviewEscalated { 1260 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 1261 write!(f, "reviewEscalated") 1262 } 1263} 1264 1265///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 1266#[derive( 1267 serde::Serialize, 1268 serde::Deserialize, 1269 Debug, 1270 Clone, 1271 PartialEq, 1272 Eq, 1273 Hash, 1274 jacquard_derive::IntoStatic 1275)] 1276pub struct ReviewNone; 1277impl std::fmt::Display for ReviewNone { 1278 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 1279 write!(f, "reviewNone") 1280 } 1281} 1282 1283///Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator 1284#[derive( 1285 serde::Serialize, 1286 serde::Deserialize, 1287 Debug, 1288 Clone, 1289 PartialEq, 1290 Eq, 1291 Hash, 1292 jacquard_derive::IntoStatic 1293)] 1294pub struct ReviewOpen; 1295impl std::fmt::Display for ReviewOpen { 1296 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 1297 write!(f, "reviewOpen") 1298 } 1299} 1300 1301///Account credentials revocation by moderators. Only works on DID subjects. 1302#[jacquard_derive::lexicon] 1303#[derive( 1304 serde::Serialize, 1305 serde::Deserialize, 1306 Debug, 1307 Clone, 1308 PartialEq, 1309 Eq, 1310 jacquard_derive::IntoStatic 1311)] 1312#[serde(rename_all = "camelCase")] 1313pub struct RevokeAccountCredentialsEvent<'a> { 1314 ///Comment describing the reason for the revocation. 1315 #[serde(borrow)] 1316 pub comment: jacquard_common::CowStr<'a>, 1317} 1318 1319///Logs a scheduled takedown action for an account. 1320#[jacquard_derive::lexicon] 1321#[derive( 1322 serde::Serialize, 1323 serde::Deserialize, 1324 Debug, 1325 Clone, 1326 PartialEq, 1327 Eq, 1328 jacquard_derive::IntoStatic 1329)] 1330#[serde(rename_all = "camelCase")] 1331pub struct ScheduleTakedownEvent<'a> { 1332 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1333 #[serde(borrow)] 1334 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 1335 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1336 pub execute_after: std::option::Option<jacquard_common::types::string::Datetime>, 1337 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1338 pub execute_at: std::option::Option<jacquard_common::types::string::Datetime>, 1339 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1340 pub execute_until: std::option::Option<jacquard_common::types::string::Datetime>, 1341} 1342 1343///View of a scheduled moderation action 1344#[jacquard_derive::lexicon] 1345#[derive( 1346 serde::Serialize, 1347 serde::Deserialize, 1348 Debug, 1349 Clone, 1350 PartialEq, 1351 Eq, 1352 jacquard_derive::IntoStatic 1353)] 1354#[serde(rename_all = "camelCase")] 1355pub struct ScheduledActionView<'a> { 1356 ///Type of action to be executed 1357 #[serde(borrow)] 1358 pub action: jacquard_common::CowStr<'a>, 1359 ///When the scheduled action was created 1360 pub created_at: jacquard_common::types::string::Datetime, 1361 ///DID of the user who created this scheduled action 1362 #[serde(borrow)] 1363 pub created_by: jacquard_common::types::string::Did<'a>, 1364 ///Subject DID for the action 1365 #[serde(borrow)] 1366 pub did: jacquard_common::types::string::Did<'a>, 1367 ///Serialized event object that will be propagated to the event when performed 1368 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1369 #[serde(borrow)] 1370 pub event_data: std::option::Option<jacquard_common::types::value::Data<'a>>, 1371 ///Earliest time to execute the action (for randomized scheduling) 1372 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1373 pub execute_after: std::option::Option<jacquard_common::types::string::Datetime>, 1374 ///Exact time to execute the action 1375 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1376 pub execute_at: std::option::Option<jacquard_common::types::string::Datetime>, 1377 ///Latest time to execute the action (for randomized scheduling) 1378 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1379 pub execute_until: std::option::Option<jacquard_common::types::string::Datetime>, 1380 ///ID of the moderation event created when action was successfully executed 1381 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1382 pub execution_event_id: std::option::Option<i64>, 1383 ///Auto-incrementing row ID 1384 pub id: i64, 1385 ///When the action was last attempted to be executed 1386 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1387 pub last_executed_at: std::option::Option<jacquard_common::types::string::Datetime>, 1388 ///Reason for the last execution failure 1389 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1390 #[serde(borrow)] 1391 pub last_failure_reason: std::option::Option<jacquard_common::CowStr<'a>>, 1392 ///Whether execution time should be randomized within the specified range 1393 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1394 pub randomize_execution: std::option::Option<bool>, 1395 ///Current status of the scheduled action 1396 #[serde(borrow)] 1397 pub status: jacquard_common::CowStr<'a>, 1398 ///When the scheduled action was last updated 1399 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1400 pub updated_at: std::option::Option<jacquard_common::types::string::Datetime>, 1401} 1402 1403#[derive(Debug, Clone, PartialEq, Eq, Hash)] 1404pub enum SubjectReviewState<'a> { 1405 ReviewOpen, 1406 ReviewEscalated, 1407 ReviewClosed, 1408 ReviewNone, 1409 Other(jacquard_common::CowStr<'a>), 1410} 1411 1412impl<'a> SubjectReviewState<'a> { 1413 pub fn as_str(&self) -> &str { 1414 match self { 1415 Self::ReviewOpen => "#reviewOpen", 1416 Self::ReviewEscalated => "#reviewEscalated", 1417 Self::ReviewClosed => "#reviewClosed", 1418 Self::ReviewNone => "#reviewNone", 1419 Self::Other(s) => s.as_ref(), 1420 } 1421 } 1422} 1423 1424impl<'a> From<&'a str> for SubjectReviewState<'a> { 1425 fn from(s: &'a str) -> Self { 1426 match s { 1427 "#reviewOpen" => Self::ReviewOpen, 1428 "#reviewEscalated" => Self::ReviewEscalated, 1429 "#reviewClosed" => Self::ReviewClosed, 1430 "#reviewNone" => Self::ReviewNone, 1431 _ => Self::Other(jacquard_common::CowStr::from(s)), 1432 } 1433 } 1434} 1435 1436impl<'a> From<String> for SubjectReviewState<'a> { 1437 fn from(s: String) -> Self { 1438 match s.as_str() { 1439 "#reviewOpen" => Self::ReviewOpen, 1440 "#reviewEscalated" => Self::ReviewEscalated, 1441 "#reviewClosed" => Self::ReviewClosed, 1442 "#reviewNone" => Self::ReviewNone, 1443 _ => Self::Other(jacquard_common::CowStr::from(s)), 1444 } 1445 } 1446} 1447 1448impl<'a> AsRef<str> for SubjectReviewState<'a> { 1449 fn as_ref(&self) -> &str { 1450 self.as_str() 1451 } 1452} 1453 1454impl<'a> serde::Serialize for SubjectReviewState<'a> { 1455 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> 1456 where 1457 S: serde::Serializer, 1458 { 1459 serializer.serialize_str(self.as_str()) 1460 } 1461} 1462 1463impl<'de, 'a> serde::Deserialize<'de> for SubjectReviewState<'a> 1464where 1465 'de: 'a, 1466{ 1467 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> 1468 where 1469 D: serde::Deserializer<'de>, 1470 { 1471 let s = <&'de str>::deserialize(deserializer)?; 1472 Ok(Self::from(s)) 1473 } 1474} 1475 1476impl jacquard_common::IntoStatic for SubjectReviewState<'_> { 1477 type Output = SubjectReviewState<'static>; 1478 fn into_static(self) -> Self::Output { 1479 match self { 1480 SubjectReviewState::ReviewOpen => SubjectReviewState::ReviewOpen, 1481 SubjectReviewState::ReviewEscalated => SubjectReviewState::ReviewEscalated, 1482 SubjectReviewState::ReviewClosed => SubjectReviewState::ReviewClosed, 1483 SubjectReviewState::ReviewNone => SubjectReviewState::ReviewNone, 1484 SubjectReviewState::Other(v) => SubjectReviewState::Other(v.into_static()), 1485 } 1486 } 1487} 1488 1489#[jacquard_derive::lexicon] 1490#[derive( 1491 serde::Serialize, 1492 serde::Deserialize, 1493 Debug, 1494 Clone, 1495 PartialEq, 1496 Eq, 1497 jacquard_derive::IntoStatic 1498)] 1499#[serde(rename_all = "camelCase")] 1500pub struct SubjectStatusView<'a> { 1501 ///Statistics related to the account subject 1502 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1503 #[serde(borrow)] 1504 pub account_stats: std::option::Option< 1505 crate::tools_ozone::moderation::AccountStats<'a>, 1506 >, 1507 ///Current age assurance state of the subject. 1508 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1509 #[serde(borrow)] 1510 pub age_assurance_state: std::option::Option<jacquard_common::CowStr<'a>>, 1511 ///Whether or not the last successful update to age assurance was made by the user or admin. 1512 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1513 #[serde(borrow)] 1514 pub age_assurance_updated_by: std::option::Option<jacquard_common::CowStr<'a>>, 1515 ///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. 1516 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1517 pub appealed: std::option::Option<bool>, 1518 ///Sticky comment on the subject. 1519 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1520 #[serde(borrow)] 1521 pub comment: std::option::Option<jacquard_common::CowStr<'a>>, 1522 ///Timestamp referencing the first moderation status impacting event was emitted on the subject 1523 pub created_at: jacquard_common::types::string::Datetime, 1524 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1525 #[serde(borrow)] 1526 pub hosting: std::option::Option<SubjectStatusViewHosting<'a>>, 1527 pub id: i64, 1528 ///Timestamp referencing when the author of the subject appealed a moderation action 1529 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1530 pub last_appealed_at: std::option::Option<jacquard_common::types::string::Datetime>, 1531 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1532 pub last_reported_at: std::option::Option<jacquard_common::types::string::Datetime>, 1533 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1534 pub last_reviewed_at: std::option::Option<jacquard_common::types::string::Datetime>, 1535 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1536 #[serde(borrow)] 1537 pub last_reviewed_by: std::option::Option<jacquard_common::types::string::Did<'a>>, 1538 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1539 pub mute_reporting_until: std::option::Option< 1540 jacquard_common::types::string::Datetime, 1541 >, 1542 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1543 pub mute_until: std::option::Option<jacquard_common::types::string::Datetime>, 1544 ///Numeric value representing the level of priority. Higher score means higher priority. 1545 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1546 pub priority_score: std::option::Option<i64>, 1547 ///Statistics related to the record subjects authored by the subject's account 1548 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1549 #[serde(borrow)] 1550 pub records_stats: std::option::Option< 1551 crate::tools_ozone::moderation::RecordsStats<'a>, 1552 >, 1553 #[serde(borrow)] 1554 pub review_state: crate::tools_ozone::moderation::SubjectReviewState<'a>, 1555 #[serde(borrow)] 1556 pub subject: SubjectStatusViewSubject<'a>, 1557 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1558 #[serde(borrow)] 1559 pub subject_blob_cids: std::option::Option< 1560 Vec<jacquard_common::types::string::Cid<'a>>, 1561 >, 1562 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1563 #[serde(borrow)] 1564 pub subject_repo_handle: std::option::Option<jacquard_common::CowStr<'a>>, 1565 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1566 pub suspend_until: std::option::Option<jacquard_common::types::string::Datetime>, 1567 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1568 #[serde(borrow)] 1569 pub tags: std::option::Option<Vec<jacquard_common::CowStr<'a>>>, 1570 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1571 pub takendown: std::option::Option<bool>, 1572 ///Timestamp referencing when the last update was made to the moderation status of the subject 1573 pub updated_at: jacquard_common::types::string::Datetime, 1574} 1575 1576#[jacquard_derive::open_union] 1577#[derive( 1578 serde::Serialize, 1579 serde::Deserialize, 1580 Debug, 1581 Clone, 1582 PartialEq, 1583 Eq, 1584 jacquard_derive::IntoStatic 1585)] 1586#[serde(tag = "$type")] 1587#[serde(bound(deserialize = "'de: 'a"))] 1588pub enum SubjectStatusViewHosting<'a> { 1589 #[serde(rename = "tools.ozone.moderation.defs#accountHosting")] 1590 AccountHosting(Box<crate::tools_ozone::moderation::AccountHosting<'a>>), 1591 #[serde(rename = "tools.ozone.moderation.defs#recordHosting")] 1592 RecordHosting(Box<crate::tools_ozone::moderation::RecordHosting<'a>>), 1593} 1594 1595#[jacquard_derive::open_union] 1596#[derive( 1597 serde::Serialize, 1598 serde::Deserialize, 1599 Debug, 1600 Clone, 1601 PartialEq, 1602 Eq, 1603 jacquard_derive::IntoStatic 1604)] 1605#[serde(tag = "$type")] 1606#[serde(bound(deserialize = "'de: 'a"))] 1607pub enum SubjectStatusViewSubject<'a> { 1608 #[serde(rename = "com.atproto.admin.defs#repoRef")] 1609 RepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>), 1610 #[serde(rename = "com.atproto.repo.strongRef")] 1611 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>), 1612 #[serde(rename = "chat.bsky.convo.defs#messageRef")] 1613 MessageRef(Box<crate::chat_bsky::convo::MessageRef<'a>>), 1614} 1615 1616///Detailed view of a subject. For record subjects, the author's repo and profile will be returned. 1617#[jacquard_derive::lexicon] 1618#[derive( 1619 serde::Serialize, 1620 serde::Deserialize, 1621 Debug, 1622 Clone, 1623 PartialEq, 1624 Eq, 1625 jacquard_derive::IntoStatic 1626)] 1627#[serde(rename_all = "camelCase")] 1628pub struct SubjectView<'a> { 1629 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1630 #[serde(borrow)] 1631 pub profile: std::option::Option<jacquard_common::types::value::Data<'a>>, 1632 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1633 #[serde(borrow)] 1634 pub record: std::option::Option< 1635 crate::tools_ozone::moderation::RecordViewDetail<'a>, 1636 >, 1637 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1638 #[serde(borrow)] 1639 pub repo: std::option::Option<crate::tools_ozone::moderation::RepoViewDetail<'a>>, 1640 #[serde(skip_serializing_if = "std::option::Option::is_none")] 1641 #[serde(borrow)] 1642 pub status: std::option::Option< 1643 crate::tools_ozone::moderation::SubjectStatusView<'a>, 1644 >, 1645 #[serde(borrow)] 1646 pub subject: jacquard_common::CowStr<'a>, 1647 #[serde(borrow)] 1648 pub r#type: crate::com_atproto::moderation::SubjectType<'a>, 1649} 1650 1651///Moderation event timeline event for a PLC create operation 1652#[derive( 1653 serde::Serialize, 1654 serde::Deserialize, 1655 Debug, 1656 Clone, 1657 PartialEq, 1658 Eq, 1659 Hash, 1660 jacquard_derive::IntoStatic 1661)] 1662pub struct TimelineEventPlcCreate; 1663impl std::fmt::Display for TimelineEventPlcCreate { 1664 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 1665 write!(f, "timelineEventPlcCreate") 1666 } 1667} 1668 1669///Moderation event timeline event for generic PLC operation 1670#[derive( 1671 serde::Serialize, 1672 serde::Deserialize, 1673 Debug, 1674 Clone, 1675 PartialEq, 1676 Eq, 1677 Hash, 1678 jacquard_derive::IntoStatic 1679)] 1680pub struct TimelineEventPlcOperation; 1681impl std::fmt::Display for TimelineEventPlcOperation { 1682 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 1683 write!(f, "timelineEventPlcOperation") 1684 } 1685} 1686 1687///Moderation event timeline event for a PLC tombstone operation 1688#[derive( 1689 serde::Serialize, 1690 serde::Deserialize, 1691 Debug, 1692 Clone, 1693 PartialEq, 1694 Eq, 1695 Hash, 1696 jacquard_derive::IntoStatic 1697)] 1698pub struct TimelineEventPlcTombstone; 1699impl std::fmt::Display for TimelineEventPlcTombstone { 1700 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 1701 write!(f, "timelineEventPlcTombstone") 1702 } 1703} 1704 1705#[jacquard_derive::lexicon] 1706#[derive( 1707 serde::Serialize, 1708 serde::Deserialize, 1709 Debug, 1710 Clone, 1711 PartialEq, 1712 Eq, 1713 jacquard_derive::IntoStatic 1714)] 1715#[serde(rename_all = "camelCase")] 1716pub struct VideoDetails<'a> { 1717 pub height: i64, 1718 pub length: i64, 1719 pub width: i64, 1720}