sendgrid_api/
types.rs

1//! The data types sent to and returned from the API client.
2use 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    /**
13     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
14     */
15    #[serde(
16        default,
17        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
18    )]
19    pub enabled: bool,
20    /**
21     * The license key provided with your New Relic account.
22     */
23    #[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    /**
73     * The indices of the recipient(s) sent that caused the error.
74     */
75    #[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    /**
82     * The license key provided with your New Relic account.
83     */
84    #[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    /**
95     * The number of errors found while adding recipients.
96     */
97    #[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    /**
116     * The number of errors found while adding recipients.
117     */
118    #[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    /**
125     * The recipient IDs of the recipients that already existed from this request.
126     */
127    #[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    /**
134     * The number of errors found while adding recipients.
135     */
136    #[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    /**
153     * The license key provided with your New Relic account.
154     */
155    #[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/// All of the following types are flattened into one object:
164///
165/// - `CampaignsRequest`
166/// - `CampaignResponse`
167///
168#[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    /**
252     * The license key provided with your New Relic account.
253     */
254    #[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    /**
263     * The license key provided with your New Relic account.
264     */
265    #[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/// helper text or docs for troubleshooting
302#[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    /**
380     * The license key provided with your New Relic account.
381     */
382    #[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/// The DKIM record for messages sent using this authenticated domain.
391#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
392pub struct Dkim {
393    /**
394     * The license key provided with your New Relic account.
395     */
396    #[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    /**
403     * The license key provided with your New Relic account.
404     */
405    #[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    /**
412     * The license key provided with your New Relic account.
413     */
414    #[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    /**
422     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
423     */
424    #[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    /**
434     * The DKIM record for messages sent using this authenticated domain.
435     */
436    pub a_record: Dkim,
437    /**
438     * The license key provided with your New Relic account.
439     */
440    #[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    /**
453     * The license key provided with your New Relic account.
454     */
455    #[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    /**
468     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
469     */
470    #[serde(
471        default,
472        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
473    )]
474    pub legacy: bool,
475    /**
476     * The license key provided with your New Relic account.
477     */
478    #[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    /**
491     * The users who are able to send mail from the IP address.
492     */
493    #[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    /**
500     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
501     */
502    #[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    /**
524     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
525     */
526    #[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    /**
538     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
539     */
540    #[serde(
541        default,
542        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
543    )]
544    pub verified: bool,
545}
546
547/// All of the following types are flattened into one object:
548///
549/// - `Help`
550/// - `SenderRequest`
551/// - `SenderId`
552///
553#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
554pub struct SenderAllOf {
555    /**
556     * helper text or docs for troubleshooting
557     */
558    #[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/**
567 * The type of the field.
568 */
569#[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    /**
618     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
619     */
620    #[serde(
621        default,
622        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
623    )]
624    pub disabled: bool,
625    /**
626     * The license key provided with your New Relic account.
627     */
628    #[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    /**
635     * The number of errors found while adding recipients.
636     */
637    #[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    /**
644     * The license key provided with your New Relic account.
645     */
646    #[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/**
670 * The type of DNS record that was generated.
671 */
672#[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/// The DNS record generated to point to your link branding subdomain.
707#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
708pub struct DomainCname {
709    /**
710     * The license key provided with your New Relic account.
711     */
712    #[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    /**
719     * The license key provided with your New Relic account.
720     */
721    #[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    /**
728     * The type of DNS record that was generated.
729     */
730    #[serde(
731        default,
732        skip_serializing_if = "LinkBranding200ResponseDnsDomainCnameType::is_noop",
733        rename = "type"
734    )]
735    pub type_: LinkBranding200ResponseDnsDomainCnameType,
736    /**
737     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
738     */
739    #[serde(
740        default,
741        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
742    )]
743    pub valid: bool,
744}
745
746/// The DNS record generated to verify who created the link branding.
747#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
748pub struct OwnerCname {
749    /**
750     * The license key provided with your New Relic account.
751     */
752    #[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    /**
759     * The license key provided with your New Relic account.
760     */
761    #[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    /**
768     * The DNS record generated to verify who created the link branding.
769     */
770    #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
771    pub type_: Option<LinkBranding200ResponseDnsDomainCnameType>,
772    /**
773     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
774     */
775    #[serde(
776        default,
777        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
778    )]
779    pub valid: bool,
780}
781
782/// The DNS records generated for this link branding.
783#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
784pub struct Dns {
785    /**
786     * The DNS record generated to point to your link branding subdomain.
787     */
788    pub domain_cname: DomainCname,
789    /**
790     * The DNS records generated for this link branding.
791     */
792    #[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    /**
799     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
800     */
801    #[serde(
802        default,
803        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
804    )]
805    pub default: bool,
806    /**
807     * The DNS records generated for this link branding.
808     */
809    pub dns: Dns,
810    /**
811     * The license key provided with your New Relic account.
812     */
813    #[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    /**
826     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
827     */
828    #[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    /**
846     * The license key provided with your New Relic account.
847     */
848    #[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    /**
855     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
856     */
857    #[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    /**
867     * The license key provided with your New Relic account.
868     */
869    #[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    /**
886     * The recipient IDs of the recipients that already existed from this request.
887     */
888    #[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/// All of the following types are flattened into one object:
897///
898/// - `ApiKeyNameScopes`
899/// - `ApiKeyNameId`
900///
901#[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    /**
912     * The conditions for a recipient to be included in this segment.
913     */
914    #[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    /**
927     * The license key provided with your New Relic account.
928     */
929    #[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/// The individual events and their stats.
960#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
961pub struct AdvancedStatsOpens {
962    /**
963     * The individual events and their stats.
964     */
965    #[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    /**
972     * The individual events and their stats.
973     */
974    #[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    /**
1000     * The license key provided with your New Relic account.
1001     */
1002    #[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    /**
1019     * The license key provided with your New Relic account.
1020     */
1021    #[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    /**
1028     * The number of errors found while adding recipients.
1029     */
1030    #[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    /**
1041     * The license key provided with your New Relic account.
1042     */
1043    #[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    /**
1050     * helper text or docs for troubleshooting
1051     */
1052    #[serde(default, skip_serializing_if = "Option::is_none")]
1053    pub help: Option<Help>,
1054    /**
1055     * The license key provided with your New Relic account.
1056     */
1057    #[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/// The individual events and their stats.
1082#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1083pub struct AdvancedStatsMailboxProvider {
1084    /**
1085     * The individual events and their stats.
1086     */
1087    #[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    /**
1094     * The individual events and their stats.
1095     */
1096    #[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    /**
1103     * The individual events and their stats.
1104     */
1105    #[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    /**
1112     * The individual events and their stats.
1113     */
1114    #[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    /**
1121     * The individual events and their stats.
1122     */
1123    #[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    /**
1130     * The individual events and their stats.
1131     */
1132    #[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    /**
1139     * The individual events and their stats.
1140     */
1141    #[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    /**
1148     * The individual events and their stats.
1149     */
1150    #[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/// All of the following types are flattened into one object:
1159///
1160/// - `AdvancedStatsClicksOpensAllOf`
1161/// - `AdvancedStatsMailboxProvider`
1162///
1163#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1164pub struct AdvancedStatsMailboxProviderAllOf {
1165    #[serde(flatten)]
1166    pub advanced_stats_clicks_opens_all_of: AdvancedStatsClicksOpensAllOf,
1167    /**
1168     * The individual events and their stats.
1169     */
1170    #[serde(flatten)]
1171    pub advanced_stats_mailbox_provider: AdvancedStatsMailboxProvider,
1172}
1173
1174#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1175pub struct ContactdbCustomFieldWithId {
1176    /**
1177     * The number of errors found while adding recipients.
1178     */
1179    #[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/// All of the following types are flattened into one object:
1188///
1189/// - `ContactdbCustomField`
1190/// - `ContactdbCustomFieldWithId`
1191///
1192#[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    /**
1203     * The license key provided with your New Relic account.
1204     */
1205    #[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    /**
1255     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1256     */
1257    #[serde(
1258        default,
1259        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1260    )]
1261    pub bounce: bool,
1262    /**
1263     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1264     */
1265    #[serde(
1266        default,
1267        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1268    )]
1269    pub click: bool,
1270    /**
1271     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1272     */
1273    #[serde(
1274        default,
1275        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1276    )]
1277    pub deferred: bool,
1278    /**
1279     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1280     */
1281    #[serde(
1282        default,
1283        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1284    )]
1285    pub delivered: bool,
1286    /**
1287     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1288     */
1289    #[serde(
1290        default,
1291        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1292    )]
1293    pub dropped: bool,
1294    /**
1295     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1296     */
1297    #[serde(
1298        default,
1299        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1300    )]
1301    pub enabled: bool,
1302    /**
1303     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1304     */
1305    #[serde(
1306        default,
1307        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1308    )]
1309    pub group_resubscribe: bool,
1310    /**
1311     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1312     */
1313    #[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    /**
1331     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1332     */
1333    #[serde(
1334        default,
1335        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1336    )]
1337    pub open: bool,
1338    /**
1339     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1340     */
1341    #[serde(
1342        default,
1343        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1344    )]
1345    pub processed: bool,
1346    /**
1347     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1348     */
1349    #[serde(
1350        default,
1351        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1352    )]
1353    pub spam_report: bool,
1354    /**
1355     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
1356     */
1357    #[serde(
1358        default,
1359        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1360    )]
1361    pub unsubscribe: bool,
1362    /**
1363     * The license key provided with your New Relic account.
1364     */
1365    #[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    /**
1570     * The license key provided with your New Relic account.
1571     */
1572    #[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    /**
1579     * The license key provided with your New Relic account.
1580     */
1581    #[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    /**
1593     * The license key provided with your New Relic account.
1594     */
1595    #[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/// All of the following types are flattened into one object:
1642///
1643/// - `TransactionalTemplatesTemplateLean`
1644/// - `TransactionalTemplate`
1645///
1646#[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    /**
1663     * The license key provided with your New Relic account.
1664     */
1665    #[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    /**
1682     * The license key provided with your New Relic account.
1683     */
1684    #[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    /**
1691     * The number of errors found while adding recipients.
1692     */
1693    #[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    /**
1707     * The license key provided with your New Relic account.
1708     */
1709    #[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/// All of the following types are flattened into one object:
1755///
1756/// - `TransactionalTemplateVersionOutput`
1757/// - `TransactionalTemplateVersionCreate`
1758/// - `TransactionalTemplatesVersionOutputLean`
1759///
1760#[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    /**
1773     * The license key provided with your New Relic account.
1774     */
1775    #[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    /**
1782     * The license key provided with your New Relic account.
1783     */
1784    #[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    /**
1791     * The license key provided with your New Relic account.
1792     */
1793    #[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/**
1829 * The editor used in the UI.
1830 */
1831#[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    /**
1891     * The IDs of the lists you are sending this campaign to. You can have both segment IDs and list IDs
1892     */
1893    #[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    /**
1906     * The IDs of the lists you are sending this campaign to. You can have both segment IDs and list IDs
1907     */
1908    #[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    /**
1933     * The license key provided with your New Relic account.
1934     */
1935    #[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    /**
2046     * The license key provided with your New Relic account.
2047     */
2048    #[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    /**
2055     * The license key provided with your New Relic account.
2056     */
2057    #[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    /**
2066     * The license key provided with your New Relic account.
2067     */
2068    #[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    /**
2075     * The license key provided with your New Relic account.
2076     */
2077    #[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/**
2103 * The status of the scheduled send.
2104 */
2105#[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/// The status of the scheduled send.
2137#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2138pub struct UserScheduledSendStatus {
2139    /**
2140     * The status of the scheduled send.
2141     */
2142    #[serde(default, skip_serializing_if = "Status::is_noop")]
2143    pub status: Status,
2144}
2145
2146/// All of the following types are flattened into one object:
2147///
2148/// - `MailBatchId`
2149/// - `UserScheduledSendStatus`
2150///
2151#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2152pub struct UserScheduledSendStatusAllOf {
2153    #[serde(flatten)]
2154    pub mail_batch_id: MailBatchId,
2155    /**
2156     * The status of the scheduled send.
2157     */
2158    #[serde(flatten)]
2159    pub user_scheduled_send_status: UserScheduledSendStatus,
2160}
2161
2162/// All of the following types are flattened into one object:
2163///
2164/// - `AdvancedStatsOpens`
2165/// - `AdvancedStatsClicks`
2166///
2167#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2168pub struct AdvancedStatsClicksOpensAllOf {
2169    /**
2170     * The individual events and their stats.
2171     */
2172    #[serde(flatten)]
2173    pub advanced_stats_opens: AdvancedStatsOpens,
2174    /**
2175     * The individual events and their stats.
2176     */
2177    #[serde(flatten)]
2178    pub advanced_stats_clicks: AdvancedStatsClicks,
2179}
2180
2181#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2182pub struct ContactdbSegmentsWithId {
2183    /**
2184     * The number of errors found while adding recipients.
2185     */
2186    #[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/// All of the following types are flattened into one object:
2195///
2196/// - `ContactdbSegments`
2197/// - `ContactdbSegmentsWithId`
2198///
2199#[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/// The individual events and their stats.
2208#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2209pub struct AdvancedStatsClicks {
2210    /**
2211     * The individual events and their stats.
2212     */
2213    #[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    /**
2220     * The individual events and their stats.
2221     */
2222    #[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    /**
2233     * The number of errors found while adding recipients.
2234     */
2235    #[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    /**
2242     * The custom fields assigned to this recipient and their values.
2243     */
2244    #[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    /**
2251     * The license key provided with your New Relic account.
2252     */
2253    #[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    /**
2260     * The license key provided with your New Relic account.
2261     */
2262    #[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    /**
2269     * The license key provided with your New Relic account.
2270     */
2271    #[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    /**
2278     * The number of errors found while adding recipients.
2279     */
2280    #[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    /**
2287     * The number of errors found while adding recipients.
2288     */
2289    #[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    /**
2296     * The license key provided with your New Relic account.
2297     */
2298    #[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    /**
2305     * The number of errors found while adding recipients.
2306     */
2307    #[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    /**
2314     * The number of errors found while adding recipients.
2315     */
2316    #[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    /**
2367     * The license key provided with your New Relic account.
2368     */
2369    #[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    /**
2380     * The license key provided with your New Relic account.
2381     */
2382    #[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    /**
2402     * The license key provided with your New Relic account.
2403     */
2404    #[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    /**
2417     * The number of errors found while adding recipients.
2418     */
2419    #[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    /**
2426     * The license key provided with your New Relic account.
2427     */
2428    #[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    /**
2439     * The number of errors found while adding recipients.
2440     */
2441    #[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    /**
2452     * The license key provided with your New Relic account.
2453     */
2454    #[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/// All of the following types are flattened into one object:
2463///
2464/// - `ContactdbCustomFieldWithAllOf`
2465/// - `ContactdbCustomFieldWithValue`
2466///
2467#[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    /**
2497     * The license key provided with your New Relic account.
2498     */
2499    #[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    /**
2512     * The license key provided with your New Relic account.
2513     */
2514    #[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/**
2582 * Defines the generation of the template.
2583 */
2584#[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    /**
2618     * Defines the generation of the template.
2619     */
2620    #[serde(default, skip_serializing_if = "Generation::is_noop")]
2621    pub generation: Generation,
2622    /**
2623     * The license key provided with your New Relic account.
2624     */
2625    #[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    /**
2632     * The license key provided with your New Relic account.
2633     */
2634    #[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    /**
2641     * The license key provided with your New Relic account.
2642     */
2643    #[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    /**
2693     * The license key provided with your New Relic account.
2694     */
2695    #[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    /**
2716     * The license key provided with your New Relic account.
2717     */
2718    #[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    /**
2731     * The recipient IDs of the recipients that already existed from this request.
2732     */
2733    #[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    /**
2752     * The license key provided with your New Relic account.
2753     */
2754    #[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/// Result map of the import job.
2763#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2764pub struct Results {
2765    /**
2766     * Result map of the import job.
2767     */
2768    #[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    /**
2775     * Result map of the import job.
2776     */
2777    #[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    /**
2784     * Result map of the import job.
2785     */
2786    #[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    /**
2793     * Result map of the import job.
2794     */
2795    #[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    /**
2802     * Result map of the import job.
2803     */
2804    #[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    /**
2811     * Result map of the import job.
2812     */
2813    #[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    /**
2860     * The license key provided with your New Relic account.
2861     */
2862    #[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    /**
2870     * The license key provided with your New Relic account.
2871     */
2872    #[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    /**
2884     * The license key provided with your New Relic account.
2885     */
2886    #[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    /**
2893     * The license key provided with your New Relic account.
2894     */
2895    #[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    /**
2902     * The license key provided with your New Relic account.
2903     */
2904    #[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    /**
2911     * The license key provided with your New Relic account.
2912     */
2913    #[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    /**
2920     * The license key provided with your New Relic account.
2921     */
2922    #[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    /**
2931     * The license key provided with your New Relic account.
2932     */
2933    #[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    /**
2940     * The license key provided with your New Relic account.
2941     */
2942    #[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    /**
2949     * The license key provided with your New Relic account.
2950     */
2951    #[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    /**
2958     * The license key provided with your New Relic account.
2959     */
2960    #[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    /**
2967     * The license key provided with your New Relic account.
2968     */
2969    #[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/**
2990 * The export job's status. Allowed values: `pending`, `ready`, or `failure`.
2991 */
2992#[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    /**
3043     * The license key provided with your New Relic account.
3044     */
3045    #[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    /**
3052     * The license key provided with your New Relic account.
3053     */
3054    #[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    /**
3061     * The license key provided with your New Relic account.
3062     */
3063    #[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    /**
3076     * The export job's status. Allowed values: `pending`, `ready`, or `failure`.
3077     */
3078    #[serde(default, skip_serializing_if = "ContactExportStatus::is_noop")]
3079    pub status: ContactExportStatus,
3080    /**
3081     * The license key provided with your New Relic account.
3082     */
3083    #[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    /**
3102     * The number of errors found while adding recipients.
3103     */
3104    #[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    /**
3123     * The license key provided with your New Relic account.
3124     */
3125    #[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    /**
3138     * The recipient IDs of the recipients that already existed from this request.
3139     */
3140    #[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    /**
3147     * The number of errors found while adding recipients.
3148     */
3149    #[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    /**
3192     * The license key provided with your New Relic account.
3193     */
3194    #[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    /**
3287     * The license key provided with your New Relic account.
3288     */
3289    #[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    /**
3308     * The recipient IDs of the recipients that already existed from this request.
3309     */
3310    #[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    /**
3386     * The license key provided with your New Relic account.
3387     */
3388    #[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    /**
3450     * The license key provided with your New Relic account.
3451     */
3452    #[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    /**
3459     * The license key provided with your New Relic account.
3460     */
3461    #[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    /**
3532     * The license key provided with your New Relic account.
3533     */
3534    #[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    /**
3541     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
3542     */
3543    #[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    /**
3555     * The license key provided with your New Relic account.
3556     */
3557    #[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    /**
3564     * The license key provided with your New Relic account.
3565     */
3566    #[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    /**
3577     * The license key provided with your New Relic account.
3578     */
3579    #[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    /**
3586     * The license key provided with your New Relic account.
3587     */
3588    #[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    /**
3611     * The license key provided with your New Relic account.
3612     */
3613    #[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    /**
3654     * The license key provided with your New Relic account.
3655     */
3656    #[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    /**
3663     * The license key provided with your New Relic account.
3664     */
3665    #[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    /**
3678     * The license key provided with your New Relic account.
3679     */
3680    #[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    /**
3699     * The license key provided with your New Relic account.
3700     */
3701    #[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    /**
3708     * The license key provided with your New Relic account.
3709     */
3710    #[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    /**
3723     * The license key provided with your New Relic account.
3724     */
3725    #[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    /**
3740     * The license key provided with your New Relic account.
3741     */
3742    #[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    /**
3755     * The license key provided with your New Relic account.
3756     */
3757    #[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    /**
3764     * The recipient IDs of the recipients that already existed from this request.
3765     */
3766    #[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    /**
3779     * The license key provided with your New Relic account.
3780     */
3781    #[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    /**
3796     * The license key provided with your New Relic account.
3797     */
3798    #[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/// The user may choose to create up to 120 custom fields or none at all. This is not a reserved field.
3815#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3816pub struct ContactResponseCustomFields {
3817    /**
3818     * The user may choose to create up to 120 custom fields or none at all. This is not a reserved field.
3819     */
3820    #[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    /**
3828     * The user may choose to create up to 120 custom fields or none at all. This is not a reserved field.
3829     */
3830    #[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    /**
3842     * The license key provided with your New Relic account.
3843     */
3844    #[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    /**
3851     * The license key provided with your New Relic account.
3852     */
3853    #[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    /**
3860     * The recipient IDs of the recipients that already existed from this request.
3861     */
3862    #[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    /**
3869     * The license key provided with your New Relic account.
3870     */
3871    #[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    /**
3878     * The license key provided with your New Relic account.
3879     */
3880    #[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    /**
3887     * The user may choose to create up to 120 custom fields or none at all. This is not a reserved field.
3888     */
3889    pub custom_fields: ContactResponseCustomFields,
3890    /**
3891     * The license key provided with your New Relic account.
3892     */
3893    #[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    /**
3900     * The license key provided with your New Relic account.
3901     */
3902    #[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    /**
3909     * The license key provided with your New Relic account.
3910     */
3911    #[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    /**
3918     * The license key provided with your New Relic account.
3919     */
3920    #[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    /**
3945     * The license key provided with your New Relic account.
3946     */
3947    #[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/// Only verified sender identities can be used to send email.
3966#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3967pub struct Verified {
3968    /**
3969     * Only verified sender identities can be used to send email.
3970     */
3971    #[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    /**
3978     * Only verified sender identities can be used to send email.
3979     */
3980    #[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    /**
3996     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
3997     */
3998    #[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    /**
4010     * Only verified sender identities can be used to send email.
4011     */
4012    #[serde(default, skip_serializing_if = "Option::is_none")]
4013    pub verified: Option<Verified>,
4014}
4015
4016/// All of the following types are flattened into one object:
4017///
4018/// - `TneSenderId`
4019/// - `SendersRequestBody`
4020/// - `TneSenderData`
4021///
4022#[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    /**
4035     * The license key provided with your New Relic account.
4036     */
4037    #[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    /**
4044     * The license key provided with your New Relic account.
4045     */
4046    #[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    /**
4053     * The license key provided with your New Relic account.
4054     */
4055    #[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    /**
4105     * The license key provided with your New Relic account.
4106     */
4107    #[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    /**
4114     * The license key provided with your New Relic account.
4115     */
4116    #[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/// All of the following types are flattened into one object:
4125///
4126/// - `DesignDuplicateInput`
4127/// - `DesignCommonFieldsAllOf`
4128/// - `DesignInput`
4129///
4130#[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/// All of the following types are flattened into one object:
4141///
4142/// - `DesignInputAllOf`
4143/// - `DesignOutputSummaryAllOf`
4144///
4145#[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    /**
4162     * The license key provided with your New Relic account.
4163     */
4164    #[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    /**
4171     * The license key provided with your New Relic account.
4172     */
4173    #[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/// All of the following types are flattened into one object:
4188///
4189/// - `DesignDuplicateInput`
4190/// - `DesignCommonFieldsAllOf`
4191/// - `DesignOutputSummary`
4192///
4193#[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    /**
4250     * The license key provided with your New Relic account.
4251     */
4252    #[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    /**
4279     * The license key provided with your New Relic account.
4280     */
4281    #[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    /**
4300     * The recipient IDs of the recipients that already existed from this request.
4301     */
4302    #[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    /**
4321     * The recipient IDs of the recipients that already existed from this request.
4322     */
4323    #[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    /**
4342     * The license key provided with your New Relic account.
4343     */
4344    #[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    /**
4371     * The license key provided with your New Relic account.
4372     */
4373    #[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    /**
4380     * The license key provided with your New Relic account.
4381     */
4382    #[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    /**
4389     * The license key provided with your New Relic account.
4390     */
4391    #[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/// If the request is incorrect, an array of errors will be returned.
4400#[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/**
4411 * This is the A/B phase of the Single Send stat returned. If the `group_by` parameter doesn't include `ab_phase` in the request, then the value is "all".
4412 */
4413#[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    /**
4441     * This is the A/B phase of the Single Send stat returned. If the `group_by` parameter doesn't include `ab_phase` in the request, then the value is "all".
4442     */
4443    #[serde(default)]
4444    pub ab_phase: AbPhase,
4445    /**
4446     * The license key provided with your New Relic account.
4447     */
4448    #[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    /**
4455     * The license key provided with your New Relic account.
4456     */
4457    #[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    /**
4464     * The license key provided with your New Relic account.
4465     */
4466    #[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    /**
4491     * The license key provided with your New Relic account.
4492     */
4493    #[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    /**
4500     * The license key provided with your New Relic account.
4501     */
4502    #[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    /**
4511     * The license key provided with your New Relic account.
4512     */
4513    #[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    /**
4668     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4669     */
4670    #[serde(
4671        default,
4672        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
4673    )]
4674    pub all: bool,
4675    /**
4676     * The recipient IDs of the recipients that already existed from this request.
4677     */
4678    #[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    /**
4685     * The recipient IDs of the recipients that already existed from this request.
4686     */
4687    #[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    /**
4698     * The license key provided with your New Relic account.
4699     */
4700    #[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    /**
4707     * The license key provided with your New Relic account.
4708     */
4709    #[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    /**
4716     * The editor used in the UI.
4717     */
4718    #[serde(default, skip_serializing_if = "Option::is_none")]
4719    pub editor: Option<Editor>,
4720    /**
4721     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4722     */
4723    #[serde(
4724        default,
4725        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
4726    )]
4727    pub generate_plain_content: bool,
4728    /**
4729     * The license key provided with your New Relic account.
4730     */
4731    #[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    /**
4738     * The license key provided with your New Relic account.
4739     */
4740    #[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    /**
4747     * The license key provided with your New Relic account.
4748     */
4749    #[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    /**
4762     * The license key provided with your New Relic account.
4763     */
4764    #[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    /**
4789     * The license key provided with your New Relic account.
4790     */
4791    #[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    /**
4822     * The license key provided with your New Relic account.
4823     */
4824    #[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    /**
4831     * The license key provided with your New Relic account.
4832     */
4833    #[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    /**
4840     * The license key provided with your New Relic account.
4841     */
4842    #[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    /**
4863     * The license key provided with your New Relic account.
4864     */
4865    #[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    /**
4872     * The license key provided with your New Relic account.
4873     */
4874    #[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    /**
4885     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4886     */
4887    #[serde(default, skip_serializing_if = "Option::is_none")]
4888    pub bounce: Option<bool>,
4889    /**
4890     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4891     */
4892    #[serde(default, skip_serializing_if = "Option::is_none")]
4893    pub click: Option<bool>,
4894    /**
4895     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4896     */
4897    #[serde(default, skip_serializing_if = "Option::is_none")]
4898    pub deferred: Option<bool>,
4899    /**
4900     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4901     */
4902    #[serde(default, skip_serializing_if = "Option::is_none")]
4903    pub delivered: Option<bool>,
4904    /**
4905     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4906     */
4907    #[serde(default, skip_serializing_if = "Option::is_none")]
4908    pub dropped: Option<bool>,
4909    /**
4910     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4911     */
4912    #[serde(default, skip_serializing_if = "Option::is_none")]
4913    pub enabled: Option<bool>,
4914    /**
4915     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4916     */
4917    #[serde(default, skip_serializing_if = "Option::is_none")]
4918    pub group_resubscribe: Option<bool>,
4919    /**
4920     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4921     */
4922    #[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    /**
4943     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4944     */
4945    #[serde(default, skip_serializing_if = "Option::is_none")]
4946    pub open: Option<bool>,
4947    /**
4948     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4949     */
4950    #[serde(default, skip_serializing_if = "Option::is_none")]
4951    pub processed: Option<bool>,
4952    /**
4953     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4954     */
4955    #[serde(default, skip_serializing_if = "Option::is_none")]
4956    pub spam_report: Option<bool>,
4957    /**
4958     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4959     */
4960    #[serde(default, skip_serializing_if = "Option::is_none")]
4961    pub unsubscribe: Option<bool>,
4962    /**
4963     * The license key provided with your New Relic account.
4964     */
4965    #[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    /**
4976     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4977     */
4978    #[serde(default, skip_serializing_if = "Option::is_none")]
4979    pub bounce: Option<bool>,
4980    /**
4981     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4982     */
4983    #[serde(default, skip_serializing_if = "Option::is_none")]
4984    pub click: Option<bool>,
4985    /**
4986     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4987     */
4988    #[serde(default, skip_serializing_if = "Option::is_none")]
4989    pub deferred: Option<bool>,
4990    /**
4991     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4992     */
4993    #[serde(default, skip_serializing_if = "Option::is_none")]
4994    pub delivered: Option<bool>,
4995    /**
4996     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
4997     */
4998    #[serde(default, skip_serializing_if = "Option::is_none")]
4999    pub dropped: Option<bool>,
5000    /**
5001     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5002     */
5003    #[serde(default, skip_serializing_if = "Option::is_none")]
5004    pub enabled: Option<bool>,
5005    /**
5006     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5007     */
5008    #[serde(default, skip_serializing_if = "Option::is_none")]
5009    pub group_resubscribe: Option<bool>,
5010    /**
5011     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5012     */
5013    #[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    /**
5028     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5029     */
5030    #[serde(default, skip_serializing_if = "Option::is_none")]
5031    pub open: Option<bool>,
5032    /**
5033     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5034     */
5035    #[serde(default, skip_serializing_if = "Option::is_none")]
5036    pub processed: Option<bool>,
5037    /**
5038     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5039     */
5040    #[serde(default, skip_serializing_if = "Option::is_none")]
5041    pub spam_report: Option<bool>,
5042    /**
5043     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5044     */
5045    #[serde(default, skip_serializing_if = "Option::is_none")]
5046    pub unsubscribe: Option<bool>,
5047    /**
5048     * The license key provided with your New Relic account.
5049     */
5050    #[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    /**
5061     * The license key provided with your New Relic account.
5062     */
5063    #[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    /**
5086     * The license key provided with your New Relic account.
5087     */
5088    #[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    /**
5095     * The license key provided with your New Relic account.
5096     */
5097    #[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    /**
5116     *
5117     */
5118    #[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    /**
5164     * This is the A/B phase of the Single Send stat returned. If the `group_by` parameter doesn't include `ab_phase` in the request, then the value is "all".
5165     */
5166    #[serde(default)]
5167    pub ab_phase: AbPhase,
5168    /**
5169     * The license key provided with your New Relic account.
5170     */
5171    #[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    /**
5184     * The license key provided with your New Relic account.
5185     */
5186    #[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    /**
5205     * This is the index of the link's location in the email contents.
5206     */
5207    #[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    /**
5230     * The license key provided with your New Relic account.
5231     */
5232    #[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/// All of the following types are flattened into one object:
5257///
5258/// - `AuthenticationDomain`
5259/// - `DomainAuthentication200Response`
5260///
5261#[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/**
5270 * What differs between the A/B tests
5271 */
5272#[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/**
5304 * How the winner will be decided
5305 */
5306#[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    /**
5343     * The license key provided with your New Relic account.
5344     */
5345    #[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    /**
5352     * Last day to select an A/B Test Winner
5353     */
5354    #[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    /**
5367     * What differs between the A/B tests
5368     */
5369    #[serde(
5370        default,
5371        skip_serializing_if = "AbTestSummaryType::is_noop",
5372        rename = "type"
5373    )]
5374    pub type_: AbTestSummaryType,
5375    /**
5376     * How the winner will be decided
5377     */
5378    #[serde(default, skip_serializing_if = "WinnerCriteria::is_noop")]
5379    pub winner_criteria: WinnerCriteria,
5380    /**
5381     * The license key provided with your New Relic account.
5382     */
5383    #[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    /**
5390     * The license key provided with your New Relic account.
5391     */
5392    #[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    /**
5405     * The recipient IDs of the recipients that already existed from this request.
5406     */
5407    #[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    /**
5420     * The license key provided with your New Relic account.
5421     */
5422    #[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    /**
5429     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5430     */
5431    #[serde(
5432        default,
5433        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5434    )]
5435    pub is_abtest: bool,
5436    /**
5437     * The license key provided with your New Relic account.
5438     */
5439    #[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    /**
5464     * The license key provided with your New Relic account.
5465     */
5466    #[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    /**
5508     * The license key provided with your New Relic account.
5509     */
5510    #[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    /**
5523     * The license key provided with your New Relic account.
5524     */
5525    #[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    /**
5532     * The license key provided with your New Relic account.
5533     */
5534    #[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    /**
5662     * The license key provided with your New Relic account.
5663     */
5664    #[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/// All of the following types are flattened into one object:
5765///
5766/// - `AdvancedStatsClicksOpensAllOf`
5767/// - `StatsAdvancedGlobal`
5768///
5769#[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    /**
5780     * helper text or docs for troubleshooting
5781     */
5782    #[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    /**
5789     * The license key provided with your New Relic account.
5790     */
5791    #[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    /**
5798     * The individual email activity stats.
5799     */
5800    #[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    /**
5817     * helper text or docs for troubleshooting
5818     */
5819    #[serde(default, skip_serializing_if = "Option::is_none")]
5820    pub query_json: Option<Help>,
5821}
5822
5823/// All of the following types are flattened into one object:
5824///
5825/// - `SegmentSummary`
5826/// - `FullSegment`
5827/// - `SegmentWriteV2`
5828///
5829#[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    /**
5842     * The license key provided with your New Relic account.
5843     */
5844    #[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    /**
5851     * The license key provided with your New Relic account.
5852     */
5853    #[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    /**
5864     * The license key provided with your New Relic account.
5865     */
5866    #[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    /**
5879     * The license key provided with your New Relic account.
5880     */
5881    #[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    /**
5888     * The license key provided with your New Relic account.
5889     */
5890    #[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    /**
5898     * The license key provided with your New Relic account.
5899     */
5900    #[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    /**
5945     * The license key provided with your New Relic account.
5946     */
5947    #[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/// All of the following types are flattened into one object:
5970///
5971/// - `SinglesendRequest`
5972/// - `SinglesendResponse`
5973///
5974#[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    /**
5985     * The recipient IDs of the recipients that already existed from this request.
5986     */
5987    #[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    /**
5994     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
5995     */
5996    #[serde(
5997        default,
5998        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
5999    )]
6000    pub generate_plain_content: bool,
6001    /**
6002     * The license key provided with your New Relic account.
6003     */
6004    #[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/// All of the following types are flattened into one object:
6013///
6014/// - `DesignDuplicateInput`
6015/// - `DesignCommonFields`
6016///
6017#[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/**
6048 * The message's status.
6049 */
6050#[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    /**
6117     * The recipient IDs of the recipients that already existed from this request.
6118     */
6119    #[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    /**
6185     * The license key provided with your New Relic account.
6186     */
6187    #[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    /**
6194     * The license key provided with your New Relic account.
6195     */
6196    #[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    /**
6203     * The number of errors found while adding recipients.
6204     */
6205    #[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    /**
6212     * The license key provided with your New Relic account.
6213     */
6214    #[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/// All of the following types are flattened into one object:
6223///
6224/// - `CreateIntegrationRequest`
6225/// - `SsoIntegration`
6226///
6227#[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    /**
6240     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
6241     */
6242    #[serde(default, skip_serializing_if = "Option::is_none")]
6243    pub enabled: Option<bool>,
6244    /**
6245     * The license key provided with your New Relic account.
6246     */
6247    #[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    /**
6254     * The license key provided with your New Relic account.
6255     */
6256    #[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    /**
6263     * The license key provided with your New Relic account.
6264     */
6265    #[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    /**
6272     * The license key provided with your New Relic account.
6273     */
6274    #[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    /**
6285     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
6286     */
6287    #[serde(
6288        default,
6289        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6290    )]
6291    pub is_sso: bool,
6292    /**
6293     * The license key provided with your New Relic account.
6294     */
6295    #[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/// All of the following types are flattened into one object:
6304///
6305/// - `SsoTeammateCommonFields`
6306/// - `SsoTeammateResponse`
6307///
6308#[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    /**
6319     * The recipient IDs of the recipients that already existed from this request.
6320     */
6321    #[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/// All of the following types are flattened into one object:
6330///
6331/// - `SsoTeammateCommonFields`
6332/// - `GetScopesResponse`
6333///
6334#[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/**
6343 * A Teammate can be an “admin,” “owner,” or “teammate.” Each role is associated with the scope of the Teammate’s permissions.
6344 */
6345#[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    /**
6382     * The license key provided with your New Relic account.
6383     */
6384    #[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    /**
6391     * The license key provided with your New Relic account.
6392     */
6393    #[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    /**
6401     * The license key provided with your New Relic account.
6402     */
6403    #[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    /**
6410     * The license key provided with your New Relic account.
6411     */
6412    #[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    /**
6419     * The license key provided with your New Relic account.
6420     */
6421    #[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    /**
6428     * The license key provided with your New Relic account.
6429     */
6430    #[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    /**
6437     * The license key provided with your New Relic account.
6438     */
6439    #[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    /**
6446     * The recipient IDs of the recipients that already existed from this request.
6447     */
6448    #[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    /**
6455     * The license key provided with your New Relic account.
6456     */
6457    #[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    /**
6464     * A Teammate can be an “admin,” “owner,” or “teammate.” Each role is associated with the scope of the Teammate’s permissions.
6465     */
6466    #[serde(default, skip_serializing_if = "Option::is_none")]
6467    pub user_type: Option<UserType>,
6468    /**
6469     * The license key provided with your New Relic account.
6470     */
6471    #[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    /**
6478     * The license key provided with your New Relic account.
6479     */
6480    #[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/// All of the following types are flattened into one object:
6489///
6490/// - `SsoTeammateResponseAllOf`
6491/// - `SsoTeammatesPatchResponse`
6492///
6493#[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    /**
6504     * The license key provided with your New Relic account.
6505     */
6506    #[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    /**
6513     * The license key provided with your New Relic account.
6514     */
6515    #[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    /**
6522     * The license key provided with your New Relic account.
6523     */
6524    #[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    /**
6535     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
6536     */
6537    #[serde(
6538        default,
6539        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
6540    )]
6541    pub enable_text: bool,
6542    /**
6543     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
6544     */
6545    #[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    /**
6555     * The license key provided with your New Relic account.
6556     */
6557    #[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    /**
6564     * The license key provided with your New Relic account.
6565     */
6566    #[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    /**
6583     * The license key provided with your New Relic account.
6584     */
6585    #[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    /**
6602     * The license key provided with your New Relic account.
6603     */
6604    #[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    /**
6611     * The license key provided with your New Relic account.
6612     */
6613    #[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    /**
6630     * The license key provided with your New Relic account.
6631     */
6632    #[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    /**
6639     * The license key provided with your New Relic account.
6640     */
6641    #[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    /**
6648     * The license key provided with your New Relic account.
6649     */
6650    #[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    /**
6671     * The license key provided with your New Relic account.
6672     */
6673    #[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    /**
6680     * The license key provided with your New Relic account.
6681     */
6682    #[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/// Segment status indicates whether the segment's contacts will be updated periodically
6741#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6742pub struct SegmentStatusResponse {
6743    /**
6744     * Segment status indicates whether the segment's contacts will be updated periodically
6745     */
6746    #[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    /**
6753     * The license key provided with your New Relic account.
6754     */
6755    #[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    /**
6774     * The license key provided with your New Relic account.
6775     */
6776    #[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    /**
6783     * The license key provided with your New Relic account.
6784     */
6785    #[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    /**
6792     * The license key provided with your New Relic account.
6793     */
6794    #[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    /**
6801     * The license key provided with your New Relic account.
6802     */
6803    #[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    /**
6810     * The recipient IDs of the recipients that already existed from this request.
6811     */
6812    #[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    /**
6819     * The license key provided with your New Relic account.
6820     */
6821    #[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    /**
6828     * The license key provided with your New Relic account.
6829     */
6830    #[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    /**
6837     * Segment status indicates whether the segment's contacts will be updated periodically
6838     */
6839    pub status: SegmentStatusResponse,
6840    /**
6841     * The license key provided with your New Relic account.
6842     */
6843    #[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///
6852#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6853pub struct SegmentSummaryV2 {
6854    /**
6855     *
6856     */
6857    #[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    /**
6880     * The license key provided with your New Relic account.
6881     */
6882    #[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    /**
6889     * The license key provided with your New Relic account.
6890     */
6891    #[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    /**
6898     * The license key provided with your New Relic account.
6899     */
6900    #[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    /**
6907     * The license key provided with your New Relic account.
6908     */
6909    #[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    /**
6916     * The recipient IDs of the recipients that already existed from this request.
6917     */
6918    #[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    /**
6925     * The license key provided with your New Relic account.
6926     */
6927    #[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    /**
6934     * The license key provided with your New Relic account.
6935     */
6936    #[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    /**
6943     * The license key provided with your New Relic account.
6944     */
6945    #[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    /**
6952     * Segment status indicates whether the segment's contacts will be updated periodically
6953     */
6954    pub status: SegmentStatusResponse,
6955    /**
6956     * The license key provided with your New Relic account.
6957     */
6958    #[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    /**
6969     * The license key provided with your New Relic account.
6970     */
6971    #[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    /**
6978     * The license key provided with your New Relic account.
6979     */
6980    #[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/// If the request is incorrect, an array of errors will be returned.
6989#[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    /**
7002     * The license key provided with your New Relic account.
7003     */
7004    #[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    /**
7017     * The license key provided with your New Relic account.
7018     */
7019    #[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    /**
7086     * The license key provided with your New Relic account.
7087     */
7088    #[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    /**
7095     * The license key provided with your New Relic account.
7096     */
7097    #[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    /**
7104     * The license key provided with your New Relic account.
7105     */
7106    #[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    /**
7121     * The license key provided with your New Relic account.
7122     */
7123    #[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    /**
7130     * The license key provided with your New Relic account.
7131     */
7132    #[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/**
7141 * Name of event
7142 */
7143#[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/**
7202 * Use to distinguish between types of bounces
7203 */
7204#[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    /**
7247     * Use to distinguish between types of bounces
7248     */
7249    #[serde(default, skip_serializing_if = "BounceType::is_noop")]
7250    pub bounce_type: BounceType,
7251    /**
7252     * Name of event
7253     */
7254    #[serde(default, skip_serializing_if = "EventName::is_noop")]
7255    pub event_name: EventName,
7256    /**
7257     * The license key provided with your New Relic account.
7258     */
7259    #[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    /**
7266     * The license key provided with your New Relic account.
7267     */
7268    #[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    /**
7275     * The license key provided with your New Relic account.
7276     */
7277    #[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    /**
7290     * The license key provided with your New Relic account.
7291     */
7292    #[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/**
7301 * Whether or not the outbound IP is dedicated vs shared
7302 */
7303#[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    /**
7337     * The license key provided with your New Relic account.
7338     */
7339    #[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    /**
7352     * The recipient IDs of the recipients that already existed from this request.
7353     */
7354    #[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    /**
7361     * List of events related to email message
7362     */
7363    #[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    /**
7370     * The license key provided with your New Relic account.
7371     */
7372    #[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    /**
7379     * The license key provided with your New Relic account.
7380     */
7381    #[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    /**
7388     * This is the IP of the user who sent the message.
7389     */
7390    pub originating_ip: std::net::Ipv4Addr,
7391    /**
7392     * This is the IP of the user who sent the message.
7393     */
7394    pub outbound_ip: std::net::Ipv4Addr,
7395    /**
7396     * Whether or not the outbound IP is dedicated vs shared
7397     */
7398    #[serde(default, skip_serializing_if = "OutboundIpType::is_noop")]
7399    pub outbound_ip_type: OutboundIpType,
7400    /**
7401     * The message's status.
7402     */
7403    #[serde(
7404        default,
7405        skip_serializing_if = "EmailActivityResponseCommonFieldsStatus::is_noop"
7406    )]
7407    pub status: EmailActivityResponseCommonFieldsStatus,
7408    /**
7409     * The license key provided with your New Relic account.
7410     */
7411    #[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    /**
7418     * The license key provided with your New Relic account.
7419     */
7420    #[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    /**
7427     * The license key provided with your New Relic account.
7428     */
7429    #[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    /**
7436     * The license key provided with your New Relic account.
7437     */
7438    #[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    /**
7445     * The license key provided with your New Relic account.
7446     */
7447    #[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/// The DNS records for this authenticated domain.
7456#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7457pub struct DomainAuthenticationDns {
7458    /**
7459     * The DKIM record for messages sent using this authenticated domain.
7460     */
7461    pub dkim: Dkim,
7462    /**
7463     * The DKIM record for messages sent using this authenticated domain.
7464     */
7465    pub domain_spf: Dkim,
7466    /**
7467     * The DKIM record for messages sent using this authenticated domain.
7468     */
7469    pub mail_server: Dkim,
7470    /**
7471     * The DKIM record for messages sent using this authenticated domain.
7472     */
7473    pub subdomain_spf: Dkim,
7474}
7475
7476#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7477pub struct DomainAuthentication {
7478    /**
7479     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7480     */
7481    #[serde(
7482        default,
7483        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7484    )]
7485    pub automatic_security: bool,
7486    /**
7487     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7488     */
7489    #[serde(
7490        default,
7491        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7492    )]
7493    pub custom_spf: bool,
7494    /**
7495     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7496     */
7497    #[serde(
7498        default,
7499        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7500    )]
7501    pub default: bool,
7502    /**
7503     * The DNS records for this authenticated domain.
7504     */
7505    pub dns: DomainAuthenticationDns,
7506    /**
7507     * The license key provided with your New Relic account.
7508     */
7509    #[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    /**
7522     * The recipient IDs of the recipients that already existed from this request.
7523     */
7524    #[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    /**
7531     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7532     */
7533    #[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    /**
7551     * The license key provided with your New Relic account.
7552     */
7553    #[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    /**
7560     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7561     */
7562    #[serde(
7563        default,
7564        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7565    )]
7566    pub valid: bool,
7567}
7568
7569/// The DNS records used to authenticate the sending domain.
7570#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7571pub struct AuthenticationDomainDns {
7572    /**
7573     * The DKIM record for messages sent using this authenticated domain.
7574     */
7575    #[serde(rename = "dkim1")]
7576    pub dkim_1: Dkim,
7577    /**
7578     * The DKIM record for messages sent using this authenticated domain.
7579     */
7580    #[serde(rename = "dkim2")]
7581    pub dkim_2: Dkim,
7582    /**
7583     * The DKIM record for messages sent using this authenticated domain.
7584     */
7585    pub mail_cname: Dkim,
7586}
7587
7588#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
7589pub struct AuthenticationDomain {
7590    /**
7591     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7592     */
7593    #[serde(
7594        default,
7595        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7596    )]
7597    pub automatic_security: bool,
7598    /**
7599     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7600     */
7601    #[serde(
7602        default,
7603        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7604    )]
7605    pub custom_spf: bool,
7606    /**
7607     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7608     */
7609    #[serde(
7610        default,
7611        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7612    )]
7613    pub default: bool,
7614    /**
7615     * The DNS records used to authenticate the sending domain.
7616     */
7617    pub dns: AuthenticationDomainDns,
7618    /**
7619     * The license key provided with your New Relic account.
7620     */
7621    #[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    /**
7628     * The number of errors found while adding recipients.
7629     */
7630    #[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    /**
7637     * The recipient IDs of the recipients that already existed from this request.
7638     */
7639    #[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    /**
7646     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7647     */
7648    #[serde(
7649        default,
7650        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7651    )]
7652    pub legacy: bool,
7653    /**
7654     * The license key provided with your New Relic account.
7655     */
7656    #[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    /**
7663     * The number of errors found while adding recipients.
7664     */
7665    #[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    /**
7672     * The license key provided with your New Relic account.
7673     */
7674    #[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    /**
7681     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
7682     */
7683    #[serde(
7684        default,
7685        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
7686    )]
7687    pub valid: bool,
7688}
7689
7690/**
7691 * Dictates how the stats are time-sliced. Currently, `"total"` and `"day"` are supported.
7692 */
7693#[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/**
7806 * How to group the statistics. Must be either "day", "week", or "month".
7807 */
7808#[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    /**
7851     * The license key provided with your New Relic account.
7852     */
7853    #[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    /**
7874     * The license key provided with your New Relic account.
7875     */
7876    #[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    /**
7883     * helper text or docs for troubleshooting
7884     */
7885    #[serde(default, skip_serializing_if = "Option::is_none")]
7886    pub help: Option<Help>,
7887    /**
7888     * The license key provided with your New Relic account.
7889     */
7890    #[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    /**
7907     * The license key provided with your New Relic account.
7908     */
7909    #[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    /**
7920     * The license key provided with your New Relic account.
7921     */
7922    #[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    /**
7929     * The license key provided with your New Relic account.
7930     */
7931    #[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    /**
7938     * The license key provided with your New Relic account.
7939     */
7940    #[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    /**
7947     * The license key provided with your New Relic account.
7948     */
7949    #[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    /**
7970     * An array of recipients who will receive a copy of your email. Each object in this array must contain the recipient's email address. Each object in the array may optionally contain the recipient's name.
7971     */
7972    #[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    /**
7979     * An array of recipients who will receive a copy of your email. Each object in this array must contain the recipient's email address. Each object in the array may optionally contain the recipient's name.
7980     */
7981    #[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    /**
7988     * helper text or docs for troubleshooting
7989     */
7990    #[serde(default, skip_serializing_if = "Option::is_none")]
7991    pub custom_args: Option<Help>,
7992    /**
7993     * helper text or docs for troubleshooting
7994     */
7995    #[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    /**
8000     * helper text or docs for troubleshooting
8001     */
8002    #[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    /**
8011     * The license key provided with your New Relic account.
8012     */
8013    #[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    /**
8020     * helper text or docs for troubleshooting
8021     */
8022    #[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    /**
8035     * The license key provided with your New Relic account.
8036     */
8037    #[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    /**
8045     * The license key provided with your New Relic account.
8046     */
8047    #[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/**
8056 * The attachment's content-disposition, specifying how you would like the attachment to be displayed. For example, `“inline”` results in the attached file are displayed automatically within the message while `“attachment”` results in the attached file require some action to be taken before it is displayed, such as opening or downloading the file.
8057 */
8058#[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    /**
8083     * The license key provided with your New Relic account.
8084     */
8085    #[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    /**
8092     * The license key provided with your New Relic account.
8093     */
8094    #[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    /**
8101     * The attachment's content-disposition, specifying how you would like the attachment to be displayed. For example, `“inline”` results in the attached file are displayed automatically within the message while `“attachment”` results in the attached file require some action to be taken before it is displayed, such as opening or downloading the file.
8102     */
8103    #[serde(default, skip_serializing_if = "Option::is_none")]
8104    pub disposition: Option<Disposition>,
8105    /**
8106     * The license key provided with your New Relic account.
8107     */
8108    #[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    /**
8115     * The license key provided with your New Relic account.
8116     */
8117    #[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/// An object allowing you to specify how to handle unsubscribes.
8127#[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    /**
8136     * The IDs of the lists you are sending this campaign to. You can have both segment IDs and list IDs
8137     */
8138    #[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/// Allows you to bypass all unsubscribe groups and suppressions to ensure that the email is delivered to every single recipient. This should only be used in emergencies when it is absolutely necessary that every recipient receives your email. This filter cannot be combined with any other bypass filters. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8147#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8148pub struct BypassListManagement {
8149    /**
8150     * Allows you to bypass all unsubscribe groups and suppressions to ensure that the email is delivered to every single recipient. This should only be used in emergencies when it is absolutely necessary that every recipient receives your email. This filter cannot be combined with any other bypass filters. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8151     */
8152    #[serde(
8153        default,
8154        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8155    )]
8156    pub enable: bool,
8157}
8158
8159/// Allows you to bypass the spam report list to ensure that the email is delivered to recipients. Bounce and unsubscribe lists will still be checked; addresses on these other lists will not receive the message. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8160#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8161pub struct BypassSpamManagement {
8162    /**
8163     * Allows you to bypass the spam report list to ensure that the email is delivered to recipients. Bounce and unsubscribe lists will still be checked; addresses on these other lists will not receive the message. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8164     */
8165    #[serde(
8166        default,
8167        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8168    )]
8169    pub enable: bool,
8170}
8171
8172/// Allows you to bypass the bounce list to ensure that the email is delivered to recipients. Spam report and unsubscribe lists will still be checked; addresses on these other lists will not receive the message. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8173#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8174pub struct BypassBounceManagement {
8175    /**
8176     * Allows you to bypass the bounce list to ensure that the email is delivered to recipients. Spam report and unsubscribe lists will still be checked; addresses on these other lists will not receive the message. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8177     */
8178    #[serde(
8179        default,
8180        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8181    )]
8182    pub enable: bool,
8183}
8184
8185/// Allows you to bypass the global unsubscribe list to ensure that the email is delivered to recipients. Bounce and spam report lists will still be checked; addresses on these other lists will not receive the message. This filter applies only to global unsubscribes and will not bypass group unsubscribes. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8186#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8187pub struct BypassUnsubscribeManagement {
8188    /**
8189     * Allows you to bypass the global unsubscribe list to ensure that the email is delivered to recipients. Bounce and spam report lists will still be checked; addresses on these other lists will not receive the message. This filter applies only to global unsubscribes and will not bypass group unsubscribes. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters.
8190     */
8191    #[serde(
8192        default,
8193        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8194    )]
8195    pub enable: bool,
8196}
8197
8198/// The default footer that you would like included on every email.
8199#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8200pub struct Footer {
8201    /**
8202     * The default footer that you would like included on every email.
8203     */
8204    #[serde(
8205        default,
8206        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8207    )]
8208    pub enable: bool,
8209    /**
8210     * The default footer that you would like included on every email.
8211     */
8212    #[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    /**
8219     * The default footer that you would like included on every email.
8220     */
8221    #[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/// Sandbox Mode allows you to send a test email to ensure that your request body is valid and formatted correctly.
8230#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8231pub struct SandboxMode {
8232    /**
8233     * Sandbox Mode allows you to send a test email to ensure that your request body is valid and formatted correctly.
8234     */
8235    #[serde(
8236        default,
8237        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8238    )]
8239    pub enable: bool,
8240}
8241
8242/// A collection of different mail settings that you can use to specify how you would like this email to be handled.
8243#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8244pub struct MailSettings {
8245    /**
8246     * A collection of different mail settings that you can use to specify how you would like this email to be handled.
8247     */
8248    #[serde(default, skip_serializing_if = "Option::is_none")]
8249    pub bypass_bounce_management: Option<BypassBounceManagement>,
8250    /**
8251     * A collection of different mail settings that you can use to specify how you would like this email to be handled.
8252     */
8253    #[serde(default, skip_serializing_if = "Option::is_none")]
8254    pub bypass_list_management: Option<BypassListManagement>,
8255    /**
8256     * A collection of different mail settings that you can use to specify how you would like this email to be handled.
8257     */
8258    #[serde(default, skip_serializing_if = "Option::is_none")]
8259    pub bypass_spam_management: Option<BypassSpamManagement>,
8260    /**
8261     * A collection of different mail settings that you can use to specify how you would like this email to be handled.
8262     */
8263    #[serde(default, skip_serializing_if = "Option::is_none")]
8264    pub bypass_unsubscribe_management: Option<BypassUnsubscribeManagement>,
8265    /**
8266     * A collection of different mail settings that you can use to specify how you would like this email to be handled.
8267     */
8268    #[serde(default, skip_serializing_if = "Option::is_none")]
8269    pub footer: Option<Footer>,
8270    /**
8271     * A collection of different mail settings that you can use to specify how you would like this email to be handled.
8272     */
8273    #[serde(default, skip_serializing_if = "Option::is_none")]
8274    pub sandbox_mode: Option<SandboxMode>,
8275}
8276
8277/// Allows you to track if a recipient clicked a link in your email.
8278#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8279pub struct PostMailSendRequestTrackingSettingsClick {
8280    /**
8281     * Allows you to track if a recipient clicked a link in your email.
8282     */
8283    #[serde(
8284        default,
8285        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8286    )]
8287    pub enable: bool,
8288    /**
8289     * Allows you to track if a recipient clicked a link in your email.
8290     */
8291    #[serde(
8292        default,
8293        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8294    )]
8295    pub enable_text: bool,
8296}
8297
8298/// Allows you to track if the email was opened by including a single pixel image in the body of the content. When the pixel is loaded, Twilio SendGrid can log that the email was opened.
8299#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8300pub struct OpenTracking {
8301    /**
8302     * Allows you to track if the email was opened by including a single pixel image in the body of the content. When the pixel is loaded, Twilio SendGrid can log that the email was opened.
8303     */
8304    #[serde(
8305        default,
8306        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8307    )]
8308    pub enable: bool,
8309    /**
8310     * Allows you to track if the email was opened by including a single pixel image in the body of the content. When the pixel is loaded, Twilio SendGrid can log that the email was opened.
8311     */
8312    #[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/// Allows you to insert a subscription management link at the bottom of the text and HTML bodies of your email. If you would like to specify the location of the link within your email, you may use the `substitution_tag`.
8321#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8322pub struct SubscriptionTracking {
8323    /**
8324     * Allows you to insert a subscription management link at the bottom of the text and HTML bodies of your email. If you would like to specify the location of the link within your email, you may use the `substitution_tag`.
8325     */
8326    #[serde(
8327        default,
8328        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8329    )]
8330    pub enable: bool,
8331    /**
8332     * Allows you to insert a subscription management link at the bottom of the text and HTML bodies of your email. If you would like to specify the location of the link within your email, you may use the `substitution_tag`.
8333     */
8334    #[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    /**
8341     * Allows you to insert a subscription management link at the bottom of the text and HTML bodies of your email. If you would like to specify the location of the link within your email, you may use the `substitution_tag`.
8342     */
8343    #[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    /**
8350     * Allows you to insert a subscription management link at the bottom of the text and HTML bodies of your email. If you would like to specify the location of the link within your email, you may use the `substitution_tag`.
8351     */
8352    #[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/// Allows you to enable tracking provided by Google Analytics.
8361#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8362pub struct Ganalytics {
8363    /**
8364     * Allows you to enable tracking provided by Google Analytics.
8365     */
8366    #[serde(
8367        default,
8368        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8369    )]
8370    pub enable: bool,
8371    /**
8372     * Allows you to enable tracking provided by Google Analytics.
8373     */
8374    #[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    /**
8381     * Allows you to enable tracking provided by Google Analytics.
8382     */
8383    #[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    /**
8390     * Allows you to enable tracking provided by Google Analytics.
8391     */
8392    #[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    /**
8399     * Allows you to enable tracking provided by Google Analytics.
8400     */
8401    #[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    /**
8408     * Allows you to enable tracking provided by Google Analytics.
8409     */
8410    #[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/// Settings to determine how you would like to track the metrics of how your recipients interact with your email.
8419#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8420pub struct TrackingSettings {
8421    /**
8422     * Settings to determine how you would like to track the metrics of how your recipients interact with your email.
8423     */
8424    #[serde(default, skip_serializing_if = "Option::is_none")]
8425    pub click_tracking: Option<PostMailSendRequestTrackingSettingsClick>,
8426    /**
8427     * Settings to determine how you would like to track the metrics of how your recipients interact with your email.
8428     */
8429    #[serde(default, skip_serializing_if = "Option::is_none")]
8430    pub ganalytics: Option<Ganalytics>,
8431    /**
8432     * Settings to determine how you would like to track the metrics of how your recipients interact with your email.
8433     */
8434    #[serde(default, skip_serializing_if = "Option::is_none")]
8435    pub open_tracking: Option<OpenTracking>,
8436    /**
8437     * Settings to determine how you would like to track the metrics of how your recipients interact with your email.
8438     */
8439    #[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    /**
8466     * An array where you can specify the content of your email. You can include multiple [MIME types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of content, but you must specify at least one MIME type. To include more than one MIME type, add another object to the array containing the `type` and `value` parameters.
8467     */
8468    #[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    /**
8492     * An array of messages and their metadata. Each object within personalizations can be thought of as an envelope - it defines who should receive an individual message and how that message should be handled. See our [Personalizations documentation](https://sendgrid.com/docs/for-developers/sending-email/personalizations/) for examples.
8493     */
8494    #[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    /**
8509     * The license key provided with your New Relic account.
8510     */
8511    #[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    /**
8530     * The license key provided with your New Relic account.
8531     */
8532    #[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    /**
8539     * The status of the scheduled send.
8540     */
8541    #[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    /**
8558     * The license key provided with your New Relic account.
8559     */
8560    #[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    /**
8577     * The license key provided with your New Relic account.
8578     */
8579    #[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    /**
8586     * The license key provided with your New Relic account.
8587     */
8588    #[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    /**
8595     * The license key provided with your New Relic account.
8596     */
8597    #[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    /**
8604     * The recipient IDs of the recipients that already existed from this request.
8605     */
8606    #[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    /**
8627     * The license key provided with your New Relic account.
8628     */
8629    #[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    /**
8648     * The license key provided with your New Relic account.
8649     */
8650    #[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    /**
8661     * This 401 response indicates that the user making the call doesn't have the authorization to view the list of scopes.
8662     */
8663    #[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    /**
8674     * The license key provided with your New Relic account.
8675     */
8676    #[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    /**
8687     * An array containing the IP(s) you want to allow.
8688     */
8689    #[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    /**
8700     * The IDs of the lists you are sending this campaign to. You can have both segment IDs and list IDs
8701     */
8702    #[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    /**
8713     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
8714     */
8715    #[serde(
8716        default,
8717        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8718    )]
8719    pub allowed: bool,
8720    /**
8721     * The license key provided with your New Relic account.
8722     */
8723    #[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    /**
8736     * The license key provided with your New Relic account.
8737     */
8738    #[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    /**
8751     * The license key provided with your New Relic account.
8752     */
8753    #[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    /**
8764     * An array containing the IPs that recently attempted to access your account.
8765     */
8766    #[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///
8775#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
8776pub struct PostSsoCertificatesRequest {
8777    /**
8778     *
8779     */
8780    #[serde(default, skip_serializing_if = "Option::is_none")]
8781    pub enabled: Option<bool>,
8782    /**
8783     * The license key provided with your New Relic account.
8784     */
8785    #[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    /**
8792     * The license key provided with your New Relic account.
8793     */
8794    #[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    /**
8847     * The license key provided with your New Relic account.
8848     */
8849    #[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    /**
8856     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
8857     */
8858    #[serde(
8859        default,
8860        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8861    )]
8862    pub enabled: bool,
8863    /**
8864     * The license key provided with your New Relic account.
8865     */
8866    #[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    /**
8873     * The license key provided with your New Relic account.
8874     */
8875    #[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    /**
8886     * The list of all mail settings.
8887     */
8888    #[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    /**
8923     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
8924     */
8925    #[serde(
8926        default,
8927        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
8928    )]
8929    pub enabled: bool,
8930    /**
8931     * The license key provided with your New Relic account.
8932     */
8933    #[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    /**
8958     * The list of all mail settings.
8959     */
8960    #[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    /**
8971     * The license key provided with your New Relic account.
8972     */
8973    #[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    /**
8980     * The license key provided with your New Relic account.
8981     */
8982    #[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    /**
8990     * The license key provided with your New Relic account.
8991     */
8992    #[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    /**
8999     * The license key provided with your New Relic account.
9000     */
9001    #[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    /**
9008     * The license key provided with your New Relic account.
9009     */
9010    #[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    /**
9017     * The license key provided with your New Relic account.
9018     */
9019    #[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    /**
9026     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
9027     */
9028    #[serde(
9029        default,
9030        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9031    )]
9032    pub is_admin: bool,
9033    /**
9034     * The license key provided with your New Relic account.
9035     */
9036    #[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    /**
9043     * The license key provided with your New Relic account.
9044     */
9045    #[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    /**
9052     * The license key provided with your New Relic account.
9053     */
9054    #[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    /**
9061     * A Teammate can be an “admin,” “owner,” or “teammate.” Each role is associated with the scope of the Teammate’s permissions.
9062     */
9063    #[serde(default, skip_serializing_if = "Option::is_none")]
9064    pub user_type: Option<UserType>,
9065    /**
9066     * The license key provided with your New Relic account.
9067     */
9068    #[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    /**
9075     * The license key provided with your New Relic account.
9076     */
9077    #[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    /**
9084     * The license key provided with your New Relic account.
9085     */
9086    #[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    /**
9107     * The license key provided with your New Relic account.
9108     */
9109    #[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    /**
9116     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
9117     */
9118    #[serde(default, skip_serializing_if = "Option::is_none")]
9119    pub is_admin: Option<bool>,
9120    /**
9121     * The recipient IDs of the recipients that already existed from this request.
9122     */
9123    #[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    /**
9134     * The license key provided with your New Relic account.
9135     */
9136    #[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    /**
9143     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
9144     */
9145    #[serde(
9146        default,
9147        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9148    )]
9149    pub is_admin: bool,
9150    /**
9151     * The recipient IDs of the recipients that already existed from this request.
9152     */
9153    #[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    /**
9160     * The license key provided with your New Relic account.
9161     */
9162    #[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    /**
9173     * The license key provided with your New Relic account.
9174     */
9175    #[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    /**
9182     * The license key provided with your New Relic account.
9183     */
9184    #[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    /**
9205     * The license key provided with your New Relic account.
9206     */
9207    #[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    /**
9214     * The license key provided with your New Relic account.
9215     */
9216    #[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    /**
9229     * The license key provided with your New Relic account.
9230     */
9231    #[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    /**
9238     * The license key provided with your New Relic account.
9239     */
9240    #[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    /**
9247     * The license key provided with your New Relic account.
9248     */
9249    #[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    /**
9260     * The license key provided with your New Relic account.
9261     */
9262    #[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    /**
9275     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
9276     */
9277    #[serde(
9278        default,
9279        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9280    )]
9281    pub is_admin: bool,
9282    /**
9283     * The recipient IDs of the recipients that already existed from this request.
9284     */
9285    #[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    /**
9292     * The license key provided with your New Relic account.
9293     */
9294    #[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    /**
9315     * The license key provided with your New Relic account.
9316     */
9317    #[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    /**
9324     * The license key provided with your New Relic account.
9325     */
9326    #[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    /**
9334     * The license key provided with your New Relic account.
9335     */
9336    #[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    /**
9343     * The license key provided with your New Relic account.
9344     */
9345    #[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    /**
9352     * The license key provided with your New Relic account.
9353     */
9354    #[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    /**
9361     * The license key provided with your New Relic account.
9362     */
9363    #[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    /**
9370     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
9371     */
9372    #[serde(
9373        default,
9374        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
9375    )]
9376    pub is_admin: bool,
9377    /**
9378     * The license key provided with your New Relic account.
9379     */
9380    #[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    /**
9387     * The license key provided with your New Relic account.
9388     */
9389    #[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    /**
9396     * The recipient IDs of the recipients that already existed from this request.
9397     */
9398    #[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    /**
9405     * The license key provided with your New Relic account.
9406     */
9407    #[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    /**
9414     * A Teammate can be an “admin,” “owner,” or “teammate.” Each role is associated with the scope of the Teammate’s permissions.
9415     */
9416    #[serde(default, skip_serializing_if = "Option::is_none")]
9417    pub user_type: Option<UserType>,
9418    /**
9419     * The license key provided with your New Relic account.
9420     */
9421    #[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    /**
9428     * The license key provided with your New Relic account.
9429     */
9430    #[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    /**
9437     * The license key provided with your New Relic account.
9438     */
9439    #[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    /**
9450     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
9451     */
9452    #[serde(default, skip_serializing_if = "Option::is_none")]
9453    pub is_admin: Option<bool>,
9454    /**
9455     * The recipient IDs of the recipients that already existed from this request.
9456     */
9457    #[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    /**
9468     * The license key provided with your New Relic account.
9469     */
9470    #[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/**
9479 * The type of alert.
9480 */
9481#[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    /**
9521     * The license key provided with your New Relic account.
9522     */
9523    #[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    /**
9530     * The license key provided with your New Relic account.
9531     */
9532    #[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    /**
9551     * The type of alert.
9552     */
9553    #[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    /**
9570     * The license key provided with your New Relic account.
9571     */
9572    #[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    /**
9591     * The type of alert.
9592     */
9593    #[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    /**
9610     * The license key provided with your New Relic account.
9611     */
9612    #[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    /**
9619     * The license key provided with your New Relic account.
9620     */
9621    #[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    /**
9640     * The license key provided with your New Relic account.
9641     */
9642    #[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/**
9658 * The type of alert.
9659 */
9660#[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    /**
9700     * The license key provided with your New Relic account.
9701     */
9702    #[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    /**
9709     * The license key provided with your New Relic account.
9710     */
9711    #[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    /**
9730     * The type of alert.
9731     */
9732    #[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    /**
9771     * The license key provided with your New Relic account.
9772     */
9773    #[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    /**
9787     * The license key provided with your New Relic account.
9788     */
9789    #[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    /**
9796     * The license key provided with your New Relic account.
9797     */
9798    #[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    /**
9805     * The license key provided with your New Relic account.
9806     */
9807    #[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    /**
9814     * The license key provided with your New Relic account.
9815     */
9816    #[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    /**
9823     * The license key provided with your New Relic account.
9824     */
9825    #[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    /**
9832     * The license key provided with your New Relic account.
9833     */
9834    #[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    /**
9841     * The license key provided with your New Relic account.
9842     */
9843    #[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    /**
9850     * The license key provided with your New Relic account.
9851     */
9852    #[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    /**
9859     * The license key provided with your New Relic account.
9860     */
9861    #[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/**
9870 * The type of account for this user.
9871 */
9872#[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    /**
9906     * The number of errors found while adding recipients.
9907     */
9908    #[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    /**
9915     * The type of account for this user.
9916     */
9917    #[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    /**
9928     * The license key provided with your New Relic account.
9929     */
9930    #[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    /**
9961     * The license key provided with your New Relic account.
9962     */
9963    #[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    /**
9974     * The license key provided with your New Relic account.
9975     */
9976    #[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    /**
9983     * The license key provided with your New Relic account.
9984     */
9985    #[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    /**
10004     * The license key provided with your New Relic account.
10005     */
10006    #[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    /**
10029     * The license key provided with your New Relic account.
10030     */
10031    #[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    /**
10038     * The license key provided with your New Relic account.
10039     */
10040    #[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    /**
10051     * The license key provided with your New Relic account.
10052     */
10053    #[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    /**
10060     * The IP addresses that should be assigned to this subuser.
10061     */
10062    #[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    /**
10069     * The license key provided with your New Relic account.
10070     */
10071    #[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    /**
10078     * The license key provided with your New Relic account.
10079     */
10080    #[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    /**
10097     * The number of errors found while adding recipients.
10098     */
10099    #[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    /**
10106     * The license key provided with your New Relic account.
10107     */
10108    #[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    /**
10119     * The IP addresses that should be assigned to this subuser.
10120     */
10121    #[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/**
10130 * The direction you want to sort.
10131 */
10132#[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/**
10155 * The metric that you want to sort by. Metrics that you can sort by are: `blocks`, `bounces`, `clicks`, `delivered`, `opens`, `requests`, `unique_clicks`, `unique_opens`, and `unsubscribes`.'
10156 */
10157#[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    /**
10205     * The license key provided with your New Relic account.
10206     */
10207    #[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/// The DNS record generated for the sending domain used for this branded link.
10222#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10223pub struct PostWhitelabelLinksValidateResponseValidationResultsDomainCname {
10224    /**
10225     * The license key provided with your New Relic account.
10226     */
10227    #[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    /**
10234     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10235     */
10236    #[serde(
10237        default,
10238        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10239    )]
10240    pub valid: bool,
10241}
10242
10243/// The individual validation results for each of the DNS records associated with this branded link.
10244#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10245pub struct ValidationResults {
10246    /**
10247     * The DNS record generated for the sending domain used for this branded link.
10248     */
10249    pub domain_cname: PostWhitelabelLinksValidateResponseValidationResultsDomainCname,
10250    /**
10251     * The individual validation results for each of the DNS records associated with this branded link.
10252     */
10253    #[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    /**
10266     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10267     */
10268    #[serde(
10269        default,
10270        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10271    )]
10272    pub valid: bool,
10273    /**
10274     * The individual validation results for each of the DNS records associated with this branded link.
10275     */
10276    pub validation_results: ValidationResults,
10277}
10278
10279#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10280pub struct PostWhitelabelLinksValidateResponseErrors {
10281    /**
10282     * The license key provided with your New Relic account.
10283     */
10284    #[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    /**
10295     * The reasons why the validation failed.
10296     */
10297    #[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    /**
10336     * The license key provided with your New Relic account.
10337     */
10338    #[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    /**
10349     * The errors that were encountered.
10350     */
10351    #[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    /**
10362     * The license key provided with your New Relic account.
10363     */
10364    #[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    /**
10371     * The license key provided with your New Relic account.
10372     */
10373    #[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/// The specific results of the validation.
10388#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10389pub struct PostWhitelabelIpsValidateResponseValidationResults {
10390    /**
10391     * The specific results of the validation.
10392     */
10393    #[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    /**
10406     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10407     */
10408    #[serde(
10409        default,
10410        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10411    )]
10412    pub valid: bool,
10413    /**
10414     * The specific results of the validation.
10415     */
10416    pub validation_results: PostWhitelabelIpsValidateResponseValidationResults,
10417}
10418
10419#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10420pub struct PostValidationsEmailRequest {
10421    /**
10422     * The license key provided with your New Relic account.
10423     */
10424    #[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/**
10439 * A generic classification of whether or not the email address is valid.
10440 */
10441#[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/// Checks on the domain portion of the email address.
10476#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10477pub struct Domain {
10478    /**
10479     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10480     */
10481    #[serde(
10482        default,
10483        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10484    )]
10485    pub has_mx_or_a_record: bool,
10486    /**
10487     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10488     */
10489    #[serde(
10490        default,
10491        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10492    )]
10493    pub has_valid_address_syntax: bool,
10494    /**
10495     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10496     */
10497    #[serde(
10498        default,
10499        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10500    )]
10501    pub is_suspected_disposable_address: bool,
10502}
10503
10504/// Checks on the local part of the email address.
10505#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10506pub struct LocalPart {
10507    /**
10508     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10509     */
10510    #[serde(
10511        default,
10512        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10513    )]
10514    pub is_suspected_role_address: bool,
10515}
10516
10517/// Additional checks on the email address.
10518#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10519pub struct Additional {
10520    /**
10521     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10522     */
10523    #[serde(
10524        default,
10525        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10526    )]
10527    pub has_known_bounces: bool,
10528    /**
10529     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10530     */
10531    #[serde(
10532        default,
10533        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10534    )]
10535    pub has_suspected_bounces: bool,
10536}
10537
10538/// Granular checks for email address validity.
10539#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10540pub struct Checks {
10541    /**
10542     * Additional checks on the email address.
10543     */
10544    pub additional: Additional,
10545    /**
10546     * Checks on the domain portion of the email address.
10547     */
10548    pub domain: Domain,
10549    /**
10550     * Checks on the local part of the email address.
10551     */
10552    pub local_part: LocalPart,
10553}
10554
10555#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
10556pub struct PostValidationsEmailResponseResult {
10557    /**
10558     * Granular checks for email address validity.
10559     */
10560    pub checks: Checks,
10561    /**
10562     * The license key provided with your New Relic account.
10563     */
10564    #[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    /**
10571     * The license key provided with your New Relic account.
10572     */
10573    #[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    /**
10580     * The license key provided with your New Relic account.
10581     */
10582    #[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    /**
10589     * The license key provided with your New Relic account.
10590     */
10591    #[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    /**
10598     * The number of errors found while adding recipients.
10599     */
10600    #[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    /**
10607     * The license key provided with your New Relic account.
10608     */
10609    #[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    /**
10616     * The license key provided with your New Relic account.
10617     */
10618    #[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    /**
10625     * A generic classification of whether or not the email address is valid.
10626     */
10627    #[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    /**
10645     * The license key provided with your New Relic account.
10646     */
10647    #[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    /**
10670     * The license key provided with your New Relic account.
10671     */
10672    #[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    /**
10679     * The license key provided with your New Relic account.
10680     */
10681    #[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    /**
10698     * The license key provided with your New Relic account.
10699     */
10700    #[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    /**
10707     * The recipient IDs of the recipients that already existed from this request.
10708     */
10709    #[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    /**
10722     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10723     */
10724    #[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    /**
10734     * The recipient IDs of the recipients that already existed from this request.
10735     */
10736    #[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    /**
10743     * The license key provided with your New Relic account.
10744     */
10745    #[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    /**
10766     * The license key provided with your New Relic account.
10767     */
10768    #[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    /**
10785     * The license key provided with your New Relic account.
10786     */
10787    #[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    /**
10794     * The recipient IDs of the recipients that already existed from this request.
10795     */
10796    #[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    /**
10803     * The license key provided with your New Relic account.
10804     */
10805    #[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    /**
10812     * The number of errors found while adding recipients.
10813     */
10814    #[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    /**
10821     * The recipient IDs of the recipients that already existed from this request.
10822     */
10823    #[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    /**
10830     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10831     */
10832    #[serde(
10833        default,
10834        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
10835    )]
10836    pub warmup: bool,
10837    /**
10838     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10839     */
10840    #[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    /**
10868     * The license key provided with your New Relic account.
10869     */
10870    #[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    /**
10877     * The recipient IDs of the recipients that already existed from this request.
10878     */
10879    #[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    /**
10890     * List of IP objects.
10891     */
10892    #[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    /**
10905     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10906     */
10907    #[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    /**
10917     * The license key provided with your New Relic account.
10918     */
10919    #[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    /**
10926     * The number of errors found while adding recipients.
10927     */
10928    #[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    /**
10955     * The license key provided with your New Relic account.
10956     */
10957    #[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    /**
10964     * The recipient IDs of the recipients that already existed from this request.
10965     */
10966    #[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    /**
10973     * The license key provided with your New Relic account.
10974     */
10975    #[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    /**
10988     * The recipient IDs of the recipients that already existed from this request.
10989     */
10990    #[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    /**
10997     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
10998     */
10999    #[serde(
11000        default,
11001        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11002    )]
11003    pub warmup: bool,
11004    /**
11005     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
11006     */
11007    #[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    /**
11029     * The license key provided with your New Relic account.
11030     */
11031    #[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/// The CNAME record for the authenticated domain.
11066#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11067pub struct MailCname {
11068    /**
11069     * The CNAME record for the authenticated domain.
11070     */
11071    #[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    /**
11078     * The CNAME record for the authenticated domain.
11079     */
11080    #[serde(
11081        default,
11082        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11083    )]
11084    pub valid: bool,
11085}
11086
11087/// A DNS record for this authenticated domain.
11088#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11089pub struct Dkim1 {
11090    /**
11091     * A DNS record for this authenticated domain.
11092     */
11093    #[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    /**
11100     * A DNS record for this authenticated domain.
11101     */
11102    #[serde(
11103        default,
11104        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11105    )]
11106    pub valid: bool,
11107}
11108
11109/// The SPF record for the authenticated domain.
11110#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11111pub struct Spf {
11112    /**
11113     * The SPF record for the authenticated domain.
11114     */
11115    #[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    /**
11122     * The SPF record for the authenticated domain.
11123     */
11124    #[serde(
11125        default,
11126        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11127    )]
11128    pub valid: bool,
11129}
11130
11131/// The individual DNS records that are checked when validating, including the reason for any invalid DNS records.
11132#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11133pub struct PostWhitelabelDomainsValidateResponseValidationResults {
11134    /**
11135     * The individual DNS records that are checked when validating, including the reason for any invalid DNS records.
11136     */
11137    #[serde(default, skip_serializing_if = "Option::is_none", rename = "dkim1")]
11138    pub dkim_1: Option<Dkim1>,
11139    /**
11140     * The individual DNS records that are checked when validating, including the reason for any invalid DNS records.
11141     */
11142    #[serde(default, skip_serializing_if = "Option::is_none", rename = "dkim2")]
11143    pub dkim_2: Option<Dkim1>,
11144    /**
11145     * The individual DNS records that are checked when validating, including the reason for any invalid DNS records.
11146     */
11147    #[serde(default, skip_serializing_if = "Option::is_none")]
11148    pub mail_cname: Option<MailCname>,
11149    /**
11150     * The individual DNS records that are checked when validating, including the reason for any invalid DNS records.
11151     */
11152    #[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    /**
11165     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
11166     */
11167    #[serde(
11168        default,
11169        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11170    )]
11171    pub valid: bool,
11172    /**
11173     * The individual DNS records that are checked when validating, including the reason for any invalid DNS records.
11174     */
11175    #[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    /**
11182     * The reasons why the validation failed.
11183     */
11184    #[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    /**
11195     * The recipient IDs of the recipients that already existed from this request.
11196     */
11197    #[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    /**
11204     * The recipient IDs of the recipients that already existed from this request.
11205     */
11206    #[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    /**
11222     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
11223     */
11224    #[serde(
11225        default,
11226        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11227    )]
11228    pub domain_verified: bool,
11229    /**
11230     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
11231     */
11232    #[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    /**
11258     * The license key provided with your New Relic account.
11259     */
11260    #[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    /**
11267     * The license key provided with your New Relic account.
11268     */
11269    #[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    /**
11276     * The license key provided with your New Relic account.
11277     */
11278    #[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    /**
11299     * The license key provided with your New Relic account.
11300     */
11301    #[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    /**
11308     * The license key provided with your New Relic account.
11309     */
11310    #[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    /**
11417     * One or more contacts objects that you intend to upsert. The available fields for a contact, including the required `email` field are described below.
11418     */
11419    #[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    /**
11426     * The recipient IDs of the recipients that already existed from this request.
11427     */
11428    #[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    /**
11439     * The license key provided with your New Relic account.
11440     */
11441    #[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/// The deletion job has been accepted and is being processed.
11450#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11451pub struct DeleteMcContactsResponse {
11452    /**
11453     * helper text or docs for troubleshooting
11454     */
11455    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/// `billable_breakdown` will only appear to the parent user in an account with subusers.
11469#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11470pub struct BillableBreakdown {
11471    /**
11472     * `billable_breakdown` will only appear to the parent user in an account with subusers.
11473     */
11474    #[serde(default, skip_serializing_if = "Option::is_none")]
11475    pub breakdown: Option<Help>,
11476    /**
11477     * `billable_breakdown` will only appear to the parent user in an account with subusers.
11478     */
11479    #[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    /**
11490     * `billable_breakdown` will only appear to the parent user in an account with subusers.
11491     */
11492    #[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    /**
11511     * The license key provided with your New Relic account.
11512     */
11513    #[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    /**
11521     * The license key provided with your New Relic account.
11522     */
11523    #[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    /**
11535     * The license key provided with your New Relic account.
11536     */
11537    #[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    /**
11544     * The license key provided with your New Relic account.
11545     */
11546    #[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    /**
11553     * The license key provided with your New Relic account.
11554     */
11555    #[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    /**
11569     * The license key provided with your New Relic account.
11570     */
11571    #[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    /**
11578     * The license key provided with your New Relic account.
11579     */
11580    #[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    /**
11587     * The license key provided with your New Relic account.
11588     */
11589    #[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    /**
11596     * The license key provided with your New Relic account.
11597     */
11598    #[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    /**
11605     * The license key provided with your New Relic account.
11606     */
11607    #[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    /**
11626     * The license key provided with your New Relic account.
11627     */
11628    #[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    /**
11635     * The recipient IDs of the recipients that already existed from this request.
11636     */
11637    #[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    /**
11644     * The license key provided with your New Relic account.
11645     */
11646    #[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    /**
11669     * The license key provided with your New Relic account.
11670     */
11671    #[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    /**
11678     * The license key provided with your New Relic account.
11679     */
11680    #[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    /**
11701     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
11702     */
11703    #[serde(
11704        default,
11705        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
11706    )]
11707    pub email: bool,
11708}
11709
11710/**
11711 * File type for export file. Choose from `json` or `csv`.
11712 */
11713#[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    /**
11738     * File type for export file. Choose from `json` or `csv`.
11739     */
11740    #[serde(default, skip_serializing_if = "Option::is_none")]
11741    pub file_type: Option<FileType>,
11742    /**
11743     * The recipient IDs of the recipients that already existed from this request.
11744     */
11745    #[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    /**
11760     * The recipient IDs of the recipients that already existed from this request.
11761     */
11762    #[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    /**
11775     * The license key provided with your New Relic account.
11776     */
11777    #[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    /**
11788     * The license key provided with your New Relic account.
11789     */
11790    #[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    /**
11803     * The number of errors found while adding recipients.
11804     */
11805    #[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/**
11820 * Upload file type.
11821 */
11822#[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/// All of the following types are flattened into one object:
11851///
11852/// - `String`
11853/// - `serde_json::Value`
11854///
11855#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11856pub struct FieldMappingsAnyOf {
11857    /**
11858     * The license key provided with your New Relic account.
11859     */
11860    #[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    /**
11869     * Import file header to reserved/custom field mapping.
11870     */
11871    #[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    /**
11878     * Upload file type.
11879     */
11880    #[serde(
11881        default,
11882        skip_serializing_if = "PutMcContactsImportsRequestFileType::is_noop"
11883    )]
11884    pub file_type: PutMcContactsImportsRequestFileType,
11885    /**
11886     * The recipient IDs of the recipients that already existed from this request.
11887     */
11888    #[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    /**
11899     * The license key provided with your New Relic account.
11900     */
11901    #[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    /**
11908     * The license key provided with your New Relic account.
11909     */
11910    #[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    /**
11921     * The license key provided with your New Relic account.
11922     */
11923    #[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    /**
11930     * A list of headers that must be included in PUT request.
11931     */
11932    #[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    /**
11939     * The license key provided with your New Relic account.
11940     */
11941    #[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/// Array of IDs
11966#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11967pub struct PostMarketingContactsBatchRequest {
11968    /**
11969     * The recipient IDs of the recipients that already existed from this request.
11970     */
11971    #[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///
11990#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
11991pub struct PostMarketingContactsSearchEmailsRequest {
11992    /**
11993     * The recipient IDs of the recipients that already existed from this request.
11994     */
11995    #[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    /**
12006     * helper text or docs for troubleshooting
12007     */
12008    #[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    /**
12015     * The license key provided with your New Relic account.
12016     */
12017    #[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    /**
12030     * The license key provided with your New Relic account.
12031     */
12032    #[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    /**
12039     * The license key provided with your New Relic account.
12040     */
12041    #[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    /**
12049     * The license key provided with your New Relic account.
12050     */
12051    #[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/// All of the following types are flattened into one object:
12108///
12109/// - `List`
12110/// - `GetMcListsResponseData`
12111///
12112#[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/// The delete has been accepted and is processing.
12121#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12122pub struct DeleteListsResponse {
12123    /**
12124     * The delete has been accepted and is processing.
12125     */
12126    #[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/// The removal is accepted and processing.
12145#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12146pub struct DeleteMcListsContactsResponse {
12147    /**
12148     * The removal is accepted and processing.
12149     */
12150    #[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    /**
12181     * The license key provided with your New Relic account.
12182     */
12183    #[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/// All of the following types are flattened into one object:
12198///
12199/// - `CustomFieldDefinitionsResponse`
12200/// - `PostMcFieldDefinitionsResponse`
12201///
12202#[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    /**
12223     * The license key provided with your New Relic account.
12224     */
12225    #[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/// All of the following types are flattened into one object:
12234///
12235/// - `SegmentWriteV2`
12236/// - `PostMarketingSegmentsRequest`
12237///
12238#[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/// resources in which segment is being used
12257#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12258pub struct Resources {
12259    /**
12260     * resources in which segment is being used
12261     */
12262    #[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    /**
12269     * resources in which segment is being used
12270     */
12271    #[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    /**
12283     * The license key provided with your New Relic account.
12284     */
12285    #[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    /**
12292     * The license key provided with your New Relic account.
12293     */
12294    #[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    /**
12301     * resources in which segment is being used
12302     */
12303    #[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    /**
12342     * The license key provided with your New Relic account.
12343     */
12344    #[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/**
12353 * This is the ISO 8601 time at which to send the Single Send; must be in future, or the string "now"
12354 */
12355#[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    /**
12386     * This is the ISO 8601 time at which to send the Single Send; must be in future, or the string "now"
12387     */
12388    #[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    /**
12435     * The recipient IDs of the recipients that already existed from this request.
12436     */
12437    #[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    /**
12454     * The recipient IDs of the recipients that already existed from this request.
12455     */
12456    #[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    /**
12481     * The license key provided with your New Relic account.
12482     */
12483    #[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    /**
12510     * helper text or docs for troubleshooting
12511     */
12512    #[serde(default, skip_serializing_if = "Option::is_none")]
12513    pub from: Option<Help>,
12514    /**
12515     * helper text or docs for troubleshooting
12516     */
12517    #[serde(default, skip_serializing_if = "Option::is_none")]
12518    pub reply_to: Option<Help>,
12519}
12520
12521/// All of the following types are flattened into one object:
12522///
12523/// - `SenderRequest`
12524/// - `PostSendersRequest`
12525///
12526#[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    /**
12553     * The license key provided with your New Relic account.
12554     */
12555    #[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    /**
12598     * The license key provided with your New Relic account.
12599     */
12600    #[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    /**
12607     * The license key provided with your New Relic account.
12608     */
12609    #[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    /**
12616     * The license key provided with your New Relic account.
12617     */
12618    #[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    /**
12629     * The license key provided with your New Relic account.
12630     */
12631    #[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    /**
12638     * The license key provided with your New Relic account.
12639     */
12640    #[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    /**
12647     * The license key provided with your New Relic account.
12648     */
12649    #[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    /**
12660     * The license key provided with your New Relic account.
12661     */
12662    #[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    /**
12669     * The license key provided with your New Relic account.
12670     */
12671    #[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    /**
12702     * The recipient IDs of the recipients that already existed from this request.
12703     */
12704    #[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/// All of the following types are flattened into one object:
12719///
12720/// - `String`
12721/// - `i64`
12722///
12723#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
12724pub struct ValueAnyOf {
12725    /**
12726     * The license key provided with your New Relic account.
12727     */
12728    #[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    /**
12743     * The license key provided with your New Relic account.
12744     */
12745    #[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    /**
12752     * The license key provided with your New Relic account.
12753     */
12754    #[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    /**
12780     * The license key provided with your New Relic account.
12781     */
12782    #[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    /**
12789     * The license key provided with your New Relic account.
12790     */
12791    #[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    /**
12798     * The license key provided with your New Relic account.
12799     */
12800    #[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    /**
12878     * The license key provided with your New Relic account.
12879     */
12880    #[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    /**
12887     * The license key provided with your New Relic account.
12888     */
12889    #[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    /**
12933     * The license key provided with your New Relic account.
12934     */
12935    #[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    /**
12956     * The license key provided with your New Relic account.
12957     */
12958    #[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    /**
12989     * The recipient IDs of the recipients that already existed from this request.
12990     */
12991    #[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    /**
12998     * The license key provided with your New Relic account.
12999     */
13000    #[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    /**
13007     * The license key provided with your New Relic account.
13008     */
13009    #[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    /**
13022     * The license key provided with your New Relic account.
13023     */
13024    #[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    /**
13031     * The IDs of the lists you are sending this campaign to. You can have both segment IDs and list IDs
13032     */
13033    #[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    /**
13040     * The license key provided with your New Relic account.
13041     */
13042    #[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    /**
13049     * The IDs of the lists you are sending this campaign to. You can have both segment IDs and list IDs
13050     */
13051    #[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    /**
13064     * The license key provided with your New Relic account.
13065     */
13066    #[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    /**
13073     * The license key provided with your New Relic account.
13074     */
13075    #[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    /**
13088     * The license key provided with your New Relic account.
13089     */
13090    #[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    /**
13101     * The recipient IDs of the recipients that already existed from this request.
13102     */
13103    #[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    /**
13110     * The license key provided with your New Relic account.
13111     */
13112    #[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    /**
13119     * The license key provided with your New Relic account.
13120     */
13121    #[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    /**
13128     * The license key provided with your New Relic account.
13129     */
13130    #[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    /**
13137     * The license key provided with your New Relic account.
13138     */
13139    #[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    /**
13156     * The license key provided with your New Relic account.
13157     */
13158    #[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/**
13177 * The status of your campaign.
13178 */
13179#[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    /**
13222     * The status of your campaign.
13223     */
13224    #[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    /**
13246     * The license key provided with your New Relic account.
13247     */
13248    #[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    /**
13259     * The license key provided with your New Relic account.
13260     */
13261    #[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/**
13270 * Comma-delimited list specifying which generations of templates to return. Options are `legacy`, `dynamic` or `legacy,dynamic`.
13271 */
13272#[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    /**
13302     *
13303     */
13304    #[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    /**
13315     * The license key provided with your New Relic account.
13316     */
13317    #[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    /**
13324     * The license key provided with your New Relic account.
13325     */
13326    #[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    /**
13349     * The license key provided with your New Relic account.
13350     */
13351    #[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    /**
13382     * The list of your current inbound parse settings.
13383     */
13384    #[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    /**
13395     * The number of errors found while adding recipients.
13396     */
13397    #[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    /**
13414     * The license key provided with your New Relic account.
13415     */
13416    #[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    /**
13423     * The Parse Webhook usage statistics.
13424     */
13425    #[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    /**
13436     * The license key provided with your New Relic account.
13437     */
13438    #[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    /**
13449     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
13450     */
13451    #[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    /**
13461     * The license key provided with your New Relic account.
13462     */
13463    #[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    /**
13470     * The license key provided with your New Relic account.
13471     */
13472    #[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    /**
13559     * The license key provided with your New Relic account.
13560     */
13561    #[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    /**
13574     * The license key provided with your New Relic account.
13575     */
13576    #[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    /**
13583     * The license key provided with your New Relic account.
13584     */
13585    #[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    /**
13596     * The license key provided with your New Relic account.
13597     */
13598    #[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    /**
13605     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
13606     */
13607    #[serde(
13608        default,
13609        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
13610    )]
13611    pub enabled: bool,
13612    /**
13613     * The license key provided with your New Relic account.
13614     */
13615    #[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    /**
13622     * The license key provided with your New Relic account.
13623     */
13624    #[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    /**
13635     * The list of all tracking settings.
13636     */
13637    #[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    /**
13660     * The license key provided with your New Relic account.
13661     */
13662    #[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    /**
13669     * The individual email activity stats.
13670     */
13671    #[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/**
13680 * The country you would like to see statistics for. Currently only supported for US and CA.
13681 */
13682#[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    /**
13718     * The license key provided with your New Relic account.
13719     */
13720    #[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    /**
13727     * The license key provided with your New Relic account.
13728     */
13729    #[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    /**
13741     * The license key provided with your New Relic account.
13742     */
13743    #[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    /**
13750     * The list of statistics.
13751     */
13752    #[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    /**
13763     * The individual events and their stats.
13764     */
13765    #[serde(default, skip_serializing_if = "Option::is_none")]
13766    pub metrics: Option<AdvancedStatsOpens>,
13767    /**
13768     * The license key provided with your New Relic account.
13769     */
13770    #[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    /**
13777     * The license key provided with your New Relic account.
13778     */
13779    #[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    /**
13791     * The license key provided with your New Relic account.
13792     */
13793    #[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    /**
13800     * The list of statistics.
13801     */
13802    #[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/**
13811 * Specifies the type of client to retrieve stats for. Must be either "phone", "tablet", "webmail", or "desktop".
13812 */
13813#[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    /**
13855     * The license key provided with your New Relic account.
13856     */
13857    #[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    /**
13864     * The license key provided with your New Relic account.
13865     */
13866    #[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    /**
13878     * The license key provided with your New Relic account.
13879     */
13880    #[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    /**
13887     * The list of statistics.
13888     */
13889    #[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    /**
13900     * The individual events and their stats.
13901     */
13902    #[serde(default, skip_serializing_if = "Option::is_none")]
13903    pub metrics: Option<AdvancedStatsClicks>,
13904    /**
13905     * The license key provided with your New Relic account.
13906     */
13907    #[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    /**
13914     * The license key provided with your New Relic account.
13915     */
13916    #[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    /**
13928     * The license key provided with your New Relic account.
13929     */
13930    #[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    /**
13937     * The list of statistics.
13938     */
13939    #[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    /**
13980     * The license key provided with your New Relic account.
13981     */
13982    #[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    /**
13993     * The license key provided with your New Relic account.
13994     */
13995    #[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    /**
14006     * The license key provided with your New Relic account.
14007     */
14008    #[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    /**
14021     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
14022     */
14023    #[serde(
14024        default,
14025        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
14026    )]
14027    pub is_default: bool,
14028    /**
14029     * The license key provided with your New Relic account.
14030     */
14031    #[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    /**
14048     * The license key provided with your New Relic account.
14049     */
14050    #[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/// All of the following types are flattened into one object:
14065///
14066/// - `SuppressionGroupRequestBase`
14067/// - `GetAsmGroupsGroupResponse`
14068///
14069#[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    /**
14080     * The recipient IDs of the recipients that already existed from this request.
14081     */
14082    #[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    /**
14099     * The license key provided with your New Relic account.
14100     */
14101    #[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    /**
14114     * The license key provided with your New Relic account.
14115     */
14116    #[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    /**
14127     * The license key provided with your New Relic account.
14128     */
14129    #[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    /**
14142     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
14143     */
14144    #[serde(
14145        default,
14146        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
14147    )]
14148    pub is_default: bool,
14149    /**
14150     * The license key provided with your New Relic account.
14151     */
14152    #[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    /**
14159     * Indicates if your subuser statistics will be sent to your New Relic Dashboard.
14160     */
14161    #[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    /**
14171     * The array of suppression groups.
14172     */
14173    #[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}