1#![allow(
6 missing_docs,
7 clippy::doc_lazy_continuation,
8 clippy::doc_overindented_list_items
9)]
10
11use serde::{Deserialize, Serialize};
12
13#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct AdCampaignDTO {
16 #[serde(default, skip_serializing_if = "Option::is_none")]
17 pub id: Option<String>,
18 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub locale: Option<LocaleDTO>,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub name: Option<String>,
23 #[serde(
26 rename = "publishingStatus",
27 default,
28 skip_serializing_if = "Option::is_none"
29 )]
30 pub publishing_status: Option<String>,
31 #[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
34 pub media_type: Option<String>,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
37 pub audience: Option<AudienceDTO>,
38 #[serde(rename = "unitCost", default, skip_serializing_if = "Option::is_none")]
40 pub unit_cost: Option<UnitCostDTO>,
41 #[serde(
42 rename = "campaignType",
43 default,
44 skip_serializing_if = "Option::is_none"
45 )]
46 pub campaign_type: Option<String>,
47 #[serde(
48 rename = "adCampaignGroupId",
49 default,
50 skip_serializing_if = "Option::is_none"
51 )]
52 pub ad_campaign_group_id: Option<String>,
53 #[serde(
54 rename = "adCampaignId",
55 default,
56 skip_serializing_if = "Option::is_none"
57 )]
58 pub ad_campaign_id: Option<String>,
59 #[serde(default, skip_serializing_if = "Vec::is_empty")]
60 pub ads: Vec<LinkedInAdDTO>,
61 #[serde(
63 rename = "linkedInError",
64 default,
65 skip_serializing_if = "Option::is_none"
66 )]
67 pub linked_in_error: Option<String>,
68 #[serde(default, skip_serializing_if = "Option::is_none")]
69 pub meta: Option<serde_json::Value>,
70}
71
72#[derive(Debug, Clone, Default, Serialize, Deserialize)]
74pub struct AdCampaignGroupDataDTO {
75 #[serde(default, skip_serializing_if = "Option::is_none")]
76 pub id: Option<String>,
77 #[serde(rename = "locationId")]
80 pub location_id: String,
81 #[serde(default, skip_serializing_if = "Option::is_none")]
82 pub budget: Option<LinkedInBudgetDTO>,
83 #[serde(rename = "adCampaigns", default, skip_serializing_if = "Vec::is_empty")]
84 pub ad_campaigns: Vec<AdCampaignDTO>,
85 #[serde(
87 rename = "adBudgetOptimization",
88 default,
89 skip_serializing_if = "Option::is_none"
90 )]
91 pub ad_budget_optimization: Option<String>,
92 #[serde(
94 rename = "objectiveType",
95 default,
96 skip_serializing_if = "Option::is_none"
97 )]
98 pub objective_type: Option<String>,
99 #[serde(default, skip_serializing_if = "Option::is_none")]
100 pub name: Option<String>,
101 #[serde(
102 rename = "adCampaignGroupId",
103 default,
104 skip_serializing_if = "Option::is_none"
105 )]
106 pub ad_campaign_group_id: Option<String>,
107 #[serde(
110 rename = "publishingStatus",
111 default,
112 skip_serializing_if = "Option::is_none"
113 )]
114 pub publishing_status: Option<String>,
115 #[serde(
116 rename = "linkedInAdAccountId",
117 default,
118 skip_serializing_if = "Option::is_none"
119 )]
120 pub linked_in_ad_account_id: Option<String>,
121 #[serde(
122 rename = "unpublishedChanges",
123 default,
124 skip_serializing_if = "Option::is_none"
125 )]
126 pub unpublished_changes: Option<bool>,
127 #[serde(default, skip_serializing_if = "Option::is_none")]
128 pub meta: Option<serde_json::Value>,
129 #[serde(
130 rename = "linkedInError",
131 default,
132 skip_serializing_if = "Option::is_none"
133 )]
134 pub linked_in_error: Option<String>,
135}
136
137#[derive(Debug, Clone, Default, Serialize, Deserialize)]
139pub struct AdScheduleTargetDTO {
140 #[serde(rename = "startMinute")]
144 pub start_minute: String,
145 #[serde(rename = "endMinute")]
149 pub end_minute: String,
150 #[serde(rename = "dayOfWeek")]
155 pub day_of_week: String,
156 #[serde(rename = "startHour")]
159 pub start_hour: f64,
160 #[serde(rename = "endHour")]
163 pub end_hour: f64,
164}
165
166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
168pub struct AudienceCustomAudienceItemDTO {
169 pub id: String,
172 pub name: String,
175}
176
177#[derive(Debug, Clone, Default, Serialize, Deserialize)]
179pub struct AudienceDTO {
180 #[serde(default, skip_serializing_if = "Vec::is_empty")]
182 pub geo_locations: Vec<GeoLocationDTO>,
183 #[serde(
185 rename = "targetAudience",
186 default,
187 skip_serializing_if = "Option::is_none"
188 )]
189 pub target_audience: Option<TargetAudienceDTO>,
190}
191
192#[derive(Debug, Clone, Default, Serialize, Deserialize)]
194pub struct AudienceDimensionDTO {
195 #[serde(
197 rename = "isAgeUnknown",
198 default,
199 skip_serializing_if = "Option::is_none"
200 )]
201 pub is_age_unknown: Option<bool>,
202 #[serde(rename = "ageRanges", default, skip_serializing_if = "Vec::is_empty")]
204 pub age_ranges: Vec<String>,
205 #[serde(default, skip_serializing_if = "Vec::is_empty")]
207 pub genders: Vec<String>,
208 #[serde(
210 rename = "parentalStatuses",
211 default,
212 skip_serializing_if = "Vec::is_empty"
213 )]
214 pub parental_statuses: Vec<String>,
215 #[serde(
217 rename = "audienceSegments",
218 default,
219 skip_serializing_if = "Option::is_none"
220 )]
221 pub audience_segments: Option<AudienceSegmentsDTO>,
222}
223
224#[derive(Debug, Clone, Default, Serialize, Deserialize)]
226pub struct AudienceInterestDTO {
227 pub id: String,
230 pub name: String,
233 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
235 pub type_: Option<String>,
236}
237
238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
240pub struct AudienceLocaleDTO {
241 pub name: String,
244 pub key: f64,
247}
248
249#[derive(Debug, Clone, Default, Serialize, Deserialize)]
251pub struct AudienceLocationDTO {
252 pub key: String,
255 pub name: String,
258 #[serde(rename = "type")]
264 pub type_: String,
265 #[serde(rename = "selectionType")]
269 pub selection_type: String,
270 #[serde(default, skip_serializing_if = "Option::is_none")]
272 pub radius: Option<f64>,
273 #[serde(
276 rename = "radiusUnit",
277 default,
278 skip_serializing_if = "Option::is_none"
279 )]
280 pub radius_unit: Option<String>,
281 #[serde(default, skip_serializing_if = "Option::is_none")]
283 pub geometry: Option<AudienceLocationGeometry>,
284}
285
286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
288pub struct AudienceLocationGeometry {
289 pub location: serde_json::Value,
292 pub location_type: String,
295}
296
297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
299pub struct AudiencePlacementsDTO {
300 #[serde(default, skip_serializing_if = "Vec::is_empty")]
302 pub facebook: Vec<String>,
303 #[serde(default, skip_serializing_if = "Vec::is_empty")]
305 pub instagram: Vec<String>,
306 #[serde(default, skip_serializing_if = "Vec::is_empty")]
308 pub messenger: Vec<String>,
309}
310
311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
313pub struct AudienceSegmentsDTO {
314 #[serde(
316 rename = "customAudiences",
317 default,
318 skip_serializing_if = "Vec::is_empty"
319 )]
320 pub custom_audiences: Vec<String>,
321 #[serde(rename = "userLists", default, skip_serializing_if = "Vec::is_empty")]
323 pub user_lists: Vec<String>,
324 #[serde(
326 rename = "userInterests",
327 default,
328 skip_serializing_if = "Vec::is_empty"
329 )]
330 pub user_interests: Vec<String>,
331}
332
333#[derive(Debug, Clone, Default, Serialize, Deserialize)]
335pub struct Budget {
336 #[serde(rename = "budgetType")]
340 pub budget_type: String,
341 pub amount: f64,
344 #[serde(
346 rename = "scheduleStartDate",
347 default,
348 skip_serializing_if = "Option::is_none"
349 )]
350 pub schedule_start_date: Option<String>,
351 #[serde(
353 rename = "scheduleEndDate",
354 default,
355 skip_serializing_if = "Option::is_none"
356 )]
357 pub schedule_end_date: Option<String>,
358}
359
360#[derive(Debug, Clone, Default, Serialize, Deserialize)]
362pub struct CallAssetPayloadDTO {
363 #[serde(rename = "phoneNumber")]
366 pub phone_number: String,
367 #[serde(rename = "countryCode")]
370 pub country_code: String,
371 #[serde(
373 rename = "callConversionAction",
374 default,
375 skip_serializing_if = "Option::is_none"
376 )]
377 pub call_conversion_action: Option<String>,
378 #[serde(
380 rename = "adScheduleTargets",
381 default,
382 skip_serializing_if = "Vec::is_empty"
383 )]
384 pub ad_schedule_targets: Vec<AdScheduleTargetDTO>,
385 #[serde(
387 rename = "resourceName",
388 default,
389 skip_serializing_if = "Option::is_none"
390 )]
391 pub resource_name: Option<String>,
392}
393
394#[derive(Debug, Clone, Default, Serialize, Deserialize)]
396pub struct CampaignDTO {
397 #[serde(default, skip_serializing_if = "Option::is_none")]
399 pub id: Option<String>,
400 pub name: String,
403 #[serde(rename = "locationId")]
406 pub location_id: String,
407 #[serde(rename = "advertisingChannelType")]
412 pub advertising_channel_type: String,
413 #[serde(
416 rename = "advertisingChannelSubType",
417 default,
418 skip_serializing_if = "Option::is_none"
419 )]
420 pub advertising_channel_sub_type: Option<String>,
421 #[serde(rename = "goalType", default, skip_serializing_if = "Option::is_none")]
424 pub goal_type: Option<String>,
425 #[serde(default, skip_serializing_if = "Option::is_none")]
427 pub budget: Option<GoogleBudgetDTO>,
428 #[serde(default, skip_serializing_if = "Option::is_none")]
430 pub audience: Option<GoogleCampaignAudienceDTO>,
431 #[serde(
433 rename = "networkSettings",
434 default,
435 skip_serializing_if = "Option::is_none"
436 )]
437 pub network_settings: Option<GoogleNetworkSettingsDTO>,
438 #[serde(
440 rename = "biddingStrategy",
441 default,
442 skip_serializing_if = "Option::is_none"
443 )]
444 pub bidding_strategy: Option<GoogleBiddingStrategyDTO>,
445 #[serde(default, skip_serializing_if = "Option::is_none")]
447 pub assets: Option<GoogleAssetsDTO>,
448 #[serde(
450 rename = "isEuPoliticalAds",
451 default,
452 skip_serializing_if = "Option::is_none"
453 )]
454 pub is_eu_political_ads: Option<bool>,
455 #[serde(rename = "adGroups", default, skip_serializing_if = "Vec::is_empty")]
457 pub ad_groups: Vec<GoogleAdGroupDTO>,
458 #[serde(
460 rename = "campaignGoal",
461 default,
462 skip_serializing_if = "Option::is_none"
463 )]
464 pub campaign_goal: Option<GoogleCampaignGoalDTO>,
465 #[serde(rename = "adSchedule", default, skip_serializing_if = "Vec::is_empty")]
467 pub ad_schedule: Vec<GoogleAdScheduleDTO>,
468 #[serde(
472 rename = "publishingStatus",
473 default,
474 skip_serializing_if = "Option::is_none"
475 )]
476 pub publishing_status: Option<String>,
477 #[serde(
479 rename = "googleAdAccountId",
480 default,
481 skip_serializing_if = "Option::is_none"
482 )]
483 pub google_ad_account_id: Option<String>,
484 #[serde(
486 rename = "unpublishedChanges",
487 default,
488 skip_serializing_if = "Option::is_none"
489 )]
490 pub unpublished_changes: Option<bool>,
491 #[serde(
493 rename = "maximumCpc",
494 default,
495 skip_serializing_if = "Option::is_none"
496 )]
497 pub maximum_cpc: Option<f64>,
498 #[serde(
500 rename = "googleCampaignId",
501 default,
502 skip_serializing_if = "Option::is_none"
503 )]
504 pub google_campaign_id: Option<String>,
505 #[serde(default, skip_serializing_if = "Option::is_none")]
507 pub source: Option<String>,
508 #[serde(
510 rename = "advancedOptions",
511 default,
512 skip_serializing_if = "Option::is_none"
513 )]
514 pub advanced_options: Option<serde_json::Value>,
515}
516
517#[derive(Debug, Clone, Default, Serialize, Deserialize)]
519pub struct ConsentDTO {
520 #[serde(rename = "checkRequired")]
523 pub check_required: bool,
524 pub id: f64,
527 pub consent: LocalizedStringDTO,
530}
531
532#[derive(Debug, Clone, Default, Serialize, Deserialize)]
534pub struct ConversionValueSettings {
535 #[serde(rename = "defaultValue")]
538 pub default_value: f64,
539 #[serde(rename = "defaultCurrencyCode")]
542 pub default_currency_code: String,
543 #[serde(rename = "alwaysUseDefaultValue")]
547 pub always_use_default_value: bool,
548}
549
550#[derive(Debug, Clone, Default, Serialize, Deserialize)]
552pub struct CreateConversationFormDTO {
553 #[serde(rename = "locationId")]
556 pub location_id: String,
557 pub name: String,
560 pub text: String,
563 #[serde(default, skip_serializing_if = "Vec::is_empty")]
566 pub questions: Vec<WelcomeMessageQuestion>,
567}
568
569#[derive(Debug, Clone, Default, Serialize, Deserialize)]
571pub struct CreateGoogleIntegrationDTO {
572 #[serde(rename = "locationId")]
575 pub location_id: String,
576 #[serde(rename = "adAccountId")]
579 pub ad_account_id: String,
580 #[serde(rename = "mccId")]
583 pub mcc_id: String,
584}
585
586#[derive(Debug, Clone, Default, Serialize, Deserialize)]
588pub struct CreateIntegrationDTO {
589 #[serde(rename = "locationId")]
592 pub location_id: String,
593 #[serde(rename = "pageId")]
596 pub page_id: String,
597 #[serde(
599 rename = "adAccountId",
600 default,
601 skip_serializing_if = "Option::is_none"
602 )]
603 pub ad_account_id: Option<String>,
604}
605
606#[derive(Debug, Clone, Default, Serialize, Deserialize)]
608pub struct CreateLeadFormDTO {
609 #[serde(rename = "type")]
613 pub type_: String,
614 pub name: String,
617 #[serde(rename = "locationId")]
620 pub location_id: String,
621 #[serde(
623 rename = "greetingCard",
624 default,
625 skip_serializing_if = "Option::is_none"
626 )]
627 pub greeting_card: Option<GreetingCard>,
628 #[serde(default, skip_serializing_if = "Vec::is_empty")]
631 pub questions: Vec<FormQuestion>,
632 #[serde(
634 rename = "questionPageHeadline",
635 default,
636 skip_serializing_if = "Option::is_none"
637 )]
638 pub question_page_headline: Option<String>,
639 #[serde(rename = "privacyPolicyLink")]
642 pub privacy_policy_link: String,
643 #[serde(
645 rename = "privacyPolicyText",
646 default,
647 skip_serializing_if = "Option::is_none"
648 )]
649 pub privacy_policy_text: Option<String>,
650 #[serde(
652 rename = "customDisclaimer",
653 default,
654 skip_serializing_if = "Option::is_none"
655 )]
656 pub custom_disclaimer: Option<CustomDisclaimer>,
657 #[serde(rename = "thankYouPage")]
660 pub thank_you_page: ThankYouPage,
661}
662
663#[derive(Debug, Clone, Default, Serialize, Deserialize)]
665pub struct CreateLinkedinIntegrationDTO {
666 #[serde(rename = "locationId")]
669 pub location_id: String,
670 #[serde(rename = "adAccountId")]
673 pub ad_account_id: String,
674 #[serde(rename = "adAccountName")]
677 pub ad_account_name: String,
678 #[serde(rename = "currencyCode")]
681 pub currency_code: String,
682 #[serde(rename = "organizationId")]
685 pub organization_id: String,
686}
687
688#[derive(Debug, Clone, Default, Serialize, Deserialize)]
690pub struct CreateOfflineUserListJobDTO {
691 #[serde(rename = "locationId")]
694 pub location_id: String,
695 #[serde(
697 rename = "smartListIds",
698 default,
699 skip_serializing_if = "Vec::is_empty"
700 )]
701 pub smart_list_ids: Vec<String>,
702 #[serde(rename = "csvPath", default, skip_serializing_if = "Option::is_none")]
704 pub csv_path: Option<String>,
705 #[serde(
707 rename = "userListId",
708 default,
709 skip_serializing_if = "Option::is_none"
710 )]
711 pub user_list_id: Option<String>,
712 #[serde(rename = "isDynamic", default, skip_serializing_if = "Option::is_none")]
714 pub is_dynamic: Option<bool>,
715}
716
717#[derive(Debug, Clone, Default, Serialize, Deserialize)]
719pub struct CreationLocaleDTO {
720 pub country: String,
723 pub language: String,
726}
727
728#[derive(Debug, Clone, Default, Serialize, Deserialize)]
730pub struct CustomDisclaimer {
731 pub title: String,
734 pub body: String,
737 #[serde(default, skip_serializing_if = "Vec::is_empty")]
739 pub checkboxes: Vec<CustomDisclaimerCheckbox>,
740}
741
742#[derive(Debug, Clone, Default, Serialize, Deserialize)]
744pub struct CustomDisclaimerCheckbox {
745 pub is_required: bool,
748 pub text: String,
751 pub key: String,
754}
755
756#[derive(Debug, Clone, Default, Serialize, Deserialize)]
758pub struct CustomQuestionFieldDTO {
759 #[serde(rename = "customQuestionText")]
762 pub custom_question_text: String,
763 #[serde(
766 rename = "singleChoiceAnswers",
767 default,
768 skip_serializing_if = "Vec::is_empty"
769 )]
770 pub single_choice_answers: Vec<String>,
771}
772
773#[derive(Debug, Clone, Default, Serialize, Deserialize)]
775pub struct FacebookAudienceDTO {
776 #[serde(default, skip_serializing_if = "Vec::is_empty")]
779 pub geo_locations: Vec<AudienceLocationDTO>,
780 #[serde(default, skip_serializing_if = "Vec::is_empty")]
782 pub locales: Vec<AudienceLocaleDTO>,
783 #[serde(default, skip_serializing_if = "Option::is_none")]
785 pub placements: Option<AudiencePlacementsDTO>,
786 #[serde(
789 rename = "placementType",
790 default,
791 skip_serializing_if = "Option::is_none"
792 )]
793 pub placement_type: Option<String>,
794 #[serde(default, skip_serializing_if = "Vec::is_empty")]
796 pub lookalike: Vec<AudienceCustomAudienceItemDTO>,
797 #[serde(default, skip_serializing_if = "Vec::is_empty")]
799 pub retargeting: Vec<AudienceCustomAudienceItemDTO>,
800 #[serde(default, skip_serializing_if = "Vec::is_empty")]
802 pub interests: Vec<AudienceInterestDTO>,
803 #[serde(default, skip_serializing_if = "Option::is_none")]
805 pub age_min: Option<f64>,
806 #[serde(default, skip_serializing_if = "Option::is_none")]
808 pub age_max: Option<f64>,
809 #[serde(default, skip_serializing_if = "Vec::is_empty")]
811 pub genders: Vec<f64>,
812}
813
814#[derive(Debug, Clone, Default, Serialize, Deserialize)]
816pub struct FbSetDefaultPageBodyDTO {
817 #[serde(rename = "pageId")]
820 pub page_id: String,
821}
822
823#[derive(Debug, Clone, Default, Serialize, Deserialize)]
825pub struct FbUpdateAudienceBodyDTO {
826 #[serde(rename = "locationId")]
829 pub location_id: String,
830 pub name: String,
833 pub description: String,
836}
837
838#[derive(Debug, Clone, Default, Serialize, Deserialize)]
840pub struct FlexibleRuleUserListDTO {
841 #[serde(
843 rename = "inclusiveRuleOperator",
844 default,
845 skip_serializing_if = "Option::is_none"
846 )]
847 pub inclusive_rule_operator: Option<String>,
848 #[serde(
851 rename = "inclusiveOperands",
852 default,
853 skip_serializing_if = "Vec::is_empty"
854 )]
855 pub inclusive_operands: Vec<RuleOperandDTO>,
856 #[serde(
859 rename = "exclusiveOperands",
860 default,
861 skip_serializing_if = "Vec::is_empty"
862 )]
863 pub exclusive_operands: Vec<RuleOperandDTO>,
864}
865
866#[derive(Debug, Clone, Default, Serialize, Deserialize)]
868pub struct FormQuestion {
869 #[serde(default, skip_serializing_if = "Option::is_none")]
871 pub label: Option<String>,
872 pub key: String,
875 #[serde(rename = "type")]
881 pub type_: String,
882 #[serde(default, skip_serializing_if = "Vec::is_empty")]
884 pub options: Vec<FormQuestionOption>,
885}
886
887#[derive(Debug, Clone, Default, Serialize, Deserialize)]
889pub struct FormQuestionOption {
890 pub key: String,
893 pub value: String,
896}
897
898#[derive(Debug, Clone, Default, Serialize, Deserialize)]
900pub struct GeoAddressComponentDTO {
901 #[serde(default, skip_serializing_if = "Option::is_none")]
903 pub long_name: Option<String>,
904 #[serde(default, skip_serializing_if = "Option::is_none")]
906 pub short_name: Option<String>,
907 #[serde(default, skip_serializing_if = "Vec::is_empty")]
909 pub types: Vec<String>,
910}
911
912#[derive(Debug, Clone, Default, Serialize, Deserialize)]
914pub struct GeoGeometryDTO {
915 #[serde(default, skip_serializing_if = "Option::is_none")]
917 pub location: Option<GeoLatLngDTO>,
918 #[serde(default, skip_serializing_if = "Option::is_none")]
920 pub location_type: Option<String>,
921 #[serde(default, skip_serializing_if = "Option::is_none")]
923 pub viewport: Option<GeoViewportDTO>,
924}
925
926#[derive(Debug, Clone, Default, Serialize, Deserialize)]
928pub struct GeoLatLngDTO {
929 #[serde(default, skip_serializing_if = "Option::is_none")]
931 pub lat: Option<f64>,
932 #[serde(default, skip_serializing_if = "Option::is_none")]
934 pub lng: Option<f64>,
935}
936
937#[derive(Debug, Clone, Default, Serialize, Deserialize)]
939pub struct GeoLocationDTO {
940 pub name: String,
943 pub urn: String,
946 #[serde(rename = "facetUrn")]
949 pub facet_urn: String,
950 #[serde(rename = "selectionType")]
954 pub selection_type: String,
955}
956
957#[derive(Debug, Clone, Default, Serialize, Deserialize)]
959pub struct GeoViewportDTO {
960 #[serde(default, skip_serializing_if = "Option::is_none")]
962 pub northeast: Option<GeoLatLngDTO>,
963 #[serde(default, skip_serializing_if = "Option::is_none")]
965 pub southwest: Option<GeoLatLngDTO>,
966}
967
968#[derive(Debug, Clone, Default, Serialize, Deserialize)]
970pub struct GoogleAdContentDTO {
971 #[serde(default, skip_serializing_if = "Option::is_none")]
973 pub id: Option<String>,
974 #[serde(default, skip_serializing_if = "Option::is_none")]
976 pub name: Option<String>,
977 #[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
980 pub media_type: Option<String>,
981 #[serde(default, skip_serializing_if = "Vec::is_empty")]
983 pub headlines: Vec<String>,
984 #[serde(
986 rename = "longHeadlines",
987 default,
988 skip_serializing_if = "Vec::is_empty"
989 )]
990 pub long_headlines: Vec<String>,
991 #[serde(default, skip_serializing_if = "Vec::is_empty")]
993 pub descriptions: Vec<String>,
994 #[serde(rename = "finalUrl", default, skip_serializing_if = "Option::is_none")]
996 pub final_url: Option<String>,
997 #[serde(default, skip_serializing_if = "Option::is_none")]
999 pub path1: Option<String>,
1000 #[serde(default, skip_serializing_if = "Option::is_none")]
1002 pub path2: Option<String>,
1003 #[serde(rename = "isDeleted", default, skip_serializing_if = "Option::is_none")]
1005 pub is_deleted: Option<bool>,
1006 #[serde(rename = "adError", default, skip_serializing_if = "Option::is_none")]
1008 pub ad_error: Option<String>,
1009 #[serde(
1013 rename = "publishingStatus",
1014 default,
1015 skip_serializing_if = "Option::is_none"
1016 )]
1017 pub publishing_status: Option<String>,
1018 #[serde(rename = "adId", default, skip_serializing_if = "Option::is_none")]
1020 pub ad_id: Option<String>,
1021 #[serde(
1023 rename = "adCampaignId",
1024 default,
1025 skip_serializing_if = "Option::is_none"
1026 )]
1027 pub ad_campaign_id: Option<String>,
1028 #[serde(rename = "adGroupId", default, skip_serializing_if = "Option::is_none")]
1030 pub ad_group_id: Option<String>,
1031 #[serde(
1033 rename = "googleAdId",
1034 default,
1035 skip_serializing_if = "Option::is_none"
1036 )]
1037 pub google_ad_id: Option<String>,
1038 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1040 pub media: Vec<GoogleMediaDTO>,
1041 #[serde(
1045 rename = "callToActionLabel",
1046 default,
1047 skip_serializing_if = "Option::is_none"
1048 )]
1049 pub call_to_action_label: Option<String>,
1050 #[serde(
1052 rename = "businessName",
1053 default,
1054 skip_serializing_if = "Option::is_none"
1055 )]
1056 pub business_name: Option<String>,
1057 #[serde(
1059 rename = "youtubeVideoLinks",
1060 default,
1061 skip_serializing_if = "Vec::is_empty"
1062 )]
1063 pub youtube_video_links: Vec<GoogleYouTubeVideoLinkDTO>,
1064 #[serde(
1066 rename = "carouselCards",
1067 default,
1068 skip_serializing_if = "Vec::is_empty"
1069 )]
1070 pub carousel_cards: Vec<GoogleCarouselCardDTO>,
1071 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1075 pub placements: Vec<String>,
1076 #[serde(
1078 rename = "customChannels",
1079 default,
1080 skip_serializing_if = "Option::is_none"
1081 )]
1082 pub custom_channels: Option<bool>,
1083}
1084
1085#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1087pub struct GoogleAdGroupAudienceDTO {
1088 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1090 pub geo_locations: Vec<GoogleGeoLocationDTO>,
1091 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1093 pub locales: Vec<GoogleLocaleDTO>,
1094}
1095
1096#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1098pub struct GoogleAdGroupDTO {
1099 #[serde(default, skip_serializing_if = "Option::is_none")]
1101 pub id: Option<String>,
1102 #[serde(rename = "adGroupId", default, skip_serializing_if = "Option::is_none")]
1104 pub ad_group_id: Option<String>,
1105 #[serde(default, skip_serializing_if = "Option::is_none")]
1107 pub name: Option<String>,
1108 #[serde(
1110 rename = "adCampaignId",
1111 default,
1112 skip_serializing_if = "Option::is_none"
1113 )]
1114 pub ad_campaign_id: Option<String>,
1115 #[serde(rename = "adContent", default, skip_serializing_if = "Vec::is_empty")]
1117 pub ad_content: Vec<GoogleAdContentDTO>,
1118 #[serde(default, skip_serializing_if = "Option::is_none")]
1120 pub keywords: Option<GoogleKeywordsDTO>,
1121 #[serde(
1125 rename = "publishingStatus",
1126 default,
1127 skip_serializing_if = "Option::is_none"
1128 )]
1129 pub publishing_status: Option<String>,
1130 #[serde(
1132 rename = "adGroupError",
1133 default,
1134 skip_serializing_if = "Option::is_none"
1135 )]
1136 pub ad_group_error: Option<String>,
1137 #[serde(
1139 rename = "googleAdGroupId",
1140 default,
1141 skip_serializing_if = "Option::is_none"
1142 )]
1143 pub google_ad_group_id: Option<String>,
1144 #[serde(
1146 rename = "customChannels",
1147 default,
1148 skip_serializing_if = "Option::is_none"
1149 )]
1150 pub custom_channels: Option<bool>,
1151 #[serde(
1155 rename = "selectedChannels",
1156 default,
1157 skip_serializing_if = "Vec::is_empty"
1158 )]
1159 pub selected_channels: Vec<String>,
1160 #[serde(
1162 rename = "googleAudienceId",
1163 default,
1164 skip_serializing_if = "Option::is_none"
1165 )]
1166 pub google_audience_id: Option<String>,
1167 #[serde(default, skip_serializing_if = "Option::is_none")]
1169 pub audience: Option<GoogleAdGroupAudienceDTO>,
1170}
1171
1172#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1174pub struct GoogleAdScheduleDTO {
1175 #[serde(rename = "dayOfWeek")]
1181 pub day_of_week: String,
1182 #[serde(rename = "from")]
1185 pub from_: String,
1186 pub to: String,
1189}
1190
1191#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1193pub struct GoogleAssetImageDTO {
1194 pub url: String,
1197 #[serde(
1199 rename = "resourceName",
1200 default,
1201 skip_serializing_if = "Option::is_none"
1202 )]
1203 pub resource_name: Option<String>,
1204 #[serde(default, skip_serializing_if = "Option::is_none")]
1206 pub name: Option<String>,
1207 #[serde(default, skip_serializing_if = "Option::is_none")]
1209 pub error: Option<String>,
1210}
1211
1212#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1214pub struct GoogleAssetsDTO {
1215 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1217 pub calls: Vec<String>,
1218 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1220 pub sitelinks: Vec<String>,
1221 #[serde(rename = "leadForm", default, skip_serializing_if = "Option::is_none")]
1223 pub lead_form: Option<String>,
1224 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1226 pub images: Vec<GoogleAssetImageDTO>,
1227 #[serde(
1229 rename = "businessLogo",
1230 default,
1231 skip_serializing_if = "Option::is_none"
1232 )]
1233 pub business_logo: Option<GoogleAssetImageDTO>,
1234}
1235
1236#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1238pub struct GoogleBiddingStrategyDTO {
1239 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1241 pub type_: Option<String>,
1242 #[serde(default, skip_serializing_if = "Option::is_none")]
1244 pub value: Option<f64>,
1245}
1246
1247#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1249pub struct GoogleBudgetDTO {
1250 #[serde(
1253 rename = "budgetType",
1254 default,
1255 skip_serializing_if = "Option::is_none"
1256 )]
1257 pub budget_type: Option<String>,
1258 #[serde(default, skip_serializing_if = "Option::is_none")]
1260 pub amount: Option<f64>,
1261 #[serde(
1263 rename = "scheduleStartDate",
1264 default,
1265 skip_serializing_if = "Option::is_none"
1266 )]
1267 pub schedule_start_date: Option<String>,
1268 #[serde(
1270 rename = "scheduleEndDate",
1271 default,
1272 skip_serializing_if = "Option::is_none"
1273 )]
1274 pub schedule_end_date: Option<String>,
1275}
1276
1277#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1279pub struct GoogleCampaignAudienceDTO {
1280 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1282 pub geo_locations: Vec<GoogleGeoLocationDTO>,
1283 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1285 pub locales: Vec<GoogleLocaleDTO>,
1286 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1288 pub gender: Vec<GoogleDemographicTargetDTO>,
1289 #[serde(rename = "ageRange", default, skip_serializing_if = "Vec::is_empty")]
1291 pub age_range: Vec<GoogleDemographicTargetDTO>,
1292 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1294 pub segments: Vec<GoogleSegmentTargetDTO>,
1295 #[serde(
1297 rename = "targetInterests",
1298 default,
1299 skip_serializing_if = "Option::is_none"
1300 )]
1301 pub target_interests: Option<GoogleTargetInterestsDTO>,
1302}
1303
1304#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1306pub struct GoogleCampaignGoalDTO {
1307 #[serde(rename = "type")]
1311 pub type_: String,
1312 #[serde(default, skip_serializing_if = "Option::is_none")]
1314 pub value: Option<String>,
1315 #[serde(
1317 rename = "isCustomConversionGoal",
1318 default,
1319 skip_serializing_if = "Option::is_none"
1320 )]
1321 pub is_custom_conversion_goal: Option<bool>,
1322}
1323
1324#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1326pub struct GoogleCarouselCardDTO {
1327 #[serde(default, skip_serializing_if = "Option::is_none")]
1329 pub headline: Option<String>,
1330 #[serde(rename = "finalUrl", default, skip_serializing_if = "Option::is_none")]
1332 pub final_url: Option<String>,
1333 #[serde(
1335 rename = "callToActionLabel",
1336 default,
1337 skip_serializing_if = "Option::is_none"
1338 )]
1339 pub call_to_action_label: Option<String>,
1340 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1342 pub media: Vec<GoogleMediaDTO>,
1343}
1344
1345#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1347pub struct GoogleDemographicTargetDTO {
1348 #[serde(rename = "enum")]
1351 pub enum_: String,
1352 pub negative: bool,
1355}
1356
1357#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1359pub struct GoogleGeoLocationDTO {
1360 #[serde(default, skip_serializing_if = "Option::is_none")]
1362 pub key: Option<String>,
1363 #[serde(default, skip_serializing_if = "Option::is_none")]
1365 pub id: Option<String>,
1366 #[serde(default, skip_serializing_if = "Option::is_none")]
1368 pub name: Option<String>,
1369 #[serde(default, skip_serializing_if = "Option::is_none")]
1371 pub country_name: Option<String>,
1372 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1374 pub type_: Option<String>,
1375 #[serde(default, skip_serializing_if = "Option::is_none")]
1377 pub radius: Option<f64>,
1378 #[serde(
1381 rename = "radiusUnit",
1382 default,
1383 skip_serializing_if = "Option::is_none"
1384 )]
1385 pub radius_unit: Option<String>,
1386 #[serde(
1389 rename = "selectionType",
1390 default,
1391 skip_serializing_if = "Option::is_none"
1392 )]
1393 pub selection_type: Option<String>,
1394 #[serde(
1396 rename = "resourceName",
1397 default,
1398 skip_serializing_if = "Option::is_none"
1399 )]
1400 pub resource_name: Option<String>,
1401 #[serde(default, skip_serializing_if = "Option::is_none")]
1403 pub place_id: Option<String>,
1404 #[serde(default, skip_serializing_if = "Option::is_none")]
1406 pub formatted_address: Option<String>,
1407 #[serde(default, skip_serializing_if = "Option::is_none")]
1409 pub geometry: Option<GeoGeometryDTO>,
1410 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1412 pub address_components: Vec<GeoAddressComponentDTO>,
1413}
1414
1415#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1417pub struct GoogleKeywordItemDTO {
1418 pub keyword: String,
1421 #[serde(rename = "matchType")]
1424 pub match_type: String,
1425}
1426
1427#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1429pub struct GoogleKeywordsDTO {
1430 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1432 pub positives: Vec<GoogleKeywordItemDTO>,
1433 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1435 pub negatives: Vec<GoogleKeywordItemDTO>,
1436}
1437
1438#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1440pub struct GoogleLocaleDTO {
1441 #[serde(default, skip_serializing_if = "Option::is_none")]
1443 pub name: Option<String>,
1444 #[serde(default, skip_serializing_if = "Option::is_none")]
1446 pub key: Option<String>,
1447 #[serde(default, skip_serializing_if = "Option::is_none")]
1449 pub id: Option<String>,
1450 #[serde(
1452 rename = "resourceName",
1453 default,
1454 skip_serializing_if = "Option::is_none"
1455 )]
1456 pub resource_name: Option<String>,
1457}
1458
1459#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1461pub struct GoogleMediaDTO {
1462 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1465 pub type_: Option<String>,
1466 #[serde(default, skip_serializing_if = "Option::is_none")]
1468 pub src: Option<String>,
1469 #[serde(rename = "isLogo", default, skip_serializing_if = "Option::is_none")]
1471 pub is_logo: Option<bool>,
1472 #[serde(default, skip_serializing_if = "Option::is_none")]
1474 pub error: Option<String>,
1475 #[serde(default, skip_serializing_if = "Option::is_none")]
1477 pub url: Option<String>,
1478 #[serde(rename = "imageType", default, skip_serializing_if = "Option::is_none")]
1480 pub image_type: Option<String>,
1481}
1482
1483#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1485pub struct GoogleNetworkSettingsDTO {
1486 #[serde(rename = "targetSearchNetwork")]
1489 pub target_search_network: bool,
1490 #[serde(rename = "targetContentNetwork")]
1493 pub target_content_network: bool,
1494}
1495
1496#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1498pub struct GoogleSegmentTargetDTO {
1499 #[serde(rename = "type")]
1502 pub type_: String,
1503 pub id: String,
1506}
1507
1508#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1510pub struct GoogleTargetInterestsDTO {
1511 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1513 pub affinity: Vec<String>,
1514 #[serde(rename = "inMarket", default, skip_serializing_if = "Vec::is_empty")]
1516 pub in_market: Vec<String>,
1517}
1518
1519#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1521pub struct GoogleYouTubeVideoLinkDTO {
1522 #[serde(rename = "youtubeVideoId")]
1525 pub youtube_video_id: String,
1526}
1527
1528#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1530pub struct GreetingCard {
1531 pub title: String,
1534 pub style: String,
1537 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1540 pub content: Vec<String>,
1541}
1542
1543#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1545pub struct HiddenFieldDTO {
1546 pub name: String,
1549 pub value: String,
1552}
1553
1554#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1556pub struct KeywordSuggestionDTO {
1557 pub url: String,
1560 #[serde(
1562 rename = "languageCode",
1563 default,
1564 skip_serializing_if = "Option::is_none"
1565 )]
1566 pub language_code: Option<String>,
1567 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1569 pub locations: Vec<String>,
1570 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1572 pub keywords: Vec<String>,
1573}
1574
1575#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1577pub struct LeadFormAssetPayloadDTO {
1578 #[serde(
1580 rename = "resourceName",
1581 default,
1582 skip_serializing_if = "Option::is_none"
1583 )]
1584 pub resource_name: Option<String>,
1585 pub headline: String,
1588 pub description: String,
1591 #[serde(rename = "businessName")]
1594 pub business_name: String,
1595 #[serde(rename = "privacyPolicyUrl")]
1598 pub privacy_policy_url: String,
1599 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1602 pub fields: Vec<LeadFormFieldDTO>,
1603 #[serde(rename = "callToActionType")]
1609 pub call_to_action_type: String,
1610 #[serde(
1612 rename = "callToActionDescription",
1613 default,
1614 skip_serializing_if = "Option::is_none"
1615 )]
1616 pub call_to_action_description: Option<String>,
1617 #[serde(
1619 rename = "backgroundImageAsset",
1620 default,
1621 skip_serializing_if = "Option::is_none"
1622 )]
1623 pub background_image_asset: Option<String>,
1624 #[serde(
1627 rename = "desiredIntent",
1628 default,
1629 skip_serializing_if = "Option::is_none"
1630 )]
1631 pub desired_intent: Option<String>,
1632 #[serde(
1634 rename = "customQuestionFields",
1635 default,
1636 skip_serializing_if = "Vec::is_empty"
1637 )]
1638 pub custom_question_fields: Vec<CustomQuestionFieldDTO>,
1639 #[serde(
1641 rename = "postSubmitHeadline",
1642 default,
1643 skip_serializing_if = "Option::is_none"
1644 )]
1645 pub post_submit_headline: Option<String>,
1646 #[serde(
1648 rename = "postSubmitDescription",
1649 default,
1650 skip_serializing_if = "Option::is_none"
1651 )]
1652 pub post_submit_description: Option<String>,
1653 #[serde(
1656 rename = "postSubmitCallToActionType",
1657 default,
1658 skip_serializing_if = "Option::is_none"
1659 )]
1660 pub post_submit_call_to_action_type: Option<String>,
1661 #[serde(rename = "finalUrls", default, skip_serializing_if = "Option::is_none")]
1663 pub final_urls: Option<String>,
1664}
1665
1666#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1668pub struct LeadFormContentDTO {
1669 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1672 pub questions: Vec<LeadFormQuestionDTO>,
1673 #[serde(default, skip_serializing_if = "Option::is_none")]
1675 pub description: Option<LocalizedStringDTO>,
1676 pub headline: LocalizedStringDTO,
1679 #[serde(rename = "postSubmissionInfo")]
1682 pub post_submission_info: PostSubmissionInfoDTO,
1683 #[serde(rename = "legalInfo")]
1686 pub legal_info: LegalInfoDTO,
1687}
1688
1689#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1691pub struct LeadFormFieldDTO {
1692 #[serde(rename = "inputType")]
1695 pub input_type: String,
1696 #[serde(
1698 rename = "singleChoiceAnswers",
1699 default,
1700 skip_serializing_if = "Vec::is_empty"
1701 )]
1702 pub single_choice_answers: Vec<String>,
1703}
1704
1705#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1707pub struct LeadFormQuestionDTO {
1708 pub question: LocalizedStringDTO,
1711 pub name: String,
1714 #[serde(rename = "questionDetails")]
1717 pub question_details: QuestionDetailsDTO,
1718 #[serde(
1720 rename = "predefinedField",
1721 default,
1722 skip_serializing_if = "Option::is_none"
1723 )]
1724 pub predefined_field: Option<String>,
1725}
1726
1727#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1729pub struct LegalInfoDTO {
1730 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1733 pub consents: Vec<ConsentDTO>,
1734 #[serde(rename = "privacyPolicyUrl")]
1737 pub privacy_policy_url: String,
1738 #[serde(
1740 rename = "legalDisclaimer",
1741 default,
1742 skip_serializing_if = "Option::is_none"
1743 )]
1744 pub legal_disclaimer: Option<LocalizedStringDTO>,
1745}
1746
1747#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1749pub struct LinkedInAdDTO {
1750 #[serde(default, skip_serializing_if = "Option::is_none")]
1751 pub id: Option<String>,
1752 #[serde(default, skip_serializing_if = "Option::is_none")]
1753 pub name: Option<String>,
1754 #[serde(
1755 rename = "introductoryText",
1756 default,
1757 skip_serializing_if = "Option::is_none"
1758 )]
1759 pub introductory_text: Option<String>,
1760 #[serde(
1761 rename = "destinationUrl",
1762 default,
1763 skip_serializing_if = "Option::is_none"
1764 )]
1765 pub destination_url: Option<String>,
1766 #[serde(
1767 rename = "callToActionLabel",
1768 default,
1769 skip_serializing_if = "Option::is_none"
1770 )]
1771 pub call_to_action_label: Option<String>,
1772 #[serde(
1773 rename = "destinationFormId",
1774 default,
1775 skip_serializing_if = "Option::is_none"
1776 )]
1777 pub destination_form_id: Option<String>,
1778 #[serde(
1779 rename = "contentReferenceString",
1780 default,
1781 skip_serializing_if = "Option::is_none"
1782 )]
1783 pub content_reference_string: Option<String>,
1784 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1785 pub media: Vec<LinkedInMediaDTO>,
1786 #[serde(
1787 rename = "adCampaignId",
1788 default,
1789 skip_serializing_if = "Option::is_none"
1790 )]
1791 pub ad_campaign_id: Option<String>,
1792 #[serde(rename = "adId", default, skip_serializing_if = "Option::is_none")]
1793 pub ad_id: Option<String>,
1794 #[serde(default, skip_serializing_if = "Option::is_none")]
1795 pub headline: Option<String>,
1796 #[serde(
1799 rename = "publishingStatus",
1800 default,
1801 skip_serializing_if = "Option::is_none"
1802 )]
1803 pub publishing_status: Option<String>,
1804 #[serde(
1805 rename = "adCampaignGroupId",
1806 default,
1807 skip_serializing_if = "Option::is_none"
1808 )]
1809 pub ad_campaign_group_id: Option<String>,
1810 #[serde(default, skip_serializing_if = "Option::is_none")]
1811 pub description: Option<String>,
1812 #[serde(default, skip_serializing_if = "Option::is_none")]
1813 pub meta: Option<serde_json::Value>,
1814 #[serde(
1816 rename = "linkedInError",
1817 default,
1818 skip_serializing_if = "Option::is_none"
1819 )]
1820 pub linked_in_error: Option<String>,
1821}
1822
1823#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1825pub struct LinkedInBudgetDTO {
1826 #[serde(
1828 rename = "budgetType",
1829 default,
1830 skip_serializing_if = "Option::is_none"
1831 )]
1832 pub budget_type: Option<String>,
1833 #[serde(default, skip_serializing_if = "Option::is_none")]
1834 pub amount: Option<f64>,
1835 #[serde(
1837 rename = "scheduleStartDate",
1838 default,
1839 skip_serializing_if = "Option::is_none"
1840 )]
1841 pub schedule_start_date: Option<String>,
1842 #[serde(
1844 rename = "scheduleEndDate",
1845 default,
1846 skip_serializing_if = "Option::is_none"
1847 )]
1848 pub schedule_end_date: Option<String>,
1849}
1850
1851#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1853pub struct LinkedInCreateLeadFormBodyDTO {
1854 pub owner: SponsoredAccountOwnerDTO,
1857 #[serde(rename = "creationLocale")]
1860 pub creation_locale: CreationLocaleDTO,
1861 pub name: String,
1864 pub state: String,
1868 pub content: LeadFormContentDTO,
1871 #[serde(
1873 rename = "hiddenFields",
1874 default,
1875 skip_serializing_if = "Vec::is_empty"
1876 )]
1877 pub hidden_fields: Vec<HiddenFieldDTO>,
1878}
1879
1880#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1882pub struct LinkedInMediaDTO {
1883 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1886 pub type_: Option<String>,
1887 #[serde(default, skip_serializing_if = "Option::is_none")]
1889 pub src: Option<String>,
1890 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1892 pub frames: Vec<String>,
1893 #[serde(
1895 rename = "selectedPoster",
1896 default,
1897 skip_serializing_if = "Option::is_none"
1898 )]
1899 pub selected_poster: Option<f64>,
1900 #[serde(
1902 rename = "thumbnailUrl",
1903 default,
1904 skip_serializing_if = "Option::is_none"
1905 )]
1906 pub thumbnail_url: Option<String>,
1907 #[serde(default, skip_serializing_if = "Option::is_none")]
1909 pub name: Option<String>,
1910 #[serde(default, skip_serializing_if = "Option::is_none")]
1912 pub headline: Option<String>,
1913 #[serde(
1915 rename = "destinationUrl",
1916 default,
1917 skip_serializing_if = "Option::is_none"
1918 )]
1919 pub destination_url: Option<String>,
1920 #[serde(
1922 rename = "fileSizeBytes",
1923 default,
1924 skip_serializing_if = "Option::is_none"
1925 )]
1926 pub file_size_bytes: Option<f64>,
1927}
1928
1929#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1931pub struct LinkedInUpdateAdStatusBodyDTO {
1932 #[serde(rename = "operationType")]
1936 pub operation_type: String,
1937 #[serde(rename = "type")]
1941 pub type_: String,
1942}
1943
1944#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1946pub struct LocaleDTO {
1947 pub country: String,
1950 pub language: String,
1953}
1954
1955#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1957pub struct LocalizedStringDTO {
1958 pub localized: serde_json::Value,
1961}
1962
1963#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1965pub struct LocationIdBodyDTO {
1966 #[serde(rename = "locationId")]
1969 pub location_id: String,
1970}
1971
1972#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1974pub struct MediaDTO {
1975 pub src: String,
1978 #[serde(
1980 rename = "thumbnailUrl",
1981 default,
1982 skip_serializing_if = "Option::is_none"
1983 )]
1984 pub thumbnail_url: Option<String>,
1985 #[serde(
1987 rename = "selectedPoster",
1988 default,
1989 skip_serializing_if = "Option::is_none"
1990 )]
1991 pub selected_poster: Option<f64>,
1992 #[serde(rename = "type")]
1996 pub type_: String,
1997 #[serde(default, skip_serializing_if = "Option::is_none")]
1999 pub name: Option<String>,
2000 #[serde(default, skip_serializing_if = "Option::is_none")]
2002 pub headline: Option<String>,
2003 #[serde(default, skip_serializing_if = "Option::is_none")]
2005 pub description: Option<String>,
2006 #[serde(default, skip_serializing_if = "Option::is_none")]
2008 pub link: Option<String>,
2009}
2010
2011#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2013pub struct MemberDTO {
2014 #[serde(rename = "memberType")]
2018 pub member_type: String,
2019 #[serde(default, skip_serializing_if = "Option::is_none")]
2021 pub keyword: Option<String>,
2022 #[serde(default, skip_serializing_if = "Option::is_none")]
2024 pub url: Option<String>,
2025 #[serde(default, skip_serializing_if = "Option::is_none")]
2027 pub app: Option<String>,
2028}
2029
2030#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2032pub struct MultipleChoiceOptionDTO {
2033 pub id: f64,
2036 pub text: LocalizedStringDTO,
2039}
2040
2041#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2043pub struct MultipleChoiceQuestionDetailsDTO {
2044 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2047 pub options: Vec<MultipleChoiceOptionDTO>,
2048}
2049
2050#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2052pub struct PostSubmissionCallToActionDTO {
2053 #[serde(rename = "callToActionTarget")]
2056 pub call_to_action_target: PostSubmissionCallToActionTargetDTO,
2057 #[serde(rename = "callToActionLabel")]
2062 pub call_to_action_label: String,
2063}
2064
2065#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2067pub struct PostSubmissionCallToActionTargetDTO {
2068 #[serde(rename = "landingPageUrl")]
2071 pub landing_page_url: String,
2072}
2073
2074#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2076pub struct PostSubmissionInfoDTO {
2077 pub message: LocalizedStringDTO,
2080 #[serde(rename = "callToAction")]
2083 pub call_to_action: PostSubmissionCallToActionDTO,
2084}
2085
2086#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2088pub struct PublishAdDTO {
2089 #[serde(rename = "locationId")]
2092 pub location_id: String,
2093}
2094
2095#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2097pub struct QuestionDetailsDTO {
2098 #[serde(
2100 rename = "textQuestionDetails",
2101 default,
2102 skip_serializing_if = "Option::is_none"
2103 )]
2104 pub text_question_details: Option<serde_json::Value>,
2105 #[serde(
2107 rename = "multipleChoiceQuestionDetails",
2108 default,
2109 skip_serializing_if = "Option::is_none"
2110 )]
2111 pub multiple_choice_question_details: Option<MultipleChoiceQuestionDetailsDTO>,
2112}
2113
2114#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2116pub struct RuleBasedUserListDTO {
2117 #[serde(
2120 rename = "prepopulationStatus",
2121 default,
2122 skip_serializing_if = "Option::is_none"
2123 )]
2124 pub prepopulation_status: Option<String>,
2125 #[serde(rename = "flexibleRuleUserList")]
2128 pub flexible_rule_user_list: FlexibleRuleUserListDTO,
2129}
2130
2131#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2133pub struct RuleDTO {
2134 #[serde(
2137 rename = "ruleItemGroups",
2138 default,
2139 skip_serializing_if = "Vec::is_empty"
2140 )]
2141 pub rule_item_groups: Vec<RuleItemGroupDTO>,
2142}
2143
2144#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2146pub struct RuleItemDTO {
2147 pub name: String,
2151 #[serde(rename = "stringRuleItem")]
2154 pub string_rule_item: StringRuleItemDTO,
2155}
2156
2157#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2159pub struct RuleItemGroupDTO {
2160 #[serde(rename = "ruleItems", default, skip_serializing_if = "Vec::is_empty")]
2163 pub rule_items: Vec<RuleItemDTO>,
2164}
2165
2166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2168pub struct RuleOperandDTO {
2169 #[serde(rename = "lookbackWindowDays")]
2172 pub lookback_window_days: f64,
2173 pub rule: RuleDTO,
2176}
2177
2178#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2180pub struct SelectedAttributeDTO {
2181 pub urn: String,
2184 pub name: String,
2187 #[serde(rename = "categoryName")]
2190 pub category_name: String,
2191 pub facet: String,
2194}
2195
2196#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2198pub struct SitelinkAssetPayloadDTO {
2199 #[serde(
2201 rename = "resourceName",
2202 default,
2203 skip_serializing_if = "Option::is_none"
2204 )]
2205 pub resource_name: Option<String>,
2206 #[serde(rename = "linkText")]
2209 pub link_text: String,
2210 #[serde(rename = "finalUrls")]
2213 pub final_urls: String,
2214 #[serde(default, skip_serializing_if = "Option::is_none")]
2216 pub description1: Option<String>,
2217 #[serde(default, skip_serializing_if = "Option::is_none")]
2219 pub description2: Option<String>,
2220 #[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
2222 pub start_date: Option<String>,
2223 #[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
2225 pub end_date: Option<String>,
2226 #[serde(
2228 rename = "adScheduleTargets",
2229 default,
2230 skip_serializing_if = "Vec::is_empty"
2231 )]
2232 pub ad_schedule_targets: Vec<AdScheduleTargetDTO>,
2233}
2234
2235#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2237pub struct SponsoredAccountOwnerDTO {
2238 #[serde(rename = "sponsoredAccount")]
2241 pub sponsored_account: String,
2242}
2243
2244#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2246pub struct StringRuleItemDTO {
2247 pub operator: String,
2250 pub value: String,
2253}
2254
2255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2257pub struct TargetAudienceDTO {
2258 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2260 pub include: Vec<Vec<SelectedAttributeDTO>>,
2261 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2263 pub exclude: Vec<Vec<SelectedAttributeDTO>>,
2264}
2265
2266#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2268pub struct ThankYouPage {
2269 pub title: String,
2272 pub body: String,
2275 #[serde(rename = "buttonText")]
2278 pub button_text: String,
2279 #[serde(rename = "buttonType")]
2282 pub button_type: String,
2283 #[serde(
2285 rename = "buttonLink",
2286 default,
2287 skip_serializing_if = "Option::is_none"
2288 )]
2289 pub button_link: Option<String>,
2290 #[serde(
2292 rename = "businessPhone",
2293 default,
2294 skip_serializing_if = "Option::is_none"
2295 )]
2296 pub business_phone: Option<String>,
2297 #[serde(
2299 rename = "countryCode",
2300 default,
2301 skip_serializing_if = "Option::is_none"
2302 )]
2303 pub country_code: Option<String>,
2304}
2305
2306#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2308pub struct UnitCostDTO {
2309 pub amount: f64,
2312}
2313
2314#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2316pub struct UpdateCustomAudienceBatchDTO {
2317 #[serde(rename = "locationId")]
2320 pub location_id: String,
2321 #[serde(rename = "csvPath", default, skip_serializing_if = "Option::is_none")]
2323 pub csv_path: Option<String>,
2324 #[serde(rename = "operationType")]
2327 pub operation_type: String,
2328 #[serde(
2330 rename = "smartlistIds",
2331 default,
2332 skip_serializing_if = "Vec::is_empty"
2333 )]
2334 pub smartlist_ids: Vec<String>,
2335 #[serde(
2337 rename = "dynamicAudience",
2338 default,
2339 skip_serializing_if = "Option::is_none"
2340 )]
2341 pub dynamic_audience: Option<String>,
2342}
2343
2344#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2346pub struct UpdateCustomAudienceDTO {
2347 #[serde(rename = "locationId")]
2350 pub location_id: String,
2351 #[serde(rename = "contactId")]
2354 pub contact_id: String,
2355 #[serde(
2357 rename = "fbAdAccountId",
2358 default,
2359 skip_serializing_if = "Option::is_none"
2360 )]
2361 pub fb_ad_account_id: Option<String>,
2362}
2363
2364#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2366pub struct UpsertAdDTO {
2367 #[serde(default, skip_serializing_if = "Option::is_none")]
2369 pub id: Option<String>,
2370 #[serde(rename = "locationId")]
2373 pub location_id: String,
2374 #[serde(default, skip_serializing_if = "Option::is_none")]
2376 pub name: Option<String>,
2377 #[serde(
2379 rename = "primaryText",
2380 default,
2381 skip_serializing_if = "Option::is_none"
2382 )]
2383 pub primary_text: Option<String>,
2384 #[serde(default, skip_serializing_if = "Option::is_none")]
2386 pub headline: Option<String>,
2387 #[serde(default, skip_serializing_if = "Option::is_none")]
2389 pub description: Option<String>,
2390 #[serde(rename = "imageUrl", default, skip_serializing_if = "Option::is_none")]
2392 pub image_url: Option<String>,
2393 #[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
2396 pub media_type: Option<String>,
2397 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2399 pub media: Vec<MediaDTO>,
2400 #[serde(
2402 rename = "multiAdvertiserAds",
2403 default,
2404 skip_serializing_if = "Option::is_none"
2405 )]
2406 pub multi_advertiser_ads: Option<bool>,
2407 #[serde(rename = "campaignId")]
2410 pub campaign_id: String,
2411 #[serde(rename = "adsetId")]
2414 pub adset_id: String,
2415 #[serde(default, skip_serializing_if = "Option::is_none")]
2417 pub cta: Option<String>,
2418 #[serde(
2420 rename = "conversationFormId",
2421 default,
2422 skip_serializing_if = "Option::is_none"
2423 )]
2424 pub conversation_form_id: Option<String>,
2425 #[serde(
2427 rename = "destinationLink",
2428 default,
2429 skip_serializing_if = "Option::is_none"
2430 )]
2431 pub destination_link: Option<String>,
2432 #[serde(
2434 rename = "destinationFormId",
2435 default,
2436 skip_serializing_if = "Option::is_none"
2437 )]
2438 pub destination_form_id: Option<String>,
2439}
2440
2441#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2443pub struct UpsertAdsetDTO {
2444 #[serde(default, skip_serializing_if = "Option::is_none")]
2446 pub id: Option<String>,
2447 #[serde(rename = "locationId")]
2450 pub location_id: String,
2451 #[serde(default, skip_serializing_if = "Option::is_none")]
2453 pub name: Option<String>,
2454 #[serde(rename = "pageId", default, skip_serializing_if = "Option::is_none")]
2456 pub page_id: Option<String>,
2457 #[serde(
2459 rename = "instagramActorId",
2460 default,
2461 skip_serializing_if = "Option::is_none"
2462 )]
2463 pub instagram_actor_id: Option<String>,
2464 #[serde(
2467 rename = "messagingPlatforms",
2468 default,
2469 skip_serializing_if = "Option::is_none"
2470 )]
2471 pub messaging_platforms: Option<String>,
2472 #[serde(
2474 rename = "whatsappNumber",
2475 default,
2476 skip_serializing_if = "Option::is_none"
2477 )]
2478 pub whatsapp_number: Option<String>,
2479 #[serde(default, skip_serializing_if = "Option::is_none")]
2482 pub audience: Option<FacebookAudienceDTO>,
2483 #[serde(default, skip_serializing_if = "Option::is_none")]
2485 pub budget: Option<Budget>,
2486 #[serde(
2488 rename = "conversionLocation",
2489 default,
2490 skip_serializing_if = "Option::is_none"
2491 )]
2492 pub conversion_location: Option<String>,
2493 #[serde(
2495 rename = "customEventType",
2496 default,
2497 skip_serializing_if = "Option::is_none"
2498 )]
2499 pub custom_event_type: Option<String>,
2500 #[serde(rename = "pixelId", default, skip_serializing_if = "Option::is_none")]
2502 pub pixel_id: Option<String>,
2503 #[serde(rename = "campaignId")]
2506 pub campaign_id: String,
2507}
2508
2509#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2511pub struct UpsertAssetsDTO {
2512 #[serde(rename = "locationId")]
2515 pub location_id: String,
2516 #[serde(rename = "type")]
2520 pub type_: String,
2521 pub payload: serde_json::Value,
2526}
2527
2528#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2530pub struct UpsertAudienceDTO {
2531 #[serde(rename = "locationId")]
2534 pub location_id: String,
2535 #[serde(
2537 rename = "resourceName",
2538 default,
2539 skip_serializing_if = "Option::is_none"
2540 )]
2541 pub resource_name: Option<String>,
2542 pub name: String,
2545 #[serde(default, skip_serializing_if = "Option::is_none")]
2547 pub dimensions: Option<AudienceDimensionDTO>,
2548 #[serde(
2550 rename = "exclusionDimension",
2551 default,
2552 skip_serializing_if = "Option::is_none"
2553 )]
2554 pub exclusion_dimension: Option<AudienceDimensionDTO>,
2555}
2556
2557#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2559pub struct UpsertCampaignDTO {
2560 #[serde(default, skip_serializing_if = "Option::is_none")]
2562 pub id: Option<String>,
2563 #[serde(rename = "locationId")]
2566 pub location_id: String,
2567 #[serde(default, skip_serializing_if = "Option::is_none")]
2569 pub name: Option<String>,
2570 #[serde(default, skip_serializing_if = "Option::is_none")]
2574 pub objective: Option<String>,
2575 #[serde(
2579 rename = "specialAdCategories",
2580 default,
2581 skip_serializing_if = "Option::is_none"
2582 )]
2583 pub special_ad_categories: Option<String>,
2584 #[serde(default, skip_serializing_if = "Option::is_none")]
2586 pub source: Option<String>,
2587}
2588
2589#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2591pub struct UpsertConversionDTO {
2592 #[serde(rename = "locationId")]
2595 pub location_id: String,
2596 #[serde(
2598 rename = "conversionId",
2599 default,
2600 skip_serializing_if = "Option::is_none"
2601 )]
2602 pub conversion_id: Option<String>,
2603 pub name: String,
2606 #[serde(rename = "type")]
2610 pub type_: String,
2611 pub category: String,
2614 #[serde(rename = "valueSettings")]
2617 pub value_settings: ConversionValueSettings,
2618 #[serde(rename = "countingType")]
2622 pub counting_type: String,
2623 #[serde(rename = "attributionModel")]
2627 pub attribution_model: String,
2628 #[serde(rename = "clickThroughWindow")]
2631 pub click_through_window: f64,
2632}
2633
2634#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2636pub struct UpsertConversionPixelDTO {
2637 #[serde(rename = "locationId")]
2640 pub location_id: String,
2641 #[serde(
2643 rename = "conversionPixelId",
2644 default,
2645 skip_serializing_if = "Option::is_none"
2646 )]
2647 pub conversion_pixel_id: Option<String>,
2648 #[serde(default, skip_serializing_if = "Option::is_none")]
2650 pub name: Option<String>,
2651 #[serde(rename = "igUserId", default, skip_serializing_if = "Option::is_none")]
2653 pub ig_user_id: Option<String>,
2654 #[serde(rename = "type")]
2657 pub type_: String,
2658}
2659
2660#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2662pub struct UpsertSegmentDTO {
2663 pub name: String,
2666 #[serde(default, skip_serializing_if = "Option::is_none")]
2668 pub description: Option<String>,
2669 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2671 pub members: Vec<MemberDTO>,
2672 #[serde(default, skip_serializing_if = "Option::is_none")]
2674 pub status: Option<String>,
2675 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
2677 pub type_: Option<String>,
2678 #[serde(default, skip_serializing_if = "Option::is_none")]
2680 pub id: Option<String>,
2681 #[serde(
2683 rename = "membershipStatus",
2684 default,
2685 skip_serializing_if = "Option::is_none"
2686 )]
2687 pub membership_status: Option<String>,
2688 #[serde(
2690 rename = "ruleBasedUserList",
2691 default,
2692 skip_serializing_if = "Option::is_none"
2693 )]
2694 pub rule_based_user_list: Option<RuleBasedUserListDTO>,
2695 #[serde(
2697 rename = "membershipLifeSpan",
2698 default,
2699 skip_serializing_if = "Option::is_none"
2700 )]
2701 pub membership_life_span: Option<f64>,
2702 #[serde(
2704 rename = "seedUserListIds",
2705 default,
2706 skip_serializing_if = "Vec::is_empty"
2707 )]
2708 pub seed_user_list_ids: Vec<String>,
2709 #[serde(
2711 rename = "countryCodes",
2712 default,
2713 skip_serializing_if = "Vec::is_empty"
2714 )]
2715 pub country_codes: Vec<String>,
2716 #[serde(
2719 rename = "expansionLevel",
2720 default,
2721 skip_serializing_if = "Option::is_none"
2722 )]
2723 pub expansion_level: Option<String>,
2724}
2725
2726#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2728pub struct WelcomeMessageQuestion {
2729 pub question: String,
2732 #[serde(default, skip_serializing_if = "Option::is_none")]
2734 pub response: Option<String>,
2735}