1use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6pub struct PartnerSettingsNewRelic {
7 #[serde(
8 default,
9 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10 )]
11 pub enable_subuser_statistics: bool,
12 #[serde(
16 default,
17 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
18 )]
19 pub enabled: bool,
20 #[serde(
24 default,
25 skip_serializing_if = "String::is_empty",
26 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
27 )]
28 pub license_key: String,
29}
30
31#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
32pub struct SubscriptionTrackingSettings {
33 #[serde(
34 default,
35 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
36 )]
37 pub enabled: bool,
38 #[serde(
39 default,
40 skip_serializing_if = "String::is_empty",
41 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
42 )]
43 pub html_content: String,
44 #[serde(
45 default,
46 skip_serializing_if = "String::is_empty",
47 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
48 )]
49 pub landing: String,
50 #[serde(
51 default,
52 skip_serializing_if = "String::is_empty",
53 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
54 )]
55 pub plain_content: String,
56 #[serde(
57 default,
58 skip_serializing_if = "String::is_empty",
59 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
60 )]
61 pub replace: String,
62 #[serde(
63 default,
64 skip_serializing_if = "String::is_empty",
65 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
66 )]
67 pub url: String,
68}
69
70#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
71pub struct Errors {
72 #[serde(
76 default,
77 skip_serializing_if = "Vec::is_empty",
78 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
79 )]
80 pub error_indices: Vec<f64>,
81 #[serde(
85 default,
86 skip_serializing_if = "String::is_empty",
87 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
88 )]
89 pub message: String,
90}
91
92#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
93pub struct ContactDbRecipientResponse {
94 #[serde(
98 default,
99 skip_serializing_if = "crate::utils::zero_f64",
100 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
101 )]
102 pub error_count: f64,
103 #[serde(
104 default,
105 skip_serializing_if = "Vec::is_empty",
106 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
107 )]
108 pub error_indices: Vec<f64>,
109 #[serde(
110 default,
111 skip_serializing_if = "Vec::is_empty",
112 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
113 )]
114 pub errors: Vec<Errors>,
115 #[serde(
119 default,
120 skip_serializing_if = "crate::utils::zero_f64",
121 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
122 )]
123 pub new_count: f64,
124 #[serde(
128 default,
129 skip_serializing_if = "Vec::is_empty",
130 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
131 )]
132 pub persisted_recipients: Vec<String>,
133 #[serde(
137 default,
138 skip_serializing_if = "crate::utils::zero_f64",
139 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
140 )]
141 pub updated_count: f64,
142}
143
144#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
145pub struct CampaignResponse {
146 #[serde(
147 default,
148 skip_serializing_if = "crate::utils::zero_i64",
149 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
150 )]
151 pub id: i64,
152 #[serde(
156 default,
157 skip_serializing_if = "String::is_empty",
158 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
159 )]
160 pub status: String,
161}
162
163#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
169pub struct CampaignResponseAllOf {
170 #[serde(flatten)]
171 pub campaigns_request: CampaignsRequest,
172 #[serde(flatten)]
173 pub campaign_response: CampaignResponse,
174}
175
176#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
177pub enum Operator {
178 #[serde(rename = "contains")]
179 Contains,
180 #[serde(rename = "eq")]
181 Eq,
182 #[serde(rename = "gt")]
183 Gt,
184 #[serde(rename = "lt")]
185 Lt,
186 #[serde(rename = "ne")]
187 Ne,
188 #[serde(rename = "")]
189 #[default]
190 Noop,
191 #[serde(other)]
192 FallthroughString,
193}
194
195impl std::fmt::Display for Operator {
196 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
197 match self {
198 Operator::Contains => "contains",
199 Operator::Eq => "eq",
200 Operator::Gt => "gt",
201 Operator::Lt => "lt",
202 Operator::Ne => "ne",
203 Operator::Noop => "",
204 Operator::FallthroughString => "*",
205 }
206 .fmt(f)
207 }
208}
209
210impl Operator {
211 pub fn is_noop(&self) -> bool {
212 matches!(self, Operator::Noop)
213 }
214}
215
216#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
217pub enum AndOr {
218 #[serde(rename = "and")]
219 And,
220 #[serde(rename = "or")]
221 Or,
222 #[serde(rename = "")]
223 #[default]
224 Noop,
225 #[serde(other)]
226 FallthroughString,
227}
228
229impl std::fmt::Display for AndOr {
230 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
231 match self {
232 AndOr::And => "and",
233 AndOr::Or => "or",
234 AndOr::Noop => "",
235 AndOr::FallthroughString => "*",
236 }
237 .fmt(f)
238 }
239}
240
241impl AndOr {
242 pub fn is_noop(&self) -> bool {
243 matches!(self, AndOr::Noop)
244 }
245}
246
247#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
248pub struct ContactdbSegmentsConditions {
249 #[serde(default, skip_serializing_if = "Option::is_none")]
250 pub and_or: Option<AndOr>,
251 #[serde(
255 default,
256 skip_serializing_if = "String::is_empty",
257 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
258 )]
259 pub field: String,
260 #[serde(default, skip_serializing_if = "Operator::is_noop")]
261 pub operator: Operator,
262 #[serde(
266 default,
267 skip_serializing_if = "String::is_empty",
268 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
269 )]
270 pub value: String,
271}
272
273#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
274pub struct BounceResponse {
275 #[serde(
276 default,
277 skip_serializing_if = "crate::utils::zero_f64",
278 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
279 )]
280 pub created: f64,
281 #[serde(
282 default,
283 skip_serializing_if = "String::is_empty",
284 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
285 )]
286 pub email: String,
287 #[serde(
288 default,
289 skip_serializing_if = "String::is_empty",
290 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
291 )]
292 pub reason: String,
293 #[serde(
294 default,
295 skip_serializing_if = "String::is_empty",
296 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
297 )]
298 pub status: String,
299}
300
301#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
303pub struct Help {}
304
305#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
306pub struct Contacts {
307 #[serde(
308 default,
309 skip_serializing_if = "String::is_empty",
310 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
311 )]
312 pub address: String,
313 #[serde(default, skip_serializing_if = "Option::is_none", rename = "address2")]
314 pub address_2: Option<Help>,
315 #[serde(
316 default,
317 skip_serializing_if = "String::is_empty",
318 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
319 )]
320 pub city: String,
321 #[serde(
322 default,
323 skip_serializing_if = "String::is_empty",
324 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
325 )]
326 pub company: String,
327 #[serde(
328 default,
329 skip_serializing_if = "String::is_empty",
330 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
331 )]
332 pub country: String,
333 #[serde(
334 default,
335 skip_serializing_if = "String::is_empty",
336 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
337 )]
338 pub email: String,
339 #[serde(
340 default,
341 skip_serializing_if = "String::is_empty",
342 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
343 )]
344 pub first_name: String,
345 #[serde(
346 default,
347 skip_serializing_if = "String::is_empty",
348 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
349 )]
350 pub last_name: String,
351 #[serde(
352 default,
353 skip_serializing_if = "String::is_empty",
354 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
355 )]
356 pub phone: String,
357 #[serde(
358 default,
359 skip_serializing_if = "String::is_empty",
360 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
361 )]
362 pub state: String,
363 #[serde(
364 default,
365 skip_serializing_if = "String::is_empty",
366 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
367 )]
368 pub zip: String,
369}
370
371#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
372pub struct Users {
373 #[serde(
374 default,
375 skip_serializing_if = "crate::utils::zero_i64",
376 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
377 )]
378 pub user_id: i64,
379 #[serde(
383 default,
384 skip_serializing_if = "String::is_empty",
385 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
386 )]
387 pub username: String,
388}
389
390#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
392pub struct Dkim {
393 #[serde(
397 default,
398 skip_serializing_if = "String::is_empty",
399 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
400 )]
401 pub data: String,
402 #[serde(
406 default,
407 skip_serializing_if = "String::is_empty",
408 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
409 )]
410 pub host: String,
411 #[serde(
415 default,
416 skip_serializing_if = "String::is_empty",
417 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
418 rename = "type"
419 )]
420 pub type_: String,
421 #[serde(
425 default,
426 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
427 )]
428 pub valid: bool,
429}
430
431#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
432pub struct ReverseDns {
433 pub a_record: Dkim,
437 #[serde(
441 default,
442 skip_serializing_if = "String::is_empty",
443 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
444 )]
445 pub domain: String,
446 #[serde(
447 default,
448 skip_serializing_if = "crate::utils::zero_i64",
449 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
450 )]
451 pub id: i64,
452 #[serde(
456 default,
457 skip_serializing_if = "String::is_empty",
458 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
459 )]
460 pub ip: String,
461 #[serde(
462 default,
463 skip_serializing_if = "crate::utils::zero_i64",
464 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
465 )]
466 pub last_validation_attempt_at: i64,
467 #[serde(
471 default,
472 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
473 )]
474 pub legacy: bool,
475 #[serde(
479 default,
480 skip_serializing_if = "String::is_empty",
481 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
482 )]
483 pub rdns: String,
484 #[serde(
485 default,
486 skip_serializing_if = "String::is_empty",
487 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
488 )]
489 pub subdomain: String,
490 #[serde(
494 default,
495 skip_serializing_if = "Vec::is_empty",
496 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
497 )]
498 pub users: Vec<Users>,
499 #[serde(
503 default,
504 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
505 )]
506 pub valid: bool,
507}
508
509#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
510pub struct SenderId {
511 #[serde(
512 default,
513 skip_serializing_if = "crate::utils::zero_i64",
514 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
515 )]
516 pub created_at: i64,
517 #[serde(
518 default,
519 skip_serializing_if = "crate::utils::zero_i64",
520 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
521 )]
522 pub id: i64,
523 #[serde(
527 default,
528 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
529 )]
530 pub locked: bool,
531 #[serde(
532 default,
533 skip_serializing_if = "crate::utils::zero_i64",
534 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
535 )]
536 pub updated_at: i64,
537 #[serde(
541 default,
542 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
543 )]
544 pub verified: bool,
545}
546
547#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
554pub struct SenderAllOf {
555 #[serde(flatten)]
559 pub help: Help,
560 #[serde(flatten)]
561 pub sender_request: SenderRequest,
562 #[serde(flatten)]
563 pub sender_id: SenderId,
564}
565
566#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
570pub enum Type {
571 #[serde(rename = "date")]
572 Date,
573 #[serde(rename = "number")]
574 Number,
575 #[serde(rename = "text")]
576 Text,
577 #[serde(rename = "")]
578 #[default]
579 Noop,
580 #[serde(other)]
581 FallthroughString,
582}
583
584impl std::fmt::Display for Type {
585 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
586 match self {
587 Type::Date => "date",
588 Type::Number => "number",
589 Type::Text => "text",
590 Type::Noop => "",
591 Type::FallthroughString => "*",
592 }
593 .fmt(f)
594 }
595}
596
597impl Type {
598 pub fn is_noop(&self) -> bool {
599 matches!(self, Type::Noop)
600 }
601}
602
603#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
604pub struct ContactdbCustomField {
605 #[serde(
606 default,
607 skip_serializing_if = "String::is_empty",
608 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
609 )]
610 pub name: String,
611 #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
612 pub type_: Option<Type>,
613}
614
615#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
616pub struct Subuser {
617 #[serde(
621 default,
622 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
623 )]
624 pub disabled: bool,
625 #[serde(
629 default,
630 skip_serializing_if = "String::is_empty",
631 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
632 )]
633 pub email: String,
634 #[serde(
638 default,
639 skip_serializing_if = "crate::utils::zero_f64",
640 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
641 )]
642 pub id: f64,
643 #[serde(
647 default,
648 skip_serializing_if = "String::is_empty",
649 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
650 )]
651 pub username: String,
652}
653
654#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
655pub struct MailSettingsAddressWhitelabel {
656 #[serde(
657 default,
658 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
659 )]
660 pub enabled: bool,
661 #[serde(
662 default,
663 skip_serializing_if = "Vec::is_empty",
664 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
665 )]
666 pub list: Vec<String>,
667}
668
669#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
673pub enum LinkBranding200ResponseDnsDomainCnameType {
674 #[serde(rename = "cname")]
675 Cname,
676 #[serde(rename = "mx")]
677 Mx,
678 #[serde(rename = "txt")]
679 Txt,
680 #[serde(rename = "")]
681 #[default]
682 Noop,
683 #[serde(other)]
684 FallthroughString,
685}
686
687impl std::fmt::Display for LinkBranding200ResponseDnsDomainCnameType {
688 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
689 match self {
690 LinkBranding200ResponseDnsDomainCnameType::Cname => "cname",
691 LinkBranding200ResponseDnsDomainCnameType::Mx => "mx",
692 LinkBranding200ResponseDnsDomainCnameType::Txt => "txt",
693 LinkBranding200ResponseDnsDomainCnameType::Noop => "",
694 LinkBranding200ResponseDnsDomainCnameType::FallthroughString => "*",
695 }
696 .fmt(f)
697 }
698}
699
700impl LinkBranding200ResponseDnsDomainCnameType {
701 pub fn is_noop(&self) -> bool {
702 matches!(self, LinkBranding200ResponseDnsDomainCnameType::Noop)
703 }
704}
705
706#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
708pub struct DomainCname {
709 #[serde(
713 default,
714 skip_serializing_if = "String::is_empty",
715 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
716 )]
717 pub data: String,
718 #[serde(
722 default,
723 skip_serializing_if = "String::is_empty",
724 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
725 )]
726 pub host: String,
727 #[serde(
731 default,
732 skip_serializing_if = "LinkBranding200ResponseDnsDomainCnameType::is_noop",
733 rename = "type"
734 )]
735 pub type_: LinkBranding200ResponseDnsDomainCnameType,
736 #[serde(
740 default,
741 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
742 )]
743 pub valid: bool,
744}
745
746#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
748pub struct OwnerCname {
749 #[serde(
753 default,
754 skip_serializing_if = "String::is_empty",
755 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
756 )]
757 pub data: String,
758 #[serde(
762 default,
763 skip_serializing_if = "String::is_empty",
764 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
765 )]
766 pub host: String,
767 #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
771 pub type_: Option<LinkBranding200ResponseDnsDomainCnameType>,
772 #[serde(
776 default,
777 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
778 )]
779 pub valid: bool,
780}
781
782#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
784pub struct Dns {
785 pub domain_cname: DomainCname,
789 #[serde(default, skip_serializing_if = "Option::is_none")]
793 pub owner_cname: Option<OwnerCname>,
794}
795
796#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
797pub struct LinkBranding200Response {
798 #[serde(
802 default,
803 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
804 )]
805 pub default: bool,
806 pub dns: Dns,
810 #[serde(
814 default,
815 skip_serializing_if = "String::is_empty",
816 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
817 )]
818 pub domain: String,
819 #[serde(
820 default,
821 skip_serializing_if = "crate::utils::zero_i64",
822 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
823 )]
824 pub id: i64,
825 #[serde(
829 default,
830 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
831 )]
832 pub legacy: bool,
833 #[serde(
834 default,
835 skip_serializing_if = "String::is_empty",
836 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
837 )]
838 pub subdomain: String,
839 #[serde(
840 default,
841 skip_serializing_if = "crate::utils::zero_i64",
842 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
843 )]
844 pub user_id: i64,
845 #[serde(
849 default,
850 skip_serializing_if = "String::is_empty",
851 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
852 )]
853 pub username: String,
854 #[serde(
858 default,
859 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
860 )]
861 pub valid: bool,
862}
863
864#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
865pub struct FromEmailObject {
866 #[serde(
870 default,
871 skip_serializing_if = "String::is_empty",
872 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
873 )]
874 pub email: String,
875 #[serde(
876 default,
877 skip_serializing_if = "String::is_empty",
878 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
879 )]
880 pub name: String,
881}
882
883#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
884pub struct ApiKeyNameScopes {
885 #[serde(
889 default,
890 skip_serializing_if = "Vec::is_empty",
891 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
892 )]
893 pub scopes: Vec<String>,
894}
895
896#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
902pub struct ApiKeyNameScopesAllOf {
903 #[serde(flatten)]
904 pub api_key_name_scopes: ApiKeyNameScopes,
905 #[serde(flatten)]
906 pub api_key_name_id: ApiKeyNameId,
907}
908
909#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
910pub struct ContactdbSegments {
911 #[serde(
915 default,
916 skip_serializing_if = "Vec::is_empty",
917 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
918 )]
919 pub conditions: Vec<ContactdbSegmentsConditions>,
920 #[serde(
921 default,
922 skip_serializing_if = "crate::utils::zero_i64",
923 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
924 )]
925 pub list_id: i64,
926 #[serde(
930 default,
931 skip_serializing_if = "String::is_empty",
932 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
933 )]
934 pub name: String,
935 #[serde(
936 default,
937 skip_serializing_if = "crate::utils::zero_f64",
938 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
939 )]
940 pub recipient_count: f64,
941}
942
943#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
944pub struct ApiKeyNameId {
945 #[serde(
946 default,
947 skip_serializing_if = "String::is_empty",
948 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
949 )]
950 pub api_key_id: String,
951 #[serde(
952 default,
953 skip_serializing_if = "String::is_empty",
954 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
955 )]
956 pub name: String,
957}
958
959#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
961pub struct AdvancedStatsOpens {
962 #[serde(
966 default,
967 skip_serializing_if = "crate::utils::zero_i64",
968 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
969 )]
970 pub opens: i64,
971 #[serde(
975 default,
976 skip_serializing_if = "crate::utils::zero_i64",
977 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
978 )]
979 pub unique_opens: i64,
980}
981
982#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
983pub struct MailSettingsTemplate {
984 #[serde(
985 default,
986 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
987 )]
988 pub enabled: bool,
989 #[serde(
990 default,
991 skip_serializing_if = "String::is_empty",
992 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
993 )]
994 pub html_content: String,
995}
996
997#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
998pub struct IpWarmupResponse {
999 #[serde(
1003 default,
1004 skip_serializing_if = "String::is_empty",
1005 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1006 )]
1007 pub ip: String,
1008 #[serde(
1009 default,
1010 skip_serializing_if = "crate::utils::zero_i64",
1011 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1012 )]
1013 pub start_date: i64,
1014}
1015
1016#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1017pub struct Monitor {
1018 #[serde(
1022 default,
1023 skip_serializing_if = "String::is_empty",
1024 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1025 )]
1026 pub email: String,
1027 #[serde(
1031 default,
1032 skip_serializing_if = "crate::utils::zero_f64",
1033 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
1034 )]
1035 pub frequency: f64,
1036}
1037
1038#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1039pub struct GlobalErrorResponseSchemaErrors {
1040 #[serde(
1044 default,
1045 skip_serializing_if = "String::is_empty",
1046 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1047 )]
1048 pub field: String,
1049 #[serde(default, skip_serializing_if = "Option::is_none")]
1053 pub help: Option<Help>,
1054 #[serde(
1058 default,
1059 skip_serializing_if = "String::is_empty",
1060 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1061 )]
1062 pub message: String,
1063}
1064
1065#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1066pub struct GlobalErrorResponseSchema {
1067 #[serde(
1068 default,
1069 skip_serializing_if = "Vec::is_empty",
1070 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1071 )]
1072 pub errors: Vec<GlobalErrorResponseSchemaErrors>,
1073 #[serde(
1074 default,
1075 skip_serializing_if = "String::is_empty",
1076 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1077 )]
1078 pub id: String,
1079}
1080
1081#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1083pub struct AdvancedStatsMailboxProvider {
1084 #[serde(
1088 default,
1089 skip_serializing_if = "crate::utils::zero_i64",
1090 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1091 )]
1092 pub blocks: i64,
1093 #[serde(
1097 default,
1098 skip_serializing_if = "crate::utils::zero_i64",
1099 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1100 )]
1101 pub bounces: i64,
1102 #[serde(
1106 default,
1107 skip_serializing_if = "crate::utils::zero_i64",
1108 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1109 )]
1110 pub deferred: i64,
1111 #[serde(
1115 default,
1116 skip_serializing_if = "crate::utils::zero_i64",
1117 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1118 )]
1119 pub delivered: i64,
1120 #[serde(
1124 default,
1125 skip_serializing_if = "crate::utils::zero_i64",
1126 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1127 )]
1128 pub drops: i64,
1129 #[serde(
1133 default,
1134 skip_serializing_if = "crate::utils::zero_i64",
1135 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1136 )]
1137 pub processed: i64,
1138 #[serde(
1142 default,
1143 skip_serializing_if = "crate::utils::zero_i64",
1144 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1145 )]
1146 pub requests: i64,
1147 #[serde(
1151 default,
1152 skip_serializing_if = "crate::utils::zero_i64",
1153 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1154 )]
1155 pub spam_reports: i64,
1156}
1157
1158#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1164pub struct AdvancedStatsMailboxProviderAllOf {
1165 #[serde(flatten)]
1166 pub advanced_stats_clicks_opens_all_of: AdvancedStatsClicksOpensAllOf,
1167 #[serde(flatten)]
1171 pub advanced_stats_mailbox_provider: AdvancedStatsMailboxProvider,
1172}
1173
1174#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1175pub struct ContactdbCustomFieldWithId {
1176 #[serde(
1180 default,
1181 skip_serializing_if = "crate::utils::zero_f64",
1182 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
1183 )]
1184 pub id: f64,
1185}
1186
1187#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1193pub struct ContactdbCustomFieldWithAllOf {
1194 #[serde(flatten)]
1195 pub contactdb_custom_field: ContactdbCustomField,
1196 #[serde(flatten)]
1197 pub contactdb_custom_field_with_id: ContactdbCustomFieldWithId,
1198}
1199
1200#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1201pub struct IpPool {
1202 #[serde(
1206 default,
1207 skip_serializing_if = "String::is_empty",
1208 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1209 )]
1210 pub name: String,
1211}
1212
1213#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1214pub struct GoogleAnalyticsSettings {
1215 #[serde(
1216 default,
1217 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1218 )]
1219 pub enabled: bool,
1220 #[serde(
1221 default,
1222 skip_serializing_if = "String::is_empty",
1223 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1224 )]
1225 pub utm_campaign: String,
1226 #[serde(
1227 default,
1228 skip_serializing_if = "String::is_empty",
1229 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1230 )]
1231 pub utm_content: String,
1232 #[serde(
1233 default,
1234 skip_serializing_if = "String::is_empty",
1235 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1236 )]
1237 pub utm_medium: String,
1238 #[serde(
1239 default,
1240 skip_serializing_if = "String::is_empty",
1241 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1242 )]
1243 pub utm_source: String,
1244 #[serde(
1245 default,
1246 skip_serializing_if = "String::is_empty",
1247 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1248 )]
1249 pub utm_term: String,
1250}
1251
1252#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1253pub struct WebhooksEventWebhookResponse {
1254 #[serde(
1258 default,
1259 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1260 )]
1261 pub bounce: bool,
1262 #[serde(
1266 default,
1267 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1268 )]
1269 pub click: bool,
1270 #[serde(
1274 default,
1275 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1276 )]
1277 pub deferred: bool,
1278 #[serde(
1282 default,
1283 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1284 )]
1285 pub delivered: bool,
1286 #[serde(
1290 default,
1291 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1292 )]
1293 pub dropped: bool,
1294 #[serde(
1298 default,
1299 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1300 )]
1301 pub enabled: bool,
1302 #[serde(
1306 default,
1307 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1308 )]
1309 pub group_resubscribe: bool,
1310 #[serde(
1314 default,
1315 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1316 )]
1317 pub group_unsubscribe: bool,
1318 #[serde(
1319 default,
1320 skip_serializing_if = "String::is_empty",
1321 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1322 )]
1323 pub oauth_client_id: String,
1324 #[serde(
1325 default,
1326 skip_serializing_if = "String::is_empty",
1327 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1328 )]
1329 pub oauth_token_url: String,
1330 #[serde(
1334 default,
1335 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1336 )]
1337 pub open: bool,
1338 #[serde(
1342 default,
1343 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1344 )]
1345 pub processed: bool,
1346 #[serde(
1350 default,
1351 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1352 )]
1353 pub spam_report: bool,
1354 #[serde(
1358 default,
1359 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1360 )]
1361 pub unsubscribe: bool,
1362 #[serde(
1366 default,
1367 skip_serializing_if = "String::is_empty",
1368 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1369 )]
1370 pub url: String,
1371}
1372
1373#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1374pub struct UserProfile {
1375 #[serde(
1376 default,
1377 skip_serializing_if = "String::is_empty",
1378 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1379 )]
1380 pub address: String,
1381 #[serde(
1382 default,
1383 skip_serializing_if = "String::is_empty",
1384 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1385 rename = "address2"
1386 )]
1387 pub address_2: String,
1388 #[serde(
1389 default,
1390 skip_serializing_if = "String::is_empty",
1391 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1392 )]
1393 pub city: String,
1394 #[serde(
1395 default,
1396 skip_serializing_if = "String::is_empty",
1397 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1398 )]
1399 pub company: String,
1400 #[serde(
1401 default,
1402 skip_serializing_if = "String::is_empty",
1403 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1404 )]
1405 pub country: String,
1406 #[serde(
1407 default,
1408 skip_serializing_if = "String::is_empty",
1409 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1410 )]
1411 pub first_name: String,
1412 #[serde(
1413 default,
1414 skip_serializing_if = "String::is_empty",
1415 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1416 )]
1417 pub last_name: String,
1418 #[serde(
1419 default,
1420 skip_serializing_if = "String::is_empty",
1421 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1422 )]
1423 pub phone: String,
1424 #[serde(
1425 default,
1426 skip_serializing_if = "String::is_empty",
1427 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1428 )]
1429 pub state: String,
1430 #[serde(
1431 default,
1432 skip_serializing_if = "String::is_empty",
1433 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1434 )]
1435 pub website: String,
1436 #[serde(
1437 default,
1438 skip_serializing_if = "String::is_empty",
1439 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1440 )]
1441 pub zip: String,
1442}
1443
1444#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1445pub struct MailSettingsFooter {
1446 #[serde(
1447 default,
1448 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1449 )]
1450 pub enabled: bool,
1451 #[serde(
1452 default,
1453 skip_serializing_if = "String::is_empty",
1454 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1455 )]
1456 pub html_content: String,
1457 #[serde(
1458 default,
1459 skip_serializing_if = "String::is_empty",
1460 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1461 )]
1462 pub plain_content: String,
1463}
1464
1465#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1466pub struct Metrics {
1467 #[serde(
1468 default,
1469 skip_serializing_if = "crate::utils::zero_i64",
1470 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1471 )]
1472 pub blocks: i64,
1473 #[serde(
1474 default,
1475 skip_serializing_if = "crate::utils::zero_i64",
1476 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1477 )]
1478 pub bounce_drops: i64,
1479 #[serde(
1480 default,
1481 skip_serializing_if = "crate::utils::zero_i64",
1482 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1483 )]
1484 pub bounces: i64,
1485 #[serde(
1486 default,
1487 skip_serializing_if = "crate::utils::zero_i64",
1488 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1489 )]
1490 pub clicks: i64,
1491 #[serde(
1492 default,
1493 skip_serializing_if = "crate::utils::zero_i64",
1494 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1495 )]
1496 pub deferred: i64,
1497 #[serde(
1498 default,
1499 skip_serializing_if = "crate::utils::zero_i64",
1500 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1501 )]
1502 pub delivered: i64,
1503 #[serde(
1504 default,
1505 skip_serializing_if = "crate::utils::zero_i64",
1506 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1507 )]
1508 pub invalid_emails: i64,
1509 #[serde(
1510 default,
1511 skip_serializing_if = "crate::utils::zero_i64",
1512 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1513 )]
1514 pub opens: i64,
1515 #[serde(
1516 default,
1517 skip_serializing_if = "crate::utils::zero_i64",
1518 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1519 )]
1520 pub processed: i64,
1521 #[serde(
1522 default,
1523 skip_serializing_if = "crate::utils::zero_i64",
1524 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1525 )]
1526 pub requests: i64,
1527 #[serde(
1528 default,
1529 skip_serializing_if = "crate::utils::zero_i64",
1530 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1531 )]
1532 pub spam_report_drops: i64,
1533 #[serde(
1534 default,
1535 skip_serializing_if = "crate::utils::zero_i64",
1536 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1537 )]
1538 pub spam_reports: i64,
1539 #[serde(
1540 default,
1541 skip_serializing_if = "crate::utils::zero_i64",
1542 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1543 )]
1544 pub unique_clicks: i64,
1545 #[serde(
1546 default,
1547 skip_serializing_if = "crate::utils::zero_i64",
1548 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1549 )]
1550 pub unique_opens: i64,
1551 #[serde(
1552 default,
1553 skip_serializing_if = "crate::utils::zero_i64",
1554 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1555 )]
1556 pub unsubscribe_drops: i64,
1557 #[serde(
1558 default,
1559 skip_serializing_if = "crate::utils::zero_i64",
1560 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1561 )]
1562 pub unsubscribes: i64,
1563}
1564
1565#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1566pub struct Stats {
1567 #[serde(default, skip_serializing_if = "Option::is_none")]
1568 pub metrics: Option<Metrics>,
1569 #[serde(
1573 default,
1574 skip_serializing_if = "String::is_empty",
1575 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1576 )]
1577 pub name: String,
1578 #[serde(
1582 default,
1583 skip_serializing_if = "String::is_empty",
1584 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1585 rename = "type"
1586 )]
1587 pub type_: String,
1588}
1589
1590#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1591pub struct CategoryStats {
1592 #[serde(
1596 default,
1597 skip_serializing_if = "String::is_empty",
1598 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1599 )]
1600 pub date: String,
1601 #[serde(
1602 default,
1603 skip_serializing_if = "Vec::is_empty",
1604 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1605 )]
1606 pub stats: Vec<Stats>,
1607}
1608
1609#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1610pub struct ParseSetting {
1611 #[serde(
1612 default,
1613 skip_serializing_if = "String::is_empty",
1614 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1615 )]
1616 pub hostname: String,
1617 #[serde(
1618 default,
1619 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1620 )]
1621 pub send_raw: bool,
1622 #[serde(
1623 default,
1624 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1625 )]
1626 pub spam_check: bool,
1627 #[serde(
1628 default,
1629 skip_serializing_if = "String::is_empty",
1630 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1631 )]
1632 pub url: String,
1633}
1634
1635#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1636pub struct TransactionalTemplate {
1637 #[serde(default, skip_serializing_if = "Option::is_none")]
1638 pub warning: Option<Warning>,
1639}
1640
1641#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1647pub struct TransactionalTemplateAllOf {
1648 #[serde(flatten)]
1649 pub transactional_templates_template_lean: TransactionalTemplatesTemplateLean,
1650 #[serde(flatten)]
1651 pub transactional_template: TransactionalTemplate,
1652}
1653
1654#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1655pub struct ContactdbList {
1656 #[serde(
1657 default,
1658 skip_serializing_if = "crate::utils::zero_i64",
1659 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1660 )]
1661 pub id: i64,
1662 #[serde(
1666 default,
1667 skip_serializing_if = "String::is_empty",
1668 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1669 )]
1670 pub name: String,
1671 #[serde(
1672 default,
1673 skip_serializing_if = "crate::utils::zero_i64",
1674 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1675 )]
1676 pub recipient_count: i64,
1677}
1678
1679#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1680pub struct SuppressionGroup {
1681 #[serde(
1685 default,
1686 skip_serializing_if = "String::is_empty",
1687 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1688 )]
1689 pub description: String,
1690 #[serde(
1694 default,
1695 skip_serializing_if = "crate::utils::zero_f64",
1696 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
1697 )]
1698 pub id: f64,
1699 #[serde(
1700 default,
1701 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1702 )]
1703 pub is_default: bool,
1704 #[serde(default, skip_serializing_if = "Option::is_none")]
1705 pub last_email_sent_at: Option<serde_json::Value>,
1706 #[serde(
1710 default,
1711 skip_serializing_if = "String::is_empty",
1712 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1713 )]
1714 pub name: String,
1715 #[serde(
1716 default,
1717 skip_serializing_if = "crate::utils::zero_i64",
1718 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1719 )]
1720 pub unsubscribes: i64,
1721}
1722
1723#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1724pub struct MailSettingsBouncePurge {
1725 #[serde(
1726 default,
1727 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1728 )]
1729 pub enabled: bool,
1730 #[serde(
1731 default,
1732 skip_serializing_if = "crate::utils::zero_i64",
1733 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1734 )]
1735 pub hard_bounces: i64,
1736 #[serde(
1737 default,
1738 skip_serializing_if = "crate::utils::zero_i64",
1739 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1740 )]
1741 pub soft_bounces: i64,
1742}
1743
1744#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1745pub struct TransactionalTemplateVersionOutput {
1746 #[serde(
1747 default,
1748 skip_serializing_if = "Vec::is_empty",
1749 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1750 )]
1751 pub warnings: Vec<Warning>,
1752}
1753
1754#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1761pub struct TransactionalTemplateVersionOutputAllOf {
1762 #[serde(flatten)]
1763 pub transactional_template_version_output: TransactionalTemplateVersionOutput,
1764 #[serde(flatten)]
1765 pub transactional_template_version_create: TransactionalTemplateVersionCreate,
1766 #[serde(flatten)]
1767 pub transactional_templates_version_output_lean: TransactionalTemplatesVersionOutputLean,
1768}
1769
1770#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1771pub struct Permissions {
1772 #[serde(
1776 default,
1777 skip_serializing_if = "String::is_empty",
1778 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1779 )]
1780 pub api: String,
1781 #[serde(
1785 default,
1786 skip_serializing_if = "String::is_empty",
1787 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1788 )]
1789 pub mail: String,
1790 #[serde(
1794 default,
1795 skip_serializing_if = "String::is_empty",
1796 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1797 )]
1798 pub web: String,
1799}
1800
1801#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1802pub struct Credentials {
1803 #[serde(default, skip_serializing_if = "Option::is_none")]
1804 pub permissions: Option<Permissions>,
1805 #[serde(
1806 default,
1807 skip_serializing_if = "String::is_empty",
1808 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1809 )]
1810 pub username: String,
1811}
1812
1813#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1814pub struct MailSettingsForwardSpam {
1815 #[serde(
1816 default,
1817 skip_serializing_if = "String::is_empty",
1818 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1819 )]
1820 pub email: String,
1821 #[serde(
1822 default,
1823 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1824 )]
1825 pub enabled: bool,
1826}
1827
1828#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
1832pub enum Editor {
1833 #[serde(rename = "code")]
1834 Code,
1835 #[serde(rename = "design")]
1836 Design,
1837 #[serde(rename = "")]
1838 #[default]
1839 Noop,
1840 #[serde(other)]
1841 FallthroughString,
1842}
1843
1844impl std::fmt::Display for Editor {
1845 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1846 match self {
1847 Editor::Code => "code",
1848 Editor::Design => "design",
1849 Editor::Noop => "",
1850 Editor::FallthroughString => "*",
1851 }
1852 .fmt(f)
1853 }
1854}
1855
1856impl Editor {
1857 pub fn is_noop(&self) -> bool {
1858 matches!(self, Editor::Noop)
1859 }
1860}
1861
1862#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1863pub struct CampaignsRequest {
1864 #[serde(
1865 default,
1866 skip_serializing_if = "Vec::is_empty",
1867 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1868 )]
1869 pub categories: Vec<String>,
1870 #[serde(
1871 default,
1872 skip_serializing_if = "String::is_empty",
1873 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1874 )]
1875 pub custom_unsubscribe_url: String,
1876 #[serde(default, skip_serializing_if = "Option::is_none")]
1877 pub editor: Option<Editor>,
1878 #[serde(
1879 default,
1880 skip_serializing_if = "String::is_empty",
1881 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1882 )]
1883 pub html_content: String,
1884 #[serde(
1885 default,
1886 skip_serializing_if = "String::is_empty",
1887 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1888 )]
1889 pub ip_pool: String,
1890 #[serde(
1894 default,
1895 skip_serializing_if = "Vec::is_empty",
1896 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1897 )]
1898 pub list_ids: Vec<i64>,
1899 #[serde(
1900 default,
1901 skip_serializing_if = "String::is_empty",
1902 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1903 )]
1904 pub plain_content: String,
1905 #[serde(
1909 default,
1910 skip_serializing_if = "Vec::is_empty",
1911 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1912 )]
1913 pub segment_ids: Vec<i64>,
1914 #[serde(
1915 default,
1916 skip_serializing_if = "crate::utils::zero_i64",
1917 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1918 )]
1919 pub sender_id: i64,
1920 #[serde(
1921 default,
1922 skip_serializing_if = "String::is_empty",
1923 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1924 )]
1925 pub subject: String,
1926 #[serde(
1927 default,
1928 skip_serializing_if = "crate::utils::zero_i64",
1929 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1930 )]
1931 pub suppression_group_id: i64,
1932 #[serde(
1936 default,
1937 skip_serializing_if = "String::is_empty",
1938 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1939 )]
1940 pub title: String,
1941}
1942
1943#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1944pub struct SubuserStatsMetrics {
1945 #[serde(
1946 default,
1947 skip_serializing_if = "crate::utils::zero_i64",
1948 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1949 )]
1950 pub blocks: i64,
1951 #[serde(
1952 default,
1953 skip_serializing_if = "crate::utils::zero_i64",
1954 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1955 )]
1956 pub bounce_drops: i64,
1957 #[serde(
1958 default,
1959 skip_serializing_if = "crate::utils::zero_i64",
1960 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1961 )]
1962 pub bounces: i64,
1963 #[serde(
1964 default,
1965 skip_serializing_if = "crate::utils::zero_i64",
1966 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1967 )]
1968 pub clicks: i64,
1969 #[serde(
1970 default,
1971 skip_serializing_if = "crate::utils::zero_i64",
1972 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1973 )]
1974 pub deferred: i64,
1975 #[serde(
1976 default,
1977 skip_serializing_if = "crate::utils::zero_i64",
1978 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1979 )]
1980 pub delivered: i64,
1981 #[serde(
1982 default,
1983 skip_serializing_if = "crate::utils::zero_i64",
1984 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1985 )]
1986 pub invalid_emails: i64,
1987 #[serde(
1988 default,
1989 skip_serializing_if = "crate::utils::zero_i64",
1990 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1991 )]
1992 pub opens: i64,
1993 #[serde(
1994 default,
1995 skip_serializing_if = "crate::utils::zero_i64",
1996 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1997 )]
1998 pub processed: i64,
1999 #[serde(
2000 default,
2001 skip_serializing_if = "crate::utils::zero_i64",
2002 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2003 )]
2004 pub requests: i64,
2005 #[serde(
2006 default,
2007 skip_serializing_if = "crate::utils::zero_i64",
2008 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2009 )]
2010 pub spam_report_drops: i64,
2011 #[serde(
2012 default,
2013 skip_serializing_if = "crate::utils::zero_i64",
2014 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2015 )]
2016 pub spam_reports: i64,
2017 #[serde(
2018 default,
2019 skip_serializing_if = "crate::utils::zero_i64",
2020 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2021 )]
2022 pub unique_clicks: i64,
2023 #[serde(
2024 default,
2025 skip_serializing_if = "crate::utils::zero_i64",
2026 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2027 )]
2028 pub unique_opens: i64,
2029 #[serde(
2030 default,
2031 skip_serializing_if = "crate::utils::zero_i64",
2032 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2033 )]
2034 pub unsubscribe_drops: i64,
2035 #[serde(
2036 default,
2037 skip_serializing_if = "crate::utils::zero_i64",
2038 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2039 )]
2040 pub unsubscribes: i64,
2041}
2042
2043#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2044pub struct SubuserStats {
2045 #[serde(
2049 default,
2050 skip_serializing_if = "String::is_empty",
2051 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2052 )]
2053 pub first_name: String,
2054 #[serde(
2058 default,
2059 skip_serializing_if = "String::is_empty",
2060 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2061 )]
2062 pub last_name: String,
2063 #[serde(default, skip_serializing_if = "Option::is_none")]
2064 pub metrics: Option<SubuserStatsMetrics>,
2065 #[serde(
2069 default,
2070 skip_serializing_if = "String::is_empty",
2071 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2072 )]
2073 pub name: String,
2074 #[serde(
2078 default,
2079 skip_serializing_if = "String::is_empty",
2080 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2081 rename = "type"
2082 )]
2083 pub type_: String,
2084}
2085
2086#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2087pub struct SubuserStatsData {
2088 #[serde(
2089 default,
2090 skip_serializing_if = "String::is_empty",
2091 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2092 )]
2093 pub date: String,
2094 #[serde(
2095 default,
2096 skip_serializing_if = "Vec::is_empty",
2097 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2098 )]
2099 pub stats: Vec<SubuserStats>,
2100}
2101
2102#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
2106pub enum Status {
2107 #[serde(rename = "cancel")]
2108 Cancel,
2109 #[serde(rename = "pause")]
2110 Pause,
2111 #[serde(rename = "")]
2112 #[default]
2113 Noop,
2114 #[serde(other)]
2115 FallthroughString,
2116}
2117
2118impl std::fmt::Display for Status {
2119 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2120 match self {
2121 Status::Cancel => "cancel",
2122 Status::Pause => "pause",
2123 Status::Noop => "",
2124 Status::FallthroughString => "*",
2125 }
2126 .fmt(f)
2127 }
2128}
2129
2130impl Status {
2131 pub fn is_noop(&self) -> bool {
2132 matches!(self, Status::Noop)
2133 }
2134}
2135
2136#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2138pub struct UserScheduledSendStatus {
2139 #[serde(default, skip_serializing_if = "Status::is_noop")]
2143 pub status: Status,
2144}
2145
2146#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2152pub struct UserScheduledSendStatusAllOf {
2153 #[serde(flatten)]
2154 pub mail_batch_id: MailBatchId,
2155 #[serde(flatten)]
2159 pub user_scheduled_send_status: UserScheduledSendStatus,
2160}
2161
2162#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2168pub struct AdvancedStatsClicksOpensAllOf {
2169 #[serde(flatten)]
2173 pub advanced_stats_opens: AdvancedStatsOpens,
2174 #[serde(flatten)]
2178 pub advanced_stats_clicks: AdvancedStatsClicks,
2179}
2180
2181#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2182pub struct ContactdbSegmentsWithId {
2183 #[serde(
2187 default,
2188 skip_serializing_if = "crate::utils::zero_f64",
2189 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2190 )]
2191 pub id: f64,
2192}
2193
2194#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2200pub struct ContactdbSegmentsWithAllOf {
2201 #[serde(flatten)]
2202 pub contactdb_segments: ContactdbSegments,
2203 #[serde(flatten)]
2204 pub contactdb_segments_with_id: ContactdbSegmentsWithId,
2205}
2206
2207#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2209pub struct AdvancedStatsClicks {
2210 #[serde(
2214 default,
2215 skip_serializing_if = "crate::utils::zero_i64",
2216 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2217 )]
2218 pub clicks: i64,
2219 #[serde(
2223 default,
2224 skip_serializing_if = "crate::utils::zero_i64",
2225 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2226 )]
2227 pub unique_clicks: i64,
2228}
2229
2230#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2231pub struct Recipients {
2232 #[serde(
2236 default,
2237 skip_serializing_if = "crate::utils::zero_f64",
2238 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2239 )]
2240 pub created_at: f64,
2241 #[serde(
2245 default,
2246 skip_serializing_if = "Vec::is_empty",
2247 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2248 )]
2249 pub custom_fields: Vec<ContactdbCustomFieldWithValueAllOf>,
2250 #[serde(
2254 default,
2255 skip_serializing_if = "String::is_empty",
2256 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2257 )]
2258 pub email: String,
2259 #[serde(
2263 default,
2264 skip_serializing_if = "String::is_empty",
2265 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2266 )]
2267 pub first_name: String,
2268 #[serde(
2272 default,
2273 skip_serializing_if = "String::is_empty",
2274 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2275 )]
2276 pub id: String,
2277 #[serde(
2281 default,
2282 skip_serializing_if = "crate::utils::zero_f64",
2283 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2284 )]
2285 pub last_clicked: f64,
2286 #[serde(
2290 default,
2291 skip_serializing_if = "crate::utils::zero_f64",
2292 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2293 )]
2294 pub last_emailed: f64,
2295 #[serde(
2299 default,
2300 skip_serializing_if = "String::is_empty",
2301 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2302 )]
2303 pub last_name: String,
2304 #[serde(
2308 default,
2309 skip_serializing_if = "crate::utils::zero_f64",
2310 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2311 )]
2312 pub last_opened: f64,
2313 #[serde(
2317 default,
2318 skip_serializing_if = "crate::utils::zero_f64",
2319 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2320 )]
2321 pub updated_at: f64,
2322}
2323
2324#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2325pub struct ContactdbRecipient {
2326 #[serde(
2327 default,
2328 skip_serializing_if = "Vec::is_empty",
2329 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2330 )]
2331 pub recipients: Vec<Recipients>,
2332}
2333
2334#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2335pub struct MailSettingsPatch {
2336 #[serde(
2337 default,
2338 skip_serializing_if = "String::is_empty",
2339 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2340 )]
2341 pub email: String,
2342 #[serde(
2343 default,
2344 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
2345 )]
2346 pub enabled: bool,
2347}
2348
2349#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2350pub struct MailSettingsForwardBounce {
2351 #[serde(
2352 default,
2353 skip_serializing_if = "String::is_empty",
2354 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2355 )]
2356 pub email: String,
2357 #[serde(
2358 default,
2359 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
2360 )]
2361 pub enabled: bool,
2362}
2363
2364#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2365pub struct MailBatchId {
2366 #[serde(
2370 default,
2371 skip_serializing_if = "String::is_empty",
2372 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2373 )]
2374 pub batch_id: String,
2375}
2376
2377#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2378pub struct CreditAllocation {
2379 #[serde(
2383 default,
2384 skip_serializing_if = "String::is_empty",
2385 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2386 rename = "type"
2387 )]
2388 pub type_: String,
2389}
2390
2391#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2392pub struct SubuserPost {
2393 #[serde(
2394 default,
2395 skip_serializing_if = "String::is_empty",
2396 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2397 )]
2398 pub authorization_token: String,
2399 #[serde(default, skip_serializing_if = "Option::is_none")]
2400 pub credit_allocation: Option<CreditAllocation>,
2401 #[serde(
2405 default,
2406 skip_serializing_if = "String::is_empty",
2407 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2408 )]
2409 pub email: String,
2410 #[serde(
2411 default,
2412 skip_serializing_if = "String::is_empty",
2413 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2414 )]
2415 pub signup_session_token: String,
2416 #[serde(
2420 default,
2421 skip_serializing_if = "crate::utils::zero_f64",
2422 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2423 )]
2424 pub user_id: f64,
2425 #[serde(
2429 default,
2430 skip_serializing_if = "String::is_empty",
2431 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2432 )]
2433 pub username: String,
2434}
2435
2436#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2437pub struct ContactdbRecipientCount {
2438 #[serde(
2442 default,
2443 skip_serializing_if = "crate::utils::zero_f64",
2444 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2445 )]
2446 pub recipient_count: f64,
2447}
2448
2449#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2450pub struct ContactdbCustomFieldWithValue {
2451 #[serde(
2455 default,
2456 skip_serializing_if = "String::is_empty",
2457 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2458 )]
2459 pub value: String,
2460}
2461
2462#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2468pub struct ContactdbCustomFieldWithValueAllOf {
2469 #[serde(flatten)]
2470 pub contactdb_custom_field_with_all_of: ContactdbCustomFieldWithAllOf,
2471 #[serde(flatten)]
2472 pub contactdb_custom_field_with_value: ContactdbCustomFieldWithValue,
2473}
2474
2475#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2476pub struct TransactionalTemplateVersionCreate {
2477 #[serde(
2478 default,
2479 skip_serializing_if = "crate::utils::zero_i64",
2480 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2481 )]
2482 pub active: i64,
2483 #[serde(default, skip_serializing_if = "Option::is_none")]
2484 pub editor: Option<Editor>,
2485 #[serde(
2486 default,
2487 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
2488 )]
2489 pub generate_plain_content: bool,
2490 #[serde(
2491 default,
2492 skip_serializing_if = "String::is_empty",
2493 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2494 )]
2495 pub html_content: String,
2496 #[serde(
2500 default,
2501 skip_serializing_if = "String::is_empty",
2502 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2503 )]
2504 pub name: String,
2505 #[serde(
2506 default,
2507 skip_serializing_if = "String::is_empty",
2508 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2509 )]
2510 pub plain_content: String,
2511 #[serde(
2515 default,
2516 skip_serializing_if = "String::is_empty",
2517 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2518 )]
2519 pub subject: String,
2520 #[serde(
2521 default,
2522 skip_serializing_if = "String::is_empty",
2523 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2524 )]
2525 pub test_data: String,
2526}
2527
2528#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2529pub struct TransactionalTemplatesVersionOutputLean {
2530 #[serde(
2531 default,
2532 skip_serializing_if = "crate::utils::zero_i64",
2533 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2534 )]
2535 pub active: i64,
2536 #[serde(default, skip_serializing_if = "Option::is_none")]
2537 pub editor: Option<Editor>,
2538 #[serde(
2539 default,
2540 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
2541 )]
2542 pub generate_plain_content: bool,
2543 #[serde(
2544 default,
2545 skip_serializing_if = "String::is_empty",
2546 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2547 )]
2548 pub id: String,
2549 #[serde(
2550 default,
2551 skip_serializing_if = "String::is_empty",
2552 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2553 )]
2554 pub name: String,
2555 #[serde(
2556 default,
2557 skip_serializing_if = "String::is_empty",
2558 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2559 )]
2560 pub subject: String,
2561 #[serde(
2562 default,
2563 skip_serializing_if = "String::is_empty",
2564 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2565 )]
2566 pub template_id: String,
2567 #[serde(
2568 default,
2569 skip_serializing_if = "String::is_empty",
2570 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2571 )]
2572 pub thumbnail_url: String,
2573 #[serde(
2574 default,
2575 skip_serializing_if = "String::is_empty",
2576 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2577 )]
2578 pub updated_at: String,
2579}
2580
2581#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
2585pub enum Generation {
2586 #[serde(rename = "dynamic")]
2587 Dynamic,
2588 #[serde(rename = "legacy")]
2589 Legacy,
2590 #[serde(rename = "")]
2591 #[default]
2592 Noop,
2593 #[serde(other)]
2594 FallthroughString,
2595}
2596
2597impl std::fmt::Display for Generation {
2598 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2599 match self {
2600 Generation::Dynamic => "dynamic",
2601 Generation::Legacy => "legacy",
2602 Generation::Noop => "",
2603 Generation::FallthroughString => "*",
2604 }
2605 .fmt(f)
2606 }
2607}
2608
2609impl Generation {
2610 pub fn is_noop(&self) -> bool {
2611 matches!(self, Generation::Noop)
2612 }
2613}
2614
2615#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2616pub struct TransactionalTemplatesTemplateLean {
2617 #[serde(default, skip_serializing_if = "Generation::is_noop")]
2621 pub generation: Generation,
2622 #[serde(
2626 default,
2627 skip_serializing_if = "String::is_empty",
2628 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2629 )]
2630 pub id: String,
2631 #[serde(
2635 default,
2636 skip_serializing_if = "String::is_empty",
2637 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2638 )]
2639 pub name: String,
2640 #[serde(
2644 default,
2645 skip_serializing_if = "String::is_empty",
2646 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2647 rename = "updated_at "
2648 )]
2649 pub updated_at: String,
2650 #[serde(
2651 default,
2652 skip_serializing_if = "Vec::is_empty",
2653 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2654 )]
2655 pub versions: Vec<TransactionalTemplatesVersionOutputLean>,
2656}
2657
2658#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2659pub struct ContactDetails {
2660 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
2661 pub metadata: Option<SelfMetadata>,
2662 #[serde(
2663 default,
2664 skip_serializing_if = "String::is_empty",
2665 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2666 )]
2667 pub address_line_1: String,
2668 #[serde(
2669 default,
2670 skip_serializing_if = "String::is_empty",
2671 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2672 )]
2673 pub address_line_2: String,
2674 #[serde(
2675 default,
2676 skip_serializing_if = "Vec::is_empty",
2677 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2678 )]
2679 pub alternate_emails: Vec<String>,
2680 #[serde(
2681 default,
2682 skip_serializing_if = "String::is_empty",
2683 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2684 )]
2685 pub city: String,
2686 #[serde(
2687 default,
2688 skip_serializing_if = "String::is_empty",
2689 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2690 )]
2691 pub country: String,
2692 #[serde(
2696 default,
2697 skip_serializing_if = "String::is_empty",
2698 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2699 )]
2700 pub created_at: String,
2701 #[serde(default, skip_serializing_if = "Option::is_none")]
2702 pub custom_fields: Option<Help>,
2703 #[serde(
2704 default,
2705 skip_serializing_if = "String::is_empty",
2706 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2707 )]
2708 pub email: String,
2709 #[serde(
2710 default,
2711 skip_serializing_if = "String::is_empty",
2712 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2713 )]
2714 pub first_name: String,
2715 #[serde(
2719 default,
2720 skip_serializing_if = "String::is_empty",
2721 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2722 )]
2723 pub id: String,
2724 #[serde(
2725 default,
2726 skip_serializing_if = "String::is_empty",
2727 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2728 )]
2729 pub last_name: String,
2730 #[serde(
2734 default,
2735 skip_serializing_if = "Vec::is_empty",
2736 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2737 )]
2738 pub list_ids: Vec<String>,
2739 #[serde(
2740 default,
2741 skip_serializing_if = "String::is_empty",
2742 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2743 )]
2744 pub postal_code: String,
2745 #[serde(
2746 default,
2747 skip_serializing_if = "String::is_empty",
2748 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2749 )]
2750 pub state_province_region: String,
2751 #[serde(
2755 default,
2756 skip_serializing_if = "String::is_empty",
2757 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2758 )]
2759 pub updated_at: String,
2760}
2761
2762#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2764pub struct Results {
2765 #[serde(
2769 default,
2770 skip_serializing_if = "crate::utils::zero_f64",
2771 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2772 )]
2773 pub created_count: f64,
2774 #[serde(
2778 default,
2779 skip_serializing_if = "crate::utils::zero_f64",
2780 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2781 )]
2782 pub deleted_count: f64,
2783 #[serde(
2787 default,
2788 skip_serializing_if = "crate::utils::zero_f64",
2789 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2790 )]
2791 pub errored_count: f64,
2792 #[serde(
2796 default,
2797 skip_serializing_if = "String::is_empty",
2798 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2799 )]
2800 pub errors_url: String,
2801 #[serde(
2805 default,
2806 skip_serializing_if = "crate::utils::zero_f64",
2807 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2808 )]
2809 pub requested_count: f64,
2810 #[serde(
2814 default,
2815 skip_serializing_if = "crate::utils::zero_f64",
2816 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2817 )]
2818 pub updated_count: f64,
2819}
2820
2821#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2822pub struct ContactImport {
2823 #[serde(
2824 default,
2825 skip_serializing_if = "String::is_empty",
2826 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2827 )]
2828 pub finished_at: String,
2829 #[serde(
2830 default,
2831 skip_serializing_if = "String::is_empty",
2832 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2833 )]
2834 pub id: String,
2835 #[serde(
2836 default,
2837 skip_serializing_if = "String::is_empty",
2838 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2839 )]
2840 pub job_type: String,
2841 #[serde(default, skip_serializing_if = "Option::is_none")]
2842 pub results: Option<Results>,
2843 #[serde(
2844 default,
2845 skip_serializing_if = "String::is_empty",
2846 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2847 )]
2848 pub started_at: String,
2849 #[serde(
2850 default,
2851 skip_serializing_if = "String::is_empty",
2852 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2853 )]
2854 pub status: String,
2855}
2856
2857#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2858pub struct CustomFields {
2859 #[serde(
2863 default,
2864 skip_serializing_if = "String::is_empty",
2865 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2866 rename = "custom_field_name1"
2867 )]
2868 pub custom_field_name_1: String,
2869 #[serde(
2873 default,
2874 skip_serializing_if = "String::is_empty",
2875 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2876 rename = "custom_field_name2"
2877 )]
2878 pub custom_field_name_2: String,
2879}
2880
2881#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2882pub struct Contact {
2883 #[serde(
2887 default,
2888 skip_serializing_if = "String::is_empty",
2889 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2890 )]
2891 pub address_line_1: String,
2892 #[serde(
2896 default,
2897 skip_serializing_if = "String::is_empty",
2898 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2899 )]
2900 pub address_line_2: String,
2901 #[serde(
2905 default,
2906 skip_serializing_if = "String::is_empty",
2907 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2908 )]
2909 pub alternate_emails: String,
2910 #[serde(
2914 default,
2915 skip_serializing_if = "String::is_empty",
2916 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2917 )]
2918 pub city: String,
2919 #[serde(
2923 default,
2924 skip_serializing_if = "String::is_empty",
2925 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2926 )]
2927 pub country: String,
2928 #[serde(default, skip_serializing_if = "Option::is_none")]
2929 pub custom_fields: Option<CustomFields>,
2930 #[serde(
2934 default,
2935 skip_serializing_if = "String::is_empty",
2936 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2937 )]
2938 pub first_name: String,
2939 #[serde(
2943 default,
2944 skip_serializing_if = "String::is_empty",
2945 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2946 )]
2947 pub last_name: String,
2948 #[serde(
2952 default,
2953 skip_serializing_if = "String::is_empty",
2954 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2955 )]
2956 pub postal_code: String,
2957 #[serde(
2961 default,
2962 skip_serializing_if = "String::is_empty",
2963 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2964 )]
2965 pub primary_email: String,
2966 #[serde(
2970 default,
2971 skip_serializing_if = "String::is_empty",
2972 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2973 )]
2974 pub state_province_region: String,
2975}
2976
2977#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2978pub struct SingleContactRequest {
2979 #[serde(default, skip_serializing_if = "Option::is_none")]
2980 pub contact: Option<Contact>,
2981 #[serde(
2982 default,
2983 skip_serializing_if = "Vec::is_empty",
2984 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2985 )]
2986 pub list_ids: Vec<String>,
2987}
2988
2989#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
2993pub enum ContactExportStatus {
2994 #[serde(rename = "failure")]
2995 Failure,
2996 #[serde(rename = "pending")]
2997 Pending,
2998 #[serde(rename = "ready")]
2999 Ready,
3000 #[serde(rename = "")]
3001 #[default]
3002 Noop,
3003 #[serde(other)]
3004 FallthroughString,
3005}
3006
3007impl std::fmt::Display for ContactExportStatus {
3008 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3009 match self {
3010 ContactExportStatus::Failure => "failure",
3011 ContactExportStatus::Pending => "pending",
3012 ContactExportStatus::Ready => "ready",
3013 ContactExportStatus::Noop => "",
3014 ContactExportStatus::FallthroughString => "*",
3015 }
3016 .fmt(f)
3017 }
3018}
3019
3020impl ContactExportStatus {
3021 pub fn is_noop(&self) -> bool {
3022 matches!(self, ContactExportStatus::Noop)
3023 }
3024}
3025
3026#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3027pub struct ContactExport {
3028 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
3029 pub metadata: Option<Metadata>,
3030 #[serde(
3031 default,
3032 skip_serializing_if = "String::is_empty",
3033 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3034 )]
3035 pub completed_at: String,
3036 #[serde(
3037 default,
3038 skip_serializing_if = "crate::utils::zero_i64",
3039 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
3040 )]
3041 pub contact_count: i64,
3042 #[serde(
3046 default,
3047 skip_serializing_if = "String::is_empty",
3048 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3049 )]
3050 pub created_at: String,
3051 #[serde(
3055 default,
3056 skip_serializing_if = "String::is_empty",
3057 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3058 )]
3059 pub expires_at: String,
3060 #[serde(
3064 default,
3065 skip_serializing_if = "String::is_empty",
3066 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3067 )]
3068 pub id: String,
3069 #[serde(
3070 default,
3071 skip_serializing_if = "String::is_empty",
3072 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3073 )]
3074 pub message: String,
3075 #[serde(default, skip_serializing_if = "ContactExportStatus::is_noop")]
3079 pub status: ContactExportStatus,
3080 #[serde(
3084 default,
3085 skip_serializing_if = "String::is_empty",
3086 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3087 )]
3088 pub updated_at: String,
3089 #[serde(
3090 default,
3091 skip_serializing_if = "Vec::is_empty",
3092 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3093 )]
3094 pub urls: Vec<String>,
3095}
3096
3097#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3098pub struct ContactSummary {
3099 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
3100 pub metadata: Option<SelfMetadata>,
3101 #[serde(
3105 default,
3106 skip_serializing_if = "crate::utils::zero_f64",
3107 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
3108 )]
3109 pub created_at: f64,
3110 #[serde(
3111 default,
3112 skip_serializing_if = "String::is_empty",
3113 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3114 )]
3115 pub email: String,
3116 #[serde(
3117 default,
3118 skip_serializing_if = "String::is_empty",
3119 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3120 )]
3121 pub first_name: String,
3122 #[serde(
3126 default,
3127 skip_serializing_if = "String::is_empty",
3128 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3129 )]
3130 pub id: String,
3131 #[serde(
3132 default,
3133 skip_serializing_if = "String::is_empty",
3134 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3135 )]
3136 pub last_name: String,
3137 #[serde(
3141 default,
3142 skip_serializing_if = "Vec::is_empty",
3143 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3144 )]
3145 pub list_ids: Vec<String>,
3146 #[serde(
3150 default,
3151 skip_serializing_if = "crate::utils::zero_f64",
3152 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
3153 )]
3154 pub updated_at: f64,
3155}
3156
3157#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3158pub struct ContactRequest {
3159 #[serde(
3160 default,
3161 skip_serializing_if = "String::is_empty",
3162 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3163 )]
3164 pub address_line_1: String,
3165 #[serde(
3166 default,
3167 skip_serializing_if = "String::is_empty",
3168 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3169 )]
3170 pub address_line_2: String,
3171 #[serde(
3172 default,
3173 skip_serializing_if = "Vec::is_empty",
3174 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3175 )]
3176 pub alternate_emails: Vec<String>,
3177 #[serde(
3178 default,
3179 skip_serializing_if = "String::is_empty",
3180 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3181 )]
3182 pub city: String,
3183 #[serde(
3184 default,
3185 skip_serializing_if = "String::is_empty",
3186 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3187 )]
3188 pub country: String,
3189 #[serde(default, skip_serializing_if = "Option::is_none")]
3190 pub custom_fields: Option<Help>,
3191 #[serde(
3195 default,
3196 skip_serializing_if = "String::is_empty",
3197 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3198 )]
3199 pub email: String,
3200 #[serde(
3201 default,
3202 skip_serializing_if = "String::is_empty",
3203 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3204 )]
3205 pub first_name: String,
3206 #[serde(
3207 default,
3208 skip_serializing_if = "String::is_empty",
3209 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3210 )]
3211 pub last_name: String,
3212 #[serde(
3213 default,
3214 skip_serializing_if = "String::is_empty",
3215 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3216 )]
3217 pub postal_code: String,
3218 #[serde(
3219 default,
3220 skip_serializing_if = "String::is_empty",
3221 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3222 )]
3223 pub state_province_region: String,
3224}
3225
3226#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3227pub struct ContactDetails2 {
3228 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
3229 pub metadata: Option<SelfMetadata>,
3230 #[serde(
3231 default,
3232 skip_serializing_if = "String::is_empty",
3233 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3234 )]
3235 pub address_line_1: String,
3236 #[serde(
3237 default,
3238 skip_serializing_if = "String::is_empty",
3239 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3240 )]
3241 pub address_line_2: String,
3242 #[serde(
3243 default,
3244 skip_serializing_if = "Vec::is_empty",
3245 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3246 )]
3247 pub alternate_emails: Vec<String>,
3248 #[serde(
3249 default,
3250 skip_serializing_if = "String::is_empty",
3251 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3252 )]
3253 pub city: String,
3254 #[serde(
3255 default,
3256 skip_serializing_if = "String::is_empty",
3257 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3258 )]
3259 pub country: String,
3260 #[serde(
3261 default,
3262 skip_serializing_if = "Option::is_none",
3263 deserialize_with = "crate::utils::date_time_format::deserialize"
3264 )]
3265 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3266 #[serde(default, skip_serializing_if = "Option::is_none")]
3267 pub custom_fields: Option<Help>,
3268 #[serde(
3269 default,
3270 skip_serializing_if = "String::is_empty",
3271 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3272 )]
3273 pub email: String,
3274 #[serde(
3275 default,
3276 skip_serializing_if = "String::is_empty",
3277 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3278 )]
3279 pub facebook: String,
3280 #[serde(
3281 default,
3282 skip_serializing_if = "String::is_empty",
3283 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3284 )]
3285 pub first_name: String,
3286 #[serde(
3290 default,
3291 skip_serializing_if = "String::is_empty",
3292 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3293 )]
3294 pub id: String,
3295 #[serde(
3296 default,
3297 skip_serializing_if = "String::is_empty",
3298 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3299 )]
3300 pub last_name: String,
3301 #[serde(
3302 default,
3303 skip_serializing_if = "String::is_empty",
3304 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3305 )]
3306 pub line: String,
3307 #[serde(
3311 default,
3312 skip_serializing_if = "Vec::is_empty",
3313 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3314 )]
3315 pub list_ids: Vec<String>,
3316 #[serde(
3317 default,
3318 skip_serializing_if = "String::is_empty",
3319 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3320 )]
3321 pub phone_number: String,
3322 #[serde(
3323 default,
3324 skip_serializing_if = "String::is_empty",
3325 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3326 )]
3327 pub postal_code: String,
3328 #[serde(
3329 default,
3330 skip_serializing_if = "Vec::is_empty",
3331 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3332 )]
3333 pub segment_ids: Vec<String>,
3334 #[serde(
3335 default,
3336 skip_serializing_if = "String::is_empty",
3337 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3338 )]
3339 pub state_province_region: String,
3340 #[serde(
3341 default,
3342 skip_serializing_if = "String::is_empty",
3343 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3344 )]
3345 pub unique_name: String,
3346 #[serde(
3347 default,
3348 skip_serializing_if = "Option::is_none",
3349 deserialize_with = "crate::utils::date_time_format::deserialize"
3350 )]
3351 pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3352 #[serde(
3353 default,
3354 skip_serializing_if = "String::is_empty",
3355 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3356 )]
3357 pub whatsapp: String,
3358}
3359
3360#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3361pub struct SelfMetadata {
3362 #[serde(
3363 default,
3364 skip_serializing_if = "String::is_empty",
3365 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3366 rename = "self"
3367 )]
3368 pub self_: String,
3369}
3370
3371#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3372pub struct Error {
3373 #[serde(
3374 default,
3375 skip_serializing_if = "String::is_empty",
3376 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3377 )]
3378 pub error_id: String,
3379 #[serde(
3380 default,
3381 skip_serializing_if = "String::is_empty",
3382 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3383 )]
3384 pub field: String,
3385 #[serde(
3389 default,
3390 skip_serializing_if = "String::is_empty",
3391 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3392 )]
3393 pub message: String,
3394 #[serde(
3395 default,
3396 skip_serializing_if = "String::is_empty",
3397 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3398 )]
3399 pub parameter: String,
3400}
3401
3402#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3403pub struct Link {
3404 #[serde(
3405 default,
3406 skip_serializing_if = "String::is_empty",
3407 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3408 )]
3409 pub href: String,
3410 #[serde(
3411 default,
3412 skip_serializing_if = "String::is_empty",
3413 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3414 )]
3415 pub rel: String,
3416}
3417
3418#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3419pub struct Metadata {
3420 #[serde(
3421 default,
3422 skip_serializing_if = "crate::utils::zero_f64",
3423 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
3424 )]
3425 pub count: f64,
3426 #[serde(
3427 default,
3428 skip_serializing_if = "String::is_empty",
3429 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3430 )]
3431 pub next: String,
3432 #[serde(
3433 default,
3434 skip_serializing_if = "String::is_empty",
3435 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3436 )]
3437 pub prev: String,
3438 #[serde(
3439 default,
3440 skip_serializing_if = "String::is_empty",
3441 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3442 rename = "self"
3443 )]
3444 pub self_: String,
3445}
3446
3447#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3448pub struct Webhook {
3449 #[serde(
3453 default,
3454 skip_serializing_if = "String::is_empty",
3455 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3456 )]
3457 pub nonce: String,
3458 #[serde(
3462 default,
3463 skip_serializing_if = "String::is_empty",
3464 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3465 )]
3466 pub url: String,
3467}
3468
3469#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3470pub struct List {
3471 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
3472 pub metadata: Option<SelfMetadata>,
3473 #[serde(
3474 default,
3475 skip_serializing_if = "crate::utils::zero_i64",
3476 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
3477 )]
3478 pub contact_count: i64,
3479 #[serde(
3480 default,
3481 skip_serializing_if = "String::is_empty",
3482 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3483 )]
3484 pub id: String,
3485 #[serde(
3486 default,
3487 skip_serializing_if = "String::is_empty",
3488 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3489 )]
3490 pub name: String,
3491}
3492
3493#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
3494pub enum FieldType {
3495 #[serde(rename = "Date")]
3496 Date,
3497 #[serde(rename = "Number")]
3498 Number,
3499 #[serde(rename = "Text")]
3500 Text,
3501 #[serde(rename = "")]
3502 #[default]
3503 Noop,
3504 #[serde(other)]
3505 FallthroughString,
3506}
3507
3508impl std::fmt::Display for FieldType {
3509 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3510 match self {
3511 FieldType::Date => "Date",
3512 FieldType::Number => "Number",
3513 FieldType::Text => "Text",
3514 FieldType::Noop => "",
3515 FieldType::FallthroughString => "*",
3516 }
3517 .fmt(f)
3518 }
3519}
3520
3521impl FieldType {
3522 pub fn is_noop(&self) -> bool {
3523 matches!(self, FieldType::Noop)
3524 }
3525}
3526
3527#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3528pub struct ReservedFieldDefinitionsResponse {
3529 #[serde(default, skip_serializing_if = "Option::is_none")]
3530 pub field_type: Option<FieldType>,
3531 #[serde(
3535 default,
3536 skip_serializing_if = "String::is_empty",
3537 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3538 )]
3539 pub name: String,
3540 #[serde(
3544 default,
3545 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
3546 )]
3547 pub read_only: bool,
3548}
3549
3550#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3551pub struct CustomFieldDefinitionsResponse {
3552 #[serde(default, skip_serializing_if = "FieldType::is_noop")]
3553 pub field_type: FieldType,
3554 #[serde(
3558 default,
3559 skip_serializing_if = "String::is_empty",
3560 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3561 )]
3562 pub id: String,
3563 #[serde(
3567 default,
3568 skip_serializing_if = "String::is_empty",
3569 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3570 )]
3571 pub name: String,
3572}
3573
3574#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3575pub struct SegmentWrite {
3576 #[serde(
3580 default,
3581 skip_serializing_if = "String::is_empty",
3582 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3583 )]
3584 pub name: String,
3585 #[serde(
3589 default,
3590 skip_serializing_if = "String::is_empty",
3591 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3592 )]
3593 pub query_dsl: String,
3594}
3595
3596#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3597pub struct SegmentSummary {
3598 #[serde(
3599 default,
3600 skip_serializing_if = "crate::utils::zero_i64",
3601 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
3602 )]
3603 pub contacts_count: i64,
3604 #[serde(
3605 default,
3606 skip_serializing_if = "Option::is_none",
3607 deserialize_with = "crate::utils::date_time_format::deserialize"
3608 )]
3609 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3610 #[serde(
3614 default,
3615 skip_serializing_if = "String::is_empty",
3616 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3617 )]
3618 pub id: String,
3619 #[serde(
3620 default,
3621 skip_serializing_if = "String::is_empty",
3622 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3623 )]
3624 pub name: String,
3625 #[serde(
3626 default,
3627 skip_serializing_if = "String::is_empty",
3628 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3629 )]
3630 pub next_sample_update: String,
3631 #[serde(
3632 default,
3633 skip_serializing_if = "String::is_empty",
3634 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3635 )]
3636 pub parent_list_id: String,
3637 #[serde(
3638 default,
3639 skip_serializing_if = "Option::is_none",
3640 deserialize_with = "crate::utils::date_time_format::deserialize"
3641 )]
3642 pub sample_updated_at: Option<chrono::DateTime<chrono::Utc>>,
3643 #[serde(
3644 default,
3645 skip_serializing_if = "Option::is_none",
3646 deserialize_with = "crate::utils::date_time_format::deserialize"
3647 )]
3648 pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3649}
3650
3651#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3652pub struct L {
3653 #[serde(
3657 default,
3658 skip_serializing_if = "String::is_empty",
3659 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3660 )]
3661 pub t: String,
3662 #[serde(
3666 default,
3667 skip_serializing_if = "String::is_empty",
3668 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3669 )]
3670 pub v: String,
3671}
3672
3673#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3674pub struct SegmentQueryJsonContactsL {
3675 #[serde(default, skip_serializing_if = "Option::is_none")]
3676 pub l: Option<L>,
3677 #[serde(
3681 default,
3682 skip_serializing_if = "String::is_empty",
3683 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3684 )]
3685 pub op: String,
3686 #[serde(default, skip_serializing_if = "Option::is_none")]
3687 pub r: Option<L>,
3688}
3689
3690#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3691pub struct SegmentQueryJsonContactsLR {
3692 #[serde(
3693 default,
3694 skip_serializing_if = "Vec::is_empty",
3695 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3696 )]
3697 pub args: Vec<L>,
3698 #[serde(
3702 default,
3703 skip_serializing_if = "String::is_empty",
3704 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3705 )]
3706 pub t: String,
3707 #[serde(
3711 default,
3712 skip_serializing_if = "String::is_empty",
3713 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3714 )]
3715 pub v: String,
3716}
3717
3718#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3719pub struct R {
3720 #[serde(default, skip_serializing_if = "Option::is_none")]
3721 pub l: Option<SegmentQueryJsonContactsLR>,
3722 #[serde(
3726 default,
3727 skip_serializing_if = "String::is_empty",
3728 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3729 )]
3730 pub op: String,
3731 #[serde(default, skip_serializing_if = "Option::is_none")]
3732 pub r: Option<L>,
3733}
3734
3735#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3736pub struct SegmentQueryJsonContactsLData {
3737 #[serde(default, skip_serializing_if = "Option::is_none")]
3738 pub l: Option<SegmentQueryJsonContactsL>,
3739 #[serde(
3743 default,
3744 skip_serializing_if = "String::is_empty",
3745 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3746 )]
3747 pub op: String,
3748 #[serde(default, skip_serializing_if = "Option::is_none")]
3749 pub r: Option<R>,
3750}
3751
3752#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3753pub struct SegmentQueryJsonContactsR {
3754 #[serde(
3758 default,
3759 skip_serializing_if = "String::is_empty",
3760 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3761 )]
3762 pub t: String,
3763 #[serde(
3767 default,
3768 skip_serializing_if = "Vec::is_empty",
3769 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3770 )]
3771 pub v: Vec<String>,
3772}
3773
3774#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3775pub struct SegmentQueryJsonContactsRData {
3776 #[serde(default, skip_serializing_if = "Option::is_none")]
3777 pub l: Option<L>,
3778 #[serde(
3782 default,
3783 skip_serializing_if = "String::is_empty",
3784 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3785 )]
3786 pub op: String,
3787 #[serde(default, skip_serializing_if = "Option::is_none")]
3788 pub r: Option<SegmentQueryJsonContactsR>,
3789}
3790
3791#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3792pub struct SegmentQueryJsonContacts {
3793 #[serde(default, skip_serializing_if = "Option::is_none")]
3794 pub l: Option<SegmentQueryJsonContactsLData>,
3795 #[serde(
3799 default,
3800 skip_serializing_if = "String::is_empty",
3801 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3802 )]
3803 pub op: String,
3804 #[serde(default, skip_serializing_if = "Option::is_none")]
3805 pub r: Option<SegmentQueryJsonContactsRData>,
3806}
3807
3808#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3809pub struct SegmentQueryJson {
3810 #[serde(default, skip_serializing_if = "Option::is_none")]
3811 pub contacts: Option<SegmentQueryJsonContacts>,
3812}
3813
3814#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3816pub struct ContactResponseCustomFields {
3817 #[serde(
3821 default,
3822 skip_serializing_if = "String::is_empty",
3823 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3824 rename = "custom_field_name1"
3825 )]
3826 pub custom_field_name_1: String,
3827 #[serde(
3831 default,
3832 skip_serializing_if = "String::is_empty",
3833 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3834 rename = "custom_field_name2"
3835 )]
3836 pub custom_field_name_2: String,
3837}
3838
3839#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3840pub struct ContactResponse {
3841 #[serde(
3845 default,
3846 skip_serializing_if = "String::is_empty",
3847 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3848 )]
3849 pub address_line_1: String,
3850 #[serde(
3854 default,
3855 skip_serializing_if = "String::is_empty",
3856 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3857 )]
3858 pub address_line_2: String,
3859 #[serde(
3863 default,
3864 skip_serializing_if = "Vec::is_empty",
3865 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3866 )]
3867 pub alternate_emails: Vec<String>,
3868 #[serde(
3872 default,
3873 skip_serializing_if = "String::is_empty",
3874 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3875 )]
3876 pub city: String,
3877 #[serde(
3881 default,
3882 skip_serializing_if = "String::is_empty",
3883 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3884 )]
3885 pub country: String,
3886 pub custom_fields: ContactResponseCustomFields,
3890 #[serde(
3894 default,
3895 skip_serializing_if = "String::is_empty",
3896 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3897 )]
3898 pub email: String,
3899 #[serde(
3903 default,
3904 skip_serializing_if = "String::is_empty",
3905 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3906 )]
3907 pub first_name: String,
3908 #[serde(
3912 default,
3913 skip_serializing_if = "String::is_empty",
3914 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3915 )]
3916 pub id: String,
3917 #[serde(
3921 default,
3922 skip_serializing_if = "String::is_empty",
3923 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3924 )]
3925 pub last_name: String,
3926 #[serde(
3927 default,
3928 skip_serializing_if = "Vec::is_empty",
3929 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3930 )]
3931 pub list_ids: Vec<String>,
3932 #[serde(
3933 default,
3934 skip_serializing_if = "crate::utils::zero_i64",
3935 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
3936 )]
3937 pub postal_code: i64,
3938 #[serde(
3939 default,
3940 skip_serializing_if = "Vec::is_empty",
3941 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
3942 )]
3943 pub segment_ids: Vec<String>,
3944 #[serde(
3948 default,
3949 skip_serializing_if = "String::is_empty",
3950 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3951 )]
3952 pub state_province_region: String,
3953}
3954
3955#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3956pub struct TneSenderId {
3957 #[serde(
3958 default,
3959 skip_serializing_if = "crate::utils::zero_i64",
3960 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
3961 )]
3962 pub id: i64,
3963}
3964
3965#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3967pub struct Verified {
3968 #[serde(
3972 default,
3973 skip_serializing_if = "String::is_empty",
3974 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3975 )]
3976 pub reason: String,
3977 #[serde(
3981 default,
3982 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
3983 )]
3984 pub status: bool,
3985}
3986
3987#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3988pub struct TneSenderData {
3989 #[serde(
3990 default,
3991 skip_serializing_if = "crate::utils::zero_i64",
3992 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
3993 )]
3994 pub created_at: i64,
3995 #[serde(
3999 default,
4000 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
4001 )]
4002 pub locked: bool,
4003 #[serde(
4004 default,
4005 skip_serializing_if = "crate::utils::zero_i64",
4006 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4007 )]
4008 pub updated_at: i64,
4009 #[serde(default, skip_serializing_if = "Option::is_none")]
4013 pub verified: Option<Verified>,
4014}
4015
4016#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4023pub struct TneSenderAllOf {
4024 #[serde(flatten)]
4025 pub tne_sender_id: TneSenderId,
4026 #[serde(flatten)]
4027 pub senders_request_body: SendersRequestBody,
4028 #[serde(flatten)]
4029 pub tne_sender_data: TneSenderData,
4030}
4031
4032#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4033pub struct ApiError {
4034 #[serde(
4038 default,
4039 skip_serializing_if = "String::is_empty",
4040 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4041 )]
4042 pub error_id: String,
4043 #[serde(
4047 default,
4048 skip_serializing_if = "String::is_empty",
4049 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4050 )]
4051 pub field: String,
4052 #[serde(
4056 default,
4057 skip_serializing_if = "String::is_empty",
4058 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4059 )]
4060 pub message: String,
4061}
4062
4063#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4064pub struct ApiErrors {
4065 #[serde(
4066 default,
4067 skip_serializing_if = "Vec::is_empty",
4068 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4069 )]
4070 pub errors: Vec<ApiError>,
4071}
4072
4073#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4074pub struct MetadataType {
4075 #[serde(
4076 default,
4077 skip_serializing_if = "crate::utils::zero_i64",
4078 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4079 )]
4080 pub count: i64,
4081 #[serde(
4082 default,
4083 skip_serializing_if = "String::is_empty",
4084 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4085 )]
4086 pub next: String,
4087 #[serde(
4088 default,
4089 skip_serializing_if = "String::is_empty",
4090 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4091 )]
4092 pub prev: String,
4093 #[serde(
4094 default,
4095 skip_serializing_if = "String::is_empty",
4096 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
4097 rename = "self"
4098 )]
4099 pub self_: String,
4100}
4101
4102#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4103pub struct DesignInput {
4104 #[serde(
4108 default,
4109 skip_serializing_if = "String::is_empty",
4110 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4111 )]
4112 pub html_content: String,
4113 #[serde(
4117 default,
4118 skip_serializing_if = "String::is_empty",
4119 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4120 )]
4121 pub plain_content: String,
4122}
4123
4124#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4131pub struct DesignInputAllOf {
4132 #[serde(flatten)]
4133 pub design_duplicate_input: DesignDuplicateInput,
4134 #[serde(flatten)]
4135 pub design_common_fields_all_of: DesignCommonFieldsAllOf,
4136 #[serde(flatten)]
4137 pub design_input: DesignInput,
4138}
4139
4140#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4146pub struct DesignOutputAllOf {
4147 #[serde(flatten)]
4148 pub design_input_all_of: DesignInputAllOf,
4149 #[serde(flatten)]
4150 pub design_output_summary_all_of: DesignOutputSummaryAllOf,
4151}
4152
4153#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4154pub struct DesignOutputSummary {
4155 #[serde(
4156 default,
4157 skip_serializing_if = "Option::is_none",
4158 deserialize_with = "crate::utils::date_time_format::deserialize"
4159 )]
4160 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4161 #[serde(
4165 default,
4166 skip_serializing_if = "String::is_empty",
4167 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4168 )]
4169 pub id: String,
4170 #[serde(
4174 default,
4175 skip_serializing_if = "String::is_empty",
4176 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4177 )]
4178 pub thumbnail_url: String,
4179 #[serde(
4180 default,
4181 skip_serializing_if = "Option::is_none",
4182 deserialize_with = "crate::utils::date_time_format::deserialize"
4183 )]
4184 pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4185}
4186
4187#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4194pub struct DesignOutputSummaryAllOf {
4195 #[serde(flatten)]
4196 pub design_duplicate_input: DesignDuplicateInput,
4197 #[serde(flatten)]
4198 pub design_common_fields_all_of: DesignCommonFieldsAllOf,
4199 #[serde(flatten)]
4200 pub design_output_summary: DesignOutputSummary,
4201}
4202
4203#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4204pub struct DesignDuplicateInput {
4205 #[serde(default, skip_serializing_if = "Option::is_none")]
4206 pub editor: Option<Editor>,
4207 #[serde(
4208 default,
4209 skip_serializing_if = "String::is_empty",
4210 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4211 )]
4212 pub name: String,
4213}
4214
4215#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4216pub struct ContactDetails3 {
4217 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
4218 pub metadata: Option<SelfMetadata>,
4219 #[serde(
4220 default,
4221 skip_serializing_if = "String::is_empty",
4222 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4223 )]
4224 pub address_line_1: String,
4225 #[serde(
4226 default,
4227 skip_serializing_if = "String::is_empty",
4228 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4229 )]
4230 pub address_line_2: String,
4231 #[serde(
4232 default,
4233 skip_serializing_if = "Vec::is_empty",
4234 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4235 )]
4236 pub alternate_emails: Vec<String>,
4237 #[serde(
4238 default,
4239 skip_serializing_if = "String::is_empty",
4240 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4241 )]
4242 pub city: String,
4243 #[serde(
4244 default,
4245 skip_serializing_if = "String::is_empty",
4246 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4247 )]
4248 pub country: String,
4249 #[serde(
4253 default,
4254 skip_serializing_if = "String::is_empty",
4255 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4256 )]
4257 pub created_at: String,
4258 #[serde(default, skip_serializing_if = "Option::is_none")]
4259 pub custom_fields: Option<Help>,
4260 #[serde(
4261 default,
4262 skip_serializing_if = "String::is_empty",
4263 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4264 )]
4265 pub email: String,
4266 #[serde(
4267 default,
4268 skip_serializing_if = "String::is_empty",
4269 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4270 )]
4271 pub facebook: String,
4272 #[serde(
4273 default,
4274 skip_serializing_if = "String::is_empty",
4275 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4276 )]
4277 pub first_name: String,
4278 #[serde(
4282 default,
4283 skip_serializing_if = "String::is_empty",
4284 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4285 )]
4286 pub id: String,
4287 #[serde(
4288 default,
4289 skip_serializing_if = "String::is_empty",
4290 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4291 )]
4292 pub last_name: String,
4293 #[serde(
4294 default,
4295 skip_serializing_if = "String::is_empty",
4296 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4297 )]
4298 pub line: String,
4299 #[serde(
4303 default,
4304 skip_serializing_if = "Vec::is_empty",
4305 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4306 )]
4307 pub list_ids: Vec<String>,
4308 #[serde(
4309 default,
4310 skip_serializing_if = "String::is_empty",
4311 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4312 )]
4313 pub phone_number: String,
4314 #[serde(
4315 default,
4316 skip_serializing_if = "String::is_empty",
4317 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4318 )]
4319 pub postal_code: String,
4320 #[serde(
4324 default,
4325 skip_serializing_if = "Vec::is_empty",
4326 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4327 )]
4328 pub segment_ids: Vec<String>,
4329 #[serde(
4330 default,
4331 skip_serializing_if = "String::is_empty",
4332 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4333 )]
4334 pub state_province_region: String,
4335 #[serde(
4336 default,
4337 skip_serializing_if = "String::is_empty",
4338 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4339 )]
4340 pub unique_name: String,
4341 #[serde(
4345 default,
4346 skip_serializing_if = "String::is_empty",
4347 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4348 )]
4349 pub updated_at: String,
4350 #[serde(
4351 default,
4352 skip_serializing_if = "String::is_empty",
4353 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4354 )]
4355 pub whatsapp: String,
4356}
4357
4358#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4359pub struct Warning {
4360 #[serde(
4361 default,
4362 skip_serializing_if = "String::is_empty",
4363 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4364 )]
4365 pub message: String,
4366}
4367
4368#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4369pub struct ErrorsData {
4370 #[serde(
4374 default,
4375 skip_serializing_if = "String::is_empty",
4376 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4377 )]
4378 pub field: String,
4379 #[serde(
4383 default,
4384 skip_serializing_if = "String::is_empty",
4385 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4386 )]
4387 pub message: String,
4388 #[serde(
4392 default,
4393 skip_serializing_if = "String::is_empty",
4394 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4395 )]
4396 pub parameter: String,
4397}
4398
4399#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4401pub struct ErrorsDataType {
4402 #[serde(
4403 default,
4404 skip_serializing_if = "Vec::is_empty",
4405 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4406 )]
4407 pub errors: Vec<ErrorsData>,
4408}
4409
4410#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
4414pub enum AbPhase {
4415 #[serde(rename = "all")]
4416 #[default]
4417 All,
4418 #[serde(rename = "send")]
4419 Send,
4420 #[serde(rename = "test")]
4421 Test,
4422 #[serde(other)]
4423 FallthroughString,
4424}
4425
4426impl std::fmt::Display for AbPhase {
4427 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4428 match self {
4429 AbPhase::All => "all",
4430 AbPhase::Send => "send",
4431 AbPhase::Test => "test",
4432 AbPhase::FallthroughString => "*",
4433 }
4434 .fmt(f)
4435 }
4436}
4437
4438#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4439pub struct SinglesendsResponseResults {
4440 #[serde(default)]
4444 pub ab_phase: AbPhase,
4445 #[serde(
4449 default,
4450 skip_serializing_if = "String::is_empty",
4451 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4452 )]
4453 pub ab_variation: String,
4454 #[serde(
4458 default,
4459 skip_serializing_if = "String::is_empty",
4460 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4461 )]
4462 pub aggregation: String,
4463 #[serde(
4467 default,
4468 skip_serializing_if = "String::is_empty",
4469 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4470 )]
4471 pub id: String,
4472 #[serde(default, skip_serializing_if = "Option::is_none")]
4473 pub stats: Option<MetricsData>,
4474}
4475
4476#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4477pub struct SinglesendsResponse {
4478 #[serde(rename = "_metadata")]
4479 pub metadata: Metadata,
4480 #[serde(
4481 default,
4482 skip_serializing_if = "Vec::is_empty",
4483 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4484 )]
4485 pub results: Vec<SinglesendsResponseResults>,
4486}
4487
4488#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4489pub struct AutomationsResponseResults {
4490 #[serde(
4494 default,
4495 skip_serializing_if = "String::is_empty",
4496 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4497 )]
4498 pub aggregation: String,
4499 #[serde(
4503 default,
4504 skip_serializing_if = "String::is_empty",
4505 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4506 )]
4507 pub id: String,
4508 #[serde(default, skip_serializing_if = "Option::is_none")]
4509 pub stats: Option<MetricsData>,
4510 #[serde(
4514 default,
4515 skip_serializing_if = "String::is_empty",
4516 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4517 )]
4518 pub step_id: String,
4519}
4520
4521#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4522pub struct AutomationsResponse {
4523 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
4524 pub metadata: Option<Metadata>,
4525 #[serde(
4526 default,
4527 skip_serializing_if = "Vec::is_empty",
4528 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4529 )]
4530 pub results: Vec<AutomationsResponseResults>,
4531}
4532
4533#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4534pub struct MetricsData {
4535 #[serde(
4536 default,
4537 skip_serializing_if = "crate::utils::zero_i64",
4538 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4539 )]
4540 pub bounce_drops: i64,
4541 #[serde(
4542 default,
4543 skip_serializing_if = "crate::utils::zero_i64",
4544 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4545 )]
4546 pub bounces: i64,
4547 #[serde(
4548 default,
4549 skip_serializing_if = "crate::utils::zero_i64",
4550 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4551 )]
4552 pub clicks: i64,
4553 #[serde(
4554 default,
4555 skip_serializing_if = "crate::utils::zero_i64",
4556 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4557 )]
4558 pub delivered: i64,
4559 #[serde(
4560 default,
4561 skip_serializing_if = "crate::utils::zero_i64",
4562 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4563 )]
4564 pub invalid_emails: i64,
4565 #[serde(
4566 default,
4567 skip_serializing_if = "crate::utils::zero_i64",
4568 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4569 )]
4570 pub opens: i64,
4571 #[serde(
4572 default,
4573 skip_serializing_if = "crate::utils::zero_i64",
4574 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4575 )]
4576 pub requests: i64,
4577 #[serde(
4578 default,
4579 skip_serializing_if = "crate::utils::zero_i64",
4580 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4581 )]
4582 pub spam_report_drops: i64,
4583 #[serde(
4584 default,
4585 skip_serializing_if = "crate::utils::zero_i64",
4586 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4587 )]
4588 pub spam_reports: i64,
4589 #[serde(
4590 default,
4591 skip_serializing_if = "crate::utils::zero_i64",
4592 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4593 )]
4594 pub unique_clicks: i64,
4595 #[serde(
4596 default,
4597 skip_serializing_if = "crate::utils::zero_i64",
4598 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4599 )]
4600 pub unique_opens: i64,
4601 #[serde(
4602 default,
4603 skip_serializing_if = "crate::utils::zero_i64",
4604 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4605 )]
4606 pub unsubscribes: i64,
4607}
4608
4609#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
4610pub enum SinglesendSearchStatus {
4611 #[serde(rename = "draft")]
4612 Draft,
4613 #[serde(rename = "scheduled")]
4614 Scheduled,
4615 #[serde(rename = "triggered")]
4616 Triggered,
4617 #[serde(rename = "")]
4618 #[default]
4619 Noop,
4620 #[serde(other)]
4621 FallthroughString,
4622}
4623
4624impl std::fmt::Display for SinglesendSearchStatus {
4625 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4626 match self {
4627 SinglesendSearchStatus::Draft => "draft",
4628 SinglesendSearchStatus::Scheduled => "scheduled",
4629 SinglesendSearchStatus::Triggered => "triggered",
4630 SinglesendSearchStatus::Noop => "",
4631 SinglesendSearchStatus::FallthroughString => "*",
4632 }
4633 .fmt(f)
4634 }
4635}
4636
4637impl SinglesendSearchStatus {
4638 pub fn is_noop(&self) -> bool {
4639 matches!(self, SinglesendSearchStatus::Noop)
4640 }
4641}
4642
4643#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4644pub struct SinglesendSearch {
4645 #[serde(
4646 default,
4647 skip_serializing_if = "Vec::is_empty",
4648 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4649 )]
4650 pub categories: Vec<String>,
4651 #[serde(
4652 default,
4653 skip_serializing_if = "String::is_empty",
4654 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4655 )]
4656 pub name: String,
4657 #[serde(
4658 default,
4659 skip_serializing_if = "Vec::is_empty",
4660 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4661 )]
4662 pub status: Vec<SinglesendSearchStatus>,
4663}
4664
4665#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4666pub struct SendTo {
4667 #[serde(
4671 default,
4672 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
4673 )]
4674 pub all: bool,
4675 #[serde(
4679 default,
4680 skip_serializing_if = "Vec::is_empty",
4681 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4682 )]
4683 pub list_ids: Vec<String>,
4684 #[serde(
4688 default,
4689 skip_serializing_if = "Vec::is_empty",
4690 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4691 )]
4692 pub segment_ids: Vec<String>,
4693}
4694
4695#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4696pub struct EmailConfig {
4697 #[serde(
4701 default,
4702 skip_serializing_if = "String::is_empty",
4703 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4704 )]
4705 pub custom_unsubscribe_url: String,
4706 #[serde(
4710 default,
4711 skip_serializing_if = "String::is_empty",
4712 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4713 )]
4714 pub design_id: String,
4715 #[serde(default, skip_serializing_if = "Option::is_none")]
4719 pub editor: Option<Editor>,
4720 #[serde(
4724 default,
4725 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
4726 )]
4727 pub generate_plain_content: bool,
4728 #[serde(
4732 default,
4733 skip_serializing_if = "String::is_empty",
4734 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4735 )]
4736 pub html_content: String,
4737 #[serde(
4741 default,
4742 skip_serializing_if = "String::is_empty",
4743 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4744 )]
4745 pub ip_pool: String,
4746 #[serde(
4750 default,
4751 skip_serializing_if = "String::is_empty",
4752 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4753 )]
4754 pub plain_content: String,
4755 #[serde(
4756 default,
4757 skip_serializing_if = "crate::utils::zero_i64",
4758 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4759 )]
4760 pub sender_id: i64,
4761 #[serde(
4765 default,
4766 skip_serializing_if = "String::is_empty",
4767 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4768 )]
4769 pub subject: String,
4770 #[serde(
4771 default,
4772 skip_serializing_if = "crate::utils::zero_i64",
4773 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
4774 )]
4775 pub suppression_group_id: i64,
4776}
4777
4778#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4779pub struct SinglesendRequest {
4780 #[serde(
4781 default,
4782 skip_serializing_if = "Vec::is_empty",
4783 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4784 )]
4785 pub categories: Vec<String>,
4786 #[serde(default, skip_serializing_if = "Option::is_none")]
4787 pub email_config: Option<EmailConfig>,
4788 #[serde(
4792 default,
4793 skip_serializing_if = "String::is_empty",
4794 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4795 )]
4796 pub name: String,
4797 #[serde(
4798 default,
4799 skip_serializing_if = "Option::is_none",
4800 deserialize_with = "crate::utils::date_time_format::deserialize"
4801 )]
4802 pub send_at: Option<chrono::DateTime<chrono::Utc>>,
4803 #[serde(default, skip_serializing_if = "Option::is_none")]
4804 pub send_to: Option<SendTo>,
4805}
4806
4807#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4808pub struct SinglesendSchedule {
4809 #[serde(
4810 default,
4811 skip_serializing_if = "Option::is_none",
4812 deserialize_with = "crate::utils::date_time_format::deserialize"
4813 )]
4814 pub send_at: Option<chrono::DateTime<chrono::Utc>>,
4815 #[serde(default, skip_serializing_if = "Option::is_none")]
4816 pub status: Option<SinglesendSearchStatus>,
4817}
4818
4819#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4820pub struct Warnings {
4821 #[serde(
4825 default,
4826 skip_serializing_if = "String::is_empty",
4827 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4828 )]
4829 pub field: String,
4830 #[serde(
4834 default,
4835 skip_serializing_if = "String::is_empty",
4836 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4837 )]
4838 pub message: String,
4839 #[serde(
4843 default,
4844 skip_serializing_if = "String::is_empty",
4845 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4846 )]
4847 pub warning_id: String,
4848}
4849
4850#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4851pub struct SinglesendWarning {
4852 #[serde(
4853 default,
4854 skip_serializing_if = "Vec::is_empty",
4855 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
4856 )]
4857 pub warnings: Vec<Warnings>,
4858}
4859
4860#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4861pub struct ReplyTo {
4862 #[serde(
4866 default,
4867 skip_serializing_if = "String::is_empty",
4868 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4869 )]
4870 pub email: String,
4871 #[serde(
4875 default,
4876 skip_serializing_if = "String::is_empty",
4877 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4878 )]
4879 pub name: String,
4880}
4881
4882#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4883pub struct WebhooksEventWebhookUpdateWithOAuthRequest {
4884 #[serde(default, skip_serializing_if = "Option::is_none")]
4888 pub bounce: Option<bool>,
4889 #[serde(default, skip_serializing_if = "Option::is_none")]
4893 pub click: Option<bool>,
4894 #[serde(default, skip_serializing_if = "Option::is_none")]
4898 pub deferred: Option<bool>,
4899 #[serde(default, skip_serializing_if = "Option::is_none")]
4903 pub delivered: Option<bool>,
4904 #[serde(default, skip_serializing_if = "Option::is_none")]
4908 pub dropped: Option<bool>,
4909 #[serde(default, skip_serializing_if = "Option::is_none")]
4913 pub enabled: Option<bool>,
4914 #[serde(default, skip_serializing_if = "Option::is_none")]
4918 pub group_resubscribe: Option<bool>,
4919 #[serde(default, skip_serializing_if = "Option::is_none")]
4923 pub group_unsubscribe: Option<bool>,
4924 #[serde(
4925 default,
4926 skip_serializing_if = "String::is_empty",
4927 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4928 )]
4929 pub oauth_client_id: String,
4930 #[serde(
4931 default,
4932 skip_serializing_if = "String::is_empty",
4933 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4934 )]
4935 pub oauth_client_secret: String,
4936 #[serde(
4937 default,
4938 skip_serializing_if = "String::is_empty",
4939 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4940 )]
4941 pub oauth_token_url: String,
4942 #[serde(default, skip_serializing_if = "Option::is_none")]
4946 pub open: Option<bool>,
4947 #[serde(default, skip_serializing_if = "Option::is_none")]
4951 pub processed: Option<bool>,
4952 #[serde(default, skip_serializing_if = "Option::is_none")]
4956 pub spam_report: Option<bool>,
4957 #[serde(default, skip_serializing_if = "Option::is_none")]
4961 pub unsubscribe: Option<bool>,
4962 #[serde(
4966 default,
4967 skip_serializing_if = "String::is_empty",
4968 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
4969 )]
4970 pub url: String,
4971}
4972
4973#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
4974pub struct WebhooksEventWebhookRequest {
4975 #[serde(default, skip_serializing_if = "Option::is_none")]
4979 pub bounce: Option<bool>,
4980 #[serde(default, skip_serializing_if = "Option::is_none")]
4984 pub click: Option<bool>,
4985 #[serde(default, skip_serializing_if = "Option::is_none")]
4989 pub deferred: Option<bool>,
4990 #[serde(default, skip_serializing_if = "Option::is_none")]
4994 pub delivered: Option<bool>,
4995 #[serde(default, skip_serializing_if = "Option::is_none")]
4999 pub dropped: Option<bool>,
5000 #[serde(default, skip_serializing_if = "Option::is_none")]
5004 pub enabled: Option<bool>,
5005 #[serde(default, skip_serializing_if = "Option::is_none")]
5009 pub group_resubscribe: Option<bool>,
5010 #[serde(default, skip_serializing_if = "Option::is_none")]
5014 pub group_unsubscribe: Option<bool>,
5015 #[serde(
5016 default,
5017 skip_serializing_if = "String::is_empty",
5018 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5019 )]
5020 pub oauth_client_id: String,
5021 #[serde(
5022 default,
5023 skip_serializing_if = "String::is_empty",
5024 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5025 )]
5026 pub oauth_token_url: String,
5027 #[serde(default, skip_serializing_if = "Option::is_none")]
5031 pub open: Option<bool>,
5032 #[serde(default, skip_serializing_if = "Option::is_none")]
5036 pub processed: Option<bool>,
5037 #[serde(default, skip_serializing_if = "Option::is_none")]
5041 pub spam_report: Option<bool>,
5042 #[serde(default, skip_serializing_if = "Option::is_none")]
5046 pub unsubscribe: Option<bool>,
5047 #[serde(
5051 default,
5052 skip_serializing_if = "String::is_empty",
5053 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5054 )]
5055 pub url: String,
5056}
5057
5058#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5059pub struct ReplyEmailObject {
5060 #[serde(
5064 default,
5065 skip_serializing_if = "String::is_empty",
5066 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5067 )]
5068 pub email: String,
5069 #[serde(
5070 default,
5071 skip_serializing_if = "String::is_empty",
5072 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5073 )]
5074 pub name: String,
5075}
5076
5077#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5078pub struct AutomationsLinkStatsResponseResults {
5079 #[serde(
5080 default,
5081 skip_serializing_if = "crate::utils::zero_i64",
5082 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5083 )]
5084 pub clicks: i64,
5085 #[serde(
5089 default,
5090 skip_serializing_if = "String::is_empty",
5091 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5092 )]
5093 pub step_id: String,
5094 #[serde(
5098 default,
5099 skip_serializing_if = "String::is_empty",
5100 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5101 )]
5102 pub url: String,
5103 #[serde(
5104 default,
5105 skip_serializing_if = "crate::utils::zero_i64",
5106 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5107 )]
5108 pub url_location: i64,
5109}
5110
5111#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5112pub struct AutomationsLinkStatsResponse {
5113 #[serde(rename = "_metadata")]
5114 pub metadata: LinkTrackingMetadata,
5115 #[serde(
5119 default,
5120 skip_serializing_if = "Vec::is_empty",
5121 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5122 )]
5123 pub results: Vec<AutomationsLinkStatsResponseResults>,
5124 #[serde(
5125 default,
5126 skip_serializing_if = "crate::utils::zero_i64",
5127 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5128 )]
5129 pub total_clicks: i64,
5130}
5131
5132#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5133pub struct LinkTrackingMetadata {
5134 #[serde(
5135 default,
5136 skip_serializing_if = "crate::utils::zero_f64",
5137 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
5138 )]
5139 pub count: f64,
5140 #[serde(
5141 default,
5142 skip_serializing_if = "String::is_empty",
5143 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5144 )]
5145 pub next: String,
5146 #[serde(
5147 default,
5148 skip_serializing_if = "String::is_empty",
5149 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5150 )]
5151 pub prev: String,
5152 #[serde(
5153 default,
5154 skip_serializing_if = "String::is_empty",
5155 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
5156 rename = "self"
5157 )]
5158 pub self_: String,
5159}
5160
5161#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5162pub struct SinglesendsLinkStatsResponseResults {
5163 #[serde(default)]
5167 pub ab_phase: AbPhase,
5168 #[serde(
5172 default,
5173 skip_serializing_if = "String::is_empty",
5174 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5175 )]
5176 pub ab_variation: String,
5177 #[serde(
5178 default,
5179 skip_serializing_if = "crate::utils::zero_i64",
5180 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5181 )]
5182 pub clicks: i64,
5183 #[serde(
5187 default,
5188 skip_serializing_if = "String::is_empty",
5189 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5190 )]
5191 pub url: String,
5192 #[serde(
5193 default,
5194 skip_serializing_if = "crate::utils::zero_i64",
5195 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5196 )]
5197 pub url_location: i64,
5198}
5199
5200#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5201pub struct SinglesendsLinkStatsResponse {
5202 #[serde(rename = "_metadata")]
5203 pub metadata: LinkTrackingMetadata,
5204 #[serde(
5208 default,
5209 skip_serializing_if = "Vec::is_empty",
5210 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5211 )]
5212 pub results: Vec<SinglesendsLinkStatsResponseResults>,
5213 #[serde(
5214 default,
5215 skip_serializing_if = "crate::utils::zero_i64",
5216 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5217 )]
5218 pub total_clicks: i64,
5219}
5220
5221#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5222pub struct Subusers {
5223 #[serde(
5224 default,
5225 skip_serializing_if = "crate::utils::zero_i64",
5226 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5227 )]
5228 pub user_id: i64,
5229 #[serde(
5233 default,
5234 skip_serializing_if = "String::is_empty",
5235 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5236 )]
5237 pub username: String,
5238}
5239
5240#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5241pub struct DomainAuthentication200Response {
5242 #[serde(
5243 default,
5244 skip_serializing_if = "crate::utils::zero_i64",
5245 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5246 )]
5247 pub last_validation_attempt_at: i64,
5248 #[serde(
5249 default,
5250 skip_serializing_if = "Vec::is_empty",
5251 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5252 )]
5253 pub subusers: Vec<Subusers>,
5254}
5255
5256#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5262pub struct DomainAuthentication200ResponseAllOf {
5263 #[serde(flatten)]
5264 pub authentication_domain: AuthenticationDomain,
5265 #[serde(flatten)]
5266 pub domain_authentication_200_response: DomainAuthentication200Response,
5267}
5268
5269#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
5273pub enum AbTestSummaryType {
5274 #[serde(rename = "content")]
5275 Content,
5276 #[serde(rename = "subject")]
5277 Subject,
5278 #[serde(rename = "")]
5279 #[default]
5280 Noop,
5281 #[serde(other)]
5282 FallthroughString,
5283}
5284
5285impl std::fmt::Display for AbTestSummaryType {
5286 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5287 match self {
5288 AbTestSummaryType::Content => "content",
5289 AbTestSummaryType::Subject => "subject",
5290 AbTestSummaryType::Noop => "",
5291 AbTestSummaryType::FallthroughString => "*",
5292 }
5293 .fmt(f)
5294 }
5295}
5296
5297impl AbTestSummaryType {
5298 pub fn is_noop(&self) -> bool {
5299 matches!(self, AbTestSummaryType::Noop)
5300 }
5301}
5302
5303#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
5307pub enum WinnerCriteria {
5308 #[serde(rename = "click")]
5309 Click,
5310 #[serde(rename = "manual")]
5311 Manual,
5312 #[serde(rename = "open")]
5313 Open,
5314 #[serde(rename = "")]
5315 #[default]
5316 Noop,
5317 #[serde(other)]
5318 FallthroughString,
5319}
5320
5321impl std::fmt::Display for WinnerCriteria {
5322 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5323 match self {
5324 WinnerCriteria::Click => "click",
5325 WinnerCriteria::Manual => "manual",
5326 WinnerCriteria::Open => "open",
5327 WinnerCriteria::Noop => "",
5328 WinnerCriteria::FallthroughString => "*",
5329 }
5330 .fmt(f)
5331 }
5332}
5333
5334impl WinnerCriteria {
5335 pub fn is_noop(&self) -> bool {
5336 matches!(self, WinnerCriteria::Noop)
5337 }
5338}
5339
5340#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5341pub struct AbTestSummary {
5342 #[serde(
5346 default,
5347 skip_serializing_if = "String::is_empty",
5348 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5349 )]
5350 pub duration: String,
5351 #[serde(
5355 default,
5356 skip_serializing_if = "Option::is_none",
5357 deserialize_with = "crate::utils::date_format::deserialize"
5358 )]
5359 pub expiration_date: Option<chrono::NaiveDate>,
5360 #[serde(
5361 default,
5362 skip_serializing_if = "crate::utils::zero_i64",
5363 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5364 )]
5365 pub test_percentage: i64,
5366 #[serde(
5370 default,
5371 skip_serializing_if = "AbTestSummaryType::is_noop",
5372 rename = "type"
5373 )]
5374 pub type_: AbTestSummaryType,
5375 #[serde(default, skip_serializing_if = "WinnerCriteria::is_noop")]
5379 pub winner_criteria: WinnerCriteria,
5380 #[serde(
5384 default,
5385 skip_serializing_if = "String::is_empty",
5386 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5387 )]
5388 pub winner_selected_at: String,
5389 #[serde(
5393 default,
5394 skip_serializing_if = "String::is_empty",
5395 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5396 )]
5397 pub winning_template_id: String,
5398}
5399
5400#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5401pub struct SinglesendResponseShort {
5402 #[serde(default, skip_serializing_if = "Option::is_none")]
5403 pub abtest: Option<AbTestSummary>,
5404 #[serde(
5408 default,
5409 skip_serializing_if = "Vec::is_empty",
5410 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5411 )]
5412 pub categories: Vec<String>,
5413 #[serde(
5414 default,
5415 skip_serializing_if = "Option::is_none",
5416 deserialize_with = "crate::utils::date_time_format::deserialize"
5417 )]
5418 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5419 #[serde(
5423 default,
5424 skip_serializing_if = "String::is_empty",
5425 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5426 )]
5427 pub id: String,
5428 #[serde(
5432 default,
5433 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5434 )]
5435 pub is_abtest: bool,
5436 #[serde(
5440 default,
5441 skip_serializing_if = "String::is_empty",
5442 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5443 )]
5444 pub name: String,
5445 #[serde(
5446 default,
5447 skip_serializing_if = "Option::is_none",
5448 deserialize_with = "crate::utils::date_time_format::deserialize"
5449 )]
5450 pub send_at: Option<chrono::DateTime<chrono::Utc>>,
5451 #[serde(default, skip_serializing_if = "SinglesendSearchStatus::is_noop")]
5452 pub status: SinglesendSearchStatus,
5453 #[serde(
5454 default,
5455 skip_serializing_if = "Option::is_none",
5456 deserialize_with = "crate::utils::date_time_format::deserialize"
5457 )]
5458 pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5459}
5460
5461#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5462pub struct CcBccEmailObject {
5463 #[serde(
5467 default,
5468 skip_serializing_if = "String::is_empty",
5469 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5470 )]
5471 pub email: String,
5472 #[serde(
5473 default,
5474 skip_serializing_if = "String::is_empty",
5475 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5476 )]
5477 pub name: String,
5478}
5479
5480#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5481pub struct VerifiedSenderRequestSchema {
5482 #[serde(
5483 default,
5484 skip_serializing_if = "String::is_empty",
5485 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5486 )]
5487 pub address: String,
5488 #[serde(
5489 default,
5490 skip_serializing_if = "String::is_empty",
5491 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
5492 rename = "address2"
5493 )]
5494 pub address_2: String,
5495 #[serde(
5496 default,
5497 skip_serializing_if = "String::is_empty",
5498 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5499 )]
5500 pub city: String,
5501 #[serde(
5502 default,
5503 skip_serializing_if = "String::is_empty",
5504 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5505 )]
5506 pub country: String,
5507 #[serde(
5511 default,
5512 skip_serializing_if = "String::is_empty",
5513 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5514 )]
5515 pub from_email: String,
5516 #[serde(
5517 default,
5518 skip_serializing_if = "String::is_empty",
5519 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5520 )]
5521 pub from_name: String,
5522 #[serde(
5526 default,
5527 skip_serializing_if = "String::is_empty",
5528 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5529 )]
5530 pub nickname: String,
5531 #[serde(
5535 default,
5536 skip_serializing_if = "String::is_empty",
5537 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5538 )]
5539 pub reply_to: String,
5540 #[serde(
5541 default,
5542 skip_serializing_if = "String::is_empty",
5543 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5544 )]
5545 pub reply_to_name: String,
5546 #[serde(
5547 default,
5548 skip_serializing_if = "String::is_empty",
5549 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5550 )]
5551 pub state: String,
5552 #[serde(
5553 default,
5554 skip_serializing_if = "String::is_empty",
5555 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5556 )]
5557 pub zip: String,
5558}
5559
5560#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5561pub struct VerifiedSenderResponseSchema {
5562 #[serde(
5563 default,
5564 skip_serializing_if = "String::is_empty",
5565 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5566 )]
5567 pub address: String,
5568 #[serde(
5569 default,
5570 skip_serializing_if = "String::is_empty",
5571 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
5572 rename = "address2"
5573 )]
5574 pub address_2: String,
5575 #[serde(
5576 default,
5577 skip_serializing_if = "String::is_empty",
5578 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5579 )]
5580 pub city: String,
5581 #[serde(
5582 default,
5583 skip_serializing_if = "String::is_empty",
5584 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5585 )]
5586 pub country: String,
5587 #[serde(
5588 default,
5589 skip_serializing_if = "String::is_empty",
5590 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5591 )]
5592 pub from_email: String,
5593 #[serde(
5594 default,
5595 skip_serializing_if = "String::is_empty",
5596 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5597 )]
5598 pub from_name: String,
5599 #[serde(
5600 default,
5601 skip_serializing_if = "crate::utils::zero_i64",
5602 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5603 )]
5604 pub id: i64,
5605 #[serde(
5606 default,
5607 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5608 )]
5609 pub locked: bool,
5610 #[serde(
5611 default,
5612 skip_serializing_if = "String::is_empty",
5613 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5614 )]
5615 pub nickname: String,
5616 #[serde(
5617 default,
5618 skip_serializing_if = "String::is_empty",
5619 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5620 )]
5621 pub reply_to: String,
5622 #[serde(
5623 default,
5624 skip_serializing_if = "String::is_empty",
5625 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5626 )]
5627 pub reply_to_name: String,
5628 #[serde(
5629 default,
5630 skip_serializing_if = "String::is_empty",
5631 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5632 )]
5633 pub state: String,
5634 #[serde(
5635 default,
5636 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5637 )]
5638 pub verified: bool,
5639 #[serde(
5640 default,
5641 skip_serializing_if = "String::is_empty",
5642 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5643 )]
5644 pub zip: String,
5645}
5646
5647#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5648pub struct Result {
5649 #[serde(
5650 default,
5651 skip_serializing_if = "crate::utils::zero_i64",
5652 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5653 )]
5654 pub created_at: i64,
5655 #[serde(
5656 default,
5657 skip_serializing_if = "crate::utils::zero_i64",
5658 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5659 )]
5660 pub id: i64,
5661 #[serde(
5665 default,
5666 skip_serializing_if = "String::is_empty",
5667 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5668 )]
5669 pub ip: String,
5670 #[serde(
5671 default,
5672 skip_serializing_if = "crate::utils::zero_i64",
5673 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5674 )]
5675 pub updated_at: i64,
5676}
5677
5678#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5679pub struct IpAccessResponse {
5680 #[serde(
5681 default,
5682 skip_serializing_if = "Vec::is_empty",
5683 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5684 )]
5685 pub result: Vec<Result>,
5686}
5687
5688#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5689pub struct StatsAdvancedGlobal {
5690 #[serde(
5691 default,
5692 skip_serializing_if = "crate::utils::zero_i64",
5693 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5694 )]
5695 pub blocks: i64,
5696 #[serde(
5697 default,
5698 skip_serializing_if = "crate::utils::zero_i64",
5699 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5700 )]
5701 pub bounce_drops: i64,
5702 #[serde(
5703 default,
5704 skip_serializing_if = "crate::utils::zero_i64",
5705 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5706 )]
5707 pub bounces: i64,
5708 #[serde(
5709 default,
5710 skip_serializing_if = "crate::utils::zero_i64",
5711 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5712 )]
5713 pub deferred: i64,
5714 #[serde(
5715 default,
5716 skip_serializing_if = "crate::utils::zero_i64",
5717 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5718 )]
5719 pub delivered: i64,
5720 #[serde(
5721 default,
5722 skip_serializing_if = "crate::utils::zero_i64",
5723 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5724 )]
5725 pub invalid_emails: i64,
5726 #[serde(
5727 default,
5728 skip_serializing_if = "crate::utils::zero_i64",
5729 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5730 )]
5731 pub processed: i64,
5732 #[serde(
5733 default,
5734 skip_serializing_if = "crate::utils::zero_i64",
5735 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5736 )]
5737 pub requests: i64,
5738 #[serde(
5739 default,
5740 skip_serializing_if = "crate::utils::zero_i64",
5741 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5742 )]
5743 pub spam_report_drops: i64,
5744 #[serde(
5745 default,
5746 skip_serializing_if = "crate::utils::zero_i64",
5747 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5748 )]
5749 pub spam_reports: i64,
5750 #[serde(
5751 default,
5752 skip_serializing_if = "crate::utils::zero_i64",
5753 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5754 )]
5755 pub unsubscribe_drops: i64,
5756 #[serde(
5757 default,
5758 skip_serializing_if = "crate::utils::zero_i64",
5759 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
5760 )]
5761 pub unsubscribes: i64,
5762}
5763
5764#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5770pub struct StatsAdvancedGlobalAllOf {
5771 #[serde(flatten)]
5772 pub advanced_stats_clicks_opens_all_of: AdvancedStatsClicksOpensAllOf,
5773 #[serde(flatten)]
5774 pub stats_advanced_global: StatsAdvancedGlobal,
5775}
5776
5777#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5778pub struct StatsAdvancedBaseSchema {
5779 #[serde(default, skip_serializing_if = "Option::is_none")]
5783 pub metrics: Option<Help>,
5784}
5785
5786#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5787pub struct StatsAdvancedBaseSchemaData {
5788 #[serde(
5792 default,
5793 skip_serializing_if = "String::is_empty",
5794 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5795 )]
5796 pub date: String,
5797 #[serde(
5801 default,
5802 skip_serializing_if = "Vec::is_empty",
5803 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5804 )]
5805 pub stats: Vec<StatsAdvancedBaseSchema>,
5806}
5807
5808#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5809pub struct FullSegment {
5810 #[serde(
5811 default,
5812 skip_serializing_if = "Vec::is_empty",
5813 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5814 )]
5815 pub contacts_sample: Vec<ContactResponse>,
5816 #[serde(default, skip_serializing_if = "Option::is_none")]
5820 pub query_json: Option<Help>,
5821}
5822
5823#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5830pub struct FullSegmentAllOf {
5831 #[serde(flatten)]
5832 pub segment_summary: SegmentSummary,
5833 #[serde(flatten)]
5834 pub full_segment: FullSegment,
5835 #[serde(flatten)]
5836 pub segment_write_v2: SegmentWriteV2,
5837}
5838
5839#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5840pub struct From {
5841 #[serde(
5845 default,
5846 skip_serializing_if = "String::is_empty",
5847 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5848 )]
5849 pub email: String,
5850 #[serde(
5854 default,
5855 skip_serializing_if = "String::is_empty",
5856 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5857 )]
5858 pub name: String,
5859}
5860
5861#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5862pub struct SendersRequestBody {
5863 #[serde(
5867 default,
5868 skip_serializing_if = "String::is_empty",
5869 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5870 )]
5871 pub address: String,
5872 #[serde(
5873 default,
5874 skip_serializing_if = "String::is_empty",
5875 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5876 )]
5877 pub address_2: String,
5878 #[serde(
5882 default,
5883 skip_serializing_if = "String::is_empty",
5884 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5885 )]
5886 pub city: String,
5887 #[serde(
5891 default,
5892 skip_serializing_if = "String::is_empty",
5893 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5894 )]
5895 pub country: String,
5896 pub from: From,
5897 #[serde(
5901 default,
5902 skip_serializing_if = "String::is_empty",
5903 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5904 )]
5905 pub nickname: String,
5906 #[serde(default, skip_serializing_if = "Option::is_none")]
5907 pub reply_to: Option<ReplyTo>,
5908 #[serde(
5909 default,
5910 skip_serializing_if = "String::is_empty",
5911 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5912 )]
5913 pub state: String,
5914 #[serde(
5915 default,
5916 skip_serializing_if = "String::is_empty",
5917 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5918 )]
5919 pub zip: String,
5920}
5921
5922#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5923pub struct EnforcedTlsRequestResponse {
5924 #[serde(
5925 default,
5926 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5927 )]
5928 pub require_tls: bool,
5929 #[serde(
5930 default,
5931 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5932 )]
5933 pub require_valid_cert: bool,
5934}
5935
5936#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5937pub struct SinglesendResponse {
5938 #[serde(
5939 default,
5940 skip_serializing_if = "Option::is_none",
5941 deserialize_with = "crate::utils::date_time_format::deserialize"
5942 )]
5943 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5944 #[serde(
5948 default,
5949 skip_serializing_if = "String::is_empty",
5950 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
5951 )]
5952 pub id: String,
5953 #[serde(default, skip_serializing_if = "SinglesendSearchStatus::is_noop")]
5954 pub status: SinglesendSearchStatus,
5955 #[serde(
5956 default,
5957 skip_serializing_if = "Option::is_none",
5958 deserialize_with = "crate::utils::date_time_format::deserialize"
5959 )]
5960 pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5961 #[serde(
5962 default,
5963 skip_serializing_if = "Vec::is_empty",
5964 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5965 )]
5966 pub warnings: Vec<Warnings>,
5967}
5968
5969#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5975pub struct SinglesendResponseAllOf {
5976 #[serde(flatten)]
5977 pub singlesend_request: SinglesendRequest,
5978 #[serde(flatten)]
5979 pub singlesend_response: SinglesendResponse,
5980}
5981
5982#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
5983pub struct DesignCommonFields {
5984 #[serde(
5988 default,
5989 skip_serializing_if = "Vec::is_empty",
5990 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
5991 )]
5992 pub categories: Vec<String>,
5993 #[serde(
5997 default,
5998 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5999 )]
6000 pub generate_plain_content: bool,
6001 #[serde(
6005 default,
6006 skip_serializing_if = "String::is_empty",
6007 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6008 )]
6009 pub subject: String,
6010}
6011
6012#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6018pub struct DesignCommonFieldsAllOf {
6019 #[serde(flatten)]
6020 pub design_duplicate_input: DesignDuplicateInput,
6021 #[serde(flatten)]
6022 pub design_common_fields: DesignCommonFields,
6023}
6024
6025#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6026pub struct InvalidEmail {
6027 #[serde(
6028 default,
6029 skip_serializing_if = "crate::utils::zero_i64",
6030 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
6031 )]
6032 pub created: i64,
6033 #[serde(
6034 default,
6035 skip_serializing_if = "String::is_empty",
6036 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6037 )]
6038 pub email: String,
6039 #[serde(
6040 default,
6041 skip_serializing_if = "String::is_empty",
6042 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6043 )]
6044 pub reason: String,
6045}
6046
6047#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
6051pub enum EmailActivityResponseCommonFieldsStatus {
6052 #[serde(rename = "delivered")]
6053 Delivered,
6054 #[serde(rename = "not delivered")]
6055 NotDelivered,
6056 #[serde(rename = "processed")]
6057 Processed,
6058 #[serde(rename = "")]
6059 #[default]
6060 Noop,
6061 #[serde(other)]
6062 FallthroughString,
6063}
6064
6065impl std::fmt::Display for EmailActivityResponseCommonFieldsStatus {
6066 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6067 match self {
6068 EmailActivityResponseCommonFieldsStatus::Delivered => "delivered",
6069 EmailActivityResponseCommonFieldsStatus::NotDelivered => "not delivered",
6070 EmailActivityResponseCommonFieldsStatus::Processed => "processed",
6071 EmailActivityResponseCommonFieldsStatus::Noop => "",
6072 EmailActivityResponseCommonFieldsStatus::FallthroughString => "*",
6073 }
6074 .fmt(f)
6075 }
6076}
6077
6078impl EmailActivityResponseCommonFieldsStatus {
6079 pub fn is_noop(&self) -> bool {
6080 matches!(self, EmailActivityResponseCommonFieldsStatus::Noop)
6081 }
6082}
6083
6084#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6085pub struct EmailActivityResponseCommonFields {
6086 #[serde(
6087 default,
6088 skip_serializing_if = "String::is_empty",
6089 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6090 )]
6091 pub from_email: String,
6092 #[serde(
6093 default,
6094 skip_serializing_if = "String::is_empty",
6095 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6096 )]
6097 pub msg_id: String,
6098 #[serde(default, skip_serializing_if = "Option::is_none")]
6099 pub status: Option<EmailActivityResponseCommonFieldsStatus>,
6100 #[serde(
6101 default,
6102 skip_serializing_if = "String::is_empty",
6103 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6104 )]
6105 pub subject: String,
6106 #[serde(
6107 default,
6108 skip_serializing_if = "String::is_empty",
6109 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6110 )]
6111 pub to_email: String,
6112}
6113
6114#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6115pub struct SuppressionsRequestBody {
6116 #[serde(
6120 default,
6121 skip_serializing_if = "Vec::is_empty",
6122 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6123 )]
6124 pub recipient_emails: Vec<String>,
6125}
6126
6127#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6128pub struct SuppressionGroupRequestBase {
6129 #[serde(
6130 default,
6131 skip_serializing_if = "String::is_empty",
6132 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6133 )]
6134 pub description: String,
6135 #[serde(
6136 default,
6137 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6138 )]
6139 pub is_default: bool,
6140 #[serde(
6141 default,
6142 skip_serializing_if = "String::is_empty",
6143 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6144 )]
6145 pub name: String,
6146}
6147
6148#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6149pub struct SsoCertificateBody {
6150 #[serde(
6151 default,
6152 skip_serializing_if = "crate::utils::zero_f64",
6153 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
6154 )]
6155 pub id: f64,
6156 #[serde(
6157 default,
6158 skip_serializing_if = "String::is_empty",
6159 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6160 )]
6161 pub intergration_id: String,
6162 #[serde(
6163 default,
6164 skip_serializing_if = "crate::utils::zero_f64",
6165 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
6166 )]
6167 pub not_after: f64,
6168 #[serde(
6169 default,
6170 skip_serializing_if = "crate::utils::zero_f64",
6171 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
6172 )]
6173 pub not_before: f64,
6174 #[serde(
6175 default,
6176 skip_serializing_if = "String::is_empty",
6177 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6178 )]
6179 pub public_certificate: String,
6180}
6181
6182#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6183pub struct SsoIntegration {
6184 #[serde(
6188 default,
6189 skip_serializing_if = "String::is_empty",
6190 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6191 )]
6192 pub audience_url: String,
6193 #[serde(
6197 default,
6198 skip_serializing_if = "String::is_empty",
6199 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6200 )]
6201 pub id: String,
6202 #[serde(
6206 default,
6207 skip_serializing_if = "crate::utils::zero_f64",
6208 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
6209 )]
6210 pub last_updated: f64,
6211 #[serde(
6215 default,
6216 skip_serializing_if = "String::is_empty",
6217 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6218 )]
6219 pub single_signon_url: String,
6220}
6221
6222#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6228pub struct SsoIntegrationAllOf {
6229 #[serde(flatten)]
6230 pub create_integration_request: CreateIntegrationRequest,
6231 #[serde(flatten)]
6232 pub sso_integration: SsoIntegration,
6233}
6234
6235#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6236pub struct CreateIntegrationRequest {
6237 #[serde(default, skip_serializing_if = "Option::is_none")]
6238 pub completed_integration: Option<bool>,
6239 #[serde(default, skip_serializing_if = "Option::is_none")]
6243 pub enabled: Option<bool>,
6244 #[serde(
6248 default,
6249 skip_serializing_if = "String::is_empty",
6250 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6251 )]
6252 pub entity_id: String,
6253 #[serde(
6257 default,
6258 skip_serializing_if = "String::is_empty",
6259 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6260 )]
6261 pub name: String,
6262 #[serde(
6266 default,
6267 skip_serializing_if = "String::is_empty",
6268 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6269 )]
6270 pub signin_url: String,
6271 #[serde(
6275 default,
6276 skip_serializing_if = "String::is_empty",
6277 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6278 )]
6279 pub signout_url: String,
6280}
6281
6282#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6283pub struct SsoTeammateResponse {
6284 #[serde(
6288 default,
6289 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6290 )]
6291 pub is_sso: bool,
6292 #[serde(
6296 default,
6297 skip_serializing_if = "String::is_empty",
6298 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6299 )]
6300 pub username: String,
6301}
6302
6303#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6309pub struct SsoTeammateResponseAllOf {
6310 #[serde(flatten)]
6311 pub sso_teammate_common_fields: SsoTeammateCommonFields,
6312 #[serde(flatten)]
6313 pub sso_teammate_response: SsoTeammateResponse,
6314}
6315
6316#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6317pub struct GetScopesResponse {
6318 #[serde(
6322 default,
6323 skip_serializing_if = "Vec::is_empty",
6324 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6325 )]
6326 pub scopes: Vec<String>,
6327}
6328
6329#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6335pub struct SsoTeammateRequestAllOf {
6336 #[serde(flatten)]
6337 pub sso_teammate_common_fields: SsoTeammateCommonFields,
6338 #[serde(flatten)]
6339 pub get_scopes_response: GetScopesResponse,
6340}
6341
6342#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
6346pub enum UserType {
6347 #[serde(rename = "admin")]
6348 Admin,
6349 #[serde(rename = "owner")]
6350 Owner,
6351 #[serde(rename = "teammate")]
6352 Teammate,
6353 #[serde(rename = "")]
6354 #[default]
6355 Noop,
6356 #[serde(other)]
6357 FallthroughString,
6358}
6359
6360impl std::fmt::Display for UserType {
6361 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6362 match self {
6363 UserType::Admin => "admin",
6364 UserType::Owner => "owner",
6365 UserType::Teammate => "teammate",
6366 UserType::Noop => "",
6367 UserType::FallthroughString => "*",
6368 }
6369 .fmt(f)
6370 }
6371}
6372
6373impl UserType {
6374 pub fn is_noop(&self) -> bool {
6375 matches!(self, UserType::Noop)
6376 }
6377}
6378
6379#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6380pub struct SsoTeammatesPatchResponse {
6381 #[serde(
6385 default,
6386 skip_serializing_if = "String::is_empty",
6387 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6388 )]
6389 pub address: String,
6390 #[serde(
6394 default,
6395 skip_serializing_if = "String::is_empty",
6396 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
6397 rename = "address2"
6398 )]
6399 pub address_2: String,
6400 #[serde(
6404 default,
6405 skip_serializing_if = "String::is_empty",
6406 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6407 )]
6408 pub city: String,
6409 #[serde(
6413 default,
6414 skip_serializing_if = "String::is_empty",
6415 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6416 )]
6417 pub company: String,
6418 #[serde(
6422 default,
6423 skip_serializing_if = "String::is_empty",
6424 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6425 )]
6426 pub country: String,
6427 #[serde(
6431 default,
6432 skip_serializing_if = "String::is_empty",
6433 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6434 )]
6435 pub email: String,
6436 #[serde(
6440 default,
6441 skip_serializing_if = "String::is_empty",
6442 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6443 )]
6444 pub phone: String,
6445 #[serde(
6449 default,
6450 skip_serializing_if = "Vec::is_empty",
6451 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6452 )]
6453 pub scopes: Vec<String>,
6454 #[serde(
6458 default,
6459 skip_serializing_if = "String::is_empty",
6460 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6461 )]
6462 pub state: String,
6463 #[serde(default, skip_serializing_if = "Option::is_none")]
6467 pub user_type: Option<UserType>,
6468 #[serde(
6472 default,
6473 skip_serializing_if = "String::is_empty",
6474 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6475 )]
6476 pub website: String,
6477 #[serde(
6481 default,
6482 skip_serializing_if = "String::is_empty",
6483 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6484 )]
6485 pub zip: String,
6486}
6487
6488#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6494pub struct SsoTeammatesPatchResponseAllOf {
6495 #[serde(flatten)]
6496 pub sso_teammate_response_all_of: SsoTeammateResponseAllOf,
6497 #[serde(flatten)]
6498 pub sso_teammates_patch_response: SsoTeammatesPatchResponse,
6499}
6500
6501#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6502pub struct SsoErrorResponse {
6503 #[serde(
6507 default,
6508 skip_serializing_if = "String::is_empty",
6509 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6510 )]
6511 pub error_id: String,
6512 #[serde(
6516 default,
6517 skip_serializing_if = "String::is_empty",
6518 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6519 )]
6520 pub field: String,
6521 #[serde(
6525 default,
6526 skip_serializing_if = "String::is_empty",
6527 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6528 )]
6529 pub message: String,
6530}
6531
6532#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6533pub struct ClickTracking {
6534 #[serde(
6538 default,
6539 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6540 )]
6541 pub enable_text: bool,
6542 #[serde(
6546 default,
6547 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6548 )]
6549 pub enabled: bool,
6550}
6551
6552#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6553pub struct SsoTeammateCommonFields {
6554 #[serde(
6558 default,
6559 skip_serializing_if = "String::is_empty",
6560 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6561 )]
6562 pub email: String,
6563 #[serde(
6567 default,
6568 skip_serializing_if = "String::is_empty",
6569 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6570 )]
6571 pub first_name: String,
6572 #[serde(
6573 default,
6574 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6575 )]
6576 pub is_admin: bool,
6577 #[serde(
6578 default,
6579 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6580 )]
6581 pub is_read_only: bool,
6582 #[serde(
6586 default,
6587 skip_serializing_if = "String::is_empty",
6588 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6589 )]
6590 pub last_name: String,
6591}
6592
6593#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6594pub struct SpamReportsResponse {
6595 #[serde(
6596 default,
6597 skip_serializing_if = "crate::utils::zero_i64",
6598 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
6599 )]
6600 pub created: i64,
6601 #[serde(
6605 default,
6606 skip_serializing_if = "String::is_empty",
6607 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6608 )]
6609 pub email: String,
6610 #[serde(
6614 default,
6615 skip_serializing_if = "String::is_empty",
6616 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6617 )]
6618 pub ip: String,
6619}
6620
6621#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6622pub struct BlocksResponse {
6623 #[serde(
6624 default,
6625 skip_serializing_if = "crate::utils::zero_i64",
6626 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
6627 )]
6628 pub created: i64,
6629 #[serde(
6633 default,
6634 skip_serializing_if = "String::is_empty",
6635 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6636 )]
6637 pub email: String,
6638 #[serde(
6642 default,
6643 skip_serializing_if = "String::is_empty",
6644 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6645 )]
6646 pub reason: String,
6647 #[serde(
6651 default,
6652 skip_serializing_if = "String::is_empty",
6653 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6654 )]
6655 pub status: String,
6656}
6657
6658#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6659pub struct IpPoolsPoolResp {
6660 #[serde(
6661 default,
6662 skip_serializing_if = "String::is_empty",
6663 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6664 )]
6665 pub name: String,
6666}
6667
6668#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6669pub struct SenderRequestFrom {
6670 #[serde(
6674 default,
6675 skip_serializing_if = "String::is_empty",
6676 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6677 )]
6678 pub email: String,
6679 #[serde(
6683 default,
6684 skip_serializing_if = "String::is_empty",
6685 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6686 )]
6687 pub name: String,
6688}
6689
6690#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6691pub struct SenderRequest {
6692 #[serde(
6693 default,
6694 skip_serializing_if = "String::is_empty",
6695 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6696 )]
6697 pub address: String,
6698 #[serde(
6699 default,
6700 skip_serializing_if = "String::is_empty",
6701 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6702 )]
6703 pub address_2: String,
6704 #[serde(
6705 default,
6706 skip_serializing_if = "String::is_empty",
6707 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6708 )]
6709 pub city: String,
6710 #[serde(
6711 default,
6712 skip_serializing_if = "String::is_empty",
6713 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6714 )]
6715 pub country: String,
6716 #[serde(default, skip_serializing_if = "Option::is_none")]
6717 pub from: Option<SenderRequestFrom>,
6718 #[serde(
6719 default,
6720 skip_serializing_if = "String::is_empty",
6721 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6722 )]
6723 pub nickname: String,
6724 #[serde(default, skip_serializing_if = "Option::is_none")]
6725 pub reply_to: Option<SenderRequestFrom>,
6726 #[serde(
6727 default,
6728 skip_serializing_if = "String::is_empty",
6729 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6730 )]
6731 pub state: String,
6732 #[serde(
6733 default,
6734 skip_serializing_if = "String::is_empty",
6735 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6736 )]
6737 pub zip: String,
6738}
6739
6740#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6742pub struct SegmentStatusResponse {
6743 #[serde(
6747 default,
6748 skip_serializing_if = "String::is_empty",
6749 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6750 )]
6751 pub error_message: String,
6752 #[serde(
6756 default,
6757 skip_serializing_if = "String::is_empty",
6758 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6759 )]
6760 pub query_validation: String,
6761}
6762
6763#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6764pub struct AllSegmentsResponse {
6765 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
6766 pub metadata: Option<MetadataType>,
6767 #[serde(
6768 default,
6769 skip_serializing_if = "crate::utils::zero_i64",
6770 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
6771 )]
6772 pub contacts_count: i64,
6773 #[serde(
6777 default,
6778 skip_serializing_if = "String::is_empty",
6779 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6780 )]
6781 pub created_at: String,
6782 #[serde(
6786 default,
6787 skip_serializing_if = "String::is_empty",
6788 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6789 )]
6790 pub id: String,
6791 #[serde(
6795 default,
6796 skip_serializing_if = "String::is_empty",
6797 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6798 )]
6799 pub name: String,
6800 #[serde(
6804 default,
6805 skip_serializing_if = "String::is_empty",
6806 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6807 )]
6808 pub next_sample_update: String,
6809 #[serde(
6813 default,
6814 skip_serializing_if = "Vec::is_empty",
6815 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6816 )]
6817 pub parent_list_ids: Vec<String>,
6818 #[serde(
6822 default,
6823 skip_serializing_if = "String::is_empty",
6824 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6825 )]
6826 pub query_version: String,
6827 #[serde(
6831 default,
6832 skip_serializing_if = "String::is_empty",
6833 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6834 )]
6835 pub sample_updated_at: String,
6836 pub status: SegmentStatusResponse,
6840 #[serde(
6844 default,
6845 skip_serializing_if = "String::is_empty",
6846 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6847 )]
6848 pub updated_at: String,
6849}
6850
6851#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6853pub struct SegmentSummaryV2 {
6854 #[serde(
6858 default,
6859 skip_serializing_if = "Vec::is_empty",
6860 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6861 )]
6862 pub results: Vec<SegmentSummary>,
6863}
6864
6865#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6866pub struct SegmentResponse {
6867 #[serde(
6868 default,
6869 skip_serializing_if = "crate::utils::zero_i64",
6870 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
6871 )]
6872 pub contacts_count: i64,
6873 #[serde(
6874 default,
6875 skip_serializing_if = "Vec::is_empty",
6876 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6877 )]
6878 pub contacts_sample: Vec<ContactResponse>,
6879 #[serde(
6883 default,
6884 skip_serializing_if = "String::is_empty",
6885 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6886 )]
6887 pub created_at: String,
6888 #[serde(
6892 default,
6893 skip_serializing_if = "String::is_empty",
6894 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6895 )]
6896 pub id: String,
6897 #[serde(
6901 default,
6902 skip_serializing_if = "String::is_empty",
6903 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6904 )]
6905 pub name: String,
6906 #[serde(
6910 default,
6911 skip_serializing_if = "String::is_empty",
6912 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6913 )]
6914 pub next_sample_update: String,
6915 #[serde(
6919 default,
6920 skip_serializing_if = "Vec::is_empty",
6921 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6922 )]
6923 pub parent_list_ids: Vec<String>,
6924 #[serde(
6928 default,
6929 skip_serializing_if = "String::is_empty",
6930 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6931 )]
6932 pub query_dsl: String,
6933 #[serde(
6937 default,
6938 skip_serializing_if = "String::is_empty",
6939 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6940 )]
6941 pub query_version: String,
6942 #[serde(
6946 default,
6947 skip_serializing_if = "String::is_empty",
6948 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6949 )]
6950 pub sample_updated_at: String,
6951 pub status: SegmentStatusResponse,
6955 #[serde(
6959 default,
6960 skip_serializing_if = "String::is_empty",
6961 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6962 )]
6963 pub updated_at: String,
6964}
6965
6966#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6967pub struct ErrorsSeg {
6968 #[serde(
6972 default,
6973 skip_serializing_if = "String::is_empty",
6974 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6975 )]
6976 pub field: String,
6977 #[serde(
6981 default,
6982 skip_serializing_if = "String::is_empty",
6983 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
6984 )]
6985 pub message: String,
6986}
6987
6988#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6990pub struct ErrorsSegData {
6991 #[serde(
6992 default,
6993 skip_serializing_if = "Vec::is_empty",
6994 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
6995 )]
6996 pub errors: Vec<ErrorsSeg>,
6997}
6998
6999#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7000pub struct SegmentWriteV2 {
7001 #[serde(
7005 default,
7006 skip_serializing_if = "String::is_empty",
7007 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7008 )]
7009 pub name: String,
7010 #[serde(
7011 default,
7012 skip_serializing_if = "Vec::is_empty",
7013 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7014 )]
7015 pub parent_list_ids: Vec<String>,
7016 #[serde(
7020 default,
7021 skip_serializing_if = "String::is_empty",
7022 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7023 )]
7024 pub query_dsl: String,
7025}
7026
7027#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7028pub struct SegmentUpdate {
7029 #[serde(
7030 default,
7031 skip_serializing_if = "String::is_empty",
7032 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7033 )]
7034 pub name: String,
7035 #[serde(
7036 default,
7037 skip_serializing_if = "String::is_empty",
7038 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7039 )]
7040 pub query_dsl: String,
7041}
7042
7043#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7044pub enum AbbvMessageStatus {
7045 #[serde(rename = "delivered")]
7046 Delivered,
7047 #[serde(rename = "not_delivered")]
7048 NotDelivered,
7049 #[serde(rename = "processed")]
7050 Processed,
7051 #[serde(rename = "")]
7052 #[default]
7053 Noop,
7054 #[serde(other)]
7055 FallthroughString,
7056}
7057
7058impl std::fmt::Display for AbbvMessageStatus {
7059 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7060 match self {
7061 AbbvMessageStatus::Delivered => "delivered",
7062 AbbvMessageStatus::NotDelivered => "not_delivered",
7063 AbbvMessageStatus::Processed => "processed",
7064 AbbvMessageStatus::Noop => "",
7065 AbbvMessageStatus::FallthroughString => "*",
7066 }
7067 .fmt(f)
7068 }
7069}
7070
7071impl AbbvMessageStatus {
7072 pub fn is_noop(&self) -> bool {
7073 matches!(self, AbbvMessageStatus::Noop)
7074 }
7075}
7076
7077#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7078pub struct Messages {
7079 #[serde(
7080 default,
7081 skip_serializing_if = "crate::utils::zero_i64",
7082 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
7083 )]
7084 pub clicks_count: i64,
7085 #[serde(
7089 default,
7090 skip_serializing_if = "String::is_empty",
7091 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7092 )]
7093 pub from_email: String,
7094 #[serde(
7098 default,
7099 skip_serializing_if = "String::is_empty",
7100 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7101 )]
7102 pub last_event_time: String,
7103 #[serde(
7107 default,
7108 skip_serializing_if = "String::is_empty",
7109 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7110 )]
7111 pub msg_id: String,
7112 #[serde(
7113 default,
7114 skip_serializing_if = "crate::utils::zero_i64",
7115 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
7116 )]
7117 pub opens_count: i64,
7118 #[serde(default, skip_serializing_if = "AbbvMessageStatus::is_noop")]
7119 pub status: AbbvMessageStatus,
7120 #[serde(
7124 default,
7125 skip_serializing_if = "String::is_empty",
7126 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7127 )]
7128 pub subject: String,
7129 #[serde(
7133 default,
7134 skip_serializing_if = "String::is_empty",
7135 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7136 )]
7137 pub to_email: String,
7138}
7139
7140#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7144pub enum EventName {
7145 #[serde(rename = "bounced")]
7146 Bounced,
7147 #[serde(rename = "clicked")]
7148 Clicked,
7149 #[serde(rename = "deferred")]
7150 Deferred,
7151 #[serde(rename = "delivered")]
7152 Delivered,
7153 #[serde(rename = "dropped")]
7154 Dropped,
7155 #[serde(rename = "group_resubscribe")]
7156 GroupResubscribe,
7157 #[serde(rename = "group_unsubscribe")]
7158 GroupUnsubscribe,
7159 #[serde(rename = "opened")]
7160 Opened,
7161 #[serde(rename = "processed")]
7162 Processed,
7163 #[serde(rename = "spam_report")]
7164 SpamReport,
7165 #[serde(rename = "unsubscribe")]
7166 Unsubscribe,
7167 #[serde(rename = "")]
7168 #[default]
7169 Noop,
7170 #[serde(other)]
7171 FallthroughString,
7172}
7173
7174impl std::fmt::Display for EventName {
7175 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7176 match self {
7177 EventName::Bounced => "bounced",
7178 EventName::Clicked => "clicked",
7179 EventName::Deferred => "deferred",
7180 EventName::Delivered => "delivered",
7181 EventName::Dropped => "dropped",
7182 EventName::GroupResubscribe => "group_resubscribe",
7183 EventName::GroupUnsubscribe => "group_unsubscribe",
7184 EventName::Opened => "opened",
7185 EventName::Processed => "processed",
7186 EventName::SpamReport => "spam_report",
7187 EventName::Unsubscribe => "unsubscribe",
7188 EventName::Noop => "",
7189 EventName::FallthroughString => "*",
7190 }
7191 .fmt(f)
7192 }
7193}
7194
7195impl EventName {
7196 pub fn is_noop(&self) -> bool {
7197 matches!(self, EventName::Noop)
7198 }
7199}
7200
7201#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7205pub enum BounceType {
7206 #[serde(rename = "blocked")]
7207 Blocked,
7208 #[serde(rename = "bounced")]
7209 Bounced,
7210 #[serde(rename = "expired")]
7211 Expired,
7212 #[serde(rename = "")]
7213 #[default]
7214 Noop,
7215 #[serde(other)]
7216 FallthroughString,
7217}
7218
7219impl std::fmt::Display for BounceType {
7220 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7221 match self {
7222 BounceType::Blocked => "blocked",
7223 BounceType::Bounced => "bounced",
7224 BounceType::Expired => "expired",
7225 BounceType::Noop => "",
7226 BounceType::FallthroughString => "*",
7227 }
7228 .fmt(f)
7229 }
7230}
7231
7232impl BounceType {
7233 pub fn is_noop(&self) -> bool {
7234 matches!(self, BounceType::Noop)
7235 }
7236}
7237
7238#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7239pub struct Event {
7240 #[serde(
7241 default,
7242 skip_serializing_if = "crate::utils::zero_i64",
7243 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
7244 )]
7245 pub attempt_num: i64,
7246 #[serde(default, skip_serializing_if = "BounceType::is_noop")]
7250 pub bounce_type: BounceType,
7251 #[serde(default, skip_serializing_if = "EventName::is_noop")]
7255 pub event_name: EventName,
7256 #[serde(
7260 default,
7261 skip_serializing_if = "String::is_empty",
7262 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7263 )]
7264 pub http_user_agent: String,
7265 #[serde(
7269 default,
7270 skip_serializing_if = "String::is_empty",
7271 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7272 )]
7273 pub mx_server: String,
7274 #[serde(
7278 default,
7279 skip_serializing_if = "String::is_empty",
7280 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7281 )]
7282 pub processed: String,
7283 #[serde(
7284 default,
7285 skip_serializing_if = "String::is_empty",
7286 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7287 )]
7288 pub reason: String,
7289 #[serde(
7293 default,
7294 skip_serializing_if = "String::is_empty",
7295 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7296 )]
7297 pub url: String,
7298}
7299
7300#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7304pub enum OutboundIpType {
7305 #[serde(rename = "dedicated")]
7306 Dedicated,
7307 #[serde(rename = "shared")]
7308 Shared,
7309 #[serde(rename = "")]
7310 #[default]
7311 Noop,
7312 #[serde(other)]
7313 FallthroughString,
7314}
7315
7316impl std::fmt::Display for OutboundIpType {
7317 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7318 match self {
7319 OutboundIpType::Dedicated => "dedicated",
7320 OutboundIpType::Shared => "shared",
7321 OutboundIpType::Noop => "",
7322 OutboundIpType::FallthroughString => "*",
7323 }
7324 .fmt(f)
7325 }
7326}
7327
7328impl OutboundIpType {
7329 pub fn is_noop(&self) -> bool {
7330 matches!(self, OutboundIpType::Noop)
7331 }
7332}
7333
7334#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7335pub struct Message {
7336 #[serde(
7340 default,
7341 skip_serializing_if = "String::is_empty",
7342 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7343 )]
7344 pub api_key_id: String,
7345 #[serde(
7346 default,
7347 skip_serializing_if = "crate::utils::zero_i64",
7348 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
7349 )]
7350 pub asm_group_id: i64,
7351 #[serde(
7355 default,
7356 skip_serializing_if = "Vec::is_empty",
7357 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7358 )]
7359 pub categories: Vec<String>,
7360 #[serde(
7364 default,
7365 skip_serializing_if = "Vec::is_empty",
7366 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7367 )]
7368 pub events: Vec<Event>,
7369 #[serde(
7373 default,
7374 skip_serializing_if = "String::is_empty",
7375 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7376 )]
7377 pub from_email: String,
7378 #[serde(
7382 default,
7383 skip_serializing_if = "String::is_empty",
7384 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7385 )]
7386 pub msg_id: String,
7387 pub originating_ip: std::net::Ipv4Addr,
7391 pub outbound_ip: std::net::Ipv4Addr,
7395 #[serde(default, skip_serializing_if = "OutboundIpType::is_noop")]
7399 pub outbound_ip_type: OutboundIpType,
7400 #[serde(
7404 default,
7405 skip_serializing_if = "EmailActivityResponseCommonFieldsStatus::is_noop"
7406 )]
7407 pub status: EmailActivityResponseCommonFieldsStatus,
7408 #[serde(
7412 default,
7413 skip_serializing_if = "String::is_empty",
7414 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7415 )]
7416 pub subject: String,
7417 #[serde(
7421 default,
7422 skip_serializing_if = "String::is_empty",
7423 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7424 )]
7425 pub teammate: String,
7426 #[serde(
7430 default,
7431 skip_serializing_if = "String::is_empty",
7432 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7433 )]
7434 pub template_id: String,
7435 #[serde(
7439 default,
7440 skip_serializing_if = "String::is_empty",
7441 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7442 )]
7443 pub to_email: String,
7444 #[serde(
7448 default,
7449 skip_serializing_if = "String::is_empty",
7450 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7451 )]
7452 pub unique_args: String,
7453}
7454
7455#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7457pub struct DomainAuthenticationDns {
7458 pub dkim: Dkim,
7462 pub domain_spf: Dkim,
7466 pub mail_server: Dkim,
7470 pub subdomain_spf: Dkim,
7474}
7475
7476#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7477pub struct DomainAuthentication {
7478 #[serde(
7482 default,
7483 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7484 )]
7485 pub automatic_security: bool,
7486 #[serde(
7490 default,
7491 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7492 )]
7493 pub custom_spf: bool,
7494 #[serde(
7498 default,
7499 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7500 )]
7501 pub default: bool,
7502 pub dns: DomainAuthenticationDns,
7506 #[serde(
7510 default,
7511 skip_serializing_if = "String::is_empty",
7512 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7513 )]
7514 pub domain: String,
7515 #[serde(
7516 default,
7517 skip_serializing_if = "crate::utils::zero_i64",
7518 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
7519 )]
7520 pub id: i64,
7521 #[serde(
7525 default,
7526 skip_serializing_if = "Vec::is_empty",
7527 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7528 )]
7529 pub ips: Vec<String>,
7530 #[serde(
7534 default,
7535 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7536 )]
7537 pub legacy: bool,
7538 #[serde(
7539 default,
7540 skip_serializing_if = "String::is_empty",
7541 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7542 )]
7543 pub subdomain: String,
7544 #[serde(
7545 default,
7546 skip_serializing_if = "crate::utils::zero_i64",
7547 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
7548 )]
7549 pub user_id: i64,
7550 #[serde(
7554 default,
7555 skip_serializing_if = "String::is_empty",
7556 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7557 )]
7558 pub username: String,
7559 #[serde(
7563 default,
7564 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7565 )]
7566 pub valid: bool,
7567}
7568
7569#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7571pub struct AuthenticationDomainDns {
7572 #[serde(rename = "dkim1")]
7576 pub dkim_1: Dkim,
7577 #[serde(rename = "dkim2")]
7581 pub dkim_2: Dkim,
7582 pub mail_cname: Dkim,
7586}
7587
7588#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7589pub struct AuthenticationDomain {
7590 #[serde(
7594 default,
7595 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7596 )]
7597 pub automatic_security: bool,
7598 #[serde(
7602 default,
7603 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7604 )]
7605 pub custom_spf: bool,
7606 #[serde(
7610 default,
7611 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7612 )]
7613 pub default: bool,
7614 pub dns: AuthenticationDomainDns,
7618 #[serde(
7622 default,
7623 skip_serializing_if = "String::is_empty",
7624 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7625 )]
7626 pub domain: String,
7627 #[serde(
7631 default,
7632 skip_serializing_if = "crate::utils::zero_f64",
7633 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
7634 )]
7635 pub id: f64,
7636 #[serde(
7640 default,
7641 skip_serializing_if = "Vec::is_empty",
7642 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7643 )]
7644 pub ips: Vec<String>,
7645 #[serde(
7649 default,
7650 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7651 )]
7652 pub legacy: bool,
7653 #[serde(
7657 default,
7658 skip_serializing_if = "String::is_empty",
7659 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7660 )]
7661 pub subdomain: String,
7662 #[serde(
7666 default,
7667 skip_serializing_if = "crate::utils::zero_f64",
7668 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
7669 )]
7670 pub user_id: f64,
7671 #[serde(
7675 default,
7676 skip_serializing_if = "String::is_empty",
7677 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7678 )]
7679 pub username: String,
7680 #[serde(
7684 default,
7685 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7686 )]
7687 pub valid: bool,
7688}
7689
7690#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7694pub enum AggregatedBy {
7695 #[serde(rename = "day")]
7696 Day,
7697 #[serde(rename = "total")]
7698 #[default]
7699 Total,
7700 #[serde(other)]
7701 FallthroughString,
7702}
7703
7704impl std::fmt::Display for AggregatedBy {
7705 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7706 match self {
7707 AggregatedBy::Day => "day",
7708 AggregatedBy::Total => "total",
7709 AggregatedBy::FallthroughString => "*",
7710 }
7711 .fmt(f)
7712 }
7713}
7714
7715#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7716pub enum GroupBy {
7717 #[serde(rename = "ab_phase")]
7718 AbPhase,
7719 #[serde(rename = "ab_variation")]
7720 AbVariation,
7721 #[serde(rename = "")]
7722 #[default]
7723 Noop,
7724 #[serde(other)]
7725 FallthroughString,
7726}
7727
7728impl std::fmt::Display for GroupBy {
7729 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7730 match self {
7731 GroupBy::AbPhase => "ab_phase",
7732 GroupBy::AbVariation => "ab_variation",
7733 GroupBy::Noop => "",
7734 GroupBy::FallthroughString => "*",
7735 }
7736 .fmt(f)
7737 }
7738}
7739
7740impl GroupBy {
7741 pub fn is_noop(&self) -> bool {
7742 matches!(self, GroupBy::Noop)
7743 }
7744}
7745
7746#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7747pub enum TraitAutomationQueryParamsGroupBy {
7748 #[serde(rename = "step_id")]
7749 StepId,
7750 #[serde(rename = "")]
7751 #[default]
7752 Noop,
7753 #[serde(other)]
7754 FallthroughString,
7755}
7756
7757impl std::fmt::Display for TraitAutomationQueryParamsGroupBy {
7758 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7759 match self {
7760 TraitAutomationQueryParamsGroupBy::StepId => "step_id",
7761 TraitAutomationQueryParamsGroupBy::Noop => "",
7762 TraitAutomationQueryParamsGroupBy::FallthroughString => "*",
7763 }
7764 .fmt(f)
7765 }
7766}
7767
7768impl TraitAutomationQueryParamsGroupBy {
7769 pub fn is_noop(&self) -> bool {
7770 matches!(self, TraitAutomationQueryParamsGroupBy::Noop)
7771 }
7772}
7773
7774#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7775pub enum AbPhaseId {
7776 #[serde(rename = "send")]
7777 Send,
7778 #[serde(rename = "test")]
7779 Test,
7780 #[serde(rename = "")]
7781 #[default]
7782 Noop,
7783 #[serde(other)]
7784 FallthroughString,
7785}
7786
7787impl std::fmt::Display for AbPhaseId {
7788 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7789 match self {
7790 AbPhaseId::Send => "send",
7791 AbPhaseId::Test => "test",
7792 AbPhaseId::Noop => "",
7793 AbPhaseId::FallthroughString => "*",
7794 }
7795 .fmt(f)
7796 }
7797}
7798
7799impl AbPhaseId {
7800 pub fn is_noop(&self) -> bool {
7801 matches!(self, AbPhaseId::Noop)
7802 }
7803}
7804
7805#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
7809pub enum TraitStatsAdvancedBaseQueryStringsAggregatedBy {
7810 #[serde(rename = "day")]
7811 Day,
7812 #[serde(rename = "month")]
7813 Month,
7814 #[serde(rename = "week")]
7815 Week,
7816 #[serde(rename = "")]
7817 #[default]
7818 Noop,
7819 #[serde(other)]
7820 FallthroughString,
7821}
7822
7823impl std::fmt::Display for TraitStatsAdvancedBaseQueryStringsAggregatedBy {
7824 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7825 match self {
7826 TraitStatsAdvancedBaseQueryStringsAggregatedBy::Day => "day",
7827 TraitStatsAdvancedBaseQueryStringsAggregatedBy::Month => "month",
7828 TraitStatsAdvancedBaseQueryStringsAggregatedBy::Week => "week",
7829 TraitStatsAdvancedBaseQueryStringsAggregatedBy::Noop => "",
7830 TraitStatsAdvancedBaseQueryStringsAggregatedBy::FallthroughString => "*",
7831 }
7832 .fmt(f)
7833 }
7834}
7835
7836impl TraitStatsAdvancedBaseQueryStringsAggregatedBy {
7837 pub fn is_noop(&self) -> bool {
7838 matches!(self, TraitStatsAdvancedBaseQueryStringsAggregatedBy::Noop)
7839 }
7840}
7841
7842#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7843pub struct TraitPagination200Response {
7844 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
7845 pub metadata: Option<Metadata>,
7846}
7847
7848#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7849pub struct TraitGlobalErrors500Response {
7850 #[serde(
7854 default,
7855 skip_serializing_if = "String::is_empty",
7856 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7857 )]
7858 pub message: String,
7859}
7860
7861#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7862pub struct GetMessagesMsgResponse {
7863 #[serde(
7864 default,
7865 skip_serializing_if = "Vec::is_empty",
7866 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7867 )]
7868 pub errors: Vec<TraitGlobalErrors500Response>,
7869}
7870
7871#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7872pub struct TraitCancelScheduledSendsErrors400Response {
7873 #[serde(
7877 default,
7878 skip_serializing_if = "String::is_empty",
7879 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7880 )]
7881 pub field: String,
7882 #[serde(default, skip_serializing_if = "Option::is_none")]
7886 pub help: Option<Help>,
7887 #[serde(
7891 default,
7892 skip_serializing_if = "String::is_empty",
7893 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7894 )]
7895 pub message: String,
7896}
7897
7898#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7899pub struct TraitCancelScheduledSendsErrors400ResponseData {
7900 #[serde(
7901 default,
7902 skip_serializing_if = "Vec::is_empty",
7903 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7904 )]
7905 pub errors: Vec<TraitCancelScheduledSendsErrors400Response>,
7906 #[serde(
7910 default,
7911 skip_serializing_if = "String::is_empty",
7912 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7913 )]
7914 pub id: String,
7915}
7916
7917#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7918pub struct TraitMakoErrorResponse400Errors {
7919 #[serde(
7923 default,
7924 skip_serializing_if = "String::is_empty",
7925 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7926 )]
7927 pub error_id: String,
7928 #[serde(
7932 default,
7933 skip_serializing_if = "String::is_empty",
7934 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7935 )]
7936 pub field: String,
7937 #[serde(
7941 default,
7942 skip_serializing_if = "String::is_empty",
7943 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7944 )]
7945 pub message: String,
7946 #[serde(
7950 default,
7951 skip_serializing_if = "String::is_empty",
7952 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
7953 )]
7954 pub parameter: String,
7955}
7956
7957#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7958pub struct TraitMakoErrorResponse400 {
7959 #[serde(
7960 default,
7961 skip_serializing_if = "Vec::is_empty",
7962 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7963 )]
7964 pub errors: Vec<TraitMakoErrorResponse400Errors>,
7965}
7966
7967#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7968pub struct Personalizations {
7969 #[serde(
7973 default,
7974 skip_serializing_if = "Vec::is_empty",
7975 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7976 )]
7977 pub bcc: Vec<CcBccEmailObject>,
7978 #[serde(
7982 default,
7983 skip_serializing_if = "Vec::is_empty",
7984 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
7985 )]
7986 pub cc: Vec<CcBccEmailObject>,
7987 #[serde(default, skip_serializing_if = "Option::is_none")]
7991 pub custom_args: Option<Help>,
7992 #[serde(default, skip_serializing_if = "Option::is_none")]
7996 pub dynamic_template_data: Option<Help>,
7997 #[serde(default, skip_serializing_if = "Option::is_none")]
7998 pub from: Option<FromEmailObject>,
7999 #[serde(default, skip_serializing_if = "Option::is_none")]
8003 pub headers: Option<Help>,
8004 #[serde(
8005 default,
8006 skip_serializing_if = "crate::utils::zero_i64",
8007 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
8008 )]
8009 pub send_at: i64,
8010 #[serde(
8014 default,
8015 skip_serializing_if = "String::is_empty",
8016 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8017 )]
8018 pub subject: String,
8019 #[serde(default, skip_serializing_if = "Option::is_none")]
8023 pub substitutions: Option<Help>,
8024 #[serde(
8025 default,
8026 skip_serializing_if = "Vec::is_empty",
8027 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8028 )]
8029 pub to: Vec<ReplyTo>,
8030}
8031
8032#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8033pub struct Content {
8034 #[serde(
8038 default,
8039 skip_serializing_if = "String::is_empty",
8040 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
8041 rename = "type"
8042 )]
8043 pub type_: String,
8044 #[serde(
8048 default,
8049 skip_serializing_if = "String::is_empty",
8050 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8051 )]
8052 pub value: String,
8053}
8054
8055#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
8059pub enum Disposition {
8060 #[serde(rename = "attachment")]
8061 #[default]
8062 Attachment,
8063 #[serde(rename = "inline")]
8064 Inline,
8065 #[serde(other)]
8066 FallthroughString,
8067}
8068
8069impl std::fmt::Display for Disposition {
8070 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8071 match self {
8072 Disposition::Attachment => "attachment",
8073 Disposition::Inline => "inline",
8074 Disposition::FallthroughString => "*",
8075 }
8076 .fmt(f)
8077 }
8078}
8079
8080#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8081pub struct Attachments {
8082 #[serde(
8086 default,
8087 skip_serializing_if = "String::is_empty",
8088 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8089 )]
8090 pub content: String,
8091 #[serde(
8095 default,
8096 skip_serializing_if = "String::is_empty",
8097 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8098 )]
8099 pub content_id: String,
8100 #[serde(default, skip_serializing_if = "Option::is_none")]
8104 pub disposition: Option<Disposition>,
8105 #[serde(
8109 default,
8110 skip_serializing_if = "String::is_empty",
8111 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8112 )]
8113 pub filename: String,
8114 #[serde(
8118 default,
8119 skip_serializing_if = "String::is_empty",
8120 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
8121 rename = "type"
8122 )]
8123 pub type_: String,
8124}
8125
8126#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8128pub struct Asm {
8129 #[serde(
8130 default,
8131 skip_serializing_if = "crate::utils::zero_i64",
8132 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
8133 )]
8134 pub group_id: i64,
8135 #[serde(
8139 default,
8140 skip_serializing_if = "Vec::is_empty",
8141 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8142 )]
8143 pub groups_to_display: Vec<i64>,
8144}
8145
8146#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8148pub struct BypassListManagement {
8149 #[serde(
8153 default,
8154 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8155 )]
8156 pub enable: bool,
8157}
8158
8159#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8161pub struct BypassSpamManagement {
8162 #[serde(
8166 default,
8167 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8168 )]
8169 pub enable: bool,
8170}
8171
8172#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8174pub struct BypassBounceManagement {
8175 #[serde(
8179 default,
8180 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8181 )]
8182 pub enable: bool,
8183}
8184
8185#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8187pub struct BypassUnsubscribeManagement {
8188 #[serde(
8192 default,
8193 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8194 )]
8195 pub enable: bool,
8196}
8197
8198#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8200pub struct Footer {
8201 #[serde(
8205 default,
8206 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8207 )]
8208 pub enable: bool,
8209 #[serde(
8213 default,
8214 skip_serializing_if = "String::is_empty",
8215 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8216 )]
8217 pub html: String,
8218 #[serde(
8222 default,
8223 skip_serializing_if = "String::is_empty",
8224 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8225 )]
8226 pub text: String,
8227}
8228
8229#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8231pub struct SandboxMode {
8232 #[serde(
8236 default,
8237 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8238 )]
8239 pub enable: bool,
8240}
8241
8242#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8244pub struct MailSettings {
8245 #[serde(default, skip_serializing_if = "Option::is_none")]
8249 pub bypass_bounce_management: Option<BypassBounceManagement>,
8250 #[serde(default, skip_serializing_if = "Option::is_none")]
8254 pub bypass_list_management: Option<BypassListManagement>,
8255 #[serde(default, skip_serializing_if = "Option::is_none")]
8259 pub bypass_spam_management: Option<BypassSpamManagement>,
8260 #[serde(default, skip_serializing_if = "Option::is_none")]
8264 pub bypass_unsubscribe_management: Option<BypassUnsubscribeManagement>,
8265 #[serde(default, skip_serializing_if = "Option::is_none")]
8269 pub footer: Option<Footer>,
8270 #[serde(default, skip_serializing_if = "Option::is_none")]
8274 pub sandbox_mode: Option<SandboxMode>,
8275}
8276
8277#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8279pub struct PostMailSendRequestTrackingSettingsClick {
8280 #[serde(
8284 default,
8285 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8286 )]
8287 pub enable: bool,
8288 #[serde(
8292 default,
8293 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8294 )]
8295 pub enable_text: bool,
8296}
8297
8298#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8300pub struct OpenTracking {
8301 #[serde(
8305 default,
8306 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8307 )]
8308 pub enable: bool,
8309 #[serde(
8313 default,
8314 skip_serializing_if = "String::is_empty",
8315 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8316 )]
8317 pub substitution_tag: String,
8318}
8319
8320#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8322pub struct SubscriptionTracking {
8323 #[serde(
8327 default,
8328 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8329 )]
8330 pub enable: bool,
8331 #[serde(
8335 default,
8336 skip_serializing_if = "String::is_empty",
8337 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8338 )]
8339 pub html: String,
8340 #[serde(
8344 default,
8345 skip_serializing_if = "String::is_empty",
8346 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8347 )]
8348 pub substitution_tag: String,
8349 #[serde(
8353 default,
8354 skip_serializing_if = "String::is_empty",
8355 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8356 )]
8357 pub text: String,
8358}
8359
8360#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8362pub struct Ganalytics {
8363 #[serde(
8367 default,
8368 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8369 )]
8370 pub enable: bool,
8371 #[serde(
8375 default,
8376 skip_serializing_if = "String::is_empty",
8377 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8378 )]
8379 pub utm_campaign: String,
8380 #[serde(
8384 default,
8385 skip_serializing_if = "String::is_empty",
8386 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8387 )]
8388 pub utm_content: String,
8389 #[serde(
8393 default,
8394 skip_serializing_if = "String::is_empty",
8395 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8396 )]
8397 pub utm_medium: String,
8398 #[serde(
8402 default,
8403 skip_serializing_if = "String::is_empty",
8404 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8405 )]
8406 pub utm_source: String,
8407 #[serde(
8411 default,
8412 skip_serializing_if = "String::is_empty",
8413 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8414 )]
8415 pub utm_term: String,
8416}
8417
8418#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8420pub struct TrackingSettings {
8421 #[serde(default, skip_serializing_if = "Option::is_none")]
8425 pub click_tracking: Option<PostMailSendRequestTrackingSettingsClick>,
8426 #[serde(default, skip_serializing_if = "Option::is_none")]
8430 pub ganalytics: Option<Ganalytics>,
8431 #[serde(default, skip_serializing_if = "Option::is_none")]
8435 pub open_tracking: Option<OpenTracking>,
8436 #[serde(default, skip_serializing_if = "Option::is_none")]
8440 pub subscription_tracking: Option<SubscriptionTracking>,
8441}
8442
8443#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8444pub struct PostMailSendRequest {
8445 #[serde(default, skip_serializing_if = "Option::is_none")]
8446 pub asm: Option<Asm>,
8447 #[serde(
8448 default,
8449 skip_serializing_if = "Vec::is_empty",
8450 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8451 )]
8452 pub attachments: Vec<Attachments>,
8453 #[serde(
8454 default,
8455 skip_serializing_if = "String::is_empty",
8456 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8457 )]
8458 pub batch_id: String,
8459 #[serde(
8460 default,
8461 skip_serializing_if = "Vec::is_empty",
8462 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8463 )]
8464 pub categories: Vec<String>,
8465 #[serde(
8469 default,
8470 skip_serializing_if = "Vec::is_empty",
8471 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8472 )]
8473 pub content: Vec<Content>,
8474 #[serde(
8475 default,
8476 skip_serializing_if = "String::is_empty",
8477 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8478 )]
8479 pub custom_args: String,
8480 pub from: FromEmailObject,
8481 #[serde(default, skip_serializing_if = "Option::is_none")]
8482 pub headers: Option<Help>,
8483 #[serde(
8484 default,
8485 skip_serializing_if = "String::is_empty",
8486 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8487 )]
8488 pub ip_pool_name: String,
8489 #[serde(default, skip_serializing_if = "Option::is_none")]
8490 pub mail_settings: Option<MailSettings>,
8491 #[serde(
8495 default,
8496 skip_serializing_if = "Vec::is_empty",
8497 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8498 )]
8499 pub personalizations: Vec<Personalizations>,
8500 #[serde(default, skip_serializing_if = "Option::is_none")]
8501 pub reply_to: Option<ReplyEmailObject>,
8502 #[serde(
8503 default,
8504 skip_serializing_if = "crate::utils::zero_i64",
8505 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
8506 )]
8507 pub send_at: i64,
8508 #[serde(
8512 default,
8513 skip_serializing_if = "String::is_empty",
8514 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8515 )]
8516 pub subject: String,
8517 #[serde(
8518 default,
8519 skip_serializing_if = "String::is_empty",
8520 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8521 )]
8522 pub template_id: String,
8523 #[serde(default, skip_serializing_if = "Option::is_none")]
8524 pub tracking_settings: Option<TrackingSettings>,
8525}
8526
8527#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8528pub struct CancelPauseAScheduledSendRequest {
8529 #[serde(
8533 default,
8534 skip_serializing_if = "String::is_empty",
8535 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8536 )]
8537 pub batch_id: String,
8538 #[serde(default, skip_serializing_if = "Status::is_noop")]
8542 pub status: Status,
8543}
8544
8545#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8546pub struct GetApiKeysResponse {
8547 #[serde(
8548 default,
8549 skip_serializing_if = "Vec::is_empty",
8550 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8551 )]
8552 pub result: Vec<ApiKeyNameId>,
8553}
8554
8555#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8556pub struct CreateApiKeysRequest {
8557 #[serde(
8561 default,
8562 skip_serializing_if = "String::is_empty",
8563 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8564 )]
8565 pub name: String,
8566 #[serde(
8567 default,
8568 skip_serializing_if = "Vec::is_empty",
8569 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8570 )]
8571 pub scopes: Vec<String>,
8572}
8573
8574#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8575pub struct CreateApiKeysResponse {
8576 #[serde(
8580 default,
8581 skip_serializing_if = "String::is_empty",
8582 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8583 )]
8584 pub api_key: String,
8585 #[serde(
8589 default,
8590 skip_serializing_if = "String::is_empty",
8591 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8592 )]
8593 pub api_key_id: String,
8594 #[serde(
8598 default,
8599 skip_serializing_if = "String::is_empty",
8600 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8601 )]
8602 pub name: String,
8603 #[serde(
8607 default,
8608 skip_serializing_if = "Vec::is_empty",
8609 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8610 )]
8611 pub scopes: Vec<String>,
8612}
8613
8614#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8615pub struct GetApiKeysKeyResponse {
8616 #[serde(
8617 default,
8618 skip_serializing_if = "Vec::is_empty",
8619 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8620 )]
8621 pub result: Vec<ApiKeyNameScopesAllOf>,
8622}
8623
8624#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8625pub struct PutApiKeysKeyRequest {
8626 #[serde(
8630 default,
8631 skip_serializing_if = "String::is_empty",
8632 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8633 )]
8634 pub name: String,
8635 #[serde(
8636 default,
8637 skip_serializing_if = "Vec::is_empty",
8638 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8639 )]
8640 pub scopes: Vec<String>,
8641}
8642
8643#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8644pub struct GetScopesResponseErrors {
8645 #[serde(default, skip_serializing_if = "Option::is_none")]
8646 pub field: Option<serde_json::Value>,
8647 #[serde(
8651 default,
8652 skip_serializing_if = "String::is_empty",
8653 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8654 )]
8655 pub message: String,
8656}
8657
8658#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8659pub struct GetScopesResponseData {
8660 #[serde(
8664 default,
8665 skip_serializing_if = "Vec::is_empty",
8666 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8667 )]
8668 pub errors: Vec<GetScopesResponseErrors>,
8669}
8670
8671#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8672pub struct Ips {
8673 #[serde(
8677 default,
8678 skip_serializing_if = "String::is_empty",
8679 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8680 )]
8681 pub ip: String,
8682}
8683
8684#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8685pub struct PostAccessSettingsWhitelistRequest {
8686 #[serde(
8690 default,
8691 skip_serializing_if = "Vec::is_empty",
8692 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8693 )]
8694 pub ips: Vec<Ips>,
8695}
8696
8697#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8698pub struct DeleteAccessSettingsWhitelistRequest {
8699 #[serde(
8703 default,
8704 skip_serializing_if = "Vec::is_empty",
8705 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8706 )]
8707 pub ids: Vec<i64>,
8708}
8709
8710#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8711pub struct GetAccessSettingsActivityResponseResult {
8712 #[serde(
8716 default,
8717 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8718 )]
8719 pub allowed: bool,
8720 #[serde(
8724 default,
8725 skip_serializing_if = "String::is_empty",
8726 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8727 )]
8728 pub auth_method: String,
8729 #[serde(
8730 default,
8731 skip_serializing_if = "crate::utils::zero_i64",
8732 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
8733 )]
8734 pub first_at: i64,
8735 #[serde(
8739 default,
8740 skip_serializing_if = "String::is_empty",
8741 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8742 )]
8743 pub ip: String,
8744 #[serde(
8745 default,
8746 skip_serializing_if = "crate::utils::zero_i64",
8747 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
8748 )]
8749 pub last_at: i64,
8750 #[serde(
8754 default,
8755 skip_serializing_if = "String::is_empty",
8756 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8757 )]
8758 pub location: String,
8759}
8760
8761#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8762pub struct GetAccessSettingsActivityResponse {
8763 #[serde(
8767 default,
8768 skip_serializing_if = "Vec::is_empty",
8769 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8770 )]
8771 pub result: Vec<GetAccessSettingsActivityResponseResult>,
8772}
8773
8774#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8776pub struct PostSsoCertificatesRequest {
8777 #[serde(default, skip_serializing_if = "Option::is_none")]
8781 pub enabled: Option<bool>,
8782 #[serde(
8786 default,
8787 skip_serializing_if = "String::is_empty",
8788 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8789 )]
8790 pub integration_id: String,
8791 #[serde(
8795 default,
8796 skip_serializing_if = "String::is_empty",
8797 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8798 )]
8799 pub public_certificate: String,
8800}
8801
8802#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8803pub struct PatchSsoCertificatesCertRequest {
8804 #[serde(default, skip_serializing_if = "Option::is_none")]
8805 pub enabled: Option<bool>,
8806 #[serde(
8807 default,
8808 skip_serializing_if = "String::is_empty",
8809 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8810 )]
8811 pub integration_id: String,
8812 #[serde(
8813 default,
8814 skip_serializing_if = "String::is_empty",
8815 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8816 )]
8817 pub public_certificate: String,
8818}
8819
8820#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8821pub struct PatchSsoTeammatesUsernameRequest {
8822 #[serde(
8823 default,
8824 skip_serializing_if = "String::is_empty",
8825 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8826 )]
8827 pub first_name: String,
8828 #[serde(default, skip_serializing_if = "Option::is_none")]
8829 pub is_admin: Option<bool>,
8830 #[serde(
8831 default,
8832 skip_serializing_if = "String::is_empty",
8833 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8834 )]
8835 pub last_name: String,
8836 #[serde(
8837 default,
8838 skip_serializing_if = "Vec::is_empty",
8839 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8840 )]
8841 pub scopes: Vec<String>,
8842}
8843
8844#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8845pub struct GetMailSettingsResponseResult {
8846 #[serde(
8850 default,
8851 skip_serializing_if = "String::is_empty",
8852 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8853 )]
8854 pub description: String,
8855 #[serde(
8859 default,
8860 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8861 )]
8862 pub enabled: bool,
8863 #[serde(
8867 default,
8868 skip_serializing_if = "String::is_empty",
8869 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8870 )]
8871 pub name: String,
8872 #[serde(
8876 default,
8877 skip_serializing_if = "String::is_empty",
8878 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8879 )]
8880 pub title: String,
8881}
8882
8883#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8884pub struct GetMailSettingsResponse {
8885 #[serde(
8889 default,
8890 skip_serializing_if = "Vec::is_empty",
8891 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8892 )]
8893 pub result: Vec<GetMailSettingsResponseResult>,
8894}
8895
8896#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8897pub struct PatchMailSettingsAddressWhitelistRequest {
8898 #[serde(default, skip_serializing_if = "Option::is_none")]
8899 pub enabled: Option<bool>,
8900 #[serde(
8901 default,
8902 skip_serializing_if = "Vec::is_empty",
8903 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8904 )]
8905 pub list: Vec<String>,
8906}
8907
8908#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8909pub struct PatchMailSettingsTemplateRequest {
8910 #[serde(default, skip_serializing_if = "Option::is_none")]
8911 pub enabled: Option<bool>,
8912 #[serde(
8913 default,
8914 skip_serializing_if = "String::is_empty",
8915 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8916 )]
8917 pub html_content: String,
8918}
8919
8920#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8921pub struct PatchMailSettingsTemplateResponse {
8922 #[serde(
8926 default,
8927 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8928 )]
8929 pub enabled: bool,
8930 #[serde(
8934 default,
8935 skip_serializing_if = "String::is_empty",
8936 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8937 )]
8938 pub html_content: String,
8939}
8940
8941#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8942pub struct PatchPartnerSettingsNewRelicRequest {
8943 #[serde(default, skip_serializing_if = "Option::is_none")]
8944 pub enable_subuser_statistics: Option<bool>,
8945 #[serde(default, skip_serializing_if = "Option::is_none")]
8946 pub enabled: Option<bool>,
8947 #[serde(
8948 default,
8949 skip_serializing_if = "String::is_empty",
8950 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8951 )]
8952 pub license_key: String,
8953}
8954
8955#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8956pub struct GetPartnerSettingsResponse {
8957 #[serde(
8961 default,
8962 skip_serializing_if = "Vec::is_empty",
8963 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
8964 )]
8965 pub result: Vec<GetMailSettingsResponseResult>,
8966}
8967
8968#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8969pub struct GetTeammatesResponseResult {
8970 #[serde(
8974 default,
8975 skip_serializing_if = "String::is_empty",
8976 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8977 )]
8978 pub address: String,
8979 #[serde(
8983 default,
8984 skip_serializing_if = "String::is_empty",
8985 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
8986 rename = "address2"
8987 )]
8988 pub address_2: String,
8989 #[serde(
8993 default,
8994 skip_serializing_if = "String::is_empty",
8995 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
8996 )]
8997 pub city: String,
8998 #[serde(
9002 default,
9003 skip_serializing_if = "String::is_empty",
9004 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9005 )]
9006 pub country: String,
9007 #[serde(
9011 default,
9012 skip_serializing_if = "String::is_empty",
9013 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9014 )]
9015 pub email: String,
9016 #[serde(
9020 default,
9021 skip_serializing_if = "String::is_empty",
9022 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9023 )]
9024 pub first_name: String,
9025 #[serde(
9029 default,
9030 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9031 )]
9032 pub is_admin: bool,
9033 #[serde(
9037 default,
9038 skip_serializing_if = "String::is_empty",
9039 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9040 )]
9041 pub last_name: String,
9042 #[serde(
9046 default,
9047 skip_serializing_if = "String::is_empty",
9048 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9049 )]
9050 pub phone: String,
9051 #[serde(
9055 default,
9056 skip_serializing_if = "String::is_empty",
9057 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9058 )]
9059 pub state: String,
9060 #[serde(default, skip_serializing_if = "Option::is_none")]
9064 pub user_type: Option<UserType>,
9065 #[serde(
9069 default,
9070 skip_serializing_if = "String::is_empty",
9071 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9072 )]
9073 pub username: String,
9074 #[serde(
9078 default,
9079 skip_serializing_if = "String::is_empty",
9080 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9081 )]
9082 pub website: String,
9083 #[serde(
9087 default,
9088 skip_serializing_if = "String::is_empty",
9089 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9090 )]
9091 pub zip: String,
9092}
9093
9094#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9095pub struct GetTeammatesResponse {
9096 #[serde(
9097 default,
9098 skip_serializing_if = "Vec::is_empty",
9099 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9100 )]
9101 pub result: Vec<GetTeammatesResponseResult>,
9102}
9103
9104#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9105pub struct PostTeammatesRequest {
9106 #[serde(
9110 default,
9111 skip_serializing_if = "String::is_empty",
9112 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9113 )]
9114 pub email: String,
9115 #[serde(default, skip_serializing_if = "Option::is_none")]
9119 pub is_admin: Option<bool>,
9120 #[serde(
9124 default,
9125 skip_serializing_if = "Vec::is_empty",
9126 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9127 )]
9128 pub scopes: Vec<String>,
9129}
9130
9131#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9132pub struct PostTeammatesResponse {
9133 #[serde(
9137 default,
9138 skip_serializing_if = "String::is_empty",
9139 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9140 )]
9141 pub email: String,
9142 #[serde(
9146 default,
9147 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9148 )]
9149 pub is_admin: bool,
9150 #[serde(
9154 default,
9155 skip_serializing_if = "Vec::is_empty",
9156 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9157 )]
9158 pub scopes: Vec<String>,
9159 #[serde(
9163 default,
9164 skip_serializing_if = "String::is_empty",
9165 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9166 )]
9167 pub token: String,
9168}
9169
9170#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9171pub struct PostTeammatesResponseErrors {
9172 #[serde(
9176 default,
9177 skip_serializing_if = "String::is_empty",
9178 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9179 )]
9180 pub field: String,
9181 #[serde(
9185 default,
9186 skip_serializing_if = "String::is_empty",
9187 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9188 )]
9189 pub message: String,
9190}
9191
9192#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9193pub struct PostSendersResponse {
9194 #[serde(
9195 default,
9196 skip_serializing_if = "Vec::is_empty",
9197 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9198 )]
9199 pub errors: Vec<PostTeammatesResponseErrors>,
9200}
9201
9202#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9203pub struct GetScopesRequestsResponse {
9204 #[serde(
9208 default,
9209 skip_serializing_if = "String::is_empty",
9210 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9211 )]
9212 pub email: String,
9213 #[serde(
9217 default,
9218 skip_serializing_if = "String::is_empty",
9219 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9220 )]
9221 pub first_name: String,
9222 #[serde(
9223 default,
9224 skip_serializing_if = "crate::utils::zero_i64",
9225 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9226 )]
9227 pub id: i64,
9228 #[serde(
9232 default,
9233 skip_serializing_if = "String::is_empty",
9234 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9235 )]
9236 pub last_name: String,
9237 #[serde(
9241 default,
9242 skip_serializing_if = "String::is_empty",
9243 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9244 )]
9245 pub scope_group_name: String,
9246 #[serde(
9250 default,
9251 skip_serializing_if = "String::is_empty",
9252 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9253 )]
9254 pub username: String,
9255}
9256
9257#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9258pub struct GetTeammatesPendingResponseResult {
9259 #[serde(
9263 default,
9264 skip_serializing_if = "String::is_empty",
9265 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9266 )]
9267 pub email: String,
9268 #[serde(
9269 default,
9270 skip_serializing_if = "crate::utils::zero_i64",
9271 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9272 )]
9273 pub expiration_date: i64,
9274 #[serde(
9278 default,
9279 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9280 )]
9281 pub is_admin: bool,
9282 #[serde(
9286 default,
9287 skip_serializing_if = "Vec::is_empty",
9288 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9289 )]
9290 pub scopes: Vec<String>,
9291 #[serde(
9295 default,
9296 skip_serializing_if = "String::is_empty",
9297 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9298 )]
9299 pub token: String,
9300}
9301
9302#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9303pub struct GetTeammatesPendingResponse {
9304 #[serde(
9305 default,
9306 skip_serializing_if = "Vec::is_empty",
9307 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9308 )]
9309 pub result: Vec<GetTeammatesPendingResponseResult>,
9310}
9311
9312#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9313pub struct GetTeammatesUsernameResponse {
9314 #[serde(
9318 default,
9319 skip_serializing_if = "String::is_empty",
9320 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9321 )]
9322 pub address: String,
9323 #[serde(
9327 default,
9328 skip_serializing_if = "String::is_empty",
9329 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
9330 rename = "address2"
9331 )]
9332 pub address_2: String,
9333 #[serde(
9337 default,
9338 skip_serializing_if = "String::is_empty",
9339 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9340 )]
9341 pub city: String,
9342 #[serde(
9346 default,
9347 skip_serializing_if = "String::is_empty",
9348 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9349 )]
9350 pub country: String,
9351 #[serde(
9355 default,
9356 skip_serializing_if = "String::is_empty",
9357 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9358 )]
9359 pub email: String,
9360 #[serde(
9364 default,
9365 skip_serializing_if = "String::is_empty",
9366 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9367 )]
9368 pub first_name: String,
9369 #[serde(
9373 default,
9374 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9375 )]
9376 pub is_admin: bool,
9377 #[serde(
9381 default,
9382 skip_serializing_if = "String::is_empty",
9383 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9384 )]
9385 pub last_name: String,
9386 #[serde(
9390 default,
9391 skip_serializing_if = "String::is_empty",
9392 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9393 )]
9394 pub phone: String,
9395 #[serde(
9399 default,
9400 skip_serializing_if = "Vec::is_empty",
9401 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9402 )]
9403 pub scopes: Vec<String>,
9404 #[serde(
9408 default,
9409 skip_serializing_if = "String::is_empty",
9410 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9411 )]
9412 pub state: String,
9413 #[serde(default, skip_serializing_if = "Option::is_none")]
9417 pub user_type: Option<UserType>,
9418 #[serde(
9422 default,
9423 skip_serializing_if = "String::is_empty",
9424 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9425 )]
9426 pub username: String,
9427 #[serde(
9431 default,
9432 skip_serializing_if = "String::is_empty",
9433 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9434 )]
9435 pub website: String,
9436 #[serde(
9440 default,
9441 skip_serializing_if = "String::is_empty",
9442 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9443 )]
9444 pub zip: String,
9445}
9446
9447#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9448pub struct PatchTeammatesUsernameRequest {
9449 #[serde(default, skip_serializing_if = "Option::is_none")]
9453 pub is_admin: Option<bool>,
9454 #[serde(
9458 default,
9459 skip_serializing_if = "Vec::is_empty",
9460 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
9461 )]
9462 pub scopes: Vec<String>,
9463}
9464
9465#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9466pub struct PatchScopesRequestsApproveResponse {
9467 #[serde(
9471 default,
9472 skip_serializing_if = "String::is_empty",
9473 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9474 )]
9475 pub scope_group_name: String,
9476}
9477
9478#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
9482pub enum GetAlertsResponseType {
9483 #[serde(rename = "stats_notification")]
9484 StatsNotification,
9485 #[serde(rename = "usage_limit")]
9486 UsageLimit,
9487 #[serde(rename = "")]
9488 #[default]
9489 Noop,
9490 #[serde(other)]
9491 FallthroughString,
9492}
9493
9494impl std::fmt::Display for GetAlertsResponseType {
9495 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9496 match self {
9497 GetAlertsResponseType::StatsNotification => "stats_notification",
9498 GetAlertsResponseType::UsageLimit => "usage_limit",
9499 GetAlertsResponseType::Noop => "",
9500 GetAlertsResponseType::FallthroughString => "*",
9501 }
9502 .fmt(f)
9503 }
9504}
9505
9506impl GetAlertsResponseType {
9507 pub fn is_noop(&self) -> bool {
9508 matches!(self, GetAlertsResponseType::Noop)
9509 }
9510}
9511
9512#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9513pub struct GetAlertsResponse {
9514 #[serde(
9515 default,
9516 skip_serializing_if = "crate::utils::zero_i64",
9517 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9518 )]
9519 pub created_at: i64,
9520 #[serde(
9524 default,
9525 skip_serializing_if = "String::is_empty",
9526 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9527 )]
9528 pub email_to: String,
9529 #[serde(
9533 default,
9534 skip_serializing_if = "String::is_empty",
9535 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9536 )]
9537 pub frequency: String,
9538 #[serde(
9539 default,
9540 skip_serializing_if = "crate::utils::zero_i64",
9541 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9542 )]
9543 pub id: i64,
9544 #[serde(
9545 default,
9546 skip_serializing_if = "crate::utils::zero_i64",
9547 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9548 )]
9549 pub percentage: i64,
9550 #[serde(
9554 default,
9555 skip_serializing_if = "GetAlertsResponseType::is_noop",
9556 rename = "type"
9557 )]
9558 pub type_: GetAlertsResponseType,
9559 #[serde(
9560 default,
9561 skip_serializing_if = "crate::utils::zero_i64",
9562 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9563 )]
9564 pub updated_at: i64,
9565}
9566
9567#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9568pub struct PostAlertsRequest {
9569 #[serde(
9573 default,
9574 skip_serializing_if = "String::is_empty",
9575 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9576 )]
9577 pub email_to: String,
9578 #[serde(
9579 default,
9580 skip_serializing_if = "String::is_empty",
9581 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9582 )]
9583 pub frequency: String,
9584 #[serde(
9585 default,
9586 skip_serializing_if = "crate::utils::zero_i64",
9587 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9588 )]
9589 pub percentage: i64,
9590 #[serde(
9594 default,
9595 skip_serializing_if = "GetAlertsResponseType::is_noop",
9596 rename = "type"
9597 )]
9598 pub type_: GetAlertsResponseType,
9599}
9600
9601#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9602pub struct PostAlertsResponse {
9603 #[serde(
9604 default,
9605 skip_serializing_if = "crate::utils::zero_i64",
9606 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9607 )]
9608 pub created_at: i64,
9609 #[serde(
9613 default,
9614 skip_serializing_if = "String::is_empty",
9615 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9616 )]
9617 pub email_to: String,
9618 #[serde(
9622 default,
9623 skip_serializing_if = "String::is_empty",
9624 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9625 )]
9626 pub frequency: String,
9627 #[serde(
9628 default,
9629 skip_serializing_if = "crate::utils::zero_i64",
9630 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9631 )]
9632 pub id: i64,
9633 #[serde(
9634 default,
9635 skip_serializing_if = "crate::utils::zero_i64",
9636 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9637 )]
9638 pub percentage: i64,
9639 #[serde(
9643 default,
9644 skip_serializing_if = "String::is_empty",
9645 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
9646 rename = "type"
9647 )]
9648 pub type_: String,
9649 #[serde(
9650 default,
9651 skip_serializing_if = "crate::utils::zero_i64",
9652 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9653 )]
9654 pub updated_at: i64,
9655}
9656
9657#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
9661pub enum GetAlertsAlertResponseType {
9662 #[serde(rename = "stats_notification")]
9663 StatsNotification,
9664 #[serde(rename = "usage_alert")]
9665 UsageAlert,
9666 #[serde(rename = "")]
9667 #[default]
9668 Noop,
9669 #[serde(other)]
9670 FallthroughString,
9671}
9672
9673impl std::fmt::Display for GetAlertsAlertResponseType {
9674 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9675 match self {
9676 GetAlertsAlertResponseType::StatsNotification => "stats_notification",
9677 GetAlertsAlertResponseType::UsageAlert => "usage_alert",
9678 GetAlertsAlertResponseType::Noop => "",
9679 GetAlertsAlertResponseType::FallthroughString => "*",
9680 }
9681 .fmt(f)
9682 }
9683}
9684
9685impl GetAlertsAlertResponseType {
9686 pub fn is_noop(&self) -> bool {
9687 matches!(self, GetAlertsAlertResponseType::Noop)
9688 }
9689}
9690
9691#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9692pub struct GetAlertsAlertResponse {
9693 #[serde(
9694 default,
9695 skip_serializing_if = "crate::utils::zero_i64",
9696 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9697 )]
9698 pub created_at: i64,
9699 #[serde(
9703 default,
9704 skip_serializing_if = "String::is_empty",
9705 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9706 )]
9707 pub email_to: String,
9708 #[serde(
9712 default,
9713 skip_serializing_if = "String::is_empty",
9714 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9715 )]
9716 pub frequency: String,
9717 #[serde(
9718 default,
9719 skip_serializing_if = "crate::utils::zero_i64",
9720 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9721 )]
9722 pub id: i64,
9723 #[serde(
9724 default,
9725 skip_serializing_if = "crate::utils::zero_i64",
9726 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9727 )]
9728 pub percentage: i64,
9729 #[serde(
9733 default,
9734 skip_serializing_if = "GetAlertsAlertResponseType::is_noop",
9735 rename = "type"
9736 )]
9737 pub type_: GetAlertsAlertResponseType,
9738 #[serde(
9739 default,
9740 skip_serializing_if = "crate::utils::zero_i64",
9741 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9742 )]
9743 pub updated_at: i64,
9744}
9745
9746#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9747pub struct PatchAlertsAlertRequest {
9748 #[serde(
9749 default,
9750 skip_serializing_if = "String::is_empty",
9751 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9752 )]
9753 pub email_to: String,
9754 #[serde(
9755 default,
9756 skip_serializing_if = "String::is_empty",
9757 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9758 )]
9759 pub frequency: String,
9760 #[serde(
9761 default,
9762 skip_serializing_if = "crate::utils::zero_i64",
9763 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9764 )]
9765 pub percentage: i64,
9766}
9767
9768#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9769pub struct GetUserProfileResponse {
9770 #[serde(
9774 default,
9775 skip_serializing_if = "String::is_empty",
9776 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9777 )]
9778 pub address: String,
9779 #[serde(
9780 default,
9781 skip_serializing_if = "String::is_empty",
9782 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
9783 rename = "address2"
9784 )]
9785 pub address_2: String,
9786 #[serde(
9790 default,
9791 skip_serializing_if = "String::is_empty",
9792 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9793 )]
9794 pub city: String,
9795 #[serde(
9799 default,
9800 skip_serializing_if = "String::is_empty",
9801 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9802 )]
9803 pub company: String,
9804 #[serde(
9808 default,
9809 skip_serializing_if = "String::is_empty",
9810 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9811 )]
9812 pub country: String,
9813 #[serde(
9817 default,
9818 skip_serializing_if = "String::is_empty",
9819 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9820 )]
9821 pub first_name: String,
9822 #[serde(
9826 default,
9827 skip_serializing_if = "String::is_empty",
9828 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9829 )]
9830 pub last_name: String,
9831 #[serde(
9835 default,
9836 skip_serializing_if = "String::is_empty",
9837 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9838 )]
9839 pub phone: String,
9840 #[serde(
9844 default,
9845 skip_serializing_if = "String::is_empty",
9846 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9847 )]
9848 pub state: String,
9849 #[serde(
9853 default,
9854 skip_serializing_if = "String::is_empty",
9855 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9856 )]
9857 pub website: String,
9858 #[serde(
9862 default,
9863 skip_serializing_if = "String::is_empty",
9864 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9865 )]
9866 pub zip: String,
9867}
9868
9869#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
9873pub enum GetUserAccountResponseType {
9874 #[serde(rename = "free")]
9875 Free,
9876 #[serde(rename = "paid")]
9877 Paid,
9878 #[serde(rename = "")]
9879 #[default]
9880 Noop,
9881 #[serde(other)]
9882 FallthroughString,
9883}
9884
9885impl std::fmt::Display for GetUserAccountResponseType {
9886 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9887 match self {
9888 GetUserAccountResponseType::Free => "free",
9889 GetUserAccountResponseType::Paid => "paid",
9890 GetUserAccountResponseType::Noop => "",
9891 GetUserAccountResponseType::FallthroughString => "*",
9892 }
9893 .fmt(f)
9894 }
9895}
9896
9897impl GetUserAccountResponseType {
9898 pub fn is_noop(&self) -> bool {
9899 matches!(self, GetUserAccountResponseType::Noop)
9900 }
9901}
9902
9903#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9904pub struct GetUserAccountResponse {
9905 #[serde(
9909 default,
9910 skip_serializing_if = "crate::utils::zero_f64",
9911 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
9912 )]
9913 pub reputation: f64,
9914 #[serde(
9918 default,
9919 skip_serializing_if = "GetUserAccountResponseType::is_noop",
9920 rename = "type"
9921 )]
9922 pub type_: GetUserAccountResponseType,
9923}
9924
9925#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9926pub struct GetUserEmailResponse {
9927 #[serde(
9931 default,
9932 skip_serializing_if = "String::is_empty",
9933 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9934 )]
9935 pub email: String,
9936}
9937
9938#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9939pub struct PutUserEmailRequest {
9940 #[serde(
9941 default,
9942 skip_serializing_if = "String::is_empty",
9943 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9944 )]
9945 pub email: String,
9946}
9947
9948#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9949pub struct PutUserUsernameRequest {
9950 #[serde(
9951 default,
9952 skip_serializing_if = "String::is_empty",
9953 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9954 )]
9955 pub username: String,
9956}
9957
9958#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9959pub struct PutUserUsernameResponse {
9960 #[serde(
9964 default,
9965 skip_serializing_if = "String::is_empty",
9966 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9967 )]
9968 pub username: String,
9969}
9970
9971#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
9972pub struct GetUserCreditsResponse {
9973 #[serde(
9977 default,
9978 skip_serializing_if = "String::is_empty",
9979 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9980 )]
9981 pub last_reset: String,
9982 #[serde(
9986 default,
9987 skip_serializing_if = "String::is_empty",
9988 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
9989 )]
9990 pub next_reset: String,
9991 #[serde(
9992 default,
9993 skip_serializing_if = "crate::utils::zero_i64",
9994 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
9995 )]
9996 pub overage: i64,
9997 #[serde(
9998 default,
9999 skip_serializing_if = "crate::utils::zero_i64",
10000 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10001 )]
10002 pub remain: i64,
10003 #[serde(
10007 default,
10008 skip_serializing_if = "String::is_empty",
10009 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10010 )]
10011 pub reset_frequency: String,
10012 #[serde(
10013 default,
10014 skip_serializing_if = "crate::utils::zero_i64",
10015 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10016 )]
10017 pub total: i64,
10018 #[serde(
10019 default,
10020 skip_serializing_if = "crate::utils::zero_i64",
10021 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10022 )]
10023 pub used: i64,
10024}
10025
10026#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10027pub struct PutUserPasswordRequest {
10028 #[serde(
10032 default,
10033 skip_serializing_if = "String::is_empty",
10034 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10035 )]
10036 pub new_password: String,
10037 #[serde(
10041 default,
10042 skip_serializing_if = "String::is_empty",
10043 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10044 )]
10045 pub old_password: String,
10046}
10047
10048#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10049pub struct PostSubusersRequest {
10050 #[serde(
10054 default,
10055 skip_serializing_if = "String::is_empty",
10056 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10057 )]
10058 pub email: String,
10059 #[serde(
10063 default,
10064 skip_serializing_if = "Vec::is_empty",
10065 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10066 )]
10067 pub ips: Vec<std::net::Ipv4Addr>,
10068 #[serde(
10072 default,
10073 skip_serializing_if = "String::is_empty",
10074 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10075 )]
10076 pub password: String,
10077 #[serde(
10081 default,
10082 skip_serializing_if = "String::is_empty",
10083 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10084 )]
10085 pub username: String,
10086}
10087
10088#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10089pub struct PatchSubusersSubuserNameRequest {
10090 #[serde(default, skip_serializing_if = "Option::is_none")]
10091 pub disabled: Option<bool>,
10092}
10093
10094#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10095pub struct GetSubusersReputationsResponse {
10096 #[serde(
10100 default,
10101 skip_serializing_if = "crate::utils::zero_f64",
10102 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
10103 )]
10104 pub reputation: f64,
10105 #[serde(
10109 default,
10110 skip_serializing_if = "String::is_empty",
10111 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10112 )]
10113 pub username: String,
10114}
10115
10116#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10117pub struct PutSubusersSubuserNameIpsResponse {
10118 #[serde(
10122 default,
10123 skip_serializing_if = "Vec::is_empty",
10124 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10125 )]
10126 pub ips: Vec<std::net::Ipv4Addr>,
10127}
10128
10129#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
10133pub enum SortByDirection {
10134 #[serde(rename = "asc")]
10135 Asc,
10136 #[serde(rename = "desc")]
10137 #[default]
10138 Desc,
10139 #[serde(other)]
10140 FallthroughString,
10141}
10142
10143impl std::fmt::Display for SortByDirection {
10144 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
10145 match self {
10146 SortByDirection::Asc => "asc",
10147 SortByDirection::Desc => "desc",
10148 SortByDirection::FallthroughString => "*",
10149 }
10150 .fmt(f)
10151 }
10152}
10153
10154#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
10158pub enum SortByMetric {
10159 #[serde(rename = "blocks")]
10160 Blocks,
10161 #[serde(rename = "bounces")]
10162 Bounces,
10163 #[serde(rename = "clicks")]
10164 Clicks,
10165 #[serde(rename = "delivered")]
10166 #[default]
10167 Delivered,
10168 #[serde(rename = "opens")]
10169 Opens,
10170 #[serde(rename = "requests")]
10171 Requests,
10172 #[serde(rename = "unique_clicks")]
10173 UniqueClicks,
10174 #[serde(rename = "unique_opens")]
10175 UniqueOpens,
10176 #[serde(rename = "unsubscribes")]
10177 Unsubscribes,
10178 #[serde(other)]
10179 FallthroughString,
10180}
10181
10182impl std::fmt::Display for SortByMetric {
10183 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
10184 match self {
10185 SortByMetric::Blocks => "blocks",
10186 SortByMetric::Bounces => "bounces",
10187 SortByMetric::Clicks => "clicks",
10188 SortByMetric::Delivered => "delivered",
10189 SortByMetric::Opens => "opens",
10190 SortByMetric::Requests => "requests",
10191 SortByMetric::UniqueClicks => "unique_clicks",
10192 SortByMetric::UniqueOpens => "unique_opens",
10193 SortByMetric::Unsubscribes => "unsubscribes",
10194 SortByMetric::FallthroughString => "*",
10195 }
10196 .fmt(f)
10197 }
10198}
10199
10200#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10201pub struct PostWhitelabelLinksRequest {
10202 #[serde(default, skip_serializing_if = "Option::is_none")]
10203 pub default: Option<bool>,
10204 #[serde(
10208 default,
10209 skip_serializing_if = "String::is_empty",
10210 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10211 )]
10212 pub domain: String,
10213 #[serde(
10214 default,
10215 skip_serializing_if = "String::is_empty",
10216 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10217 )]
10218 pub subdomain: String,
10219}
10220
10221#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10223pub struct PostWhitelabelLinksValidateResponseValidationResultsDomainCname {
10224 #[serde(
10228 default,
10229 skip_serializing_if = "String::is_empty",
10230 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10231 )]
10232 pub reason: String,
10233 #[serde(
10237 default,
10238 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10239 )]
10240 pub valid: bool,
10241}
10242
10243#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10245pub struct ValidationResults {
10246 pub domain_cname: PostWhitelabelLinksValidateResponseValidationResultsDomainCname,
10250 #[serde(default, skip_serializing_if = "Option::is_none")]
10254 pub owner_cname: Option<PostWhitelabelLinksValidateResponseValidationResultsDomainCname>,
10255}
10256
10257#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10258pub struct PostWhitelabelLinksValidateResponse {
10259 #[serde(
10260 default,
10261 skip_serializing_if = "crate::utils::zero_i64",
10262 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10263 )]
10264 pub id: i64,
10265 #[serde(
10269 default,
10270 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10271 )]
10272 pub valid: bool,
10273 pub validation_results: ValidationResults,
10277}
10278
10279#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10280pub struct PostWhitelabelLinksValidateResponseErrors {
10281 #[serde(
10285 default,
10286 skip_serializing_if = "String::is_empty",
10287 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10288 )]
10289 pub message: String,
10290}
10291
10292#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10293pub struct PostMarketingSegmentsResponse {
10294 #[serde(
10298 default,
10299 skip_serializing_if = "Vec::is_empty",
10300 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10301 )]
10302 pub errors: Vec<PostWhitelabelLinksValidateResponseErrors>,
10303}
10304
10305#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10306pub struct PostWhitelabelLinksLinkSubuserRequest {
10307 #[serde(
10308 default,
10309 skip_serializing_if = "String::is_empty",
10310 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10311 )]
10312 pub username: String,
10313}
10314
10315#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10316pub struct PatchWhitelabelLinksRequest {
10317 #[serde(default, skip_serializing_if = "Option::is_none")]
10318 pub default: Option<bool>,
10319}
10320
10321#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10322pub struct PostIpsWarmupRequest {
10323 #[serde(
10324 default,
10325 skip_serializing_if = "String::is_empty",
10326 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10327 )]
10328 pub ip: String,
10329}
10330
10331#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10332pub struct PostIpsWarmupResponseErrors {
10333 #[serde(default, skip_serializing_if = "Option::is_none")]
10334 pub field: Option<serde_json::Value>,
10335 #[serde(
10339 default,
10340 skip_serializing_if = "String::is_empty",
10341 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10342 )]
10343 pub message: String,
10344}
10345
10346#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10347pub struct PostIpsWarmupResponse {
10348 #[serde(
10352 default,
10353 skip_serializing_if = "Vec::is_empty",
10354 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10355 )]
10356 pub errors: Vec<PostIpsWarmupResponseErrors>,
10357}
10358
10359#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10360pub struct PostWhitelabelIpsRequest {
10361 #[serde(
10365 default,
10366 skip_serializing_if = "String::is_empty",
10367 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10368 )]
10369 pub domain: String,
10370 #[serde(
10374 default,
10375 skip_serializing_if = "String::is_empty",
10376 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10377 )]
10378 pub ip: String,
10379 #[serde(
10380 default,
10381 skip_serializing_if = "String::is_empty",
10382 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10383 )]
10384 pub subdomain: String,
10385}
10386
10387#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10389pub struct PostWhitelabelIpsValidateResponseValidationResults {
10390 #[serde(default, skip_serializing_if = "Option::is_none")]
10394 pub a_record: Option<PostWhitelabelLinksValidateResponseValidationResultsDomainCname>,
10395}
10396
10397#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10398pub struct PostWhitelabelIpsValidateResponse {
10399 #[serde(
10400 default,
10401 skip_serializing_if = "crate::utils::zero_i64",
10402 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10403 )]
10404 pub id: i64,
10405 #[serde(
10409 default,
10410 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10411 )]
10412 pub valid: bool,
10413 pub validation_results: PostWhitelabelIpsValidateResponseValidationResults,
10417}
10418
10419#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10420pub struct PostValidationsEmailRequest {
10421 #[serde(
10425 default,
10426 skip_serializing_if = "String::is_empty",
10427 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10428 )]
10429 pub email: String,
10430 #[serde(
10431 default,
10432 skip_serializing_if = "String::is_empty",
10433 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10434 )]
10435 pub source: String,
10436}
10437
10438#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
10442pub enum Verdict {
10443 #[serde(rename = "Invalid")]
10444 Invalid,
10445 #[serde(rename = "Risky")]
10446 Risky,
10447 #[serde(rename = "Valid")]
10448 Valid,
10449 #[serde(rename = "")]
10450 #[default]
10451 Noop,
10452 #[serde(other)]
10453 FallthroughString,
10454}
10455
10456impl std::fmt::Display for Verdict {
10457 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
10458 match self {
10459 Verdict::Invalid => "Invalid",
10460 Verdict::Risky => "Risky",
10461 Verdict::Valid => "Valid",
10462 Verdict::Noop => "",
10463 Verdict::FallthroughString => "*",
10464 }
10465 .fmt(f)
10466 }
10467}
10468
10469impl Verdict {
10470 pub fn is_noop(&self) -> bool {
10471 matches!(self, Verdict::Noop)
10472 }
10473}
10474
10475#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10477pub struct Domain {
10478 #[serde(
10482 default,
10483 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10484 )]
10485 pub has_mx_or_a_record: bool,
10486 #[serde(
10490 default,
10491 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10492 )]
10493 pub has_valid_address_syntax: bool,
10494 #[serde(
10498 default,
10499 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10500 )]
10501 pub is_suspected_disposable_address: bool,
10502}
10503
10504#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10506pub struct LocalPart {
10507 #[serde(
10511 default,
10512 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10513 )]
10514 pub is_suspected_role_address: bool,
10515}
10516
10517#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10519pub struct Additional {
10520 #[serde(
10524 default,
10525 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10526 )]
10527 pub has_known_bounces: bool,
10528 #[serde(
10532 default,
10533 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10534 )]
10535 pub has_suspected_bounces: bool,
10536}
10537
10538#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10540pub struct Checks {
10541 pub additional: Additional,
10545 pub domain: Domain,
10549 pub local_part: LocalPart,
10553}
10554
10555#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10556pub struct PostValidationsEmailResponseResult {
10557 pub checks: Checks,
10561 #[serde(
10565 default,
10566 skip_serializing_if = "String::is_empty",
10567 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10568 )]
10569 pub email: String,
10570 #[serde(
10574 default,
10575 skip_serializing_if = "String::is_empty",
10576 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10577 )]
10578 pub host: String,
10579 #[serde(
10583 default,
10584 skip_serializing_if = "String::is_empty",
10585 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10586 )]
10587 pub ip_address: String,
10588 #[serde(
10592 default,
10593 skip_serializing_if = "String::is_empty",
10594 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10595 )]
10596 pub local: String,
10597 #[serde(
10601 default,
10602 skip_serializing_if = "crate::utils::zero_f64",
10603 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
10604 )]
10605 pub score: f64,
10606 #[serde(
10610 default,
10611 skip_serializing_if = "String::is_empty",
10612 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10613 )]
10614 pub source: String,
10615 #[serde(
10619 default,
10620 skip_serializing_if = "String::is_empty",
10621 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10622 )]
10623 pub suggestion: String,
10624 #[serde(default, skip_serializing_if = "Verdict::is_noop")]
10628 pub verdict: Verdict,
10629}
10630
10631#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10632pub struct PostValidationsEmailResponse {
10633 pub result: PostValidationsEmailResponseResult,
10634}
10635
10636#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10637pub struct PostWhitelabelDnsEmailRequest {
10638 #[serde(
10639 default,
10640 skip_serializing_if = "crate::utils::zero_i64",
10641 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10642 )]
10643 pub domain_id: i64,
10644 #[serde(
10648 default,
10649 skip_serializing_if = "String::is_empty",
10650 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10651 )]
10652 pub email: String,
10653 #[serde(
10654 default,
10655 skip_serializing_if = "crate::utils::zero_i64",
10656 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10657 )]
10658 pub link_id: i64,
10659 #[serde(
10660 default,
10661 skip_serializing_if = "String::is_empty",
10662 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10663 )]
10664 pub message: String,
10665}
10666
10667#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10668pub struct PostWhitelabelDnsEmailResponseErrors {
10669 #[serde(
10673 default,
10674 skip_serializing_if = "String::is_empty",
10675 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10676 )]
10677 pub error: String,
10678 #[serde(
10682 default,
10683 skip_serializing_if = "String::is_empty",
10684 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10685 )]
10686 pub field: String,
10687}
10688
10689#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10690pub struct PostWhitelabelDnsEmailResponse {
10691 #[serde(default, skip_serializing_if = "Option::is_none")]
10692 pub errors: Option<PostWhitelabelDnsEmailResponseErrors>,
10693}
10694
10695#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10696pub struct GetIpsAssignedResponse {
10697 #[serde(
10701 default,
10702 skip_serializing_if = "String::is_empty",
10703 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10704 )]
10705 pub ip: String,
10706 #[serde(
10710 default,
10711 skip_serializing_if = "Vec::is_empty",
10712 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10713 )]
10714 pub pools: Vec<String>,
10715 #[serde(
10716 default,
10717 skip_serializing_if = "crate::utils::zero_i64",
10718 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10719 )]
10720 pub start_date: i64,
10721 #[serde(
10725 default,
10726 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10727 )]
10728 pub warmup: bool,
10729}
10730
10731#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10732pub struct GetIpsPoolsPoolNameResponse {
10733 #[serde(
10737 default,
10738 skip_serializing_if = "Vec::is_empty",
10739 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10740 )]
10741 pub ips: Vec<String>,
10742 #[serde(
10746 default,
10747 skip_serializing_if = "String::is_empty",
10748 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10749 )]
10750 pub pool_name: String,
10751}
10752
10753#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10754pub struct PutIpsPoolsPoolNameRequest {
10755 #[serde(
10756 default,
10757 skip_serializing_if = "String::is_empty",
10758 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10759 )]
10760 pub name: String,
10761}
10762
10763#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10764pub struct DeleteIpsPoolsPoolNameResponse {
10765 #[serde(
10769 default,
10770 skip_serializing_if = "String::is_empty",
10771 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10772 )]
10773 pub error: String,
10774}
10775
10776#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10777pub struct GetIpsResponse {
10778 #[serde(
10779 default,
10780 skip_serializing_if = "crate::utils::zero_i64",
10781 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10782 )]
10783 pub assigned_at: i64,
10784 #[serde(
10788 default,
10789 skip_serializing_if = "String::is_empty",
10790 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10791 )]
10792 pub ip: String,
10793 #[serde(
10797 default,
10798 skip_serializing_if = "Vec::is_empty",
10799 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10800 )]
10801 pub pools: Vec<String>,
10802 #[serde(
10806 default,
10807 skip_serializing_if = "String::is_empty",
10808 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10809 )]
10810 pub rdns: String,
10811 #[serde(
10815 default,
10816 skip_serializing_if = "crate::utils::zero_f64",
10817 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
10818 )]
10819 pub start_date: f64,
10820 #[serde(
10824 default,
10825 skip_serializing_if = "Vec::is_empty",
10826 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10827 )]
10828 pub subusers: Vec<String>,
10829 #[serde(
10833 default,
10834 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10835 )]
10836 pub warmup: bool,
10837 #[serde(
10841 default,
10842 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10843 )]
10844 pub whitelabeled: bool,
10845}
10846
10847#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10848pub struct PostIpsRequest {
10849 #[serde(
10850 default,
10851 skip_serializing_if = "crate::utils::zero_i64",
10852 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10853 )]
10854 pub count: i64,
10855 #[serde(
10856 default,
10857 skip_serializing_if = "Vec::is_empty",
10858 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10859 )]
10860 pub subusers: Vec<String>,
10861 #[serde(default, skip_serializing_if = "Option::is_none")]
10862 pub warmup: Option<bool>,
10863}
10864
10865#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10866pub struct PostIpsResponse {
10867 #[serde(
10871 default,
10872 skip_serializing_if = "String::is_empty",
10873 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10874 )]
10875 pub ip: String,
10876 #[serde(
10880 default,
10881 skip_serializing_if = "Vec::is_empty",
10882 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10883 )]
10884 pub subusers: Vec<String>,
10885}
10886
10887#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10888pub struct PostIpsResponseData {
10889 #[serde(
10893 default,
10894 skip_serializing_if = "Vec::is_empty",
10895 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10896 )]
10897 pub ips: Vec<PostIpsResponse>,
10898 #[serde(
10899 default,
10900 skip_serializing_if = "crate::utils::zero_i64",
10901 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10902 )]
10903 pub remaining_ips: i64,
10904 #[serde(
10908 default,
10909 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10910 )]
10911 pub warmup: bool,
10912}
10913
10914#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10915pub struct GetIpsRemainingResponseResults {
10916 #[serde(
10920 default,
10921 skip_serializing_if = "String::is_empty",
10922 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10923 )]
10924 pub period: String,
10925 #[serde(
10929 default,
10930 skip_serializing_if = "crate::utils::zero_f64",
10931 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
10932 )]
10933 pub price_per_ip: f64,
10934 #[serde(
10935 default,
10936 skip_serializing_if = "crate::utils::zero_i64",
10937 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10938 )]
10939 pub remaining: i64,
10940}
10941
10942#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10943pub struct GetIpsRemainingResponse {
10944 #[serde(
10945 default,
10946 skip_serializing_if = "Vec::is_empty",
10947 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10948 )]
10949 pub results: Vec<GetIpsRemainingResponseResults>,
10950}
10951
10952#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10953pub struct GetIpsIpAddressResponse {
10954 #[serde(
10958 default,
10959 skip_serializing_if = "String::is_empty",
10960 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10961 )]
10962 pub ip: String,
10963 #[serde(
10967 default,
10968 skip_serializing_if = "Vec::is_empty",
10969 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10970 )]
10971 pub pools: Vec<String>,
10972 #[serde(
10976 default,
10977 skip_serializing_if = "String::is_empty",
10978 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
10979 )]
10980 pub rdns: String,
10981 #[serde(
10982 default,
10983 skip_serializing_if = "crate::utils::zero_i64",
10984 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
10985 )]
10986 pub start_date: i64,
10987 #[serde(
10991 default,
10992 skip_serializing_if = "Vec::is_empty",
10993 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
10994 )]
10995 pub subusers: Vec<String>,
10996 #[serde(
11000 default,
11001 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11002 )]
11003 pub warmup: bool,
11004 #[serde(
11008 default,
11009 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11010 )]
11011 pub whitelabeled: bool,
11012}
11013
11014#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11015pub struct PostWhitelabelDomainsRequest {
11016 #[serde(default, skip_serializing_if = "Option::is_none")]
11017 pub automatic_security: Option<bool>,
11018 #[serde(
11019 default,
11020 skip_serializing_if = "String::is_empty",
11021 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11022 )]
11023 pub custom_dkim_selector: String,
11024 #[serde(default, skip_serializing_if = "Option::is_none")]
11025 pub custom_spf: Option<bool>,
11026 #[serde(default, skip_serializing_if = "Option::is_none")]
11027 pub default: Option<bool>,
11028 #[serde(
11032 default,
11033 skip_serializing_if = "String::is_empty",
11034 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11035 )]
11036 pub domain: String,
11037 #[serde(
11038 default,
11039 skip_serializing_if = "Vec::is_empty",
11040 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11041 )]
11042 pub ips: Vec<String>,
11043 #[serde(
11044 default,
11045 skip_serializing_if = "String::is_empty",
11046 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11047 )]
11048 pub subdomain: String,
11049 #[serde(
11050 default,
11051 skip_serializing_if = "String::is_empty",
11052 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11053 )]
11054 pub username: String,
11055}
11056
11057#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11058pub struct PatchWhitelabelDomainsDomainRequest {
11059 #[serde(default, skip_serializing_if = "Option::is_none")]
11060 pub custom_spf: Option<bool>,
11061 #[serde(default, skip_serializing_if = "Option::is_none")]
11062 pub default: Option<bool>,
11063}
11064
11065#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11067pub struct MailCname {
11068 #[serde(
11072 default,
11073 skip_serializing_if = "String::is_empty",
11074 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11075 )]
11076 pub reason: String,
11077 #[serde(
11081 default,
11082 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11083 )]
11084 pub valid: bool,
11085}
11086
11087#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11089pub struct Dkim1 {
11090 #[serde(
11094 default,
11095 skip_serializing_if = "String::is_empty",
11096 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11097 )]
11098 pub reason: String,
11099 #[serde(
11103 default,
11104 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11105 )]
11106 pub valid: bool,
11107}
11108
11109#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11111pub struct Spf {
11112 #[serde(
11116 default,
11117 skip_serializing_if = "String::is_empty",
11118 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11119 )]
11120 pub reason: String,
11121 #[serde(
11125 default,
11126 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11127 )]
11128 pub valid: bool,
11129}
11130
11131#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11133pub struct PostWhitelabelDomainsValidateResponseValidationResults {
11134 #[serde(default, skip_serializing_if = "Option::is_none", rename = "dkim1")]
11138 pub dkim_1: Option<Dkim1>,
11139 #[serde(default, skip_serializing_if = "Option::is_none", rename = "dkim2")]
11143 pub dkim_2: Option<Dkim1>,
11144 #[serde(default, skip_serializing_if = "Option::is_none")]
11148 pub mail_cname: Option<MailCname>,
11149 #[serde(default, skip_serializing_if = "Option::is_none")]
11153 pub spf: Option<Spf>,
11154}
11155
11156#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11157pub struct PostWhitelabelDomainsValidateResponse {
11158 #[serde(
11159 default,
11160 skip_serializing_if = "crate::utils::zero_i64",
11161 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
11162 )]
11163 pub id: i64,
11164 #[serde(
11168 default,
11169 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11170 )]
11171 pub valid: bool,
11172 #[serde(default, skip_serializing_if = "Option::is_none")]
11176 pub validation_results: Option<PostWhitelabelDomainsValidateResponseValidationResults>,
11177}
11178
11179#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11180pub struct PostWhitelabelDomainsValidateResponseData {
11181 #[serde(
11185 default,
11186 skip_serializing_if = "Vec::is_empty",
11187 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11188 )]
11189 pub errors: Vec<PostWhitelabelLinksValidateResponseErrors>,
11190}
11191
11192#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11193pub struct GetVerifiedSendersDomainsResponseResults {
11194 #[serde(
11198 default,
11199 skip_serializing_if = "Vec::is_empty",
11200 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11201 )]
11202 pub hard_failures: Vec<String>,
11203 #[serde(
11207 default,
11208 skip_serializing_if = "Vec::is_empty",
11209 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11210 )]
11211 pub soft_failures: Vec<String>,
11212}
11213
11214#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11215pub struct GetVerifiedSendersDomainsResponse {
11216 pub results: GetVerifiedSendersDomainsResponseResults,
11217}
11218
11219#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11220pub struct GetVerifiedSendersStepsCompletedResponseResults {
11221 #[serde(
11225 default,
11226 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11227 )]
11228 pub domain_verified: bool,
11229 #[serde(
11233 default,
11234 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11235 )]
11236 pub sender_verified: bool,
11237}
11238
11239#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11240pub struct GetVerifiedSendersStepsCompletedResponse {
11241 #[serde(default, skip_serializing_if = "Option::is_none")]
11242 pub results: Option<GetVerifiedSendersStepsCompletedResponseResults>,
11243}
11244
11245#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11246pub struct GetVerifiedSendersResponse {
11247 #[serde(
11248 default,
11249 skip_serializing_if = "Vec::is_empty",
11250 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11251 )]
11252 pub results: Vec<VerifiedSenderResponseSchema>,
11253}
11254
11255#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11256pub struct PostVerifiedSendersResponseErrors {
11257 #[serde(
11261 default,
11262 skip_serializing_if = "String::is_empty",
11263 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11264 )]
11265 pub error_id: String,
11266 #[serde(
11270 default,
11271 skip_serializing_if = "String::is_empty",
11272 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11273 )]
11274 pub field: String,
11275 #[serde(
11279 default,
11280 skip_serializing_if = "String::is_empty",
11281 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11282 )]
11283 pub message: String,
11284}
11285
11286#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11287pub struct PostVerifiedSendersResponse {
11288 #[serde(
11289 default,
11290 skip_serializing_if = "Vec::is_empty",
11291 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11292 )]
11293 pub errors: Vec<PostVerifiedSendersResponseErrors>,
11294}
11295
11296#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11297pub struct GetVerifiedSendersVerifyTokenResponseErrors {
11298 #[serde(
11302 default,
11303 skip_serializing_if = "String::is_empty",
11304 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11305 )]
11306 pub error_id: String,
11307 #[serde(
11311 default,
11312 skip_serializing_if = "String::is_empty",
11313 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11314 )]
11315 pub message: String,
11316}
11317
11318#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11319pub struct PatchVerifiedSendersResponse {
11320 #[serde(
11321 default,
11322 skip_serializing_if = "Vec::is_empty",
11323 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11324 )]
11325 pub errors: Vec<GetVerifiedSendersVerifyTokenResponseErrors>,
11326}
11327
11328#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11329pub struct DeleteVerifiedSendersResponse {
11330 #[serde(
11331 default,
11332 skip_serializing_if = "Vec::is_empty",
11333 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11334 )]
11335 pub errors: Vec<GetVerifiedSendersVerifyTokenResponseErrors>,
11336}
11337
11338#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11339pub struct PutDesignRequest {
11340 #[serde(
11341 default,
11342 skip_serializing_if = "Vec::is_empty",
11343 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11344 )]
11345 pub categories: Vec<String>,
11346 #[serde(default, skip_serializing_if = "Option::is_none")]
11347 pub generate_plain_content: Option<bool>,
11348 #[serde(
11349 default,
11350 skip_serializing_if = "String::is_empty",
11351 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11352 )]
11353 pub html_content: String,
11354 #[serde(
11355 default,
11356 skip_serializing_if = "String::is_empty",
11357 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11358 )]
11359 pub name: String,
11360 #[serde(
11361 default,
11362 skip_serializing_if = "String::is_empty",
11363 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11364 )]
11365 pub plain_content: String,
11366 #[serde(
11367 default,
11368 skip_serializing_if = "String::is_empty",
11369 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11370 )]
11371 pub subject: String,
11372}
11373
11374#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11375pub struct ListDesignsResponse {
11376 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
11377 pub metadata: Option<MetadataType>,
11378 #[serde(
11379 default,
11380 skip_serializing_if = "Vec::is_empty",
11381 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11382 )]
11383 pub result: Vec<DesignOutputSummaryAllOf>,
11384}
11385
11386#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11387pub struct GetMcContatsResponse {
11388 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
11389 pub metadata: Option<SelfMetadata>,
11390 #[serde(
11391 default,
11392 skip_serializing_if = "crate::utils::zero_i64",
11393 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
11394 )]
11395 pub contact_count: i64,
11396 #[serde(
11397 default,
11398 skip_serializing_if = "Vec::is_empty",
11399 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11400 )]
11401 pub result: Vec<ContactDetails3>,
11402}
11403
11404#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11405pub struct PostMcListsResponse {
11406 #[serde(
11407 default,
11408 skip_serializing_if = "Vec::is_empty",
11409 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11410 )]
11411 pub errors: Vec<Error>,
11412}
11413
11414#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11415pub struct PutMcContactsRequest {
11416 #[serde(
11420 default,
11421 skip_serializing_if = "Vec::is_empty",
11422 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11423 )]
11424 pub contacts: Vec<ContactRequest>,
11425 #[serde(
11429 default,
11430 skip_serializing_if = "Vec::is_empty",
11431 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11432 )]
11433 pub list_ids: Vec<String>,
11434}
11435
11436#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11437pub struct PutMcContactsResponse {
11438 #[serde(
11442 default,
11443 skip_serializing_if = "String::is_empty",
11444 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11445 )]
11446 pub job_id: String,
11447}
11448
11449#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11451pub struct DeleteMcContactsResponse {
11452 pub job_id: Help,
11456}
11457
11458#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11459pub struct DeleteMcContactsResponseData {
11460 #[serde(
11461 default,
11462 skip_serializing_if = "Vec::is_empty",
11463 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11464 )]
11465 pub errors: Vec<Help>,
11466}
11467
11468#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11470pub struct BillableBreakdown {
11471 #[serde(default, skip_serializing_if = "Option::is_none")]
11475 pub breakdown: Option<Help>,
11476 #[serde(
11480 default,
11481 skip_serializing_if = "crate::utils::zero_i64",
11482 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
11483 )]
11484 pub total: i64,
11485}
11486
11487#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11488pub struct GetMcContactsCountResponse {
11489 #[serde(default, skip_serializing_if = "Option::is_none")]
11493 pub billable_breakdown: Option<BillableBreakdown>,
11494 #[serde(
11495 default,
11496 skip_serializing_if = "crate::utils::zero_i64",
11497 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
11498 )]
11499 pub billable_count: i64,
11500 #[serde(
11501 default,
11502 skip_serializing_if = "crate::utils::zero_i64",
11503 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
11504 )]
11505 pub contact_count: i64,
11506}
11507
11508#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11509pub struct Lists {
11510 #[serde(
11514 default,
11515 skip_serializing_if = "String::is_empty",
11516 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
11517 rename = "ID"
11518 )]
11519 pub id: String,
11520 #[serde(
11524 default,
11525 skip_serializing_if = "String::is_empty",
11526 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
11527 rename = "Name"
11528 )]
11529 pub name: String,
11530}
11531
11532#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11533pub struct GetMarketingContactsExportsResponseResultMetadata {
11534 #[serde(
11538 default,
11539 skip_serializing_if = "String::is_empty",
11540 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11541 )]
11542 pub next: String,
11543 #[serde(
11547 default,
11548 skip_serializing_if = "String::is_empty",
11549 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11550 )]
11551 pub prev: String,
11552 #[serde(
11556 default,
11557 skip_serializing_if = "String::is_empty",
11558 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
11559 rename = "self"
11560 )]
11561 pub self_: String,
11562}
11563
11564#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11565pub struct GetMarketingContactsExportsResponseResult {
11566 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
11567 pub metadata: Option<GetMarketingContactsExportsResponseResultMetadata>,
11568 #[serde(
11572 default,
11573 skip_serializing_if = "String::is_empty",
11574 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11575 )]
11576 pub completed_at: String,
11577 #[serde(
11581 default,
11582 skip_serializing_if = "String::is_empty",
11583 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11584 )]
11585 pub created_at: String,
11586 #[serde(
11590 default,
11591 skip_serializing_if = "String::is_empty",
11592 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11593 )]
11594 pub expires_at: String,
11595 #[serde(
11599 default,
11600 skip_serializing_if = "String::is_empty",
11601 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11602 )]
11603 pub export_type: String,
11604 #[serde(
11608 default,
11609 skip_serializing_if = "String::is_empty",
11610 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11611 )]
11612 pub id: String,
11613 #[serde(
11614 default,
11615 skip_serializing_if = "Vec::is_empty",
11616 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11617 )]
11618 pub lists: Vec<Lists>,
11619 #[serde(
11620 default,
11621 skip_serializing_if = "Vec::is_empty",
11622 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11623 )]
11624 pub segments: Vec<Lists>,
11625 #[serde(
11629 default,
11630 skip_serializing_if = "String::is_empty",
11631 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11632 )]
11633 pub status: String,
11634 #[serde(
11638 default,
11639 skip_serializing_if = "Vec::is_empty",
11640 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11641 )]
11642 pub urls: Vec<String>,
11643 #[serde(
11647 default,
11648 skip_serializing_if = "String::is_empty",
11649 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11650 )]
11651 pub user_id: String,
11652}
11653
11654#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11655pub struct GetMarketingContactsExportsResponse {
11656 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
11657 pub metadata: Option<GetMarketingContactsExportsResponseResultMetadata>,
11658 #[serde(
11659 default,
11660 skip_serializing_if = "Vec::is_empty",
11661 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11662 )]
11663 pub result: Vec<GetMarketingContactsExportsResponseResult>,
11664}
11665
11666#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11667pub struct GetMarketingContactsExportsResponseErrors {
11668 #[serde(
11672 default,
11673 skip_serializing_if = "String::is_empty",
11674 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11675 )]
11676 pub error_id: String,
11677 #[serde(
11681 default,
11682 skip_serializing_if = "String::is_empty",
11683 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11684 )]
11685 pub message: String,
11686}
11687
11688#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11689pub struct GetMarketingContactsExportsResponseData {
11690 #[serde(
11691 default,
11692 skip_serializing_if = "Vec::is_empty",
11693 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11694 )]
11695 pub errors: Vec<GetMarketingContactsExportsResponseErrors>,
11696}
11697
11698#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11699pub struct Notifications {
11700 #[serde(
11704 default,
11705 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11706 )]
11707 pub email: bool,
11708}
11709
11710#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
11714pub enum FileType {
11715 #[serde(rename = "csv")]
11716 #[default]
11717 Csv,
11718 #[serde(rename = "json")]
11719 Json,
11720 #[serde(other)]
11721 FallthroughString,
11722}
11723
11724impl std::fmt::Display for FileType {
11725 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11726 match self {
11727 FileType::Csv => "csv",
11728 FileType::Json => "json",
11729 FileType::FallthroughString => "*",
11730 }
11731 .fmt(f)
11732 }
11733}
11734
11735#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11736pub struct PostMcContactsExportsRequest {
11737 #[serde(default, skip_serializing_if = "Option::is_none")]
11741 pub file_type: Option<FileType>,
11742 #[serde(
11746 default,
11747 skip_serializing_if = "Vec::is_empty",
11748 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11749 )]
11750 pub list_ids: Vec<String>,
11751 #[serde(
11752 default,
11753 skip_serializing_if = "crate::utils::zero_i64",
11754 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
11755 )]
11756 pub max_file_size: i64,
11757 #[serde(default, skip_serializing_if = "Option::is_none")]
11758 pub notifications: Option<Notifications>,
11759 #[serde(
11763 default,
11764 skip_serializing_if = "Vec::is_empty",
11765 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11766 )]
11767 pub segment_ids: Vec<String>,
11768}
11769
11770#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11771pub struct PostMcContactsExportsResponse {
11772 #[serde(rename = "_metadata")]
11773 pub metadata: Metadata,
11774 #[serde(
11778 default,
11779 skip_serializing_if = "String::is_empty",
11780 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11781 )]
11782 pub id: String,
11783}
11784
11785#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11786pub struct PostMcContactsSearchRequest {
11787 #[serde(
11791 default,
11792 skip_serializing_if = "String::is_empty",
11793 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11794 )]
11795 pub query: String,
11796}
11797
11798#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11799pub struct PostMcContactsSearchResponse {
11800 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
11801 pub metadata: Option<SelfMetadata>,
11802 #[serde(
11806 default,
11807 skip_serializing_if = "crate::utils::zero_f64",
11808 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
11809 )]
11810 pub contact_count: f64,
11811 #[serde(
11812 default,
11813 skip_serializing_if = "Vec::is_empty",
11814 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11815 )]
11816 pub result: Vec<ContactDetails3>,
11817}
11818
11819#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
11823pub enum PutMcContactsImportsRequestFileType {
11824 #[serde(rename = "csv")]
11825 Csv,
11826 #[serde(rename = "")]
11827 #[default]
11828 Noop,
11829 #[serde(other)]
11830 FallthroughString,
11831}
11832
11833impl std::fmt::Display for PutMcContactsImportsRequestFileType {
11834 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11835 match self {
11836 PutMcContactsImportsRequestFileType::Csv => "csv",
11837 PutMcContactsImportsRequestFileType::Noop => "",
11838 PutMcContactsImportsRequestFileType::FallthroughString => "*",
11839 }
11840 .fmt(f)
11841 }
11842}
11843
11844impl PutMcContactsImportsRequestFileType {
11845 pub fn is_noop(&self) -> bool {
11846 matches!(self, PutMcContactsImportsRequestFileType::Noop)
11847 }
11848}
11849
11850#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11856pub struct FieldMappingsAnyOf {
11857 #[serde(flatten)]
11861 pub string: String,
11862 #[serde(flatten)]
11863 pub value: serde_json::Value,
11864}
11865
11866#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11867pub struct PutMcContactsImportsRequest {
11868 #[serde(
11872 default,
11873 skip_serializing_if = "Vec::is_empty",
11874 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11875 )]
11876 pub field_mappings: Vec<FieldMappingsAnyOf>,
11877 #[serde(
11881 default,
11882 skip_serializing_if = "PutMcContactsImportsRequestFileType::is_noop"
11883 )]
11884 pub file_type: PutMcContactsImportsRequestFileType,
11885 #[serde(
11889 default,
11890 skip_serializing_if = "Vec::is_empty",
11891 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11892 )]
11893 pub list_ids: Vec<String>,
11894}
11895
11896#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11897pub struct UploadHeaders {
11898 #[serde(
11902 default,
11903 skip_serializing_if = "String::is_empty",
11904 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11905 )]
11906 pub header: String,
11907 #[serde(
11911 default,
11912 skip_serializing_if = "String::is_empty",
11913 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11914 )]
11915 pub value: String,
11916}
11917
11918#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11919pub struct PutMcContactsImportsResponse {
11920 #[serde(
11924 default,
11925 skip_serializing_if = "String::is_empty",
11926 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11927 )]
11928 pub job_id: String,
11929 #[serde(
11933 default,
11934 skip_serializing_if = "Vec::is_empty",
11935 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11936 )]
11937 pub upload_headers: Vec<UploadHeaders>,
11938 #[serde(
11942 default,
11943 skip_serializing_if = "String::is_empty",
11944 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
11945 )]
11946 pub upload_uri: String,
11947}
11948
11949#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11950pub struct PutMcContactsImportsResponseData {
11951 #[serde(
11952 default,
11953 skip_serializing_if = "Vec::is_empty",
11954 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11955 )]
11956 pub errors: Vec<Error>,
11957}
11958
11959#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11960pub struct GetMarketingContactsImportsResponse {
11961 #[serde(default, skip_serializing_if = "Option::is_none")]
11962 pub errors: Option<Error>,
11963}
11964
11965#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11967pub struct PostMarketingContactsBatchRequest {
11968 #[serde(
11972 default,
11973 skip_serializing_if = "Vec::is_empty",
11974 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11975 )]
11976 pub ids: Vec<String>,
11977}
11978
11979#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11980pub struct PostMarketingContactsBatchResponse {
11981 #[serde(
11982 default,
11983 skip_serializing_if = "Vec::is_empty",
11984 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11985 )]
11986 pub result: Vec<ContactDetails3>,
11987}
11988
11989#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11991pub struct PostMarketingContactsSearchEmailsRequest {
11992 #[serde(
11996 default,
11997 skip_serializing_if = "Vec::is_empty",
11998 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
11999 )]
12000 pub emails: Vec<String>,
12001}
12002
12003#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12004pub struct PostMarketingContactsSearchEmailsResponse {
12005 #[serde(default, skip_serializing_if = "Option::is_none")]
12009 pub result: Option<Help>,
12010}
12011
12012#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12013pub struct PostMarketingSendersRequest {
12014 #[serde(
12018 default,
12019 skip_serializing_if = "String::is_empty",
12020 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12021 )]
12022 pub address: String,
12023 #[serde(
12024 default,
12025 skip_serializing_if = "String::is_empty",
12026 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12027 )]
12028 pub address_2: String,
12029 #[serde(
12033 default,
12034 skip_serializing_if = "String::is_empty",
12035 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12036 )]
12037 pub city: String,
12038 #[serde(
12042 default,
12043 skip_serializing_if = "String::is_empty",
12044 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12045 )]
12046 pub country: String,
12047 pub from: From,
12048 #[serde(
12052 default,
12053 skip_serializing_if = "String::is_empty",
12054 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12055 )]
12056 pub nickname: String,
12057 #[serde(default, skip_serializing_if = "Option::is_none")]
12058 pub reply_to: Option<ReplyTo>,
12059 #[serde(
12060 default,
12061 skip_serializing_if = "String::is_empty",
12062 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12063 )]
12064 pub state: String,
12065 #[serde(
12066 default,
12067 skip_serializing_if = "String::is_empty",
12068 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12069 )]
12070 pub zip: String,
12071}
12072
12073#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12074pub struct GetMcListsResponse {
12075 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
12076 pub metadata: Option<Metadata>,
12077 #[serde(
12078 default,
12079 skip_serializing_if = "Vec::is_empty",
12080 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12081 )]
12082 pub result: Vec<List>,
12083}
12084
12085#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12086pub struct GetMcListsContactsCountResponse {
12087 #[serde(
12088 default,
12089 skip_serializing_if = "crate::utils::zero_i64",
12090 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12091 )]
12092 pub billable_count: i64,
12093 #[serde(
12094 default,
12095 skip_serializing_if = "crate::utils::zero_i64",
12096 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12097 )]
12098 pub contact_count: i64,
12099}
12100
12101#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12102pub struct GetMcListsResponseData {
12103 #[serde(default, skip_serializing_if = "Option::is_none")]
12104 pub contact_sample: Option<ContactDetails2>,
12105}
12106
12107#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12113pub struct GetMcListsResponseAllOf {
12114 #[serde(flatten)]
12115 pub list: List,
12116 #[serde(flatten)]
12117 pub get_mc_lists_response_data: GetMcListsResponseData,
12118}
12119
12120#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12122pub struct DeleteListsResponse {
12123 #[serde(
12127 default,
12128 skip_serializing_if = "String::is_empty",
12129 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12130 )]
12131 pub job_id: String,
12132}
12133
12134#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12135pub struct PatchMcListsRequest {
12136 #[serde(
12137 default,
12138 skip_serializing_if = "String::is_empty",
12139 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12140 )]
12141 pub name: String,
12142}
12143
12144#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12146pub struct DeleteMcListsContactsResponse {
12147 #[serde(
12151 default,
12152 skip_serializing_if = "String::is_empty",
12153 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12154 )]
12155 pub job_id: String,
12156}
12157
12158#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12159pub struct GetMcFieldDefinitionsResponse {
12160 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
12161 pub metadata: Option<MetadataType>,
12162 #[serde(
12163 default,
12164 skip_serializing_if = "Vec::is_empty",
12165 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12166 )]
12167 pub custom_fields: Vec<CustomFieldDefinitionsResponse>,
12168 #[serde(
12169 default,
12170 skip_serializing_if = "Vec::is_empty",
12171 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12172 )]
12173 pub reserved_fields: Vec<ReservedFieldDefinitionsResponse>,
12174}
12175
12176#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12177pub struct PostMcFieldDefinitionsRequest {
12178 #[serde(default, skip_serializing_if = "FieldType::is_noop")]
12179 pub field_type: FieldType,
12180 #[serde(
12184 default,
12185 skip_serializing_if = "String::is_empty",
12186 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12187 )]
12188 pub name: String,
12189}
12190
12191#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12192pub struct PostMcFieldDefinitionsResponse {
12193 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
12194 pub metadata: Option<MetadataType>,
12195}
12196
12197#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12203pub struct PostMcFieldDefinitionsResponseAllOf {
12204 #[serde(flatten)]
12205 pub custom_field_definitions_response: CustomFieldDefinitionsResponse,
12206 #[serde(flatten)]
12207 pub post_mc_field_definitions_response: PostMcFieldDefinitionsResponse,
12208}
12209
12210#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12211pub struct GetMarketingSegmentsResponse {
12212 #[serde(
12213 default,
12214 skip_serializing_if = "Vec::is_empty",
12215 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12216 )]
12217 pub results: Vec<SegmentSummary>,
12218}
12219
12220#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12221pub struct PostMarketingSegmentsRequest {
12222 #[serde(
12226 default,
12227 skip_serializing_if = "String::is_empty",
12228 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12229 )]
12230 pub parent_list_id: String,
12231}
12232
12233#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12239pub struct PostMarketingSegmentsRequestAllOf {
12240 #[serde(flatten)]
12241 pub segment_write_v2: SegmentWriteV2,
12242 #[serde(flatten)]
12243 pub post_marketing_segments_request: PostMarketingSegmentsRequest,
12244}
12245
12246#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12247pub struct PostMarketingSegmentsDeleteRequest {
12248 #[serde(
12249 default,
12250 skip_serializing_if = "Vec::is_empty",
12251 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12252 )]
12253 pub ids: Vec<String>,
12254}
12255
12256#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12258pub struct Resources {
12259 #[serde(
12263 default,
12264 skip_serializing_if = "Vec::is_empty",
12265 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12266 )]
12267 pub ids: Vec<String>,
12268 #[serde(
12272 default,
12273 skip_serializing_if = "String::is_empty",
12274 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
12275 rename = "type"
12276 )]
12277 pub type_: String,
12278}
12279
12280#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12281pub struct PostMarketingSegmentsDeleteResponseErrors {
12282 #[serde(
12286 default,
12287 skip_serializing_if = "String::is_empty",
12288 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12289 )]
12290 pub error: String,
12291 #[serde(
12295 default,
12296 skip_serializing_if = "String::is_empty",
12297 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12298 )]
12299 pub id: String,
12300 #[serde(default, skip_serializing_if = "Option::is_none")]
12304 pub resources: Option<Resources>,
12305}
12306
12307#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12308pub struct PostMarketingSegmentsDeleteResponse {
12309 #[serde(
12310 default,
12311 skip_serializing_if = "Vec::is_empty",
12312 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12313 )]
12314 pub errors: Vec<PostMarketingSegmentsDeleteResponseErrors>,
12315}
12316
12317#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12318pub struct GetMarketingSinglesendsResponse {
12319 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
12320 pub metadata: Option<MetadataType>,
12321 #[serde(
12322 default,
12323 skip_serializing_if = "Vec::is_empty",
12324 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12325 )]
12326 pub result: Vec<SinglesendResponseShort>,
12327}
12328
12329#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12330pub struct PostMarketingSinglesendsResponse {
12331 #[serde(
12332 default,
12333 skip_serializing_if = "Vec::is_empty",
12334 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12335 )]
12336 pub errors: Vec<SsoErrorResponse>,
12337}
12338
12339#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12340pub struct PostMarketingSinglesendsRequest {
12341 #[serde(
12345 default,
12346 skip_serializing_if = "String::is_empty",
12347 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12348 )]
12349 pub name: String,
12350}
12351
12352#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
12356pub enum SendAt {
12357 #[serde(rename = "now")]
12358 Now,
12359 #[serde(rename = "")]
12360 #[default]
12361 Noop,
12362 #[serde(other)]
12363 FallthroughString,
12364}
12365
12366impl std::fmt::Display for SendAt {
12367 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
12368 match self {
12369 SendAt::Now => "now",
12370 SendAt::Noop => "",
12371 SendAt::FallthroughString => "*",
12372 }
12373 .fmt(f)
12374 }
12375}
12376
12377impl SendAt {
12378 pub fn is_noop(&self) -> bool {
12379 matches!(self, SendAt::Noop)
12380 }
12381}
12382
12383#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12384pub struct PutMarketingSinglesendsScheduleRequest {
12385 #[serde(default, skip_serializing_if = "SendAt::is_noop")]
12389 pub send_at: SendAt,
12390}
12391
12392#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
12393pub enum PutMarketingSinglesendsScheduleResponseStatus {
12394 #[serde(rename = "scheduled")]
12395 Scheduled,
12396 #[serde(rename = "")]
12397 #[default]
12398 Noop,
12399 #[serde(other)]
12400 FallthroughString,
12401}
12402
12403impl std::fmt::Display for PutMarketingSinglesendsScheduleResponseStatus {
12404 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
12405 match self {
12406 PutMarketingSinglesendsScheduleResponseStatus::Scheduled => "scheduled",
12407 PutMarketingSinglesendsScheduleResponseStatus::Noop => "",
12408 PutMarketingSinglesendsScheduleResponseStatus::FallthroughString => "*",
12409 }
12410 .fmt(f)
12411 }
12412}
12413
12414impl PutMarketingSinglesendsScheduleResponseStatus {
12415 pub fn is_noop(&self) -> bool {
12416 matches!(self, PutMarketingSinglesendsScheduleResponseStatus::Noop)
12417 }
12418}
12419
12420#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12421pub struct PutMarketingSinglesendsScheduleResponse {
12422 #[serde(
12423 default,
12424 skip_serializing_if = "Option::is_none",
12425 deserialize_with = "crate::utils::date_time_format::deserialize"
12426 )]
12427 pub send_at: Option<chrono::DateTime<chrono::Utc>>,
12428 #[serde(default, skip_serializing_if = "Option::is_none")]
12429 pub status: Option<PutMarketingSinglesendsScheduleResponseStatus>,
12430}
12431
12432#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12433pub struct GetMarketingSinglesendsCategoriesResponse {
12434 #[serde(
12438 default,
12439 skip_serializing_if = "Vec::is_empty",
12440 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12441 )]
12442 pub categories: Vec<String>,
12443}
12444
12445#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12446pub struct PostMarketingTestSendEmailRequest {
12447 #[serde(
12448 default,
12449 skip_serializing_if = "String::is_empty",
12450 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12451 )]
12452 pub custom_unsubscribe_url: String,
12453 #[serde(
12457 default,
12458 skip_serializing_if = "Vec::is_empty",
12459 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12460 )]
12461 pub emails: Vec<String>,
12462 #[serde(
12463 default,
12464 skip_serializing_if = "String::is_empty",
12465 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12466 )]
12467 pub from_address: String,
12468 #[serde(
12469 default,
12470 skip_serializing_if = "crate::utils::zero_i64",
12471 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12472 )]
12473 pub sender_id: i64,
12474 #[serde(
12475 default,
12476 skip_serializing_if = "crate::utils::zero_i64",
12477 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12478 )]
12479 pub suppression_group_id: i64,
12480 #[serde(
12484 default,
12485 skip_serializing_if = "String::is_empty",
12486 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12487 )]
12488 pub template_id: String,
12489 #[serde(
12490 default,
12491 skip_serializing_if = "String::is_empty",
12492 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12493 )]
12494 pub version_id_override: String,
12495}
12496
12497#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12498pub struct GetSendersResponse {
12499 #[serde(
12500 default,
12501 skip_serializing_if = "Vec::is_empty",
12502 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12503 )]
12504 pub result: Vec<SenderAllOf>,
12505}
12506
12507#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12508pub struct PostSendersRequest {
12509 #[serde(default, skip_serializing_if = "Option::is_none")]
12513 pub from: Option<Help>,
12514 #[serde(default, skip_serializing_if = "Option::is_none")]
12518 pub reply_to: Option<Help>,
12519}
12520
12521#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12527pub struct PostSendersRequestAllOf {
12528 #[serde(flatten)]
12529 pub sender_request: SenderRequest,
12530 #[serde(flatten)]
12531 pub post_senders_request: PostSendersRequest,
12532}
12533
12534#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12535pub struct ListAllListsResponse {
12536 #[serde(
12537 default,
12538 skip_serializing_if = "Vec::is_empty",
12539 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12540 )]
12541 pub lists: Vec<ContactdbList>,
12542}
12543
12544#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12545pub struct PatchContactdbListsListResponse {
12546 #[serde(
12547 default,
12548 skip_serializing_if = "crate::utils::zero_i64",
12549 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12550 )]
12551 pub id: i64,
12552 #[serde(
12556 default,
12557 skip_serializing_if = "String::is_empty",
12558 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12559 )]
12560 pub name: String,
12561 #[serde(
12562 default,
12563 skip_serializing_if = "crate::utils::zero_i64",
12564 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12565 )]
12566 pub recipient_count: i64,
12567}
12568
12569#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12570pub struct GetContactdbRecipientsSearchResponse {
12571 #[serde(
12572 default,
12573 skip_serializing_if = "Vec::is_empty",
12574 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12575 )]
12576 pub recipients: Vec<ContactdbRecipient>,
12577}
12578
12579#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12580pub struct ListRecipientsResponse {
12581 #[serde(
12582 default,
12583 skip_serializing_if = "Vec::is_empty",
12584 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12585 )]
12586 pub recipients: Vec<Help>,
12587}
12588
12589#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12590pub struct PostContactdbRecipientsRequest {
12591 #[serde(
12592 default,
12593 skip_serializing_if = "crate::utils::zero_i64",
12594 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12595 )]
12596 pub age: i64,
12597 #[serde(
12601 default,
12602 skip_serializing_if = "String::is_empty",
12603 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12604 )]
12605 pub email: String,
12606 #[serde(
12610 default,
12611 skip_serializing_if = "String::is_empty",
12612 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12613 )]
12614 pub first_name: String,
12615 #[serde(
12619 default,
12620 skip_serializing_if = "String::is_empty",
12621 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12622 )]
12623 pub last_name: String,
12624}
12625
12626#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12627pub struct PatchContactdbRecipientsRequest {
12628 #[serde(
12632 default,
12633 skip_serializing_if = "String::is_empty",
12634 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12635 )]
12636 pub email: String,
12637 #[serde(
12641 default,
12642 skip_serializing_if = "String::is_empty",
12643 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12644 )]
12645 pub first_name: String,
12646 #[serde(
12650 default,
12651 skip_serializing_if = "String::is_empty",
12652 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12653 )]
12654 pub last_name: String,
12655}
12656
12657#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12658pub struct GetContactdbStatusResponse {
12659 #[serde(
12663 default,
12664 skip_serializing_if = "String::is_empty",
12665 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12666 )]
12667 pub id: String,
12668 #[serde(
12672 default,
12673 skip_serializing_if = "String::is_empty",
12674 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12675 )]
12676 pub value: String,
12677}
12678
12679#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12680pub struct GetContactdbStatusResponseData {
12681 #[serde(
12682 default,
12683 skip_serializing_if = "Vec::is_empty",
12684 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12685 )]
12686 pub status: Vec<GetContactdbStatusResponse>,
12687}
12688
12689#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12690pub struct GetContactdbRecipientsRecipientListsResponse {
12691 #[serde(
12692 default,
12693 skip_serializing_if = "Vec::is_empty",
12694 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12695 )]
12696 pub lists: Vec<ContactdbList>,
12697}
12698
12699#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12700pub struct PostContactdbRecipientsSearchRequest {
12701 #[serde(
12705 default,
12706 skip_serializing_if = "Vec::is_empty",
12707 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12708 )]
12709 pub conditions: Vec<String>,
12710 #[serde(
12711 default,
12712 skip_serializing_if = "crate::utils::zero_i64",
12713 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12714 )]
12715 pub list_id: i64,
12716}
12717
12718#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12724pub struct ValueAnyOf {
12725 #[serde(flatten)]
12729 pub string: String,
12730 #[serde(flatten)]
12731 pub i64: i64,
12732}
12733
12734#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12735pub struct PostContactdbRecipientsSearchResponseCustomFields {
12736 #[serde(
12737 default,
12738 skip_serializing_if = "crate::utils::zero_i64",
12739 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12740 )]
12741 pub id: i64,
12742 #[serde(
12746 default,
12747 skip_serializing_if = "String::is_empty",
12748 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12749 )]
12750 pub name: String,
12751 #[serde(
12755 default,
12756 skip_serializing_if = "String::is_empty",
12757 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
12758 rename = "type"
12759 )]
12760 pub type_: String,
12761 #[serde(default, skip_serializing_if = "Option::is_none")]
12762 pub value: Option<ValueAnyOf>,
12763}
12764
12765#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12766pub struct PostContactdbRecipientsSearchResponse {
12767 #[serde(
12768 default,
12769 skip_serializing_if = "crate::utils::zero_i64",
12770 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12771 )]
12772 pub created_at: i64,
12773 #[serde(
12774 default,
12775 skip_serializing_if = "Vec::is_empty",
12776 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12777 )]
12778 pub custom_fields: Vec<PostContactdbRecipientsSearchResponseCustomFields>,
12779 #[serde(
12783 default,
12784 skip_serializing_if = "String::is_empty",
12785 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12786 )]
12787 pub email: String,
12788 #[serde(
12792 default,
12793 skip_serializing_if = "String::is_empty",
12794 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12795 )]
12796 pub first_name: String,
12797 #[serde(
12801 default,
12802 skip_serializing_if = "String::is_empty",
12803 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12804 )]
12805 pub id: String,
12806 #[serde(
12807 default,
12808 skip_serializing_if = "crate::utils::zero_i64",
12809 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12810 )]
12811 pub last_clicked: i64,
12812 #[serde(
12813 default,
12814 skip_serializing_if = "crate::utils::zero_i64",
12815 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12816 )]
12817 pub last_emailed: i64,
12818 #[serde(
12819 default,
12820 skip_serializing_if = "crate::utils::zero_i64",
12821 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12822 )]
12823 pub last_opened: i64,
12824 #[serde(
12825 default,
12826 skip_serializing_if = "crate::utils::zero_i64",
12827 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12828 )]
12829 pub updated_at: i64,
12830}
12831
12832#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12833pub struct PostContactdbRecipientsSearchResponseData {
12834 #[serde(
12835 default,
12836 skip_serializing_if = "crate::utils::zero_i64",
12837 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
12838 )]
12839 pub recipient_count: i64,
12840 #[serde(
12841 default,
12842 skip_serializing_if = "Vec::is_empty",
12843 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12844 )]
12845 pub recipients: Vec<PostContactdbRecipientsSearchResponse>,
12846}
12847
12848#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12849pub struct ListAllCustomFieldsResponse {
12850 #[serde(
12851 default,
12852 skip_serializing_if = "Vec::is_empty",
12853 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12854 )]
12855 pub custom_fields: Vec<ContactdbCustomFieldWithAllOf>,
12856}
12857
12858#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12859pub struct PostContactdbCustomFieldsRequest {
12860 #[serde(
12861 default,
12862 skip_serializing_if = "String::is_empty",
12863 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12864 )]
12865 pub name: String,
12866 #[serde(
12867 default,
12868 skip_serializing_if = "String::is_empty",
12869 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
12870 rename = "type"
12871 )]
12872 pub type_: String,
12873}
12874
12875#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12876pub struct ReservedFields {
12877 #[serde(
12881 default,
12882 skip_serializing_if = "String::is_empty",
12883 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12884 )]
12885 pub name: String,
12886 #[serde(
12890 default,
12891 skip_serializing_if = "String::is_empty",
12892 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
12893 rename = "type"
12894 )]
12895 pub type_: String,
12896}
12897
12898#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12899pub struct GetContactdbReservedFieldsResponse {
12900 #[serde(
12901 default,
12902 skip_serializing_if = "Vec::is_empty",
12903 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12904 )]
12905 pub reserved_fields: Vec<ReservedFields>,
12906}
12907
12908#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12909pub struct ListAllSegmentsResponse {
12910 #[serde(
12911 default,
12912 skip_serializing_if = "Vec::is_empty",
12913 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12914 )]
12915 pub segments: Vec<ContactdbSegments>,
12916}
12917
12918#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12919pub struct PatchContactdbSegmentsSegmentRequest {
12920 #[serde(
12921 default,
12922 skip_serializing_if = "Vec::is_empty",
12923 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12924 )]
12925 pub conditions: Vec<ContactdbSegmentsConditions>,
12926 #[serde(
12927 default,
12928 skip_serializing_if = "crate::utils::zero_f64",
12929 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
12930 )]
12931 pub list_id: f64,
12932 #[serde(
12936 default,
12937 skip_serializing_if = "String::is_empty",
12938 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12939 )]
12940 pub name: String,
12941}
12942
12943#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12944pub struct ListRecipientsOnASegmentResponse {
12945 #[serde(
12946 default,
12947 skip_serializing_if = "Vec::is_empty",
12948 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12949 )]
12950 pub recipients: Vec<ContactdbRecipient>,
12951}
12952
12953#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12954pub struct GetCategoriesResponse {
12955 #[serde(
12959 default,
12960 skip_serializing_if = "String::is_empty",
12961 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
12962 )]
12963 pub category: String,
12964}
12965
12966#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12967pub struct GetCategoriesResponseData {
12968 #[serde(
12969 default,
12970 skip_serializing_if = "Vec::is_empty",
12971 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12972 )]
12973 pub errors: Vec<ErrorsSeg>,
12974}
12975
12976#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12977pub struct GetCampaignsResponse {
12978 #[serde(
12979 default,
12980 skip_serializing_if = "Vec::is_empty",
12981 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12982 )]
12983 pub result: Vec<CampaignResponseAllOf>,
12984}
12985
12986#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12987pub struct GetCampaignsCampaignResponse {
12988 #[serde(
12992 default,
12993 skip_serializing_if = "Vec::is_empty",
12994 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
12995 )]
12996 pub categories: Vec<String>,
12997 #[serde(
13001 default,
13002 skip_serializing_if = "String::is_empty",
13003 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13004 )]
13005 pub custom_unsubscribe_url: String,
13006 #[serde(
13010 default,
13011 skip_serializing_if = "String::is_empty",
13012 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13013 )]
13014 pub html_content: String,
13015 #[serde(
13016 default,
13017 skip_serializing_if = "crate::utils::zero_i64",
13018 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13019 )]
13020 pub id: i64,
13021 #[serde(
13025 default,
13026 skip_serializing_if = "String::is_empty",
13027 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13028 )]
13029 pub ip_pool: String,
13030 #[serde(
13034 default,
13035 skip_serializing_if = "Vec::is_empty",
13036 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13037 )]
13038 pub list_ids: Vec<i64>,
13039 #[serde(
13043 default,
13044 skip_serializing_if = "String::is_empty",
13045 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13046 )]
13047 pub plain_content: String,
13048 #[serde(
13052 default,
13053 skip_serializing_if = "Vec::is_empty",
13054 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13055 )]
13056 pub segment_ids: Vec<i64>,
13057 #[serde(
13058 default,
13059 skip_serializing_if = "crate::utils::zero_i64",
13060 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13061 )]
13062 pub sender_id: i64,
13063 #[serde(
13067 default,
13068 skip_serializing_if = "String::is_empty",
13069 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13070 )]
13071 pub status: String,
13072 #[serde(
13076 default,
13077 skip_serializing_if = "String::is_empty",
13078 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13079 )]
13080 pub subject: String,
13081 #[serde(
13082 default,
13083 skip_serializing_if = "crate::utils::zero_i64",
13084 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13085 )]
13086 pub suppression_group_id: i64,
13087 #[serde(
13091 default,
13092 skip_serializing_if = "String::is_empty",
13093 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13094 )]
13095 pub title: String,
13096}
13097
13098#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13099pub struct UpdateACampaignRequest {
13100 #[serde(
13104 default,
13105 skip_serializing_if = "Vec::is_empty",
13106 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13107 )]
13108 pub categories: Vec<String>,
13109 #[serde(
13113 default,
13114 skip_serializing_if = "String::is_empty",
13115 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13116 )]
13117 pub html_content: String,
13118 #[serde(
13122 default,
13123 skip_serializing_if = "String::is_empty",
13124 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13125 )]
13126 pub plain_content: String,
13127 #[serde(
13131 default,
13132 skip_serializing_if = "String::is_empty",
13133 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13134 )]
13135 pub subject: String,
13136 #[serde(
13140 default,
13141 skip_serializing_if = "String::is_empty",
13142 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13143 )]
13144 pub title: String,
13145}
13146
13147#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13148pub struct SendACampaignResponse {
13149 #[serde(
13150 default,
13151 skip_serializing_if = "crate::utils::zero_i64",
13152 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13153 )]
13154 pub id: i64,
13155 #[serde(
13159 default,
13160 skip_serializing_if = "String::is_empty",
13161 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13162 )]
13163 pub status: String,
13164}
13165
13166#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13167pub struct ScheduleACampaignRequest {
13168 #[serde(
13169 default,
13170 skip_serializing_if = "crate::utils::zero_i64",
13171 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13172 )]
13173 pub send_at: i64,
13174}
13175
13176#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
13180pub enum ScheduleACampaignResponseStatus {
13181 #[serde(rename = "Scheduled")]
13182 Scheduled,
13183 #[serde(rename = "")]
13184 #[default]
13185 Noop,
13186 #[serde(other)]
13187 FallthroughString,
13188}
13189
13190impl std::fmt::Display for ScheduleACampaignResponseStatus {
13191 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
13192 match self {
13193 ScheduleACampaignResponseStatus::Scheduled => "Scheduled",
13194 ScheduleACampaignResponseStatus::Noop => "",
13195 ScheduleACampaignResponseStatus::FallthroughString => "*",
13196 }
13197 .fmt(f)
13198 }
13199}
13200
13201impl ScheduleACampaignResponseStatus {
13202 pub fn is_noop(&self) -> bool {
13203 matches!(self, ScheduleACampaignResponseStatus::Noop)
13204 }
13205}
13206
13207#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13208pub struct ScheduleACampaignResponse {
13209 #[serde(
13210 default,
13211 skip_serializing_if = "crate::utils::zero_i64",
13212 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13213 )]
13214 pub id: i64,
13215 #[serde(
13216 default,
13217 skip_serializing_if = "crate::utils::zero_i64",
13218 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13219 )]
13220 pub send_at: i64,
13221 #[serde(
13225 default,
13226 skip_serializing_if = "ScheduleACampaignResponseStatus::is_noop"
13227 )]
13228 pub status: ScheduleACampaignResponseStatus,
13229}
13230
13231#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13232pub struct UpdateAScheduledCampaignResponse {
13233 #[serde(
13234 default,
13235 skip_serializing_if = "crate::utils::zero_i64",
13236 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13237 )]
13238 pub id: i64,
13239 #[serde(
13240 default,
13241 skip_serializing_if = "crate::utils::zero_i64",
13242 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13243 )]
13244 pub send_at: i64,
13245 #[serde(
13249 default,
13250 skip_serializing_if = "String::is_empty",
13251 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13252 )]
13253 pub status: String,
13254}
13255
13256#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13257pub struct SendATestCampaignRequest {
13258 #[serde(
13262 default,
13263 skip_serializing_if = "String::is_empty",
13264 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13265 )]
13266 pub to: String,
13267}
13268
13269#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
13273pub enum Generations {
13274 #[serde(rename = "dynamic")]
13275 Dynamic,
13276 #[serde(rename = "legacy")]
13277 #[default]
13278 Legacy,
13279 #[serde(rename = "legacy,dynamic")]
13280 LegacyDynamic,
13281 #[serde(other)]
13282 FallthroughString,
13283}
13284
13285impl std::fmt::Display for Generations {
13286 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
13287 match self {
13288 Generations::Dynamic => "dynamic",
13289 Generations::Legacy => "legacy",
13290 Generations::LegacyDynamic => "legacy,dynamic",
13291 Generations::FallthroughString => "*",
13292 }
13293 .fmt(f)
13294 }
13295}
13296
13297#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13298pub struct GetTemplatesResponse {
13299 #[serde(default, skip_serializing_if = "Option::is_none", rename = "_metadata")]
13300 pub metadata: Option<MetadataType>,
13301 #[serde(
13305 default,
13306 skip_serializing_if = "Vec::is_empty",
13307 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13308 )]
13309 pub result: Vec<TransactionalTemplatesTemplateLean>,
13310}
13311
13312#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13313pub struct GetTemplatesResponseErrors {
13314 #[serde(
13318 default,
13319 skip_serializing_if = "String::is_empty",
13320 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13321 )]
13322 pub error_id: String,
13323 #[serde(
13327 default,
13328 skip_serializing_if = "String::is_empty",
13329 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13330 )]
13331 pub message: String,
13332}
13333
13334#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13335pub struct GetTemplatesResponseData {
13336 #[serde(
13337 default,
13338 skip_serializing_if = "Vec::is_empty",
13339 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13340 )]
13341 pub errors: Vec<GetTemplatesResponseErrors>,
13342}
13343
13344#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13345pub struct PostTemplatesRequest {
13346 #[serde(default, skip_serializing_if = "Option::is_none")]
13347 pub generation: Option<Generation>,
13348 #[serde(
13352 default,
13353 skip_serializing_if = "String::is_empty",
13354 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13355 )]
13356 pub name: String,
13357}
13358
13359#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13360pub struct PostTemplatesTemplateRequest {
13361 #[serde(
13362 default,
13363 skip_serializing_if = "String::is_empty",
13364 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13365 )]
13366 pub name: String,
13367}
13368
13369#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13370pub struct PatchTemplatesTemplateRequest {
13371 #[serde(
13372 default,
13373 skip_serializing_if = "String::is_empty",
13374 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13375 )]
13376 pub name: String,
13377}
13378
13379#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13380pub struct GetUserWebhooksParseSettingsResponse {
13381 #[serde(
13385 default,
13386 skip_serializing_if = "Vec::is_empty",
13387 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13388 )]
13389 pub result: Vec<ParseSetting>,
13390}
13391
13392#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13393pub struct GetUserWebhooksParseStatsResponseMetrics {
13394 #[serde(
13398 default,
13399 skip_serializing_if = "crate::utils::zero_f64",
13400 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
13401 )]
13402 pub received: f64,
13403}
13404
13405#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13406pub struct GetUserWebhooksParseStatsResponse {
13407 #[serde(default, skip_serializing_if = "Option::is_none")]
13408 pub metrics: Option<GetUserWebhooksParseStatsResponseMetrics>,
13409}
13410
13411#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13412pub struct GetUserWebhooksParseStatsResponseData {
13413 #[serde(
13417 default,
13418 skip_serializing_if = "String::is_empty",
13419 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13420 )]
13421 pub date: String,
13422 #[serde(
13426 default,
13427 skip_serializing_if = "Vec::is_empty",
13428 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13429 )]
13430 pub stats: Vec<GetUserWebhooksParseStatsResponse>,
13431}
13432
13433#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13434pub struct GetUserWebhooksEventSettingsSignedResponse {
13435 #[serde(
13439 default,
13440 skip_serializing_if = "String::is_empty",
13441 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13442 )]
13443 pub public_key: String,
13444}
13445
13446#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13447pub struct GetTrackingSettingsOpenResponse {
13448 #[serde(
13452 default,
13453 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
13454 )]
13455 pub enabled: bool,
13456}
13457
13458#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13459pub struct PatchUserWebhooksEventSettingsSignedResponseErrors {
13460 #[serde(
13464 default,
13465 skip_serializing_if = "String::is_empty",
13466 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13467 )]
13468 pub field: String,
13469 #[serde(
13473 default,
13474 skip_serializing_if = "String::is_empty",
13475 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13476 )]
13477 pub message: String,
13478}
13479
13480#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13481pub struct PatchUserWebhooksEventSettingsSignedResponse {
13482 #[serde(
13483 default,
13484 skip_serializing_if = "Vec::is_empty",
13485 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13486 )]
13487 pub errors: Vec<PatchUserWebhooksEventSettingsSignedResponseErrors>,
13488}
13489
13490#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13491pub struct PostUserWebhooksEventTestRequest {
13492 #[serde(
13493 default,
13494 skip_serializing_if = "String::is_empty",
13495 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13496 )]
13497 pub oauth_client_id: String,
13498 #[serde(
13499 default,
13500 skip_serializing_if = "String::is_empty",
13501 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13502 )]
13503 pub oauth_client_secret: String,
13504 #[serde(
13505 default,
13506 skip_serializing_if = "String::is_empty",
13507 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13508 )]
13509 pub oauth_token_url: String,
13510 #[serde(
13511 default,
13512 skip_serializing_if = "String::is_empty",
13513 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13514 )]
13515 pub url: String,
13516}
13517
13518#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13519pub struct GetMessagesResponse {
13520 #[serde(
13521 default,
13522 skip_serializing_if = "Vec::is_empty",
13523 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13524 )]
13525 pub messages: Vec<Messages>,
13526}
13527
13528#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
13529pub enum PostMessagesDownloadResponseStatus {
13530 #[serde(rename = "pending")]
13531 Pending,
13532 #[serde(rename = "")]
13533 #[default]
13534 Noop,
13535 #[serde(other)]
13536 FallthroughString,
13537}
13538
13539impl std::fmt::Display for PostMessagesDownloadResponseStatus {
13540 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
13541 match self {
13542 PostMessagesDownloadResponseStatus::Pending => "pending",
13543 PostMessagesDownloadResponseStatus::Noop => "",
13544 PostMessagesDownloadResponseStatus::FallthroughString => "*",
13545 }
13546 .fmt(f)
13547 }
13548}
13549
13550impl PostMessagesDownloadResponseStatus {
13551 pub fn is_noop(&self) -> bool {
13552 matches!(self, PostMessagesDownloadResponseStatus::Noop)
13553 }
13554}
13555
13556#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13557pub struct PostMessagesDownloadResponse {
13558 #[serde(
13562 default,
13563 skip_serializing_if = "String::is_empty",
13564 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13565 )]
13566 pub message: String,
13567 #[serde(default, skip_serializing_if = "Option::is_none")]
13568 pub status: Option<PostMessagesDownloadResponseStatus>,
13569}
13570
13571#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13572pub struct GetMessagesDownloadResponse {
13573 #[serde(
13577 default,
13578 skip_serializing_if = "String::is_empty",
13579 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13580 )]
13581 pub csv: String,
13582 #[serde(
13586 default,
13587 skip_serializing_if = "String::is_empty",
13588 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13589 )]
13590 pub presigned_url: String,
13591}
13592
13593#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13594pub struct GetTrackingSettingsResponseResult {
13595 #[serde(
13599 default,
13600 skip_serializing_if = "String::is_empty",
13601 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13602 )]
13603 pub description: String,
13604 #[serde(
13608 default,
13609 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
13610 )]
13611 pub enabled: bool,
13612 #[serde(
13616 default,
13617 skip_serializing_if = "String::is_empty",
13618 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13619 )]
13620 pub name: String,
13621 #[serde(
13625 default,
13626 skip_serializing_if = "String::is_empty",
13627 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13628 )]
13629 pub title: String,
13630}
13631
13632#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13633pub struct GetTrackingSettingsResponse {
13634 #[serde(
13638 default,
13639 skip_serializing_if = "Vec::is_empty",
13640 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13641 )]
13642 pub result: Vec<GetTrackingSettingsResponseResult>,
13643}
13644
13645#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13646pub struct PatchTrackingSettingsOpenRequest {
13647 #[serde(default, skip_serializing_if = "Option::is_none")]
13648 pub enabled: Option<bool>,
13649}
13650
13651#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13652pub struct GetStatsResponse {
13653 #[serde(default, skip_serializing_if = "Option::is_none")]
13654 pub metrics: Option<StatsAdvancedGlobalAllOf>,
13655}
13656
13657#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13658pub struct GetStatsResponseData {
13659 #[serde(
13663 default,
13664 skip_serializing_if = "String::is_empty",
13665 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13666 )]
13667 pub date: String,
13668 #[serde(
13672 default,
13673 skip_serializing_if = "Vec::is_empty",
13674 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13675 )]
13676 pub stats: Vec<GetStatsResponse>,
13677}
13678
13679#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
13683pub enum Country {
13684 #[serde(rename = "CA")]
13685 Ca,
13686 #[serde(rename = "US")]
13687 Us,
13688 #[serde(rename = "")]
13689 #[default]
13690 Noop,
13691 #[serde(other)]
13692 FallthroughString,
13693}
13694
13695impl std::fmt::Display for Country {
13696 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
13697 match self {
13698 Country::Ca => "CA",
13699 Country::Us => "US",
13700 Country::Noop => "",
13701 Country::FallthroughString => "*",
13702 }
13703 .fmt(f)
13704 }
13705}
13706
13707impl Country {
13708 pub fn is_noop(&self) -> bool {
13709 matches!(self, Country::Noop)
13710 }
13711}
13712
13713#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13714pub struct GetGeoStatsResponse {
13715 #[serde(default, skip_serializing_if = "Option::is_none")]
13716 pub metrics: Option<AdvancedStatsClicksOpensAllOf>,
13717 #[serde(
13721 default,
13722 skip_serializing_if = "String::is_empty",
13723 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13724 )]
13725 pub name: String,
13726 #[serde(
13730 default,
13731 skip_serializing_if = "String::is_empty",
13732 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
13733 rename = "type"
13734 )]
13735 pub type_: String,
13736}
13737
13738#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13739pub struct GetGeoStatsResponseData {
13740 #[serde(
13744 default,
13745 skip_serializing_if = "String::is_empty",
13746 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13747 )]
13748 pub date: String,
13749 #[serde(
13753 default,
13754 skip_serializing_if = "Vec::is_empty",
13755 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13756 )]
13757 pub stats: Vec<GetGeoStatsResponse>,
13758}
13759
13760#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13761pub struct GetDevicesStatsResponse {
13762 #[serde(default, skip_serializing_if = "Option::is_none")]
13766 pub metrics: Option<AdvancedStatsOpens>,
13767 #[serde(
13771 default,
13772 skip_serializing_if = "String::is_empty",
13773 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13774 )]
13775 pub name: String,
13776 #[serde(
13780 default,
13781 skip_serializing_if = "String::is_empty",
13782 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
13783 rename = "type"
13784 )]
13785 pub type_: String,
13786}
13787
13788#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13789pub struct GetClientsStatsResponse {
13790 #[serde(
13794 default,
13795 skip_serializing_if = "String::is_empty",
13796 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13797 )]
13798 pub date: String,
13799 #[serde(
13803 default,
13804 skip_serializing_if = "Vec::is_empty",
13805 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13806 )]
13807 pub stats: Vec<GetDevicesStatsResponse>,
13808}
13809
13810#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
13814pub enum ClientType {
13815 #[serde(rename = "desktop")]
13816 Desktop,
13817 #[serde(rename = "phone")]
13818 Phone,
13819 #[serde(rename = "tablet")]
13820 Tablet,
13821 #[serde(rename = "webmail")]
13822 Webmail,
13823 #[serde(rename = "")]
13824 #[default]
13825 Noop,
13826 #[serde(other)]
13827 FallthroughString,
13828}
13829
13830impl std::fmt::Display for ClientType {
13831 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
13832 match self {
13833 ClientType::Desktop => "desktop",
13834 ClientType::Phone => "phone",
13835 ClientType::Tablet => "tablet",
13836 ClientType::Webmail => "webmail",
13837 ClientType::Noop => "",
13838 ClientType::FallthroughString => "*",
13839 }
13840 .fmt(f)
13841 }
13842}
13843
13844impl ClientType {
13845 pub fn is_noop(&self) -> bool {
13846 matches!(self, ClientType::Noop)
13847 }
13848}
13849
13850#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13851pub struct GetMailboxProvidersStatsResponse {
13852 #[serde(default, skip_serializing_if = "Option::is_none")]
13853 pub metrics: Option<AdvancedStatsMailboxProviderAllOf>,
13854 #[serde(
13858 default,
13859 skip_serializing_if = "String::is_empty",
13860 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13861 )]
13862 pub name: String,
13863 #[serde(
13867 default,
13868 skip_serializing_if = "String::is_empty",
13869 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
13870 rename = "type"
13871 )]
13872 pub type_: String,
13873}
13874
13875#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13876pub struct GetMailboxProvidersStatsResponseData {
13877 #[serde(
13881 default,
13882 skip_serializing_if = "String::is_empty",
13883 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13884 )]
13885 pub date: String,
13886 #[serde(
13890 default,
13891 skip_serializing_if = "Vec::is_empty",
13892 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13893 )]
13894 pub stats: Vec<GetMailboxProvidersStatsResponse>,
13895}
13896
13897#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13898pub struct GetBrowsersStatsResponse {
13899 #[serde(default, skip_serializing_if = "Option::is_none")]
13903 pub metrics: Option<AdvancedStatsClicks>,
13904 #[serde(
13908 default,
13909 skip_serializing_if = "String::is_empty",
13910 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13911 )]
13912 pub name: String,
13913 #[serde(
13917 default,
13918 skip_serializing_if = "String::is_empty",
13919 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
13920 rename = "type"
13921 )]
13922 pub type_: String,
13923}
13924
13925#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13926pub struct GetBrowsersStatsResponseData {
13927 #[serde(
13931 default,
13932 skip_serializing_if = "String::is_empty",
13933 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13934 )]
13935 pub date: String,
13936 #[serde(
13940 default,
13941 skip_serializing_if = "Vec::is_empty",
13942 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13943 )]
13944 pub stats: Vec<GetBrowsersStatsResponse>,
13945}
13946
13947#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13948pub struct DeleteSuppressionBouncesRequest {
13949 #[serde(default, skip_serializing_if = "Option::is_none")]
13950 pub delete_all: Option<bool>,
13951 #[serde(
13952 default,
13953 skip_serializing_if = "Vec::is_empty",
13954 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13955 )]
13956 pub emails: Vec<String>,
13957}
13958
13959#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13960pub struct DeleteSuppressionBlocksRequest {
13961 #[serde(default, skip_serializing_if = "Option::is_none")]
13962 pub delete_all: Option<bool>,
13963 #[serde(
13964 default,
13965 skip_serializing_if = "Vec::is_empty",
13966 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
13967 )]
13968 pub emails: Vec<String>,
13969}
13970
13971#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13972pub struct GetSuppressionUnsubscribesResponse {
13973 #[serde(
13974 default,
13975 skip_serializing_if = "crate::utils::zero_i64",
13976 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
13977 )]
13978 pub created: i64,
13979 #[serde(
13983 default,
13984 skip_serializing_if = "String::is_empty",
13985 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13986 )]
13987 pub email: String,
13988}
13989
13990#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
13991pub struct RetrieveAGlobalSuppressionResponse {
13992 #[serde(
13996 default,
13997 skip_serializing_if = "String::is_empty",
13998 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
13999 )]
14000 pub recipient_email: String,
14001}
14002
14003#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
14004pub struct PostAsmGroupsResponse {
14005 #[serde(
14009 default,
14010 skip_serializing_if = "String::is_empty",
14011 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14012 )]
14013 pub description: String,
14014 #[serde(
14015 default,
14016 skip_serializing_if = "crate::utils::zero_i64",
14017 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
14018 )]
14019 pub id: i64,
14020 #[serde(
14024 default,
14025 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
14026 )]
14027 pub is_default: bool,
14028 #[serde(
14032 default,
14033 skip_serializing_if = "String::is_empty",
14034 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14035 )]
14036 pub name: String,
14037}
14038
14039#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
14040pub struct GetAsmGroupsGroupResponse {
14041 #[serde(
14042 default,
14043 skip_serializing_if = "crate::utils::zero_i64",
14044 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
14045 )]
14046 pub id: i64,
14047 #[serde(
14051 default,
14052 skip_serializing_if = "String::is_empty",
14053 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14054 )]
14055 pub last_email_sent_at: String,
14056 #[serde(
14057 default,
14058 skip_serializing_if = "crate::utils::zero_i64",
14059 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
14060 )]
14061 pub unsubscribes: i64,
14062}
14063
14064#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
14070pub struct GetAsmGroupsGroupResponseAllOf {
14071 #[serde(flatten)]
14072 pub suppression_group_request_base: SuppressionGroupRequestBase,
14073 #[serde(flatten)]
14074 pub get_asm_groups_group_response: GetAsmGroupsGroupResponse,
14075}
14076
14077#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
14078pub struct PostAsmGroupsGroupSuppressionsResponse {
14079 #[serde(
14083 default,
14084 skip_serializing_if = "Vec::is_empty",
14085 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
14086 )]
14087 pub recipient_emails: Vec<String>,
14088}
14089
14090#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
14091pub struct GetAsmSuppressionsResponse {
14092 #[serde(
14093 default,
14094 skip_serializing_if = "crate::utils::zero_i64",
14095 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
14096 )]
14097 pub created_at: i64,
14098 #[serde(
14102 default,
14103 skip_serializing_if = "String::is_empty",
14104 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14105 )]
14106 pub email: String,
14107 #[serde(
14108 default,
14109 skip_serializing_if = "crate::utils::zero_i64",
14110 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
14111 )]
14112 pub group_id: i64,
14113 #[serde(
14117 default,
14118 skip_serializing_if = "String::is_empty",
14119 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14120 )]
14121 pub group_name: String,
14122}
14123
14124#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
14125pub struct Suppressions {
14126 #[serde(
14130 default,
14131 skip_serializing_if = "String::is_empty",
14132 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14133 )]
14134 pub description: String,
14135 #[serde(
14136 default,
14137 skip_serializing_if = "crate::utils::zero_i64",
14138 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
14139 )]
14140 pub id: i64,
14141 #[serde(
14145 default,
14146 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
14147 )]
14148 pub is_default: bool,
14149 #[serde(
14153 default,
14154 skip_serializing_if = "String::is_empty",
14155 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14156 )]
14157 pub name: String,
14158 #[serde(
14162 default,
14163 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
14164 )]
14165 pub suppressed: bool,
14166}
14167
14168#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
14169pub struct GetAsmSuppressionsEmailResponse {
14170 #[serde(
14174 default,
14175 skip_serializing_if = "Vec::is_empty",
14176 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
14177 )]
14178 pub suppressions: Vec<Suppressions>,
14179}