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    jacquard_derive::IntoStatic
18)]
19#[serde(rename_all = "camelCase")]
20#[builder(start_fn = new)]
21pub struct CreateReport<'a> {
22    #[serde(skip_serializing_if = "std::option::Option::is_none")]
23    #[serde(borrow)]
24    pub mod_tool: std::option::Option<jacquard_common::types::value::Data<'a>>,
25    ///Additional context about the content and violation.
26    #[serde(skip_serializing_if = "std::option::Option::is_none")]
27    #[serde(borrow)]
28    #[builder(into)]
29    pub reason: std::option::Option<jacquard_common::CowStr<'a>>,
30    ///Indicates the broad category of violation the report is for.
31    #[serde(borrow)]
32    pub reason_type: crate::com_atproto::moderation::ReasonType<'a>,
33    #[serde(borrow)]
34    pub subject: CreateReportSubject<'a>,
35    #[serde(flatten)]
36    #[serde(borrow)]
37    #[builder(default)]
38    pub extra_data: ::std::collections::BTreeMap<
39        ::jacquard_common::smol_str::SmolStr,
40        ::jacquard_common::types::value::Data<'a>,
41    >,
42}
43
44#[jacquard_derive::open_union]
45#[derive(
46    serde::Serialize,
47    serde::Deserialize,
48    Debug,
49    Clone,
50    PartialEq,
51    Eq,
52    jacquard_derive::IntoStatic
53)]
54#[serde(tag = "$type")]
55#[serde(bound(deserialize = "'de: 'a"))]
56pub enum CreateReportSubject<'a> {
57    #[serde(rename = "com.atproto.admin.defs#repoRef")]
58    RepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
59    #[serde(rename = "com.atproto.repo.strongRef")]
60    StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
61}
62
63#[jacquard_derive::lexicon]
64#[derive(
65    serde::Serialize,
66    serde::Deserialize,
67    Debug,
68    Clone,
69    PartialEq,
70    Eq,
71    jacquard_derive::IntoStatic
72)]
73#[serde(rename_all = "camelCase")]
74pub struct CreateReportOutput<'a> {
75    pub created_at: jacquard_common::types::string::Datetime,
76    pub id: i64,
77    #[serde(skip_serializing_if = "std::option::Option::is_none")]
78    #[serde(borrow)]
79    pub reason: std::option::Option<jacquard_common::CowStr<'a>>,
80    #[serde(borrow)]
81    pub reason_type: crate::com_atproto::moderation::ReasonType<'a>,
82    #[serde(borrow)]
83    pub reported_by: jacquard_common::types::string::Did<'a>,
84    #[serde(borrow)]
85    pub subject: CreateReportOutputSubject<'a>,
86}
87
88#[jacquard_derive::open_union]
89#[derive(
90    serde::Serialize,
91    serde::Deserialize,
92    Debug,
93    Clone,
94    PartialEq,
95    Eq,
96    jacquard_derive::IntoStatic
97)]
98#[serde(tag = "$type")]
99#[serde(bound(deserialize = "'de: 'a"))]
100pub enum CreateReportOutputSubject<'a> {
101    #[serde(rename = "com.atproto.admin.defs#repoRef")]
102    RepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
103    #[serde(rename = "com.atproto.repo.strongRef")]
104    StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
105}
106
107///Response type for
108///com.atproto.moderation.createReport
109pub struct CreateReportResponse;
110impl jacquard_common::xrpc::XrpcResp for CreateReportResponse {
111    const NSID: &'static str = "com.atproto.moderation.createReport";
112    const ENCODING: &'static str = "application/json";
113    type Output<'de> = CreateReportOutput<'de>;
114    type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
115}
116
117impl<'de> jacquard_common::xrpc::XrpcRequest<'de> for CreateReport<'de> {
118    const NSID: &'static str = "com.atproto.moderation.createReport";
119    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
120        "application/json",
121    );
122    type Response = CreateReportResponse;
123}
124
125///Endpoint type for
126///com.atproto.moderation.createReport
127pub struct CreateReportRequest;
128impl jacquard_common::xrpc::XrpcEndpoint for CreateReportRequest {
129    const PATH: &'static str = "/xrpc/com.atproto.moderation.createReport";
130    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
131        "application/json",
132    );
133    type Request<'de> = CreateReport<'de>;
134    type Response = CreateReportResponse;
135}
136
137///Moderation tool information for tracing the source of the action
138#[jacquard_derive::lexicon]
139#[derive(
140    serde::Serialize,
141    serde::Deserialize,
142    Debug,
143    Clone,
144    PartialEq,
145    Eq,
146    jacquard_derive::IntoStatic
147)]
148#[serde(rename_all = "camelCase")]
149pub struct ModTool<'a> {
150    ///Additional arbitrary metadata about the source
151    #[serde(skip_serializing_if = "std::option::Option::is_none")]
152    #[serde(borrow)]
153    pub meta: std::option::Option<jacquard_common::types::value::Data<'a>>,
154    ///Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome')
155    #[serde(borrow)]
156    pub name: jacquard_common::CowStr<'a>,
157}