1use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7pub struct Groups {
8 #[serde(
12 default,
13 skip_serializing_if = "String::is_empty",
14 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
15 rename = "allowExternalMembers"
16 )]
17 pub allow_external_members: String,
18 #[serde(
22 default,
23 skip_serializing_if = "String::is_empty",
24 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
25 rename = "allowGoogleCommunication"
26 )]
27 pub allow_google_communication: String,
28 #[serde(
32 default,
33 skip_serializing_if = "String::is_empty",
34 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
35 rename = "allowWebPosting"
36 )]
37 pub allow_web_posting: String,
38 #[serde(
42 default,
43 skip_serializing_if = "String::is_empty",
44 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
45 rename = "archiveOnly"
46 )]
47 pub archive_only: String,
48 #[serde(
52 default,
53 skip_serializing_if = "String::is_empty",
54 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
55 rename = "customFooterText"
56 )]
57 pub custom_footer_text: String,
58 #[serde(
62 default,
63 skip_serializing_if = "String::is_empty",
64 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
65 rename = "customReplyTo"
66 )]
67 pub custom_reply_to: String,
68 #[serde(
72 default,
73 skip_serializing_if = "String::is_empty",
74 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
75 rename = "customRolesEnabledForSettingsToBeMerged"
76 )]
77 pub custom_roles_enabled_for_settings_to_be_merged: String,
78 #[serde(
82 default,
83 skip_serializing_if = "String::is_empty",
84 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
85 rename = "defaultMessageDenyNotificationText"
86 )]
87 pub default_message_deny_notification_text: String,
88 #[serde(
92 default,
93 skip_serializing_if = "String::is_empty",
94 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
95 )]
96 pub default_sender: String,
97 #[serde(
101 default,
102 skip_serializing_if = "String::is_empty",
103 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
104 )]
105 pub description: String,
106 #[serde(
110 default,
111 skip_serializing_if = "String::is_empty",
112 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
113 )]
114 pub email: String,
115 #[serde(
119 default,
120 skip_serializing_if = "String::is_empty",
121 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
122 rename = "enableCollaborativeInbox"
123 )]
124 pub enable_collaborative_inbox: String,
125 #[serde(
129 default,
130 skip_serializing_if = "String::is_empty",
131 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
132 rename = "favoriteRepliesOnTop"
133 )]
134 pub favorite_replies_on_top: String,
135 #[serde(
139 default,
140 skip_serializing_if = "String::is_empty",
141 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
142 rename = "includeCustomFooter"
143 )]
144 pub include_custom_footer: String,
145 #[serde(
149 default,
150 skip_serializing_if = "String::is_empty",
151 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
152 rename = "includeInGlobalAddressList"
153 )]
154 pub include_in_global_address_list: String,
155 #[serde(
159 default,
160 skip_serializing_if = "String::is_empty",
161 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
162 rename = "isArchived"
163 )]
164 pub is_archived: String,
165 #[serde(
169 default,
170 skip_serializing_if = "String::is_empty",
171 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
172 )]
173 pub kind: String,
174 #[serde(
178 default,
179 skip_serializing_if = "crate::utils::zero_i64",
180 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
181 rename = "maxMessageBytes"
182 )]
183 pub max_message_bytes: i64,
184 #[serde(
188 default,
189 skip_serializing_if = "String::is_empty",
190 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
191 rename = "membersCanPostAsTheGroup"
192 )]
193 pub members_can_post_as_the_group: String,
194 #[serde(
198 default,
199 skip_serializing_if = "String::is_empty",
200 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
201 rename = "messageDisplayFont"
202 )]
203 pub message_display_font: String,
204 #[serde(
208 default,
209 skip_serializing_if = "String::is_empty",
210 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
211 rename = "messageModerationLevel"
212 )]
213 pub message_moderation_level: String,
214 #[serde(
218 default,
219 skip_serializing_if = "String::is_empty",
220 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
221 )]
222 pub name: String,
223 #[serde(
227 default,
228 skip_serializing_if = "String::is_empty",
229 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
230 rename = "primaryLanguage"
231 )]
232 pub primary_language: String,
233 #[serde(
237 default,
238 skip_serializing_if = "String::is_empty",
239 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
240 rename = "replyTo"
241 )]
242 pub reply_to: String,
243 #[serde(
247 default,
248 skip_serializing_if = "String::is_empty",
249 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
250 rename = "sendMessageDenyNotification"
251 )]
252 pub send_message_deny_notification: String,
253 #[serde(
257 default,
258 skip_serializing_if = "String::is_empty",
259 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
260 rename = "showInGroupDirectory"
261 )]
262 pub show_in_group_directory: String,
263 #[serde(
267 default,
268 skip_serializing_if = "String::is_empty",
269 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
270 rename = "spamModerationLevel"
271 )]
272 pub spam_moderation_level: String,
273 #[serde(
277 default,
278 skip_serializing_if = "String::is_empty",
279 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
280 rename = "whoCanAdd"
281 )]
282 pub who_can_add: String,
283 #[serde(
287 default,
288 skip_serializing_if = "String::is_empty",
289 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
290 rename = "whoCanAddReferences"
291 )]
292 pub who_can_add_references: String,
293 #[serde(
297 default,
298 skip_serializing_if = "String::is_empty",
299 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
300 rename = "whoCanApproveMembers"
301 )]
302 pub who_can_approve_members: String,
303 #[serde(
307 default,
308 skip_serializing_if = "String::is_empty",
309 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
310 rename = "whoCanApproveMessages"
311 )]
312 pub who_can_approve_messages: String,
313 #[serde(
317 default,
318 skip_serializing_if = "String::is_empty",
319 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
320 rename = "whoCanAssignTopics"
321 )]
322 pub who_can_assign_topics: String,
323 #[serde(
327 default,
328 skip_serializing_if = "String::is_empty",
329 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
330 rename = "whoCanAssistContent"
331 )]
332 pub who_can_assist_content: String,
333 #[serde(
337 default,
338 skip_serializing_if = "String::is_empty",
339 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
340 rename = "whoCanBanUsers"
341 )]
342 pub who_can_ban_users: String,
343 #[serde(
347 default,
348 skip_serializing_if = "String::is_empty",
349 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
350 rename = "whoCanContactOwner"
351 )]
352 pub who_can_contact_owner: String,
353 #[serde(
357 default,
358 skip_serializing_if = "String::is_empty",
359 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
360 rename = "whoCanDeleteAnyPost"
361 )]
362 pub who_can_delete_any_post: String,
363 #[serde(
367 default,
368 skip_serializing_if = "String::is_empty",
369 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
370 rename = "whoCanDeleteTopics"
371 )]
372 pub who_can_delete_topics: String,
373 #[serde(
377 default,
378 skip_serializing_if = "String::is_empty",
379 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
380 rename = "whoCanDiscoverGroup"
381 )]
382 pub who_can_discover_group: String,
383 #[serde(
387 default,
388 skip_serializing_if = "String::is_empty",
389 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
390 rename = "whoCanEnterFreeFormTags"
391 )]
392 pub who_can_enter_free_form_tags: String,
393 #[serde(
397 default,
398 skip_serializing_if = "String::is_empty",
399 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
400 rename = "whoCanHideAbuse"
401 )]
402 pub who_can_hide_abuse: String,
403 #[serde(
407 default,
408 skip_serializing_if = "String::is_empty",
409 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
410 rename = "whoCanInvite"
411 )]
412 pub who_can_invite: String,
413 #[serde(
417 default,
418 skip_serializing_if = "String::is_empty",
419 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
420 rename = "whoCanJoin"
421 )]
422 pub who_can_join: String,
423 #[serde(
427 default,
428 skip_serializing_if = "String::is_empty",
429 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
430 rename = "whoCanLeaveGroup"
431 )]
432 pub who_can_leave_group: String,
433 #[serde(
437 default,
438 skip_serializing_if = "String::is_empty",
439 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
440 rename = "whoCanLockTopics"
441 )]
442 pub who_can_lock_topics: String,
443 #[serde(
447 default,
448 skip_serializing_if = "String::is_empty",
449 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
450 rename = "whoCanMakeTopicsSticky"
451 )]
452 pub who_can_make_topics_sticky: String,
453 #[serde(
457 default,
458 skip_serializing_if = "String::is_empty",
459 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
460 rename = "whoCanMarkDuplicate"
461 )]
462 pub who_can_mark_duplicate: String,
463 #[serde(
467 default,
468 skip_serializing_if = "String::is_empty",
469 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
470 rename = "whoCanMarkFavoriteReplyOnAnyTopic"
471 )]
472 pub who_can_mark_favorite_reply_on_any_topic: String,
473 #[serde(
477 default,
478 skip_serializing_if = "String::is_empty",
479 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
480 rename = "whoCanMarkFavoriteReplyOnOwnTopic"
481 )]
482 pub who_can_mark_favorite_reply_on_own_topic: String,
483 #[serde(
487 default,
488 skip_serializing_if = "String::is_empty",
489 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
490 rename = "whoCanMarkNoResponseNeeded"
491 )]
492 pub who_can_mark_no_response_needed: String,
493 #[serde(
497 default,
498 skip_serializing_if = "String::is_empty",
499 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
500 rename = "whoCanModerateContent"
501 )]
502 pub who_can_moderate_content: String,
503 #[serde(
507 default,
508 skip_serializing_if = "String::is_empty",
509 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
510 rename = "whoCanModerateMembers"
511 )]
512 pub who_can_moderate_members: String,
513 #[serde(
517 default,
518 skip_serializing_if = "String::is_empty",
519 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
520 rename = "whoCanModifyMembers"
521 )]
522 pub who_can_modify_members: String,
523 #[serde(
527 default,
528 skip_serializing_if = "String::is_empty",
529 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
530 rename = "whoCanModifyTagsAndCategories"
531 )]
532 pub who_can_modify_tags_and_categories: String,
533 #[serde(
537 default,
538 skip_serializing_if = "String::is_empty",
539 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
540 rename = "whoCanMoveTopicsIn"
541 )]
542 pub who_can_move_topics_in: String,
543 #[serde(
547 default,
548 skip_serializing_if = "String::is_empty",
549 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
550 rename = "whoCanMoveTopicsOut"
551 )]
552 pub who_can_move_topics_out: String,
553 #[serde(
557 default,
558 skip_serializing_if = "String::is_empty",
559 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
560 rename = "whoCanPostAnnouncements"
561 )]
562 pub who_can_post_announcements: String,
563 #[serde(
567 default,
568 skip_serializing_if = "String::is_empty",
569 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
570 rename = "whoCanPostMessage"
571 )]
572 pub who_can_post_message: String,
573 #[serde(
577 default,
578 skip_serializing_if = "String::is_empty",
579 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
580 rename = "whoCanTakeTopics"
581 )]
582 pub who_can_take_topics: String,
583 #[serde(
587 default,
588 skip_serializing_if = "String::is_empty",
589 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
590 rename = "whoCanUnassignTopic"
591 )]
592 pub who_can_unassign_topic: String,
593 #[serde(
597 default,
598 skip_serializing_if = "String::is_empty",
599 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
600 rename = "whoCanUnmarkFavoriteReplyOnAnyTopic"
601 )]
602 pub who_can_unmark_favorite_reply_on_any_topic: String,
603 #[serde(
607 default,
608 skip_serializing_if = "String::is_empty",
609 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
610 rename = "whoCanViewGroup"
611 )]
612 pub who_can_view_group: String,
613 #[serde(
617 default,
618 skip_serializing_if = "String::is_empty",
619 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
620 rename = "whoCanViewMembership"
621 )]
622 pub who_can_view_membership: String,
623}
624
625#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
629pub enum Alt {
630 #[serde(rename = "atom")]
631 Atom,
632 #[serde(rename = "json")]
633 Json,
634 #[serde(rename = "")]
635 #[default]
636 Noop,
637 #[serde(other)]
638 FallthroughString,
639}
640
641impl std::fmt::Display for Alt {
642 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
643 match self {
644 Alt::Atom => "atom",
645 Alt::Json => "json",
646 Alt::Noop => "",
647 Alt::FallthroughString => "*",
648 }
649 .fmt(f)
650 }
651}
652
653impl Alt {
654 pub fn is_noop(&self) -> bool {
655 matches!(self, Alt::Noop)
656 }
657}