1#![allow(
14 missing_docs,
15 clippy::doc_lazy_continuation,
16 clippy::doc_overindented_list_items
17)]
18
19use serde::{Deserialize, Serialize};
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct AdCampaignDTO {
24 #[serde(default, skip_serializing_if = "Option::is_none")]
25 pub id: Option<String>,
26 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub locale: Option<LocaleDTO>,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub name: Option<String>,
31 #[serde(
34 rename = "publishingStatus",
35 default,
36 skip_serializing_if = "Option::is_none"
37 )]
38 pub publishing_status: Option<String>,
39 #[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
42 pub media_type: Option<String>,
43 #[serde(default, skip_serializing_if = "Option::is_none")]
45 pub audience: Option<AudienceDTO>,
46 #[serde(rename = "unitCost", default, skip_serializing_if = "Option::is_none")]
48 pub unit_cost: Option<UnitCostDTO>,
49 #[serde(
50 rename = "campaignType",
51 default,
52 skip_serializing_if = "Option::is_none"
53 )]
54 pub campaign_type: Option<String>,
55 #[serde(
56 rename = "adCampaignGroupId",
57 default,
58 skip_serializing_if = "Option::is_none"
59 )]
60 pub ad_campaign_group_id: Option<String>,
61 #[serde(
62 rename = "adCampaignId",
63 default,
64 skip_serializing_if = "Option::is_none"
65 )]
66 pub ad_campaign_id: Option<String>,
67 #[serde(default, skip_serializing_if = "Vec::is_empty")]
68 pub ads: Vec<LinkedInAdDTO>,
69 #[serde(
71 rename = "linkedInError",
72 default,
73 skip_serializing_if = "Option::is_none"
74 )]
75 pub linked_in_error: Option<String>,
76 #[serde(default, skip_serializing_if = "Option::is_none")]
77 pub meta: Option<serde_json::Value>,
78}
79
80#[derive(Debug, Clone, Default, Serialize, Deserialize)]
82pub struct AdCampaignGroupDataDTO {
83 #[serde(default, skip_serializing_if = "Option::is_none")]
84 pub id: Option<String>,
85 #[serde(rename = "locationId")]
88 pub location_id: String,
89 #[serde(default, skip_serializing_if = "Option::is_none")]
90 pub budget: Option<LinkedInBudgetDTO>,
91 #[serde(rename = "adCampaigns", default, skip_serializing_if = "Vec::is_empty")]
92 pub ad_campaigns: Vec<AdCampaignDTO>,
93 #[serde(
95 rename = "adBudgetOptimization",
96 default,
97 skip_serializing_if = "Option::is_none"
98 )]
99 pub ad_budget_optimization: Option<String>,
100 #[serde(
102 rename = "objectiveType",
103 default,
104 skip_serializing_if = "Option::is_none"
105 )]
106 pub objective_type: Option<String>,
107 #[serde(default, skip_serializing_if = "Option::is_none")]
108 pub name: Option<String>,
109 #[serde(
110 rename = "adCampaignGroupId",
111 default,
112 skip_serializing_if = "Option::is_none"
113 )]
114 pub ad_campaign_group_id: Option<String>,
115 #[serde(
118 rename = "publishingStatus",
119 default,
120 skip_serializing_if = "Option::is_none"
121 )]
122 pub publishing_status: Option<String>,
123 #[serde(
124 rename = "linkedInAdAccountId",
125 default,
126 skip_serializing_if = "Option::is_none"
127 )]
128 pub linked_in_ad_account_id: Option<String>,
129 #[serde(
130 rename = "unpublishedChanges",
131 default,
132 skip_serializing_if = "Option::is_none"
133 )]
134 pub unpublished_changes: Option<bool>,
135 #[serde(default, skip_serializing_if = "Option::is_none")]
136 pub meta: Option<serde_json::Value>,
137 #[serde(
138 rename = "linkedInError",
139 default,
140 skip_serializing_if = "Option::is_none"
141 )]
142 pub linked_in_error: Option<String>,
143}
144
145#[derive(Debug, Clone, Default, Serialize, Deserialize)]
147pub struct AdScheduleTargetDTO {
148 #[serde(rename = "startMinute")]
152 pub start_minute: String,
153 #[serde(rename = "endMinute")]
157 pub end_minute: String,
158 #[serde(rename = "dayOfWeek")]
163 pub day_of_week: String,
164 #[serde(rename = "startHour")]
167 pub start_hour: f64,
168 #[serde(rename = "endHour")]
171 pub end_hour: f64,
172}
173
174#[derive(Debug, Clone, Default, Serialize, Deserialize)]
176pub struct AudienceCustomAudienceItemDTO {
177 pub id: String,
180 pub name: String,
183}
184
185#[derive(Debug, Clone, Default, Serialize, Deserialize)]
187pub struct AudienceDTO {
188 #[serde(default, skip_serializing_if = "Vec::is_empty")]
190 pub geo_locations: Vec<GeoLocationDTO>,
191 #[serde(
193 rename = "targetAudience",
194 default,
195 skip_serializing_if = "Option::is_none"
196 )]
197 pub target_audience: Option<TargetAudienceDTO>,
198}
199
200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
202pub struct AudienceDimensionDTO {
203 #[serde(
205 rename = "isAgeUnknown",
206 default,
207 skip_serializing_if = "Option::is_none"
208 )]
209 pub is_age_unknown: Option<bool>,
210 #[serde(rename = "ageRanges", default, skip_serializing_if = "Vec::is_empty")]
212 pub age_ranges: Vec<String>,
213 #[serde(default, skip_serializing_if = "Vec::is_empty")]
215 pub genders: Vec<String>,
216 #[serde(
218 rename = "parentalStatuses",
219 default,
220 skip_serializing_if = "Vec::is_empty"
221 )]
222 pub parental_statuses: Vec<String>,
223 #[serde(
225 rename = "audienceSegments",
226 default,
227 skip_serializing_if = "Option::is_none"
228 )]
229 pub audience_segments: Option<AudienceSegmentsDTO>,
230}
231
232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
234pub struct AudienceInterestDTO {
235 pub id: String,
238 pub name: String,
241 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
243 pub type_: Option<String>,
244}
245
246#[derive(Debug, Clone, Default, Serialize, Deserialize)]
248pub struct AudienceLocaleDTO {
249 pub name: String,
252 pub key: f64,
255}
256
257#[derive(Debug, Clone, Default, Serialize, Deserialize)]
259pub struct AudienceLocationDTO {
260 pub key: String,
263 pub name: String,
266 #[serde(rename = "type")]
272 pub type_: String,
273 #[serde(rename = "selectionType")]
277 pub selection_type: String,
278 #[serde(default, skip_serializing_if = "Option::is_none")]
280 pub radius: Option<f64>,
281 #[serde(
284 rename = "radiusUnit",
285 default,
286 skip_serializing_if = "Option::is_none"
287 )]
288 pub radius_unit: Option<String>,
289 #[serde(default, skip_serializing_if = "Option::is_none")]
291 pub geometry: Option<AudienceLocationGeometry>,
292}
293
294#[derive(Debug, Clone, Default, Serialize, Deserialize)]
296pub struct AudienceLocationGeometry {
297 pub location: serde_json::Value,
300 pub location_type: String,
303}
304
305#[derive(Debug, Clone, Default, Serialize, Deserialize)]
307pub struct AudiencePlacementsDTO {
308 #[serde(default, skip_serializing_if = "Vec::is_empty")]
310 pub facebook: Vec<String>,
311 #[serde(default, skip_serializing_if = "Vec::is_empty")]
313 pub instagram: Vec<String>,
314 #[serde(default, skip_serializing_if = "Vec::is_empty")]
316 pub messenger: Vec<String>,
317}
318
319#[derive(Debug, Clone, Default, Serialize, Deserialize)]
321pub struct AudienceSegmentsDTO {
322 #[serde(
324 rename = "customAudiences",
325 default,
326 skip_serializing_if = "Vec::is_empty"
327 )]
328 pub custom_audiences: Vec<String>,
329 #[serde(rename = "userLists", default, skip_serializing_if = "Vec::is_empty")]
331 pub user_lists: Vec<String>,
332 #[serde(
334 rename = "userInterests",
335 default,
336 skip_serializing_if = "Vec::is_empty"
337 )]
338 pub user_interests: Vec<String>,
339}
340
341#[derive(Debug, Clone, Default, Serialize, Deserialize)]
343pub struct Budget {
344 #[serde(rename = "budgetType")]
348 pub budget_type: String,
349 pub amount: f64,
352 #[serde(
354 rename = "scheduleStartDate",
355 default,
356 skip_serializing_if = "Option::is_none"
357 )]
358 pub schedule_start_date: Option<String>,
359 #[serde(
361 rename = "scheduleEndDate",
362 default,
363 skip_serializing_if = "Option::is_none"
364 )]
365 pub schedule_end_date: Option<String>,
366}
367
368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
370pub struct CallAssetPayloadDTO {
371 #[serde(rename = "phoneNumber")]
374 pub phone_number: String,
375 #[serde(rename = "countryCode")]
378 pub country_code: String,
379 #[serde(
381 rename = "callConversionAction",
382 default,
383 skip_serializing_if = "Option::is_none"
384 )]
385 pub call_conversion_action: Option<String>,
386 #[serde(
388 rename = "adScheduleTargets",
389 default,
390 skip_serializing_if = "Vec::is_empty"
391 )]
392 pub ad_schedule_targets: Vec<AdScheduleTargetDTO>,
393 #[serde(
395 rename = "resourceName",
396 default,
397 skip_serializing_if = "Option::is_none"
398 )]
399 pub resource_name: Option<String>,
400}
401
402#[derive(Debug, Clone, Default, Serialize, Deserialize)]
404pub struct CampaignDTO {
405 #[serde(default, skip_serializing_if = "Option::is_none")]
407 pub id: Option<String>,
408 pub name: String,
411 #[serde(rename = "locationId")]
414 pub location_id: String,
415 #[serde(rename = "advertisingChannelType")]
420 pub advertising_channel_type: String,
421 #[serde(
424 rename = "advertisingChannelSubType",
425 default,
426 skip_serializing_if = "Option::is_none"
427 )]
428 pub advertising_channel_sub_type: Option<String>,
429 #[serde(rename = "goalType", default, skip_serializing_if = "Option::is_none")]
432 pub goal_type: Option<String>,
433 #[serde(default, skip_serializing_if = "Option::is_none")]
435 pub budget: Option<GoogleBudgetDTO>,
436 #[serde(default, skip_serializing_if = "Option::is_none")]
438 pub audience: Option<GoogleCampaignAudienceDTO>,
439 #[serde(
441 rename = "networkSettings",
442 default,
443 skip_serializing_if = "Option::is_none"
444 )]
445 pub network_settings: Option<GoogleNetworkSettingsDTO>,
446 #[serde(
448 rename = "biddingStrategy",
449 default,
450 skip_serializing_if = "Option::is_none"
451 )]
452 pub bidding_strategy: Option<GoogleBiddingStrategyDTO>,
453 #[serde(default, skip_serializing_if = "Option::is_none")]
455 pub assets: Option<GoogleAssetsDTO>,
456 #[serde(
458 rename = "isEuPoliticalAds",
459 default,
460 skip_serializing_if = "Option::is_none"
461 )]
462 pub is_eu_political_ads: Option<bool>,
463 #[serde(rename = "adGroups", default, skip_serializing_if = "Vec::is_empty")]
465 pub ad_groups: Vec<GoogleAdGroupDTO>,
466 #[serde(
468 rename = "campaignGoal",
469 default,
470 skip_serializing_if = "Option::is_none"
471 )]
472 pub campaign_goal: Option<GoogleCampaignGoalDTO>,
473 #[serde(rename = "adSchedule", default, skip_serializing_if = "Vec::is_empty")]
475 pub ad_schedule: Vec<GoogleAdScheduleDTO>,
476 #[serde(
480 rename = "publishingStatus",
481 default,
482 skip_serializing_if = "Option::is_none"
483 )]
484 pub publishing_status: Option<String>,
485 #[serde(
487 rename = "googleAdAccountId",
488 default,
489 skip_serializing_if = "Option::is_none"
490 )]
491 pub google_ad_account_id: Option<String>,
492 #[serde(
494 rename = "unpublishedChanges",
495 default,
496 skip_serializing_if = "Option::is_none"
497 )]
498 pub unpublished_changes: Option<bool>,
499 #[serde(
501 rename = "maximumCpc",
502 default,
503 skip_serializing_if = "Option::is_none"
504 )]
505 pub maximum_cpc: Option<f64>,
506 #[serde(
508 rename = "googleCampaignId",
509 default,
510 skip_serializing_if = "Option::is_none"
511 )]
512 pub google_campaign_id: Option<String>,
513 #[serde(default, skip_serializing_if = "Option::is_none")]
515 pub source: Option<String>,
516 #[serde(
518 rename = "advancedOptions",
519 default,
520 skip_serializing_if = "Option::is_none"
521 )]
522 pub advanced_options: Option<serde_json::Value>,
523}
524
525#[derive(Debug, Clone, Default, Serialize, Deserialize)]
527pub struct ConsentDTO {
528 #[serde(rename = "checkRequired")]
531 pub check_required: bool,
532 pub id: f64,
535 pub consent: LocalizedStringDTO,
538}
539
540#[derive(Debug, Clone, Default, Serialize, Deserialize)]
542pub struct ConversionValueSettings {
543 #[serde(rename = "defaultValue")]
546 pub default_value: f64,
547 #[serde(rename = "defaultCurrencyCode")]
550 pub default_currency_code: String,
551 #[serde(rename = "alwaysUseDefaultValue")]
555 pub always_use_default_value: bool,
556}
557
558#[derive(Debug, Clone, Default, Serialize, Deserialize)]
560pub struct CreateConversationFormDTO {
561 #[serde(rename = "locationId")]
564 pub location_id: String,
565 pub name: String,
568 pub text: String,
571 #[serde(default, skip_serializing_if = "Vec::is_empty")]
574 pub questions: Vec<WelcomeMessageQuestion>,
575}
576
577#[derive(Debug, Clone, Default, Serialize, Deserialize)]
579pub struct CreateGoogleIntegrationDTO {
580 #[serde(rename = "locationId")]
583 pub location_id: String,
584 #[serde(rename = "adAccountId")]
587 pub ad_account_id: String,
588 #[serde(rename = "mccId")]
591 pub mcc_id: String,
592}
593
594#[derive(Debug, Clone, Default, Serialize, Deserialize)]
596pub struct CreateIntegrationDTO {
597 #[serde(rename = "locationId")]
600 pub location_id: String,
601 #[serde(rename = "pageId")]
604 pub page_id: String,
605 #[serde(
607 rename = "adAccountId",
608 default,
609 skip_serializing_if = "Option::is_none"
610 )]
611 pub ad_account_id: Option<String>,
612}
613
614#[derive(Debug, Clone, Default, Serialize, Deserialize)]
616pub struct CreateLeadFormDTO {
617 #[serde(rename = "type")]
621 pub type_: String,
622 pub name: String,
625 #[serde(rename = "locationId")]
628 pub location_id: String,
629 #[serde(
631 rename = "greetingCard",
632 default,
633 skip_serializing_if = "Option::is_none"
634 )]
635 pub greeting_card: Option<GreetingCard>,
636 #[serde(default, skip_serializing_if = "Vec::is_empty")]
639 pub questions: Vec<FormQuestion>,
640 #[serde(
642 rename = "questionPageHeadline",
643 default,
644 skip_serializing_if = "Option::is_none"
645 )]
646 pub question_page_headline: Option<String>,
647 #[serde(rename = "privacyPolicyLink")]
650 pub privacy_policy_link: String,
651 #[serde(
653 rename = "privacyPolicyText",
654 default,
655 skip_serializing_if = "Option::is_none"
656 )]
657 pub privacy_policy_text: Option<String>,
658 #[serde(
660 rename = "customDisclaimer",
661 default,
662 skip_serializing_if = "Option::is_none"
663 )]
664 pub custom_disclaimer: Option<CustomDisclaimer>,
665 #[serde(rename = "thankYouPage")]
668 pub thank_you_page: ThankYouPage,
669}
670
671#[derive(Debug, Clone, Default, Serialize, Deserialize)]
673pub struct CreateLinkedinIntegrationDTO {
674 #[serde(rename = "locationId")]
677 pub location_id: String,
678 #[serde(rename = "adAccountId")]
681 pub ad_account_id: String,
682 #[serde(rename = "adAccountName")]
685 pub ad_account_name: String,
686 #[serde(rename = "currencyCode")]
689 pub currency_code: String,
690 #[serde(rename = "organizationId")]
693 pub organization_id: String,
694}
695
696#[derive(Debug, Clone, Default, Serialize, Deserialize)]
698pub struct CreateOfflineUserListJobDTO {
699 #[serde(rename = "locationId")]
702 pub location_id: String,
703 #[serde(
705 rename = "smartListIds",
706 default,
707 skip_serializing_if = "Vec::is_empty"
708 )]
709 pub smart_list_ids: Vec<String>,
710 #[serde(rename = "csvPath", default, skip_serializing_if = "Option::is_none")]
712 pub csv_path: Option<String>,
713 #[serde(
715 rename = "userListId",
716 default,
717 skip_serializing_if = "Option::is_none"
718 )]
719 pub user_list_id: Option<String>,
720 #[serde(rename = "isDynamic", default, skip_serializing_if = "Option::is_none")]
722 pub is_dynamic: Option<bool>,
723}
724
725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
727pub struct CreationLocaleDTO {
728 pub country: String,
731 pub language: String,
734}
735
736#[derive(Debug, Clone, Default, Serialize, Deserialize)]
738pub struct CustomDisclaimer {
739 pub title: String,
742 pub body: String,
745 #[serde(default, skip_serializing_if = "Vec::is_empty")]
747 pub checkboxes: Vec<CustomDisclaimerCheckbox>,
748}
749
750#[derive(Debug, Clone, Default, Serialize, Deserialize)]
752pub struct CustomDisclaimerCheckbox {
753 pub is_required: bool,
756 pub text: String,
759 pub key: String,
762}
763
764#[derive(Debug, Clone, Default, Serialize, Deserialize)]
766pub struct CustomQuestionFieldDTO {
767 #[serde(rename = "customQuestionText")]
770 pub custom_question_text: String,
771 #[serde(
774 rename = "singleChoiceAnswers",
775 default,
776 skip_serializing_if = "Vec::is_empty"
777 )]
778 pub single_choice_answers: Vec<String>,
779}
780
781#[derive(Debug, Clone, Default, Serialize, Deserialize)]
783pub struct FacebookAudienceDTO {
784 #[serde(default, skip_serializing_if = "Vec::is_empty")]
787 pub geo_locations: Vec<AudienceLocationDTO>,
788 #[serde(default, skip_serializing_if = "Vec::is_empty")]
790 pub locales: Vec<AudienceLocaleDTO>,
791 #[serde(default, skip_serializing_if = "Option::is_none")]
793 pub placements: Option<AudiencePlacementsDTO>,
794 #[serde(
797 rename = "placementType",
798 default,
799 skip_serializing_if = "Option::is_none"
800 )]
801 pub placement_type: Option<String>,
802 #[serde(default, skip_serializing_if = "Vec::is_empty")]
804 pub lookalike: Vec<AudienceCustomAudienceItemDTO>,
805 #[serde(default, skip_serializing_if = "Vec::is_empty")]
807 pub retargeting: Vec<AudienceCustomAudienceItemDTO>,
808 #[serde(default, skip_serializing_if = "Vec::is_empty")]
810 pub interests: Vec<AudienceInterestDTO>,
811 #[serde(default, skip_serializing_if = "Option::is_none")]
813 pub age_min: Option<f64>,
814 #[serde(default, skip_serializing_if = "Option::is_none")]
816 pub age_max: Option<f64>,
817 #[serde(default, skip_serializing_if = "Vec::is_empty")]
819 pub genders: Vec<f64>,
820}
821
822#[derive(Debug, Clone, Default, Serialize, Deserialize)]
824pub struct FbSetDefaultPageBodyDTO {
825 #[serde(rename = "pageId")]
828 pub page_id: String,
829}
830
831#[derive(Debug, Clone, Default, Serialize, Deserialize)]
833pub struct FbUpdateAudienceBodyDTO {
834 #[serde(rename = "locationId")]
837 pub location_id: String,
838 pub name: String,
841 pub description: String,
844}
845
846#[derive(Debug, Clone, Default, Serialize, Deserialize)]
848pub struct FlexibleRuleUserListDTO {
849 #[serde(
851 rename = "inclusiveRuleOperator",
852 default,
853 skip_serializing_if = "Option::is_none"
854 )]
855 pub inclusive_rule_operator: Option<String>,
856 #[serde(
859 rename = "inclusiveOperands",
860 default,
861 skip_serializing_if = "Vec::is_empty"
862 )]
863 pub inclusive_operands: Vec<RuleOperandDTO>,
864 #[serde(
867 rename = "exclusiveOperands",
868 default,
869 skip_serializing_if = "Vec::is_empty"
870 )]
871 pub exclusive_operands: Vec<RuleOperandDTO>,
872}
873
874#[derive(Debug, Clone, Default, Serialize, Deserialize)]
876pub struct FormQuestion {
877 #[serde(default, skip_serializing_if = "Option::is_none")]
879 pub label: Option<String>,
880 pub key: String,
883 #[serde(rename = "type")]
889 pub type_: String,
890 #[serde(default, skip_serializing_if = "Vec::is_empty")]
892 pub options: Vec<FormQuestionOption>,
893}
894
895#[derive(Debug, Clone, Default, Serialize, Deserialize)]
897pub struct FormQuestionOption {
898 pub key: String,
901 pub value: String,
904}
905
906#[derive(Debug, Clone, Default, Serialize, Deserialize)]
908pub struct GeoAddressComponentDTO {
909 #[serde(default, skip_serializing_if = "Option::is_none")]
911 pub long_name: Option<String>,
912 #[serde(default, skip_serializing_if = "Option::is_none")]
914 pub short_name: Option<String>,
915 #[serde(default, skip_serializing_if = "Vec::is_empty")]
917 pub types: Vec<String>,
918}
919
920#[derive(Debug, Clone, Default, Serialize, Deserialize)]
922pub struct GeoGeometryDTO {
923 #[serde(default, skip_serializing_if = "Option::is_none")]
925 pub location: Option<GeoLatLngDTO>,
926 #[serde(default, skip_serializing_if = "Option::is_none")]
928 pub location_type: Option<String>,
929 #[serde(default, skip_serializing_if = "Option::is_none")]
931 pub viewport: Option<GeoViewportDTO>,
932}
933
934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
936pub struct GeoLatLngDTO {
937 #[serde(default, skip_serializing_if = "Option::is_none")]
939 pub lat: Option<f64>,
940 #[serde(default, skip_serializing_if = "Option::is_none")]
942 pub lng: Option<f64>,
943}
944
945#[derive(Debug, Clone, Default, Serialize, Deserialize)]
947pub struct GeoLocationDTO {
948 pub name: String,
951 pub urn: String,
954 #[serde(rename = "facetUrn")]
957 pub facet_urn: String,
958 #[serde(rename = "selectionType")]
962 pub selection_type: String,
963}
964
965#[derive(Debug, Clone, Default, Serialize, Deserialize)]
967pub struct GeoViewportDTO {
968 #[serde(default, skip_serializing_if = "Option::is_none")]
970 pub northeast: Option<GeoLatLngDTO>,
971 #[serde(default, skip_serializing_if = "Option::is_none")]
973 pub southwest: Option<GeoLatLngDTO>,
974}
975
976#[derive(Debug, Clone, Default, Serialize, Deserialize)]
978pub struct GoogleAdContentDTO {
979 #[serde(default, skip_serializing_if = "Option::is_none")]
981 pub id: Option<String>,
982 #[serde(default, skip_serializing_if = "Option::is_none")]
984 pub name: Option<String>,
985 #[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
988 pub media_type: Option<String>,
989 #[serde(default, skip_serializing_if = "Vec::is_empty")]
991 pub headlines: Vec<String>,
992 #[serde(
994 rename = "longHeadlines",
995 default,
996 skip_serializing_if = "Vec::is_empty"
997 )]
998 pub long_headlines: Vec<String>,
999 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1001 pub descriptions: Vec<String>,
1002 #[serde(rename = "finalUrl", default, skip_serializing_if = "Option::is_none")]
1004 pub final_url: Option<String>,
1005 #[serde(default, skip_serializing_if = "Option::is_none")]
1007 pub path1: Option<String>,
1008 #[serde(default, skip_serializing_if = "Option::is_none")]
1010 pub path2: Option<String>,
1011 #[serde(rename = "isDeleted", default, skip_serializing_if = "Option::is_none")]
1013 pub is_deleted: Option<bool>,
1014 #[serde(rename = "adError", default, skip_serializing_if = "Option::is_none")]
1016 pub ad_error: Option<String>,
1017 #[serde(
1021 rename = "publishingStatus",
1022 default,
1023 skip_serializing_if = "Option::is_none"
1024 )]
1025 pub publishing_status: Option<String>,
1026 #[serde(rename = "adId", default, skip_serializing_if = "Option::is_none")]
1028 pub ad_id: Option<String>,
1029 #[serde(
1031 rename = "adCampaignId",
1032 default,
1033 skip_serializing_if = "Option::is_none"
1034 )]
1035 pub ad_campaign_id: Option<String>,
1036 #[serde(rename = "adGroupId", default, skip_serializing_if = "Option::is_none")]
1038 pub ad_group_id: Option<String>,
1039 #[serde(
1041 rename = "googleAdId",
1042 default,
1043 skip_serializing_if = "Option::is_none"
1044 )]
1045 pub google_ad_id: Option<String>,
1046 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1048 pub media: Vec<GoogleMediaDTO>,
1049 #[serde(
1053 rename = "callToActionLabel",
1054 default,
1055 skip_serializing_if = "Option::is_none"
1056 )]
1057 pub call_to_action_label: Option<String>,
1058 #[serde(
1060 rename = "businessName",
1061 default,
1062 skip_serializing_if = "Option::is_none"
1063 )]
1064 pub business_name: Option<String>,
1065 #[serde(
1067 rename = "youtubeVideoLinks",
1068 default,
1069 skip_serializing_if = "Vec::is_empty"
1070 )]
1071 pub youtube_video_links: Vec<GoogleYouTubeVideoLinkDTO>,
1072 #[serde(
1074 rename = "carouselCards",
1075 default,
1076 skip_serializing_if = "Vec::is_empty"
1077 )]
1078 pub carousel_cards: Vec<GoogleCarouselCardDTO>,
1079 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1083 pub placements: Vec<String>,
1084 #[serde(
1086 rename = "customChannels",
1087 default,
1088 skip_serializing_if = "Option::is_none"
1089 )]
1090 pub custom_channels: Option<bool>,
1091}
1092
1093#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1095pub struct GoogleAdGroupAudienceDTO {
1096 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1098 pub geo_locations: Vec<GoogleGeoLocationDTO>,
1099 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1101 pub locales: Vec<GoogleLocaleDTO>,
1102}
1103
1104#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1106pub struct GoogleAdGroupDTO {
1107 #[serde(default, skip_serializing_if = "Option::is_none")]
1109 pub id: Option<String>,
1110 #[serde(rename = "adGroupId", default, skip_serializing_if = "Option::is_none")]
1112 pub ad_group_id: Option<String>,
1113 #[serde(default, skip_serializing_if = "Option::is_none")]
1115 pub name: Option<String>,
1116 #[serde(
1118 rename = "adCampaignId",
1119 default,
1120 skip_serializing_if = "Option::is_none"
1121 )]
1122 pub ad_campaign_id: Option<String>,
1123 #[serde(rename = "adContent", default, skip_serializing_if = "Vec::is_empty")]
1125 pub ad_content: Vec<GoogleAdContentDTO>,
1126 #[serde(default, skip_serializing_if = "Option::is_none")]
1128 pub keywords: Option<GoogleKeywordsDTO>,
1129 #[serde(
1133 rename = "publishingStatus",
1134 default,
1135 skip_serializing_if = "Option::is_none"
1136 )]
1137 pub publishing_status: Option<String>,
1138 #[serde(
1140 rename = "adGroupError",
1141 default,
1142 skip_serializing_if = "Option::is_none"
1143 )]
1144 pub ad_group_error: Option<String>,
1145 #[serde(
1147 rename = "googleAdGroupId",
1148 default,
1149 skip_serializing_if = "Option::is_none"
1150 )]
1151 pub google_ad_group_id: Option<String>,
1152 #[serde(
1154 rename = "customChannels",
1155 default,
1156 skip_serializing_if = "Option::is_none"
1157 )]
1158 pub custom_channels: Option<bool>,
1159 #[serde(
1163 rename = "selectedChannels",
1164 default,
1165 skip_serializing_if = "Vec::is_empty"
1166 )]
1167 pub selected_channels: Vec<String>,
1168 #[serde(
1170 rename = "googleAudienceId",
1171 default,
1172 skip_serializing_if = "Option::is_none"
1173 )]
1174 pub google_audience_id: Option<String>,
1175 #[serde(default, skip_serializing_if = "Option::is_none")]
1177 pub audience: Option<GoogleAdGroupAudienceDTO>,
1178}
1179
1180#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1182pub struct GoogleAdScheduleDTO {
1183 #[serde(rename = "dayOfWeek")]
1189 pub day_of_week: String,
1190 #[serde(rename = "from")]
1193 pub from_: String,
1194 pub to: String,
1197}
1198
1199#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1201pub struct GoogleAssetImageDTO {
1202 pub url: String,
1205 #[serde(
1207 rename = "resourceName",
1208 default,
1209 skip_serializing_if = "Option::is_none"
1210 )]
1211 pub resource_name: Option<String>,
1212 #[serde(default, skip_serializing_if = "Option::is_none")]
1214 pub name: Option<String>,
1215 #[serde(default, skip_serializing_if = "Option::is_none")]
1217 pub error: Option<String>,
1218}
1219
1220#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1222pub struct GoogleAssetsDTO {
1223 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1225 pub calls: Vec<String>,
1226 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1228 pub sitelinks: Vec<String>,
1229 #[serde(rename = "leadForm", default, skip_serializing_if = "Option::is_none")]
1231 pub lead_form: Option<String>,
1232 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1234 pub images: Vec<GoogleAssetImageDTO>,
1235 #[serde(
1237 rename = "businessLogo",
1238 default,
1239 skip_serializing_if = "Option::is_none"
1240 )]
1241 pub business_logo: Option<GoogleAssetImageDTO>,
1242}
1243
1244#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1246pub struct GoogleBiddingStrategyDTO {
1247 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1249 pub type_: Option<String>,
1250 #[serde(default, skip_serializing_if = "Option::is_none")]
1252 pub value: Option<f64>,
1253}
1254
1255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1257pub struct GoogleBudgetDTO {
1258 #[serde(
1261 rename = "budgetType",
1262 default,
1263 skip_serializing_if = "Option::is_none"
1264 )]
1265 pub budget_type: Option<String>,
1266 #[serde(default, skip_serializing_if = "Option::is_none")]
1268 pub amount: Option<f64>,
1269 #[serde(
1271 rename = "scheduleStartDate",
1272 default,
1273 skip_serializing_if = "Option::is_none"
1274 )]
1275 pub schedule_start_date: Option<String>,
1276 #[serde(
1278 rename = "scheduleEndDate",
1279 default,
1280 skip_serializing_if = "Option::is_none"
1281 )]
1282 pub schedule_end_date: Option<String>,
1283}
1284
1285#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1287pub struct GoogleCampaignAudienceDTO {
1288 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1290 pub geo_locations: Vec<GoogleGeoLocationDTO>,
1291 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1293 pub locales: Vec<GoogleLocaleDTO>,
1294 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1296 pub gender: Vec<GoogleDemographicTargetDTO>,
1297 #[serde(rename = "ageRange", default, skip_serializing_if = "Vec::is_empty")]
1299 pub age_range: Vec<GoogleDemographicTargetDTO>,
1300 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1302 pub segments: Vec<GoogleSegmentTargetDTO>,
1303 #[serde(
1305 rename = "targetInterests",
1306 default,
1307 skip_serializing_if = "Option::is_none"
1308 )]
1309 pub target_interests: Option<GoogleTargetInterestsDTO>,
1310}
1311
1312#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1314pub struct GoogleCampaignGoalDTO {
1315 #[serde(rename = "type")]
1319 pub type_: String,
1320 #[serde(default, skip_serializing_if = "Option::is_none")]
1322 pub value: Option<String>,
1323 #[serde(
1325 rename = "isCustomConversionGoal",
1326 default,
1327 skip_serializing_if = "Option::is_none"
1328 )]
1329 pub is_custom_conversion_goal: Option<bool>,
1330}
1331
1332#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1334pub struct GoogleCarouselCardDTO {
1335 #[serde(default, skip_serializing_if = "Option::is_none")]
1337 pub headline: Option<String>,
1338 #[serde(rename = "finalUrl", default, skip_serializing_if = "Option::is_none")]
1340 pub final_url: Option<String>,
1341 #[serde(
1343 rename = "callToActionLabel",
1344 default,
1345 skip_serializing_if = "Option::is_none"
1346 )]
1347 pub call_to_action_label: Option<String>,
1348 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1350 pub media: Vec<GoogleMediaDTO>,
1351}
1352
1353#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1355pub struct GoogleDemographicTargetDTO {
1356 #[serde(rename = "enum")]
1359 pub enum_: String,
1360 pub negative: bool,
1363}
1364
1365#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1367pub struct GoogleGeoLocationDTO {
1368 #[serde(default, skip_serializing_if = "Option::is_none")]
1370 pub key: Option<String>,
1371 #[serde(default, skip_serializing_if = "Option::is_none")]
1373 pub id: Option<String>,
1374 #[serde(default, skip_serializing_if = "Option::is_none")]
1376 pub name: Option<String>,
1377 #[serde(default, skip_serializing_if = "Option::is_none")]
1379 pub country_name: Option<String>,
1380 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1382 pub type_: Option<String>,
1383 #[serde(default, skip_serializing_if = "Option::is_none")]
1385 pub radius: Option<f64>,
1386 #[serde(
1389 rename = "radiusUnit",
1390 default,
1391 skip_serializing_if = "Option::is_none"
1392 )]
1393 pub radius_unit: Option<String>,
1394 #[serde(
1397 rename = "selectionType",
1398 default,
1399 skip_serializing_if = "Option::is_none"
1400 )]
1401 pub selection_type: Option<String>,
1402 #[serde(
1404 rename = "resourceName",
1405 default,
1406 skip_serializing_if = "Option::is_none"
1407 )]
1408 pub resource_name: Option<String>,
1409 #[serde(default, skip_serializing_if = "Option::is_none")]
1411 pub place_id: Option<String>,
1412 #[serde(default, skip_serializing_if = "Option::is_none")]
1414 pub formatted_address: Option<String>,
1415 #[serde(default, skip_serializing_if = "Option::is_none")]
1417 pub geometry: Option<GeoGeometryDTO>,
1418 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1420 pub address_components: Vec<GeoAddressComponentDTO>,
1421}
1422
1423#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1425pub struct GoogleKeywordItemDTO {
1426 pub keyword: String,
1429 #[serde(rename = "matchType")]
1432 pub match_type: String,
1433}
1434
1435#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1437pub struct GoogleKeywordsDTO {
1438 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1440 pub positives: Vec<GoogleKeywordItemDTO>,
1441 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1443 pub negatives: Vec<GoogleKeywordItemDTO>,
1444}
1445
1446#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1448pub struct GoogleLocaleDTO {
1449 #[serde(default, skip_serializing_if = "Option::is_none")]
1451 pub name: Option<String>,
1452 #[serde(default, skip_serializing_if = "Option::is_none")]
1454 pub key: Option<String>,
1455 #[serde(default, skip_serializing_if = "Option::is_none")]
1457 pub id: Option<String>,
1458 #[serde(
1460 rename = "resourceName",
1461 default,
1462 skip_serializing_if = "Option::is_none"
1463 )]
1464 pub resource_name: Option<String>,
1465}
1466
1467#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1469pub struct GoogleMediaDTO {
1470 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1473 pub type_: Option<String>,
1474 #[serde(default, skip_serializing_if = "Option::is_none")]
1476 pub src: Option<String>,
1477 #[serde(rename = "isLogo", default, skip_serializing_if = "Option::is_none")]
1479 pub is_logo: Option<bool>,
1480 #[serde(default, skip_serializing_if = "Option::is_none")]
1482 pub error: Option<String>,
1483 #[serde(default, skip_serializing_if = "Option::is_none")]
1485 pub url: Option<String>,
1486 #[serde(rename = "imageType", default, skip_serializing_if = "Option::is_none")]
1488 pub image_type: Option<String>,
1489}
1490
1491#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1493pub struct GoogleNetworkSettingsDTO {
1494 #[serde(rename = "targetSearchNetwork")]
1497 pub target_search_network: bool,
1498 #[serde(rename = "targetContentNetwork")]
1501 pub target_content_network: bool,
1502}
1503
1504#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1506pub struct GoogleSegmentTargetDTO {
1507 #[serde(rename = "type")]
1510 pub type_: String,
1511 pub id: String,
1514}
1515
1516#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1518pub struct GoogleTargetInterestsDTO {
1519 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1521 pub affinity: Vec<String>,
1522 #[serde(rename = "inMarket", default, skip_serializing_if = "Vec::is_empty")]
1524 pub in_market: Vec<String>,
1525}
1526
1527#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1529pub struct GoogleYouTubeVideoLinkDTO {
1530 #[serde(rename = "youtubeVideoId")]
1533 pub youtube_video_id: String,
1534}
1535
1536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1538pub struct GreetingCard {
1539 pub title: String,
1542 pub style: String,
1545 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1548 pub content: Vec<String>,
1549}
1550
1551#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1553pub struct HiddenFieldDTO {
1554 pub name: String,
1557 pub value: String,
1560}
1561
1562#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1564pub struct KeywordSuggestionDTO {
1565 pub url: String,
1568 #[serde(
1570 rename = "languageCode",
1571 default,
1572 skip_serializing_if = "Option::is_none"
1573 )]
1574 pub language_code: Option<String>,
1575 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1577 pub locations: Vec<String>,
1578 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1580 pub keywords: Vec<String>,
1581}
1582
1583#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1585pub struct LeadFormAssetPayloadDTO {
1586 #[serde(
1588 rename = "resourceName",
1589 default,
1590 skip_serializing_if = "Option::is_none"
1591 )]
1592 pub resource_name: Option<String>,
1593 pub headline: String,
1596 pub description: String,
1599 #[serde(rename = "businessName")]
1602 pub business_name: String,
1603 #[serde(rename = "privacyPolicyUrl")]
1606 pub privacy_policy_url: String,
1607 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1610 pub fields: Vec<LeadFormFieldDTO>,
1611 #[serde(rename = "callToActionType")]
1617 pub call_to_action_type: String,
1618 #[serde(
1620 rename = "callToActionDescription",
1621 default,
1622 skip_serializing_if = "Option::is_none"
1623 )]
1624 pub call_to_action_description: Option<String>,
1625 #[serde(
1627 rename = "backgroundImageAsset",
1628 default,
1629 skip_serializing_if = "Option::is_none"
1630 )]
1631 pub background_image_asset: Option<String>,
1632 #[serde(
1635 rename = "desiredIntent",
1636 default,
1637 skip_serializing_if = "Option::is_none"
1638 )]
1639 pub desired_intent: Option<String>,
1640 #[serde(
1642 rename = "customQuestionFields",
1643 default,
1644 skip_serializing_if = "Vec::is_empty"
1645 )]
1646 pub custom_question_fields: Vec<CustomQuestionFieldDTO>,
1647 #[serde(
1649 rename = "postSubmitHeadline",
1650 default,
1651 skip_serializing_if = "Option::is_none"
1652 )]
1653 pub post_submit_headline: Option<String>,
1654 #[serde(
1656 rename = "postSubmitDescription",
1657 default,
1658 skip_serializing_if = "Option::is_none"
1659 )]
1660 pub post_submit_description: Option<String>,
1661 #[serde(
1664 rename = "postSubmitCallToActionType",
1665 default,
1666 skip_serializing_if = "Option::is_none"
1667 )]
1668 pub post_submit_call_to_action_type: Option<String>,
1669 #[serde(rename = "finalUrls", default, skip_serializing_if = "Option::is_none")]
1671 pub final_urls: Option<String>,
1672}
1673
1674#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1676pub struct LeadFormContentDTO {
1677 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1680 pub questions: Vec<LeadFormQuestionDTO>,
1681 #[serde(default, skip_serializing_if = "Option::is_none")]
1683 pub description: Option<LocalizedStringDTO>,
1684 pub headline: LocalizedStringDTO,
1687 #[serde(rename = "postSubmissionInfo")]
1690 pub post_submission_info: PostSubmissionInfoDTO,
1691 #[serde(rename = "legalInfo")]
1694 pub legal_info: LegalInfoDTO,
1695}
1696
1697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1699pub struct LeadFormFieldDTO {
1700 #[serde(rename = "inputType")]
1703 pub input_type: String,
1704 #[serde(
1706 rename = "singleChoiceAnswers",
1707 default,
1708 skip_serializing_if = "Vec::is_empty"
1709 )]
1710 pub single_choice_answers: Vec<String>,
1711}
1712
1713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1715pub struct LeadFormQuestionDTO {
1716 pub question: LocalizedStringDTO,
1719 pub name: String,
1722 #[serde(rename = "questionDetails")]
1725 pub question_details: QuestionDetailsDTO,
1726 #[serde(
1728 rename = "predefinedField",
1729 default,
1730 skip_serializing_if = "Option::is_none"
1731 )]
1732 pub predefined_field: Option<String>,
1733}
1734
1735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1737pub struct LegalInfoDTO {
1738 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1741 pub consents: Vec<ConsentDTO>,
1742 #[serde(rename = "privacyPolicyUrl")]
1745 pub privacy_policy_url: String,
1746 #[serde(
1748 rename = "legalDisclaimer",
1749 default,
1750 skip_serializing_if = "Option::is_none"
1751 )]
1752 pub legal_disclaimer: Option<LocalizedStringDTO>,
1753}
1754
1755#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1757pub struct LinkedInAdDTO {
1758 #[serde(default, skip_serializing_if = "Option::is_none")]
1759 pub id: Option<String>,
1760 #[serde(default, skip_serializing_if = "Option::is_none")]
1761 pub name: Option<String>,
1762 #[serde(
1763 rename = "introductoryText",
1764 default,
1765 skip_serializing_if = "Option::is_none"
1766 )]
1767 pub introductory_text: Option<String>,
1768 #[serde(
1769 rename = "destinationUrl",
1770 default,
1771 skip_serializing_if = "Option::is_none"
1772 )]
1773 pub destination_url: Option<String>,
1774 #[serde(
1775 rename = "callToActionLabel",
1776 default,
1777 skip_serializing_if = "Option::is_none"
1778 )]
1779 pub call_to_action_label: Option<String>,
1780 #[serde(
1781 rename = "destinationFormId",
1782 default,
1783 skip_serializing_if = "Option::is_none"
1784 )]
1785 pub destination_form_id: Option<String>,
1786 #[serde(
1787 rename = "contentReferenceString",
1788 default,
1789 skip_serializing_if = "Option::is_none"
1790 )]
1791 pub content_reference_string: Option<String>,
1792 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1793 pub media: Vec<LinkedInMediaDTO>,
1794 #[serde(
1795 rename = "adCampaignId",
1796 default,
1797 skip_serializing_if = "Option::is_none"
1798 )]
1799 pub ad_campaign_id: Option<String>,
1800 #[serde(rename = "adId", default, skip_serializing_if = "Option::is_none")]
1801 pub ad_id: Option<String>,
1802 #[serde(default, skip_serializing_if = "Option::is_none")]
1803 pub headline: Option<String>,
1804 #[serde(
1807 rename = "publishingStatus",
1808 default,
1809 skip_serializing_if = "Option::is_none"
1810 )]
1811 pub publishing_status: Option<String>,
1812 #[serde(
1813 rename = "adCampaignGroupId",
1814 default,
1815 skip_serializing_if = "Option::is_none"
1816 )]
1817 pub ad_campaign_group_id: Option<String>,
1818 #[serde(default, skip_serializing_if = "Option::is_none")]
1819 pub description: Option<String>,
1820 #[serde(default, skip_serializing_if = "Option::is_none")]
1821 pub meta: Option<serde_json::Value>,
1822 #[serde(
1824 rename = "linkedInError",
1825 default,
1826 skip_serializing_if = "Option::is_none"
1827 )]
1828 pub linked_in_error: Option<String>,
1829}
1830
1831#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1833pub struct LinkedInBudgetDTO {
1834 #[serde(
1836 rename = "budgetType",
1837 default,
1838 skip_serializing_if = "Option::is_none"
1839 )]
1840 pub budget_type: Option<String>,
1841 #[serde(default, skip_serializing_if = "Option::is_none")]
1842 pub amount: Option<f64>,
1843 #[serde(
1845 rename = "scheduleStartDate",
1846 default,
1847 skip_serializing_if = "Option::is_none"
1848 )]
1849 pub schedule_start_date: Option<String>,
1850 #[serde(
1852 rename = "scheduleEndDate",
1853 default,
1854 skip_serializing_if = "Option::is_none"
1855 )]
1856 pub schedule_end_date: Option<String>,
1857}
1858
1859#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1861pub struct LinkedInCreateLeadFormBodyDTO {
1862 pub owner: SponsoredAccountOwnerDTO,
1865 #[serde(rename = "creationLocale")]
1868 pub creation_locale: CreationLocaleDTO,
1869 pub name: String,
1872 pub state: String,
1876 pub content: LeadFormContentDTO,
1879 #[serde(
1881 rename = "hiddenFields",
1882 default,
1883 skip_serializing_if = "Vec::is_empty"
1884 )]
1885 pub hidden_fields: Vec<HiddenFieldDTO>,
1886}
1887
1888#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1890pub struct LinkedInMediaDTO {
1891 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1894 pub type_: Option<String>,
1895 #[serde(default, skip_serializing_if = "Option::is_none")]
1897 pub src: Option<String>,
1898 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1900 pub frames: Vec<String>,
1901 #[serde(
1903 rename = "selectedPoster",
1904 default,
1905 skip_serializing_if = "Option::is_none"
1906 )]
1907 pub selected_poster: Option<f64>,
1908 #[serde(
1910 rename = "thumbnailUrl",
1911 default,
1912 skip_serializing_if = "Option::is_none"
1913 )]
1914 pub thumbnail_url: Option<String>,
1915 #[serde(default, skip_serializing_if = "Option::is_none")]
1917 pub name: Option<String>,
1918 #[serde(default, skip_serializing_if = "Option::is_none")]
1920 pub headline: Option<String>,
1921 #[serde(
1923 rename = "destinationUrl",
1924 default,
1925 skip_serializing_if = "Option::is_none"
1926 )]
1927 pub destination_url: Option<String>,
1928 #[serde(
1930 rename = "fileSizeBytes",
1931 default,
1932 skip_serializing_if = "Option::is_none"
1933 )]
1934 pub file_size_bytes: Option<f64>,
1935}
1936
1937#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1939pub struct LinkedInUpdateAdStatusBodyDTO {
1940 #[serde(rename = "operationType")]
1944 pub operation_type: String,
1945 #[serde(rename = "type")]
1949 pub type_: String,
1950}
1951
1952#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1954pub struct LocaleDTO {
1955 pub country: String,
1958 pub language: String,
1961}
1962
1963#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1965pub struct LocalizedStringDTO {
1966 pub localized: serde_json::Value,
1969}
1970
1971#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1973pub struct LocationIdBodyDTO {
1974 #[serde(rename = "locationId")]
1977 pub location_id: String,
1978}
1979
1980#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1982pub struct MediaDTO {
1983 pub src: String,
1986 #[serde(
1988 rename = "thumbnailUrl",
1989 default,
1990 skip_serializing_if = "Option::is_none"
1991 )]
1992 pub thumbnail_url: Option<String>,
1993 #[serde(
1995 rename = "selectedPoster",
1996 default,
1997 skip_serializing_if = "Option::is_none"
1998 )]
1999 pub selected_poster: Option<f64>,
2000 #[serde(rename = "type")]
2004 pub type_: String,
2005 #[serde(default, skip_serializing_if = "Option::is_none")]
2007 pub name: Option<String>,
2008 #[serde(default, skip_serializing_if = "Option::is_none")]
2010 pub headline: Option<String>,
2011 #[serde(default, skip_serializing_if = "Option::is_none")]
2013 pub description: Option<String>,
2014 #[serde(default, skip_serializing_if = "Option::is_none")]
2016 pub link: Option<String>,
2017}
2018
2019#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2021pub struct MemberDTO {
2022 #[serde(rename = "memberType")]
2026 pub member_type: String,
2027 #[serde(default, skip_serializing_if = "Option::is_none")]
2029 pub keyword: Option<String>,
2030 #[serde(default, skip_serializing_if = "Option::is_none")]
2032 pub url: Option<String>,
2033 #[serde(default, skip_serializing_if = "Option::is_none")]
2035 pub app: Option<String>,
2036}
2037
2038#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2040pub struct MultipleChoiceOptionDTO {
2041 pub id: f64,
2044 pub text: LocalizedStringDTO,
2047}
2048
2049#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2051pub struct MultipleChoiceQuestionDetailsDTO {
2052 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2055 pub options: Vec<MultipleChoiceOptionDTO>,
2056}
2057
2058#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2060pub struct PostSubmissionCallToActionDTO {
2061 #[serde(rename = "callToActionTarget")]
2064 pub call_to_action_target: PostSubmissionCallToActionTargetDTO,
2065 #[serde(rename = "callToActionLabel")]
2070 pub call_to_action_label: String,
2071}
2072
2073#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2075pub struct PostSubmissionCallToActionTargetDTO {
2076 #[serde(rename = "landingPageUrl")]
2079 pub landing_page_url: String,
2080}
2081
2082#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2084pub struct PostSubmissionInfoDTO {
2085 pub message: LocalizedStringDTO,
2088 #[serde(rename = "callToAction")]
2091 pub call_to_action: PostSubmissionCallToActionDTO,
2092}
2093
2094#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2096pub struct PublishAdDTO {
2097 #[serde(rename = "locationId")]
2100 pub location_id: String,
2101}
2102
2103#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2105pub struct QuestionDetailsDTO {
2106 #[serde(
2108 rename = "textQuestionDetails",
2109 default,
2110 skip_serializing_if = "Option::is_none"
2111 )]
2112 pub text_question_details: Option<serde_json::Value>,
2113 #[serde(
2115 rename = "multipleChoiceQuestionDetails",
2116 default,
2117 skip_serializing_if = "Option::is_none"
2118 )]
2119 pub multiple_choice_question_details: Option<MultipleChoiceQuestionDetailsDTO>,
2120}
2121
2122#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2124pub struct RuleBasedUserListDTO {
2125 #[serde(
2128 rename = "prepopulationStatus",
2129 default,
2130 skip_serializing_if = "Option::is_none"
2131 )]
2132 pub prepopulation_status: Option<String>,
2133 #[serde(rename = "flexibleRuleUserList")]
2136 pub flexible_rule_user_list: FlexibleRuleUserListDTO,
2137}
2138
2139#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2141pub struct RuleDTO {
2142 #[serde(
2145 rename = "ruleItemGroups",
2146 default,
2147 skip_serializing_if = "Vec::is_empty"
2148 )]
2149 pub rule_item_groups: Vec<RuleItemGroupDTO>,
2150}
2151
2152#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2154pub struct RuleItemDTO {
2155 pub name: String,
2159 #[serde(rename = "stringRuleItem")]
2162 pub string_rule_item: StringRuleItemDTO,
2163}
2164
2165#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2167pub struct RuleItemGroupDTO {
2168 #[serde(rename = "ruleItems", default, skip_serializing_if = "Vec::is_empty")]
2171 pub rule_items: Vec<RuleItemDTO>,
2172}
2173
2174#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2176pub struct RuleOperandDTO {
2177 #[serde(rename = "lookbackWindowDays")]
2180 pub lookback_window_days: f64,
2181 pub rule: RuleDTO,
2184}
2185
2186#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2188pub struct SelectedAttributeDTO {
2189 pub urn: String,
2192 pub name: String,
2195 #[serde(rename = "categoryName")]
2198 pub category_name: String,
2199 pub facet: String,
2202}
2203
2204#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2206pub struct SitelinkAssetPayloadDTO {
2207 #[serde(
2209 rename = "resourceName",
2210 default,
2211 skip_serializing_if = "Option::is_none"
2212 )]
2213 pub resource_name: Option<String>,
2214 #[serde(rename = "linkText")]
2217 pub link_text: String,
2218 #[serde(rename = "finalUrls")]
2221 pub final_urls: String,
2222 #[serde(default, skip_serializing_if = "Option::is_none")]
2224 pub description1: Option<String>,
2225 #[serde(default, skip_serializing_if = "Option::is_none")]
2227 pub description2: Option<String>,
2228 #[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
2230 pub start_date: Option<String>,
2231 #[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
2233 pub end_date: Option<String>,
2234 #[serde(
2236 rename = "adScheduleTargets",
2237 default,
2238 skip_serializing_if = "Vec::is_empty"
2239 )]
2240 pub ad_schedule_targets: Vec<AdScheduleTargetDTO>,
2241}
2242
2243#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2245pub struct SponsoredAccountOwnerDTO {
2246 #[serde(rename = "sponsoredAccount")]
2249 pub sponsored_account: String,
2250}
2251
2252#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2254pub struct StringRuleItemDTO {
2255 pub operator: String,
2258 pub value: String,
2261}
2262
2263#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2265pub struct TargetAudienceDTO {
2266 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2268 pub include: Vec<Vec<SelectedAttributeDTO>>,
2269 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2271 pub exclude: Vec<Vec<SelectedAttributeDTO>>,
2272}
2273
2274#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2276pub struct ThankYouPage {
2277 pub title: String,
2280 pub body: String,
2283 #[serde(rename = "buttonText")]
2286 pub button_text: String,
2287 #[serde(rename = "buttonType")]
2290 pub button_type: String,
2291 #[serde(
2293 rename = "buttonLink",
2294 default,
2295 skip_serializing_if = "Option::is_none"
2296 )]
2297 pub button_link: Option<String>,
2298 #[serde(
2300 rename = "businessPhone",
2301 default,
2302 skip_serializing_if = "Option::is_none"
2303 )]
2304 pub business_phone: Option<String>,
2305 #[serde(
2307 rename = "countryCode",
2308 default,
2309 skip_serializing_if = "Option::is_none"
2310 )]
2311 pub country_code: Option<String>,
2312}
2313
2314#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2316pub struct UnitCostDTO {
2317 pub amount: f64,
2320}
2321
2322#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2324pub struct UpdateCustomAudienceBatchDTO {
2325 #[serde(rename = "locationId")]
2328 pub location_id: String,
2329 #[serde(rename = "csvPath", default, skip_serializing_if = "Option::is_none")]
2331 pub csv_path: Option<String>,
2332 #[serde(rename = "operationType")]
2335 pub operation_type: String,
2336 #[serde(
2338 rename = "smartlistIds",
2339 default,
2340 skip_serializing_if = "Vec::is_empty"
2341 )]
2342 pub smartlist_ids: Vec<String>,
2343 #[serde(
2345 rename = "dynamicAudience",
2346 default,
2347 skip_serializing_if = "Option::is_none"
2348 )]
2349 pub dynamic_audience: Option<String>,
2350}
2351
2352#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2354pub struct UpdateCustomAudienceDTO {
2355 #[serde(rename = "locationId")]
2358 pub location_id: String,
2359 #[serde(rename = "contactId")]
2362 pub contact_id: String,
2363 #[serde(
2365 rename = "fbAdAccountId",
2366 default,
2367 skip_serializing_if = "Option::is_none"
2368 )]
2369 pub fb_ad_account_id: Option<String>,
2370}
2371
2372#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2374pub struct UpsertAdDTO {
2375 #[serde(default, skip_serializing_if = "Option::is_none")]
2377 pub id: Option<String>,
2378 #[serde(rename = "locationId")]
2381 pub location_id: String,
2382 #[serde(default, skip_serializing_if = "Option::is_none")]
2384 pub name: Option<String>,
2385 #[serde(
2387 rename = "primaryText",
2388 default,
2389 skip_serializing_if = "Option::is_none"
2390 )]
2391 pub primary_text: Option<String>,
2392 #[serde(default, skip_serializing_if = "Option::is_none")]
2394 pub headline: Option<String>,
2395 #[serde(default, skip_serializing_if = "Option::is_none")]
2397 pub description: Option<String>,
2398 #[serde(rename = "imageUrl", default, skip_serializing_if = "Option::is_none")]
2400 pub image_url: Option<String>,
2401 #[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
2404 pub media_type: Option<String>,
2405 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2407 pub media: Vec<MediaDTO>,
2408 #[serde(
2410 rename = "multiAdvertiserAds",
2411 default,
2412 skip_serializing_if = "Option::is_none"
2413 )]
2414 pub multi_advertiser_ads: Option<bool>,
2415 #[serde(rename = "campaignId")]
2418 pub campaign_id: String,
2419 #[serde(rename = "adsetId")]
2422 pub adset_id: String,
2423 #[serde(default, skip_serializing_if = "Option::is_none")]
2425 pub cta: Option<String>,
2426 #[serde(
2428 rename = "conversationFormId",
2429 default,
2430 skip_serializing_if = "Option::is_none"
2431 )]
2432 pub conversation_form_id: Option<String>,
2433 #[serde(
2435 rename = "destinationLink",
2436 default,
2437 skip_serializing_if = "Option::is_none"
2438 )]
2439 pub destination_link: Option<String>,
2440 #[serde(
2442 rename = "destinationFormId",
2443 default,
2444 skip_serializing_if = "Option::is_none"
2445 )]
2446 pub destination_form_id: Option<String>,
2447}
2448
2449#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2451pub struct UpsertAdsetDTO {
2452 #[serde(default, skip_serializing_if = "Option::is_none")]
2454 pub id: Option<String>,
2455 #[serde(rename = "locationId")]
2458 pub location_id: String,
2459 #[serde(default, skip_serializing_if = "Option::is_none")]
2461 pub name: Option<String>,
2462 #[serde(rename = "pageId", default, skip_serializing_if = "Option::is_none")]
2464 pub page_id: Option<String>,
2465 #[serde(
2467 rename = "instagramActorId",
2468 default,
2469 skip_serializing_if = "Option::is_none"
2470 )]
2471 pub instagram_actor_id: Option<String>,
2472 #[serde(
2475 rename = "messagingPlatforms",
2476 default,
2477 skip_serializing_if = "Option::is_none"
2478 )]
2479 pub messaging_platforms: Option<String>,
2480 #[serde(
2482 rename = "whatsappNumber",
2483 default,
2484 skip_serializing_if = "Option::is_none"
2485 )]
2486 pub whatsapp_number: Option<String>,
2487 #[serde(default, skip_serializing_if = "Option::is_none")]
2490 pub audience: Option<FacebookAudienceDTO>,
2491 #[serde(default, skip_serializing_if = "Option::is_none")]
2493 pub budget: Option<Budget>,
2494 #[serde(
2496 rename = "conversionLocation",
2497 default,
2498 skip_serializing_if = "Option::is_none"
2499 )]
2500 pub conversion_location: Option<String>,
2501 #[serde(
2503 rename = "customEventType",
2504 default,
2505 skip_serializing_if = "Option::is_none"
2506 )]
2507 pub custom_event_type: Option<String>,
2508 #[serde(rename = "pixelId", default, skip_serializing_if = "Option::is_none")]
2510 pub pixel_id: Option<String>,
2511 #[serde(rename = "campaignId")]
2514 pub campaign_id: String,
2515}
2516
2517#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2519pub struct UpsertAssetsDTO {
2520 #[serde(rename = "locationId")]
2523 pub location_id: String,
2524 #[serde(rename = "type")]
2528 pub type_: String,
2529 pub payload: serde_json::Value,
2534}
2535
2536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2538pub struct UpsertAudienceDTO {
2539 #[serde(rename = "locationId")]
2542 pub location_id: String,
2543 #[serde(
2545 rename = "resourceName",
2546 default,
2547 skip_serializing_if = "Option::is_none"
2548 )]
2549 pub resource_name: Option<String>,
2550 pub name: String,
2553 #[serde(default, skip_serializing_if = "Option::is_none")]
2555 pub dimensions: Option<AudienceDimensionDTO>,
2556 #[serde(
2558 rename = "exclusionDimension",
2559 default,
2560 skip_serializing_if = "Option::is_none"
2561 )]
2562 pub exclusion_dimension: Option<AudienceDimensionDTO>,
2563}
2564
2565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2567pub struct UpsertCampaignDTO {
2568 #[serde(default, skip_serializing_if = "Option::is_none")]
2570 pub id: Option<String>,
2571 #[serde(rename = "locationId")]
2574 pub location_id: String,
2575 #[serde(default, skip_serializing_if = "Option::is_none")]
2577 pub name: Option<String>,
2578 #[serde(default, skip_serializing_if = "Option::is_none")]
2582 pub objective: Option<String>,
2583 #[serde(
2587 rename = "specialAdCategories",
2588 default,
2589 skip_serializing_if = "Option::is_none"
2590 )]
2591 pub special_ad_categories: Option<String>,
2592 #[serde(default, skip_serializing_if = "Option::is_none")]
2594 pub source: Option<String>,
2595}
2596
2597#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2599pub struct UpsertConversionDTO {
2600 #[serde(rename = "locationId")]
2603 pub location_id: String,
2604 #[serde(
2606 rename = "conversionId",
2607 default,
2608 skip_serializing_if = "Option::is_none"
2609 )]
2610 pub conversion_id: Option<String>,
2611 pub name: String,
2614 #[serde(rename = "type")]
2618 pub type_: String,
2619 pub category: String,
2622 #[serde(rename = "valueSettings")]
2625 pub value_settings: ConversionValueSettings,
2626 #[serde(rename = "countingType")]
2630 pub counting_type: String,
2631 #[serde(rename = "attributionModel")]
2635 pub attribution_model: String,
2636 #[serde(rename = "clickThroughWindow")]
2639 pub click_through_window: f64,
2640}
2641
2642#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2644pub struct UpsertConversionPixelDTO {
2645 #[serde(rename = "locationId")]
2648 pub location_id: String,
2649 #[serde(
2651 rename = "conversionPixelId",
2652 default,
2653 skip_serializing_if = "Option::is_none"
2654 )]
2655 pub conversion_pixel_id: Option<String>,
2656 #[serde(default, skip_serializing_if = "Option::is_none")]
2658 pub name: Option<String>,
2659 #[serde(rename = "igUserId", default, skip_serializing_if = "Option::is_none")]
2661 pub ig_user_id: Option<String>,
2662 #[serde(rename = "type")]
2665 pub type_: String,
2666}
2667
2668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2670pub struct UpsertSegmentDTO {
2671 pub name: String,
2674 #[serde(default, skip_serializing_if = "Option::is_none")]
2676 pub description: Option<String>,
2677 #[serde(default, skip_serializing_if = "Vec::is_empty")]
2679 pub members: Vec<MemberDTO>,
2680 #[serde(default, skip_serializing_if = "Option::is_none")]
2682 pub status: Option<String>,
2683 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
2685 pub type_: Option<String>,
2686 #[serde(default, skip_serializing_if = "Option::is_none")]
2688 pub id: Option<String>,
2689 #[serde(
2691 rename = "membershipStatus",
2692 default,
2693 skip_serializing_if = "Option::is_none"
2694 )]
2695 pub membership_status: Option<String>,
2696 #[serde(
2698 rename = "ruleBasedUserList",
2699 default,
2700 skip_serializing_if = "Option::is_none"
2701 )]
2702 pub rule_based_user_list: Option<RuleBasedUserListDTO>,
2703 #[serde(
2705 rename = "membershipLifeSpan",
2706 default,
2707 skip_serializing_if = "Option::is_none"
2708 )]
2709 pub membership_life_span: Option<f64>,
2710 #[serde(
2712 rename = "seedUserListIds",
2713 default,
2714 skip_serializing_if = "Vec::is_empty"
2715 )]
2716 pub seed_user_list_ids: Vec<String>,
2717 #[serde(
2719 rename = "countryCodes",
2720 default,
2721 skip_serializing_if = "Vec::is_empty"
2722 )]
2723 pub country_codes: Vec<String>,
2724 #[serde(
2727 rename = "expansionLevel",
2728 default,
2729 skip_serializing_if = "Option::is_none"
2730 )]
2731 pub expansion_level: Option<String>,
2732}
2733
2734#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2736pub struct WelcomeMessageQuestion {
2737 pub question: String,
2740 #[serde(default, skip_serializing_if = "Option::is_none")]
2742 pub response: Option<String>,
2743}