1 use crate::sensitive::Sensitive;
3 newtypes::{CommentId, CommunityId, LanguageId, PersonId, PostId},
7 local_site::RegistrationMode,
15 use lemmy_db_views::structs::{
17 LocalUserSettingsView,
19 RegistrationApplicationView,
22 use lemmy_db_views_actor::structs::{
24 CommunityFollowerView,
25 CommunityModeratorView,
30 use lemmy_db_views_moderator::structs::{
31 AdminPurgeCommentView,
32 AdminPurgeCommunityView,
37 ModBanFromCommunityView,
43 ModRemoveCommunityView,
45 ModTransferCommunityView,
47 use serde::{Deserialize, Serialize};
49 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
52 pub community_id: Option<CommunityId>,
53 pub community_name: Option<String>,
54 pub creator_id: Option<PersonId>,
55 pub type_: Option<SearchType>,
56 pub sort: Option<SortType>,
57 pub listing_type: Option<ListingType>,
58 pub page: Option<i64>,
59 pub limit: Option<i64>,
60 pub auth: Option<Sensitive<String>>,
63 #[derive(Debug, Serialize, Deserialize, Clone)]
64 pub struct SearchResponse {
66 pub comments: Vec<CommentView>,
67 pub posts: Vec<PostView>,
68 pub communities: Vec<CommunityView>,
69 pub users: Vec<PersonViewSafe>,
72 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
73 pub struct ResolveObject {
75 pub auth: Option<Sensitive<String>>,
78 #[derive(Debug, Serialize, Deserialize, Default)]
79 pub struct ResolveObjectResponse {
80 pub comment: Option<CommentView>,
81 pub post: Option<PostView>,
82 pub community: Option<CommunityView>,
83 pub person: Option<PersonViewSafe>,
86 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
87 pub struct GetModlog {
88 pub mod_person_id: Option<PersonId>,
89 pub community_id: Option<CommunityId>,
90 pub page: Option<i64>,
91 pub limit: Option<i64>,
92 pub auth: Option<Sensitive<String>>,
93 pub type_: Option<ModlogActionType>,
94 pub other_person_id: Option<PersonId>,
97 #[derive(Debug, Serialize, Deserialize, Clone)]
98 pub struct GetModlogResponse {
99 pub removed_posts: Vec<ModRemovePostView>,
100 pub locked_posts: Vec<ModLockPostView>,
101 pub featured_posts: Vec<ModFeaturePostView>,
102 pub removed_comments: Vec<ModRemoveCommentView>,
103 pub removed_communities: Vec<ModRemoveCommunityView>,
104 pub banned_from_community: Vec<ModBanFromCommunityView>,
105 pub banned: Vec<ModBanView>,
106 pub added_to_community: Vec<ModAddCommunityView>,
107 pub transferred_to_community: Vec<ModTransferCommunityView>,
108 pub added: Vec<ModAddView>,
109 pub admin_purged_persons: Vec<AdminPurgePersonView>,
110 pub admin_purged_communities: Vec<AdminPurgeCommunityView>,
111 pub admin_purged_posts: Vec<AdminPurgePostView>,
112 pub admin_purged_comments: Vec<AdminPurgeCommentView>,
113 pub hidden_communities: Vec<ModHideCommunityView>,
116 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
117 pub struct CreateSite {
119 pub sidebar: Option<String>,
120 pub description: Option<String>,
121 pub icon: Option<String>,
122 pub banner: Option<String>,
123 pub enable_downvotes: Option<bool>,
124 pub enable_nsfw: Option<bool>,
125 pub community_creation_admin_only: Option<bool>,
126 pub require_email_verification: Option<bool>,
127 pub application_question: Option<String>,
128 pub private_instance: Option<bool>,
129 pub default_theme: Option<String>,
130 pub default_post_listing_type: Option<String>,
131 pub legal_information: Option<String>,
132 pub application_email_admins: Option<bool>,
133 pub hide_modlog_mod_names: Option<bool>,
134 pub discussion_languages: Option<Vec<LanguageId>>,
135 pub slur_filter_regex: Option<String>,
136 pub actor_name_max_length: Option<i32>,
137 pub rate_limit_message: Option<i32>,
138 pub rate_limit_message_per_second: Option<i32>,
139 pub rate_limit_post: Option<i32>,
140 pub rate_limit_post_per_second: Option<i32>,
141 pub rate_limit_register: Option<i32>,
142 pub rate_limit_register_per_second: Option<i32>,
143 pub rate_limit_image: Option<i32>,
144 pub rate_limit_image_per_second: Option<i32>,
145 pub rate_limit_comment: Option<i32>,
146 pub rate_limit_comment_per_second: Option<i32>,
147 pub rate_limit_search: Option<i32>,
148 pub rate_limit_search_per_second: Option<i32>,
149 pub federation_enabled: Option<bool>,
150 pub federation_debug: Option<bool>,
151 pub federation_worker_count: Option<i32>,
152 pub captcha_enabled: Option<bool>,
153 pub captcha_difficulty: Option<String>,
154 pub allowed_instances: Option<Vec<String>>,
155 pub blocked_instances: Option<Vec<String>>,
156 pub taglines: Option<Vec<String>>,
157 pub registration_mode: Option<RegistrationMode>,
158 pub auth: Sensitive<String>,
161 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
162 pub struct EditSite {
163 pub name: Option<String>,
164 pub sidebar: Option<String>,
165 pub description: Option<String>,
166 pub icon: Option<String>,
167 pub banner: Option<String>,
168 pub enable_downvotes: Option<bool>,
169 pub enable_nsfw: Option<bool>,
170 pub community_creation_admin_only: Option<bool>,
171 pub require_email_verification: Option<bool>,
172 pub application_question: Option<String>,
173 pub private_instance: Option<bool>,
174 pub default_theme: Option<String>,
175 pub default_post_listing_type: Option<String>,
176 pub legal_information: Option<String>,
177 pub application_email_admins: Option<bool>,
178 pub hide_modlog_mod_names: Option<bool>,
179 pub discussion_languages: Option<Vec<LanguageId>>,
180 pub slur_filter_regex: Option<String>,
181 pub actor_name_max_length: Option<i32>,
182 pub rate_limit_message: Option<i32>,
183 pub rate_limit_message_per_second: Option<i32>,
184 pub rate_limit_post: Option<i32>,
185 pub rate_limit_post_per_second: Option<i32>,
186 pub rate_limit_register: Option<i32>,
187 pub rate_limit_register_per_second: Option<i32>,
188 pub rate_limit_image: Option<i32>,
189 pub rate_limit_image_per_second: Option<i32>,
190 pub rate_limit_comment: Option<i32>,
191 pub rate_limit_comment_per_second: Option<i32>,
192 pub rate_limit_search: Option<i32>,
193 pub rate_limit_search_per_second: Option<i32>,
194 pub federation_enabled: Option<bool>,
195 pub federation_debug: Option<bool>,
196 pub federation_worker_count: Option<i32>,
197 pub captcha_enabled: Option<bool>,
198 pub captcha_difficulty: Option<String>,
199 pub allowed_instances: Option<Vec<String>>,
200 pub blocked_instances: Option<Vec<String>>,
201 pub taglines: Option<Vec<String>>,
202 pub registration_mode: Option<RegistrationMode>,
203 pub reports_email_admins: Option<bool>,
204 pub auth: Sensitive<String>,
207 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
209 pub auth: Option<Sensitive<String>>,
212 #[derive(Debug, Serialize, Deserialize, Clone)]
213 pub struct SiteResponse {
214 pub site_view: SiteView,
217 #[derive(Debug, Serialize, Deserialize, Clone)]
218 pub struct GetSiteResponse {
219 pub site_view: SiteView,
220 pub admins: Vec<PersonViewSafe>,
223 pub my_user: Option<MyUserInfo>,
224 pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
225 pub all_languages: Vec<Language>,
226 pub discussion_languages: Vec<LanguageId>,
227 pub taglines: Option<Vec<Tagline>>,
230 #[derive(Debug, Serialize, Deserialize, Clone)]
231 pub struct MyUserInfo {
232 pub local_user_view: LocalUserSettingsView,
233 pub follows: Vec<CommunityFollowerView>,
234 pub moderates: Vec<CommunityModeratorView>,
235 pub community_blocks: Vec<CommunityBlockView>,
236 pub person_blocks: Vec<PersonBlockView>,
237 pub discussion_languages: Vec<LanguageId>,
240 #[derive(Debug, Serialize, Deserialize, Clone)]
241 pub struct LeaveAdmin {
242 pub auth: Sensitive<String>,
245 #[derive(Debug, Serialize, Deserialize, Clone)]
246 pub struct FederatedInstances {
247 pub linked: Vec<Instance>,
248 pub allowed: Option<Vec<Instance>>,
249 pub blocked: Option<Vec<Instance>>,
252 #[derive(Debug, Serialize, Deserialize, Clone)]
253 pub struct PurgePerson {
254 pub person_id: PersonId,
255 pub reason: Option<String>,
259 #[derive(Debug, Serialize, Deserialize, Clone)]
260 pub struct PurgeCommunity {
261 pub community_id: CommunityId,
262 pub reason: Option<String>,
266 #[derive(Debug, Serialize, Deserialize, Clone)]
267 pub struct PurgePost {
269 pub reason: Option<String>,
273 #[derive(Debug, Serialize, Deserialize, Clone)]
274 pub struct PurgeComment {
275 pub comment_id: CommentId,
276 pub reason: Option<String>,
280 #[derive(Serialize, Deserialize)]
281 pub struct PurgeItemResponse {
285 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
286 pub struct ListRegistrationApplications {
287 /// Only shows the unread applications (IE those without an admin actor)
288 pub unread_only: Option<bool>,
289 pub page: Option<i64>,
290 pub limit: Option<i64>,
294 #[derive(Debug, Serialize, Deserialize, Clone)]
295 pub struct ListRegistrationApplicationsResponse {
296 pub registration_applications: Vec<RegistrationApplicationView>,
299 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
300 pub struct ApproveRegistrationApplication {
303 pub deny_reason: Option<String>,
307 #[derive(Debug, Serialize, Deserialize, Clone)]
308 pub struct RegistrationApplicationResponse {
309 pub registration_application: RegistrationApplicationView,
312 #[derive(Debug, Serialize, Deserialize, Clone)]
313 pub struct GetUnreadRegistrationApplicationCount {
317 #[derive(Debug, Serialize, Deserialize, Clone)]
318 pub struct GetUnreadRegistrationApplicationCountResponse {
319 pub registration_applications: i64,