jacquard_api/com_atproto/moderation/
create_report.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: com.atproto.moderation.createReport
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[jacquard_derive::lexicon]
9#[derive(
10    serde::Serialize,
11    serde::Deserialize,
12    Debug,
13    Clone,
14    PartialEq,
15    Eq,
16    bon::Builder
17)]
18#[serde(rename_all = "camelCase")]
19#[builder(start_fn = new)]
20pub struct CreateReport<'a> {
21    #[serde(skip_serializing_if = "std::option::Option::is_none")]
22    #[serde(borrow)]
23    pub mod_tool: std::option::Option<jacquard_common::types::value::Data<'a>>,
24    ///Additional context about the content and violation.
25    #[serde(skip_serializing_if = "std::option::Option::is_none")]
26    #[serde(borrow)]
27    #[builder(into)]
28    pub reason: std::option::Option<jacquard_common::CowStr<'a>>,
29    ///Indicates the broad category of violation the report is for.
30    #[serde(borrow)]
31    pub reason_type: crate::com_atproto::moderation::ReasonType<'a>,
32    #[serde(borrow)]
33    pub subject: CreateReportRecordSubject<'a>,
34    #[serde(flatten)]
35    #[serde(borrow)]
36    #[builder(default)]
37    pub extra_data: ::std::collections::BTreeMap<
38        ::jacquard_common::smol_str::SmolStr,
39        ::jacquard_common::types::value::Data<'a>,
40    >,
41}
42
43#[jacquard_derive::open_union]
44#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
45#[serde(tag = "$type")]
46#[serde(bound(deserialize = "'de: 'a"))]
47pub enum CreateReportRecordSubject<'a> {
48    #[serde(rename = "com.atproto.admin.defs#repoRef")]
49    DefsRepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
50    #[serde(rename = "com.atproto.repo.strongRef")]
51    StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
52}
53
54impl jacquard_common::IntoStatic for CreateReportRecordSubject<'_> {
55    type Output = CreateReportRecordSubject<'static>;
56    fn into_static(self) -> Self::Output {
57        match self {
58            CreateReportRecordSubject::DefsRepoRef(v) => {
59                CreateReportRecordSubject::DefsRepoRef(v.into_static())
60            }
61            CreateReportRecordSubject::StrongRef(v) => {
62                CreateReportRecordSubject::StrongRef(v.into_static())
63            }
64            CreateReportRecordSubject::Unknown(v) => {
65                CreateReportRecordSubject::Unknown(v.into_static())
66            }
67        }
68    }
69}
70
71impl jacquard_common::IntoStatic for CreateReport<'_> {
72    type Output = CreateReport<'static>;
73    fn into_static(self) -> Self::Output {
74        CreateReport {
75            mod_tool: self.mod_tool.into_static(),
76            reason: self.reason.into_static(),
77            reason_type: self.reason_type.into_static(),
78            subject: self.subject.into_static(),
79            extra_data: self.extra_data.into_static(),
80        }
81    }
82}
83
84#[jacquard_derive::lexicon]
85#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
86#[serde(rename_all = "camelCase")]
87pub struct CreateReportOutput<'a> {
88    pub created_at: jacquard_common::types::string::Datetime,
89    pub id: i64,
90    #[serde(skip_serializing_if = "std::option::Option::is_none")]
91    #[serde(borrow)]
92    pub reason: std::option::Option<jacquard_common::CowStr<'a>>,
93    #[serde(borrow)]
94    pub reason_type: crate::com_atproto::moderation::ReasonType<'a>,
95    #[serde(borrow)]
96    pub reported_by: jacquard_common::types::string::Did<'a>,
97    #[serde(borrow)]
98    pub subject: CreateReportOutputRecordSubject<'a>,
99}
100
101#[jacquard_derive::open_union]
102#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
103#[serde(tag = "$type")]
104#[serde(bound(deserialize = "'de: 'a"))]
105pub enum CreateReportOutputRecordSubject<'a> {
106    #[serde(rename = "com.atproto.admin.defs#repoRef")]
107    DefsRepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
108    #[serde(rename = "com.atproto.repo.strongRef")]
109    StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
110}
111
112impl jacquard_common::IntoStatic for CreateReportOutputRecordSubject<'_> {
113    type Output = CreateReportOutputRecordSubject<'static>;
114    fn into_static(self) -> Self::Output {
115        match self {
116            CreateReportOutputRecordSubject::DefsRepoRef(v) => {
117                CreateReportOutputRecordSubject::DefsRepoRef(v.into_static())
118            }
119            CreateReportOutputRecordSubject::StrongRef(v) => {
120                CreateReportOutputRecordSubject::StrongRef(v.into_static())
121            }
122            CreateReportOutputRecordSubject::Unknown(v) => {
123                CreateReportOutputRecordSubject::Unknown(v.into_static())
124            }
125        }
126    }
127}
128
129impl jacquard_common::IntoStatic for CreateReportOutput<'_> {
130    type Output = CreateReportOutput<'static>;
131    fn into_static(self) -> Self::Output {
132        CreateReportOutput {
133            created_at: self.created_at.into_static(),
134            id: self.id.into_static(),
135            reason: self.reason.into_static(),
136            reason_type: self.reason_type.into_static(),
137            reported_by: self.reported_by.into_static(),
138            subject: self.subject.into_static(),
139            extra_data: self.extra_data.into_static(),
140        }
141    }
142}
143
144impl jacquard_common::types::xrpc::XrpcRequest for CreateReport<'_> {
145    const NSID: &'static str = "com.atproto.moderation.createReport";
146    const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure(
147        "application/json",
148    );
149    const OUTPUT_ENCODING: &'static str = "application/json";
150    type Output<'de> = CreateReportOutput<'de>;
151    type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>;
152}
153
154///Moderation tool information for tracing the source of the action
155#[jacquard_derive::lexicon]
156#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
157#[serde(rename_all = "camelCase")]
158pub struct ModTool<'a> {
159    ///Additional arbitrary metadata about the source
160    #[serde(skip_serializing_if = "std::option::Option::is_none")]
161    #[serde(borrow)]
162    pub meta: std::option::Option<jacquard_common::types::value::Data<'a>>,
163    ///Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome')
164    #[serde(borrow)]
165    pub name: jacquard_common::CowStr<'a>,
166}
167
168impl jacquard_common::IntoStatic for ModTool<'_> {
169    type Output = ModTool<'static>;
170    fn into_static(self) -> Self::Output {
171        ModTool {
172            meta: self.meta.into_static(),
173            name: self.name.into_static(),
174            extra_data: self.extra_data.into_static(),
175        }
176    }
177}