1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.ozone.moderation.emitEvent
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 jacquard_derive::IntoStatic
18)]
19#[serde(rename_all = "camelCase")]
20#[builder(start_fn = new)]
21pub struct EmitEvent<'a> {
22 #[serde(borrow)]
23 pub created_by: jacquard_common::types::string::Did<'a>,
24 #[serde(borrow)]
25 pub event: EmitEventEvent<'a>,
26 /// An optional external ID for the event, used to deduplicate events from external systems. Fails when an event of same type with the same external ID exists for the same subject.
27 #[serde(skip_serializing_if = "std::option::Option::is_none")]
28 #[builder(into)]
29 #[serde(borrow)]
30 pub external_id: Option<jacquard_common::CowStr<'a>>,
31 #[serde(skip_serializing_if = "std::option::Option::is_none")]
32 #[builder(into)]
33 #[serde(borrow)]
34 pub mod_tool: Option<crate::tools_ozone::moderation::ModTool<'a>>,
35 #[serde(borrow)]
36 pub subject: EmitEventSubject<'a>,
37 #[serde(skip_serializing_if = "std::option::Option::is_none")]
38 #[builder(into)]
39 #[serde(borrow)]
40 pub subject_blob_cids: Option<Vec<jacquard_common::types::string::Cid<'a>>>,
41 #[serde(flatten)]
42 #[serde(borrow)]
43 #[builder(default)]
44 pub extra_data: ::std::collections::BTreeMap<
45 ::jacquard_common::smol_str::SmolStr,
46 ::jacquard_common::types::value::Data<'a>,
47 >,
48}
49
50#[jacquard_derive::open_union]
51#[derive(
52 serde::Serialize,
53 serde::Deserialize,
54 Debug,
55 Clone,
56 PartialEq,
57 Eq,
58 jacquard_derive::IntoStatic
59)]
60#[serde(tag = "$type")]
61#[serde(bound(deserialize = "'de: 'a"))]
62pub enum EmitEventEvent<'a> {
63 #[serde(rename = "tools.ozone.moderation.defs#modEventTakedown")]
64 ModEventTakedown(Box<crate::tools_ozone::moderation::ModEventTakedown<'a>>),
65 #[serde(rename = "tools.ozone.moderation.defs#modEventAcknowledge")]
66 ModEventAcknowledge(Box<crate::tools_ozone::moderation::ModEventAcknowledge<'a>>),
67 #[serde(rename = "tools.ozone.moderation.defs#modEventEscalate")]
68 ModEventEscalate(Box<crate::tools_ozone::moderation::ModEventEscalate<'a>>),
69 #[serde(rename = "tools.ozone.moderation.defs#modEventComment")]
70 ModEventComment(Box<crate::tools_ozone::moderation::ModEventComment<'a>>),
71 #[serde(rename = "tools.ozone.moderation.defs#modEventLabel")]
72 ModEventLabel(Box<crate::tools_ozone::moderation::ModEventLabel<'a>>),
73 #[serde(rename = "tools.ozone.moderation.defs#modEventReport")]
74 ModEventReport(Box<crate::tools_ozone::moderation::ModEventReport<'a>>),
75 #[serde(rename = "tools.ozone.moderation.defs#modEventMute")]
76 ModEventMute(Box<crate::tools_ozone::moderation::ModEventMute<'a>>),
77 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmute")]
78 ModEventUnmute(Box<crate::tools_ozone::moderation::ModEventUnmute<'a>>),
79 #[serde(rename = "tools.ozone.moderation.defs#modEventMuteReporter")]
80 ModEventMuteReporter(Box<crate::tools_ozone::moderation::ModEventMuteReporter<'a>>),
81 #[serde(rename = "tools.ozone.moderation.defs#modEventUnmuteReporter")]
82 ModEventUnmuteReporter(
83 Box<crate::tools_ozone::moderation::ModEventUnmuteReporter<'a>>,
84 ),
85 #[serde(rename = "tools.ozone.moderation.defs#modEventReverseTakedown")]
86 ModEventReverseTakedown(
87 Box<crate::tools_ozone::moderation::ModEventReverseTakedown<'a>>,
88 ),
89 #[serde(rename = "tools.ozone.moderation.defs#modEventResolveAppeal")]
90 ModEventResolveAppeal(
91 Box<crate::tools_ozone::moderation::ModEventResolveAppeal<'a>>,
92 ),
93 #[serde(rename = "tools.ozone.moderation.defs#modEventEmail")]
94 ModEventEmail(Box<crate::tools_ozone::moderation::ModEventEmail<'a>>),
95 #[serde(rename = "tools.ozone.moderation.defs#modEventDivert")]
96 ModEventDivert(Box<crate::tools_ozone::moderation::ModEventDivert<'a>>),
97 #[serde(rename = "tools.ozone.moderation.defs#modEventTag")]
98 ModEventTag(Box<crate::tools_ozone::moderation::ModEventTag<'a>>),
99 #[serde(rename = "tools.ozone.moderation.defs#accountEvent")]
100 AccountEvent(Box<crate::tools_ozone::moderation::AccountEvent<'a>>),
101 #[serde(rename = "tools.ozone.moderation.defs#identityEvent")]
102 IdentityEvent(Box<crate::tools_ozone::moderation::IdentityEvent<'a>>),
103 #[serde(rename = "tools.ozone.moderation.defs#recordEvent")]
104 RecordEvent(Box<crate::tools_ozone::moderation::RecordEvent<'a>>),
105 #[serde(rename = "tools.ozone.moderation.defs#modEventPriorityScore")]
106 ModEventPriorityScore(
107 Box<crate::tools_ozone::moderation::ModEventPriorityScore<'a>>,
108 ),
109 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceEvent")]
110 AgeAssuranceEvent(Box<crate::tools_ozone::moderation::AgeAssuranceEvent<'a>>),
111 #[serde(rename = "tools.ozone.moderation.defs#ageAssuranceOverrideEvent")]
112 AgeAssuranceOverrideEvent(
113 Box<crate::tools_ozone::moderation::AgeAssuranceOverrideEvent<'a>>,
114 ),
115 #[serde(rename = "tools.ozone.moderation.defs#revokeAccountCredentialsEvent")]
116 RevokeAccountCredentialsEvent(
117 Box<crate::tools_ozone::moderation::RevokeAccountCredentialsEvent<'a>>,
118 ),
119 #[serde(rename = "tools.ozone.moderation.defs#scheduleTakedownEvent")]
120 ScheduleTakedownEvent(
121 Box<crate::tools_ozone::moderation::ScheduleTakedownEvent<'a>>,
122 ),
123 #[serde(rename = "tools.ozone.moderation.defs#cancelScheduledTakedownEvent")]
124 CancelScheduledTakedownEvent(
125 Box<crate::tools_ozone::moderation::CancelScheduledTakedownEvent<'a>>,
126 ),
127}
128
129#[jacquard_derive::open_union]
130#[derive(
131 serde::Serialize,
132 serde::Deserialize,
133 Debug,
134 Clone,
135 PartialEq,
136 Eq,
137 jacquard_derive::IntoStatic
138)]
139#[serde(tag = "$type")]
140#[serde(bound(deserialize = "'de: 'a"))]
141pub enum EmitEventSubject<'a> {
142 #[serde(rename = "com.atproto.admin.defs#repoRef")]
143 RepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
144 #[serde(rename = "com.atproto.repo.strongRef")]
145 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
146}
147
148#[jacquard_derive::lexicon]
149#[derive(
150 serde::Serialize,
151 serde::Deserialize,
152 Debug,
153 Clone,
154 PartialEq,
155 Eq,
156 jacquard_derive::IntoStatic
157)]
158#[serde(rename_all = "camelCase")]
159pub struct EmitEventOutput<'a> {
160 #[serde(flatten)]
161 #[serde(borrow)]
162 pub value: crate::tools_ozone::moderation::ModEventView<'a>,
163}
164
165#[jacquard_derive::open_union]
166#[derive(
167 serde::Serialize,
168 serde::Deserialize,
169 Debug,
170 Clone,
171 PartialEq,
172 Eq,
173 thiserror::Error,
174 miette::Diagnostic,
175 jacquard_derive::IntoStatic
176)]
177#[serde(tag = "error", content = "message")]
178#[serde(bound(deserialize = "'de: 'a"))]
179pub enum EmitEventError<'a> {
180 #[serde(rename = "SubjectHasAction")]
181 SubjectHasAction(std::option::Option<String>),
182 /// An event with the same external ID already exists for the subject.
183 #[serde(rename = "DuplicateExternalId")]
184 DuplicateExternalId(std::option::Option<String>),
185}
186
187impl std::fmt::Display for EmitEventError<'_> {
188 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
189 match self {
190 Self::SubjectHasAction(msg) => {
191 write!(f, "SubjectHasAction")?;
192 if let Some(msg) = msg {
193 write!(f, ": {}", msg)?;
194 }
195 Ok(())
196 }
197 Self::DuplicateExternalId(msg) => {
198 write!(f, "DuplicateExternalId")?;
199 if let Some(msg) = msg {
200 write!(f, ": {}", msg)?;
201 }
202 Ok(())
203 }
204 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
205 }
206 }
207}
208
209///Response type for
210///tools.ozone.moderation.emitEvent
211pub struct EmitEventResponse;
212impl jacquard_common::xrpc::XrpcResp for EmitEventResponse {
213 const NSID: &'static str = "tools.ozone.moderation.emitEvent";
214 const ENCODING: &'static str = "application/json";
215 type Output<'de> = EmitEventOutput<'de>;
216 type Err<'de> = EmitEventError<'de>;
217}
218
219impl<'a> jacquard_common::xrpc::XrpcRequest for EmitEvent<'a> {
220 const NSID: &'static str = "tools.ozone.moderation.emitEvent";
221 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
222 "application/json",
223 );
224 type Response = EmitEventResponse;
225}
226
227///Endpoint type for
228///tools.ozone.moderation.emitEvent
229pub struct EmitEventRequest;
230impl jacquard_common::xrpc::XrpcEndpoint for EmitEventRequest {
231 const PATH: &'static str = "/xrpc/tools.ozone.moderation.emitEvent";
232 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
233 "application/json",
234 );
235 type Request<'de> = EmitEvent<'de>;
236 type Response = EmitEventResponse;
237}