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}