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