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