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