#![allow(
missing_docs,
clippy::doc_lazy_continuation,
clippy::doc_overindented_list_items
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AdCampaignDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub locale: Option<LocaleDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "publishingStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub publishing_status: Option<String>,
#[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
pub media_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub audience: Option<AudienceDTO>,
#[serde(rename = "unitCost", default, skip_serializing_if = "Option::is_none")]
pub unit_cost: Option<UnitCostDTO>,
#[serde(
rename = "campaignType",
default,
skip_serializing_if = "Option::is_none"
)]
pub campaign_type: Option<String>,
#[serde(
rename = "adCampaignGroupId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_campaign_group_id: Option<String>,
#[serde(
rename = "adCampaignId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_campaign_id: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub ads: Vec<LinkedInAdDTO>,
#[serde(
rename = "linkedInError",
default,
skip_serializing_if = "Option::is_none"
)]
pub linked_in_error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AdCampaignGroupDataDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub budget: Option<LinkedInBudgetDTO>,
#[serde(rename = "adCampaigns", default, skip_serializing_if = "Vec::is_empty")]
pub ad_campaigns: Vec<AdCampaignDTO>,
#[serde(
rename = "adBudgetOptimization",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_budget_optimization: Option<String>,
#[serde(
rename = "objectiveType",
default,
skip_serializing_if = "Option::is_none"
)]
pub objective_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "adCampaignGroupId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_campaign_group_id: Option<String>,
#[serde(
rename = "publishingStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub publishing_status: Option<String>,
#[serde(
rename = "linkedInAdAccountId",
default,
skip_serializing_if = "Option::is_none"
)]
pub linked_in_ad_account_id: Option<String>,
#[serde(
rename = "unpublishedChanges",
default,
skip_serializing_if = "Option::is_none"
)]
pub unpublished_changes: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<serde_json::Value>,
#[serde(
rename = "linkedInError",
default,
skip_serializing_if = "Option::is_none"
)]
pub linked_in_error: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AdScheduleTargetDTO {
#[serde(rename = "startMinute")]
pub start_minute: String,
#[serde(rename = "endMinute")]
pub end_minute: String,
#[serde(rename = "dayOfWeek")]
pub day_of_week: String,
#[serde(rename = "startHour")]
pub start_hour: f64,
#[serde(rename = "endHour")]
pub end_hour: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceCustomAudienceItemDTO {
pub id: String,
pub name: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceDTO {
#[serde(
rename = "geoLocations",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub geo_locations: Vec<GeoLocationDTO>,
#[serde(
rename = "targetAudience",
default,
skip_serializing_if = "Option::is_none"
)]
pub target_audience: Option<TargetAudienceDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceDimensionDTO {
#[serde(
rename = "isAgeUnknown",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_age_unknown: Option<bool>,
#[serde(rename = "ageRanges", default, skip_serializing_if = "Vec::is_empty")]
pub age_ranges: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub genders: Vec<String>,
#[serde(
rename = "parentalStatuses",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub parental_statuses: Vec<String>,
#[serde(
rename = "audienceSegments",
default,
skip_serializing_if = "Option::is_none"
)]
pub audience_segments: Option<AudienceSegmentsDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceInterestDTO {
pub id: String,
pub name: String,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceLocaleDTO {
pub name: String,
pub key: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceLocationDTO {
pub key: String,
pub name: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(rename = "selectionType")]
pub selection_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub radius: Option<f64>,
#[serde(
rename = "radiusUnit",
default,
skip_serializing_if = "Option::is_none"
)]
pub radius_unit: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub geometry: Option<AudienceLocationGeometry>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceLocationGeometry {
pub location: serde_json::Value,
#[serde(rename = "locationType")]
pub location_type: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudiencePlacementsDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub facebook: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub instagram: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub messenger: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AudienceSegmentsDTO {
#[serde(
rename = "customAudiences",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_audiences: Vec<String>,
#[serde(rename = "userLists", default, skip_serializing_if = "Vec::is_empty")]
pub user_lists: Vec<String>,
#[serde(
rename = "userInterests",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub user_interests: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Budget {
#[serde(rename = "budgetType")]
pub budget_type: String,
pub amount: f64,
#[serde(
rename = "scheduleStartDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub schedule_start_date: Option<String>,
#[serde(
rename = "scheduleEndDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub schedule_end_date: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CallAssetPayloadDTO {
#[serde(rename = "phoneNumber")]
pub phone_number: String,
#[serde(rename = "countryCode")]
pub country_code: String,
#[serde(
rename = "callConversionAction",
default,
skip_serializing_if = "Option::is_none"
)]
pub call_conversion_action: Option<String>,
#[serde(
rename = "adScheduleTargets",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub ad_schedule_targets: Vec<AdScheduleTargetDTO>,
#[serde(
rename = "resourceName",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CampaignDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub name: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "advertisingChannelType")]
pub advertising_channel_type: String,
#[serde(
rename = "advertisingChannelSubType",
default,
skip_serializing_if = "Option::is_none"
)]
pub advertising_channel_sub_type: Option<String>,
#[serde(rename = "goalType", default, skip_serializing_if = "Option::is_none")]
pub goal_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub budget: Option<GoogleBudgetDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub audience: Option<GoogleCampaignAudienceDTO>,
#[serde(
rename = "networkSettings",
default,
skip_serializing_if = "Option::is_none"
)]
pub network_settings: Option<GoogleNetworkSettingsDTO>,
#[serde(
rename = "biddingStrategy",
default,
skip_serializing_if = "Option::is_none"
)]
pub bidding_strategy: Option<GoogleBiddingStrategyDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assets: Option<GoogleAssetsDTO>,
#[serde(
rename = "isEuPoliticalAds",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_eu_political_ads: Option<bool>,
#[serde(rename = "adGroups", default, skip_serializing_if = "Vec::is_empty")]
pub ad_groups: Vec<GoogleAdGroupDTO>,
#[serde(
rename = "campaignGoal",
default,
skip_serializing_if = "Option::is_none"
)]
pub campaign_goal: Option<GoogleCampaignGoalDTO>,
#[serde(rename = "adSchedule", default, skip_serializing_if = "Vec::is_empty")]
pub ad_schedule: Vec<GoogleAdScheduleDTO>,
#[serde(
rename = "publishingStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub publishing_status: Option<String>,
#[serde(
rename = "googleAdAccountId",
default,
skip_serializing_if = "Option::is_none"
)]
pub google_ad_account_id: Option<String>,
#[serde(
rename = "unpublishedChanges",
default,
skip_serializing_if = "Option::is_none"
)]
pub unpublished_changes: Option<bool>,
#[serde(
rename = "maximumCpc",
default,
skip_serializing_if = "Option::is_none"
)]
pub maximum_cpc: Option<f64>,
#[serde(
rename = "googleCampaignId",
default,
skip_serializing_if = "Option::is_none"
)]
pub google_campaign_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(
rename = "advancedOptions",
default,
skip_serializing_if = "Option::is_none"
)]
pub advanced_options: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConsentDTO {
#[serde(rename = "checkRequired")]
pub check_required: bool,
pub id: f64,
pub consent: LocalizedStringDTO,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConversionValueSettings {
#[serde(rename = "defaultValue")]
pub default_value: f64,
#[serde(rename = "defaultCurrencyCode")]
pub default_currency_code: String,
#[serde(rename = "alwaysUseDefaultValue")]
pub always_use_default_value: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateConversationFormDTO {
#[serde(rename = "locationId")]
pub location_id: String,
pub name: String,
pub text: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub questions: Vec<WelcomeMessageQuestion>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateGoogleIntegrationDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "adAccountId")]
pub ad_account_id: String,
#[serde(rename = "mccId")]
pub mcc_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateIntegrationDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "pageId")]
pub page_id: String,
#[serde(
rename = "adAccountId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_account_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateLeadFormDTO {
#[serde(rename = "type")]
pub type_: String,
pub name: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(
rename = "greetingCard",
default,
skip_serializing_if = "Option::is_none"
)]
pub greeting_card: Option<GreetingCard>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub questions: Vec<FormQuestion>,
#[serde(
rename = "questionPageHeadline",
default,
skip_serializing_if = "Option::is_none"
)]
pub question_page_headline: Option<String>,
#[serde(rename = "privacyPolicyLink")]
pub privacy_policy_link: String,
#[serde(
rename = "privacyPolicyText",
default,
skip_serializing_if = "Option::is_none"
)]
pub privacy_policy_text: Option<String>,
#[serde(
rename = "customDisclaimer",
default,
skip_serializing_if = "Option::is_none"
)]
pub custom_disclaimer: Option<CustomDisclaimer>,
#[serde(rename = "thankYouPage")]
pub thank_you_page: ThankYouPage,
#[serde(rename = "isDraft", default, skip_serializing_if = "Option::is_none")]
pub is_draft: Option<bool>,
#[serde(
rename = "draftFormId",
default,
skip_serializing_if = "Option::is_none"
)]
pub draft_form_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateLinkedinIntegrationDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "adAccountId")]
pub ad_account_id: String,
#[serde(rename = "adAccountName")]
pub ad_account_name: String,
#[serde(rename = "currencyCode")]
pub currency_code: String,
#[serde(rename = "organizationId")]
pub organization_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateOfflineUserListJobDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(
rename = "smartListIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub smart_list_ids: Vec<String>,
#[serde(rename = "csvPath", default, skip_serializing_if = "Option::is_none")]
pub csv_path: Option<String>,
#[serde(
rename = "userListId",
default,
skip_serializing_if = "Option::is_none"
)]
pub user_list_id: Option<String>,
#[serde(rename = "isDynamic", default, skip_serializing_if = "Option::is_none")]
pub is_dynamic: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreationLocaleDTO {
pub country: String,
pub language: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomDisclaimer {
pub title: String,
pub body: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub checkboxes: Vec<CustomDisclaimerCheckbox>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomDisclaimerCheckbox {
#[serde(rename = "isRequired")]
pub is_required: bool,
pub text: String,
pub key: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomQuestionFieldDTO {
#[serde(rename = "customQuestionText")]
pub custom_question_text: String,
#[serde(
rename = "singleChoiceAnswers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub single_choice_answers: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FacebookAudienceDTO {
#[serde(
rename = "geoLocations",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub geo_locations: Vec<AudienceLocationDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub locales: Vec<AudienceLocaleDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub placements: Option<AudiencePlacementsDTO>,
#[serde(
rename = "placementType",
default,
skip_serializing_if = "Option::is_none"
)]
pub placement_type: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub lookalike: Vec<AudienceCustomAudienceItemDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub retargeting: Vec<AudienceCustomAudienceItemDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub interests: Vec<AudienceInterestDTO>,
#[serde(rename = "ageMin", default, skip_serializing_if = "Option::is_none")]
pub age_min: Option<f64>,
#[serde(rename = "ageMax", default, skip_serializing_if = "Option::is_none")]
pub age_max: Option<f64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub genders: Vec<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FbSetDefaultPageBodyDTO {
#[serde(rename = "pageId")]
pub page_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FbUpdateAudienceBodyDTO {
#[serde(rename = "locationId")]
pub location_id: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FlexibleRuleUserListDTO {
#[serde(
rename = "inclusiveRuleOperator",
default,
skip_serializing_if = "Option::is_none"
)]
pub inclusive_rule_operator: Option<String>,
#[serde(
rename = "inclusiveOperands",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub inclusive_operands: Vec<RuleOperandDTO>,
#[serde(
rename = "exclusiveOperands",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub exclusive_operands: Vec<RuleOperandDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FormQuestion {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
pub key: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub options: Vec<FormQuestionOption>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FormQuestionOption {
pub key: String,
pub value: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GeoAddressComponentDTO {
#[serde(rename = "longName", default, skip_serializing_if = "Option::is_none")]
pub long_name: Option<String>,
#[serde(rename = "shortName", default, skip_serializing_if = "Option::is_none")]
pub short_name: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub types: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GeoGeometryDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<GeoLatLngDTO>,
#[serde(
rename = "locationType",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub viewport: Option<GeoViewportDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GeoLatLngDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lat: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lng: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GeoLocationDTO {
pub name: String,
pub urn: String,
#[serde(rename = "facetUrn")]
pub facet_urn: String,
#[serde(rename = "selectionType")]
pub selection_type: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GeoViewportDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub northeast: Option<GeoLatLngDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub southwest: Option<GeoLatLngDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleAdContentDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
pub media_type: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub headlines: Vec<String>,
#[serde(
rename = "longHeadlines",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub long_headlines: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub descriptions: Vec<String>,
#[serde(rename = "finalUrl", default, skip_serializing_if = "Option::is_none")]
pub final_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path1: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path2: Option<String>,
#[serde(rename = "isDeleted", default, skip_serializing_if = "Option::is_none")]
pub is_deleted: Option<bool>,
#[serde(rename = "adError", default, skip_serializing_if = "Option::is_none")]
pub ad_error: Option<String>,
#[serde(
rename = "publishingStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub publishing_status: Option<String>,
#[serde(rename = "adId", default, skip_serializing_if = "Option::is_none")]
pub ad_id: Option<String>,
#[serde(
rename = "adCampaignId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_campaign_id: Option<String>,
#[serde(rename = "adGroupId", default, skip_serializing_if = "Option::is_none")]
pub ad_group_id: Option<String>,
#[serde(
rename = "googleAdId",
default,
skip_serializing_if = "Option::is_none"
)]
pub google_ad_id: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub media: Vec<GoogleMediaDTO>,
#[serde(
rename = "callToActionLabel",
default,
skip_serializing_if = "Option::is_none"
)]
pub call_to_action_label: Option<String>,
#[serde(
rename = "businessName",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_name: Option<String>,
#[serde(
rename = "youtubeVideoLinks",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub youtube_video_links: Vec<GoogleYouTubeVideoLinkDTO>,
#[serde(
rename = "carouselCards",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub carousel_cards: Vec<GoogleCarouselCardDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub placements: Vec<String>,
#[serde(
rename = "customChannels",
default,
skip_serializing_if = "Option::is_none"
)]
pub custom_channels: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleAdGroupAudienceDTO {
#[serde(
rename = "geoLocations",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub geo_locations: Vec<GoogleGeoLocationDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub locales: Vec<GoogleLocaleDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleAdGroupDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "adGroupId", default, skip_serializing_if = "Option::is_none")]
pub ad_group_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "adCampaignId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_campaign_id: Option<String>,
#[serde(rename = "adContent", default, skip_serializing_if = "Vec::is_empty")]
pub ad_content: Vec<GoogleAdContentDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub keywords: Option<GoogleKeywordsDTO>,
#[serde(
rename = "publishingStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub publishing_status: Option<String>,
#[serde(
rename = "adGroupError",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_group_error: Option<String>,
#[serde(
rename = "googleAdGroupId",
default,
skip_serializing_if = "Option::is_none"
)]
pub google_ad_group_id: Option<String>,
#[serde(
rename = "customChannels",
default,
skip_serializing_if = "Option::is_none"
)]
pub custom_channels: Option<bool>,
#[serde(
rename = "selectedChannels",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub selected_channels: Vec<String>,
#[serde(
rename = "googleAudienceId",
default,
skip_serializing_if = "Option::is_none"
)]
pub google_audience_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub audience: Option<GoogleAdGroupAudienceDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleAdScheduleDTO {
#[serde(rename = "dayOfWeek")]
pub day_of_week: String,
#[serde(rename = "from")]
pub from_: String,
pub to: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleAssetImageDTO {
pub url: String,
#[serde(
rename = "resourceName",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleAssetsDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub calls: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sitelinks: Vec<String>,
#[serde(rename = "leadForm", default, skip_serializing_if = "Option::is_none")]
pub lead_form: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub images: Vec<GoogleAssetImageDTO>,
#[serde(
rename = "businessLogo",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_logo: Option<GoogleAssetImageDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleBiddingStrategyDTO {
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleBudgetDTO {
#[serde(
rename = "budgetType",
default,
skip_serializing_if = "Option::is_none"
)]
pub budget_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(
rename = "scheduleStartDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub schedule_start_date: Option<String>,
#[serde(
rename = "scheduleEndDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub schedule_end_date: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleCampaignAudienceDTO {
#[serde(
rename = "geoLocations",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub geo_locations: Vec<GoogleGeoLocationDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub locales: Vec<GoogleLocaleDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub gender: Vec<GoogleDemographicTargetDTO>,
#[serde(rename = "ageRange", default, skip_serializing_if = "Vec::is_empty")]
pub age_range: Vec<GoogleDemographicTargetDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub segments: Vec<GoogleSegmentTargetDTO>,
#[serde(
rename = "targetInterests",
default,
skip_serializing_if = "Option::is_none"
)]
pub target_interests: Option<GoogleTargetInterestsDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleCampaignGoalDTO {
#[serde(rename = "type")]
pub type_: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
#[serde(
rename = "isCustomConversionGoal",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_custom_conversion_goal: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleCarouselCardDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub headline: Option<String>,
#[serde(rename = "finalUrl", default, skip_serializing_if = "Option::is_none")]
pub final_url: Option<String>,
#[serde(
rename = "callToActionLabel",
default,
skip_serializing_if = "Option::is_none"
)]
pub call_to_action_label: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub media: Vec<GoogleMediaDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleDemographicTargetDTO {
#[serde(rename = "enum")]
pub enum_: String,
pub negative: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleGeoLocationDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "countryName",
default,
skip_serializing_if = "Option::is_none"
)]
pub country_name: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub radius: Option<f64>,
#[serde(
rename = "radiusUnit",
default,
skip_serializing_if = "Option::is_none"
)]
pub radius_unit: Option<String>,
#[serde(
rename = "selectionType",
default,
skip_serializing_if = "Option::is_none"
)]
pub selection_type: Option<String>,
#[serde(
rename = "resourceName",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
#[serde(rename = "placeId", default, skip_serializing_if = "Option::is_none")]
pub place_id: Option<String>,
#[serde(
rename = "formattedAddress",
default,
skip_serializing_if = "Option::is_none"
)]
pub formatted_address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub geometry: Option<GeoGeometryDTO>,
#[serde(
rename = "addressComponents",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub address_components: Vec<GeoAddressComponentDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleKeywordItemDTO {
pub keyword: String,
#[serde(rename = "matchType")]
pub match_type: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleKeywordsDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub positives: Vec<GoogleKeywordItemDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub negatives: Vec<GoogleKeywordItemDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleLocaleDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
rename = "resourceName",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleMediaDTO {
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub src: Option<String>,
#[serde(rename = "isLogo", default, skip_serializing_if = "Option::is_none")]
pub is_logo: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(rename = "imageType", default, skip_serializing_if = "Option::is_none")]
pub image_type: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleNetworkSettingsDTO {
#[serde(rename = "targetSearchNetwork")]
pub target_search_network: bool,
#[serde(rename = "targetContentNetwork")]
pub target_content_network: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleSegmentTargetDTO {
#[serde(rename = "type")]
pub type_: String,
pub id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleTargetInterestsDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub affinity: Vec<String>,
#[serde(rename = "inMarket", default, skip_serializing_if = "Vec::is_empty")]
pub in_market: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GoogleYouTubeVideoLinkDTO {
#[serde(rename = "youtubeVideoId")]
pub youtube_video_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GreetingCard {
pub title: String,
pub style: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub content: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct HiddenFieldDTO {
pub name: String,
pub value: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct KeywordSuggestionDTO {
pub url: String,
#[serde(
rename = "languageCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub language_code: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub locations: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub keywords: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LeadFormAssetPayloadDTO {
#[serde(
rename = "resourceName",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
pub headline: String,
pub description: String,
#[serde(rename = "businessName")]
pub business_name: String,
#[serde(rename = "privacyPolicyUrl")]
pub privacy_policy_url: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub fields: Vec<LeadFormFieldDTO>,
#[serde(rename = "callToActionType")]
pub call_to_action_type: String,
#[serde(
rename = "callToActionDescription",
default,
skip_serializing_if = "Option::is_none"
)]
pub call_to_action_description: Option<String>,
#[serde(
rename = "backgroundImageAsset",
default,
skip_serializing_if = "Option::is_none"
)]
pub background_image_asset: Option<String>,
#[serde(
rename = "desiredIntent",
default,
skip_serializing_if = "Option::is_none"
)]
pub desired_intent: Option<String>,
#[serde(
rename = "customQuestionFields",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_question_fields: Vec<CustomQuestionFieldDTO>,
#[serde(
rename = "postSubmitHeadline",
default,
skip_serializing_if = "Option::is_none"
)]
pub post_submit_headline: Option<String>,
#[serde(
rename = "postSubmitDescription",
default,
skip_serializing_if = "Option::is_none"
)]
pub post_submit_description: Option<String>,
#[serde(
rename = "postSubmitCallToActionType",
default,
skip_serializing_if = "Option::is_none"
)]
pub post_submit_call_to_action_type: Option<String>,
#[serde(rename = "finalUrls", default, skip_serializing_if = "Option::is_none")]
pub final_urls: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LeadFormContentDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub questions: Vec<LeadFormQuestionDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<LocalizedStringDTO>,
pub headline: LocalizedStringDTO,
#[serde(rename = "postSubmissionInfo")]
pub post_submission_info: PostSubmissionInfoDTO,
#[serde(rename = "legalInfo")]
pub legal_info: LegalInfoDTO,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LeadFormFieldDTO {
#[serde(rename = "inputType")]
pub input_type: String,
#[serde(
rename = "singleChoiceAnswers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub single_choice_answers: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LeadFormQuestionDTO {
pub question: LocalizedStringDTO,
pub name: String,
#[serde(rename = "questionDetails")]
pub question_details: QuestionDetailsDTO,
#[serde(
rename = "predefinedField",
default,
skip_serializing_if = "Option::is_none"
)]
pub predefined_field: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LegalInfoDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub consents: Vec<ConsentDTO>,
#[serde(rename = "privacyPolicyUrl")]
pub privacy_policy_url: String,
#[serde(
rename = "legalDisclaimer",
default,
skip_serializing_if = "Option::is_none"
)]
pub legal_disclaimer: Option<LocalizedStringDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LinkedInAdDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "introductoryText",
default,
skip_serializing_if = "Option::is_none"
)]
pub introductory_text: Option<String>,
#[serde(
rename = "destinationUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub destination_url: Option<String>,
#[serde(
rename = "callToActionLabel",
default,
skip_serializing_if = "Option::is_none"
)]
pub call_to_action_label: Option<String>,
#[serde(
rename = "destinationFormId",
default,
skip_serializing_if = "Option::is_none"
)]
pub destination_form_id: Option<String>,
#[serde(
rename = "contentReferenceString",
default,
skip_serializing_if = "Option::is_none"
)]
pub content_reference_string: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub media: Vec<LinkedInMediaDTO>,
#[serde(
rename = "adCampaignId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_campaign_id: Option<String>,
#[serde(rename = "adId", default, skip_serializing_if = "Option::is_none")]
pub ad_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub headline: Option<String>,
#[serde(
rename = "publishingStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub publishing_status: Option<String>,
#[serde(
rename = "adCampaignGroupId",
default,
skip_serializing_if = "Option::is_none"
)]
pub ad_campaign_group_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<serde_json::Value>,
#[serde(
rename = "linkedInError",
default,
skip_serializing_if = "Option::is_none"
)]
pub linked_in_error: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LinkedInBudgetDTO {
#[serde(
rename = "budgetType",
default,
skip_serializing_if = "Option::is_none"
)]
pub budget_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(
rename = "scheduleStartDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub schedule_start_date: Option<String>,
#[serde(
rename = "scheduleEndDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub schedule_end_date: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LinkedInCreateLeadFormBodyDTO {
pub owner: SponsoredAccountOwnerDTO,
#[serde(rename = "creationLocale")]
pub creation_locale: CreationLocaleDTO,
pub name: String,
pub state: String,
pub content: LeadFormContentDTO,
#[serde(
rename = "hiddenFields",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub hidden_fields: Vec<HiddenFieldDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LinkedInMediaDTO {
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub src: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub frames: Vec<String>,
#[serde(
rename = "selectedPoster",
default,
skip_serializing_if = "Option::is_none"
)]
pub selected_poster: Option<f64>,
#[serde(
rename = "thumbnailUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub thumbnail_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub headline: Option<String>,
#[serde(
rename = "destinationUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub destination_url: Option<String>,
#[serde(
rename = "fileSizeBytes",
default,
skip_serializing_if = "Option::is_none"
)]
pub file_size_bytes: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LinkedInUpdateAdStatusBodyDTO {
#[serde(rename = "operationType")]
pub operation_type: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LocaleDTO {
pub country: String,
pub language: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LocalizedStringDTO {
pub localized: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LocationIdBodyDTO {
#[serde(rename = "locationId")]
pub location_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MediaDTO {
pub src: String,
#[serde(
rename = "thumbnailUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub thumbnail_url: Option<String>,
#[serde(
rename = "selectedPoster",
default,
skip_serializing_if = "Option::is_none"
)]
pub selected_poster: Option<f64>,
#[serde(rename = "type")]
pub type_: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub headline: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MemberDTO {
#[serde(rename = "memberType")]
pub member_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub keyword: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub app: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MultipleChoiceOptionDTO {
pub id: f64,
pub text: LocalizedStringDTO,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MultipleChoiceQuestionDetailsDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub options: Vec<MultipleChoiceOptionDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PostSubmissionCallToActionDTO {
#[serde(rename = "callToActionTarget")]
pub call_to_action_target: PostSubmissionCallToActionTargetDTO,
#[serde(rename = "callToActionLabel")]
pub call_to_action_label: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PostSubmissionCallToActionTargetDTO {
#[serde(rename = "landingPageUrl")]
pub landing_page_url: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PostSubmissionInfoDTO {
pub message: LocalizedStringDTO,
#[serde(rename = "callToAction")]
pub call_to_action: PostSubmissionCallToActionDTO,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PublishAdDTO {
#[serde(rename = "locationId")]
pub location_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PublishingProgressResponseDTO {
#[serde(
rename = "campaignId",
default,
skip_serializing_if = "Option::is_none"
)]
pub campaign_id: Option<String>,
#[serde(
rename = "publishingStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub publishing_status: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub processed: Option<f64>,
#[serde(
rename = "isComplete",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_complete: Option<bool>,
#[serde(rename = "hasFailed", default, skip_serializing_if = "Option::is_none")]
pub has_failed: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct QuestionDetailsDTO {
#[serde(
rename = "textQuestionDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub text_question_details: Option<serde_json::Value>,
#[serde(
rename = "multipleChoiceQuestionDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub multiple_choice_question_details: Option<MultipleChoiceQuestionDetailsDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RuleBasedUserListDTO {
#[serde(
rename = "prepopulationStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub prepopulation_status: Option<String>,
#[serde(rename = "flexibleRuleUserList")]
pub flexible_rule_user_list: FlexibleRuleUserListDTO,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RuleDTO {
#[serde(
rename = "ruleItemGroups",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub rule_item_groups: Vec<RuleItemGroupDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RuleItemDTO {
pub name: String,
#[serde(rename = "stringRuleItem")]
pub string_rule_item: StringRuleItemDTO,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RuleItemGroupDTO {
#[serde(rename = "ruleItems", default, skip_serializing_if = "Vec::is_empty")]
pub rule_items: Vec<RuleItemDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RuleOperandDTO {
#[serde(rename = "lookbackWindowDays")]
pub lookback_window_days: f64,
pub rule: RuleDTO,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SelectedAttributeDTO {
pub urn: String,
pub name: String,
#[serde(rename = "categoryName")]
pub category_name: String,
pub facet: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SitelinkAssetPayloadDTO {
#[serde(
rename = "resourceName",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
#[serde(rename = "linkText")]
pub link_text: String,
#[serde(rename = "finalUrls")]
pub final_urls: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description1: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description2: Option<String>,
#[serde(rename = "startDate", default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<String>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(
rename = "adScheduleTargets",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub ad_schedule_targets: Vec<AdScheduleTargetDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SponsoredAccountOwnerDTO {
#[serde(rename = "sponsoredAccount")]
pub sponsored_account: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct StringRuleItemDTO {
pub operator: String,
pub value: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TargetAudienceDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub include: Vec<Vec<SelectedAttributeDTO>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub exclude: Vec<Vec<SelectedAttributeDTO>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ThankYouPage {
pub title: String,
pub body: String,
#[serde(rename = "buttonText")]
pub button_text: String,
#[serde(rename = "buttonType")]
pub button_type: String,
#[serde(
rename = "buttonLink",
default,
skip_serializing_if = "Option::is_none"
)]
pub button_link: Option<String>,
#[serde(
rename = "businessPhone",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_phone: Option<String>,
#[serde(
rename = "countryCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub country_code: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UnitCostDTO {
pub amount: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateCustomAudienceBatchDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "csvPath", default, skip_serializing_if = "Option::is_none")]
pub csv_path: Option<String>,
#[serde(rename = "operationType")]
pub operation_type: String,
#[serde(
rename = "smartlistIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub smartlist_ids: Vec<String>,
#[serde(
rename = "dynamicAudience",
default,
skip_serializing_if = "Option::is_none"
)]
pub dynamic_audience: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateCustomAudienceDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(
rename = "fbAdAccountId",
default,
skip_serializing_if = "Option::is_none"
)]
pub fb_ad_account_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertAdDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(
rename = "primaryText",
default,
skip_serializing_if = "Option::is_none"
)]
pub primary_text: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub headline: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "imageUrl", default, skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
#[serde(rename = "mediaType", default, skip_serializing_if = "Option::is_none")]
pub media_type: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub media: Vec<MediaDTO>,
#[serde(
rename = "multiAdvertiserAds",
default,
skip_serializing_if = "Option::is_none"
)]
pub multi_advertiser_ads: Option<bool>,
#[serde(rename = "campaignId")]
pub campaign_id: String,
#[serde(rename = "adsetId")]
pub adset_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cta: Option<String>,
#[serde(
rename = "conversationFormId",
default,
skip_serializing_if = "Option::is_none"
)]
pub conversation_form_id: Option<String>,
#[serde(
rename = "destinationLink",
default,
skip_serializing_if = "Option::is_none"
)]
pub destination_link: Option<String>,
#[serde(
rename = "destinationFormId",
default,
skip_serializing_if = "Option::is_none"
)]
pub destination_form_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertAdsetDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "pageId", default, skip_serializing_if = "Option::is_none")]
pub page_id: Option<String>,
#[serde(
rename = "instagramActorId",
default,
skip_serializing_if = "Option::is_none"
)]
pub instagram_actor_id: Option<String>,
#[serde(
rename = "messagingPlatforms",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub messaging_platforms: Vec<String>,
#[serde(
rename = "whatsappNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub whatsapp_number: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub audience: Option<FacebookAudienceDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub budget: Option<Budget>,
#[serde(
rename = "conversionLocation",
default,
skip_serializing_if = "Option::is_none"
)]
pub conversion_location: Option<String>,
#[serde(
rename = "customEventType",
default,
skip_serializing_if = "Option::is_none"
)]
pub custom_event_type: Option<String>,
#[serde(rename = "pixelId", default, skip_serializing_if = "Option::is_none")]
pub pixel_id: Option<String>,
#[serde(rename = "campaignId")]
pub campaign_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertAssetsDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "type")]
pub type_: String,
pub payload: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertAudienceDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(
rename = "resourceName",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dimensions: Option<AudienceDimensionDTO>,
#[serde(
rename = "exclusionDimension",
default,
skip_serializing_if = "Option::is_none"
)]
pub exclusion_dimension: Option<AudienceDimensionDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertCampaignDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub objective: Option<String>,
#[serde(
rename = "specialAdCategories",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub special_ad_categories: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertConversionDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(
rename = "conversionId",
default,
skip_serializing_if = "Option::is_none"
)]
pub conversion_id: Option<String>,
pub name: String,
#[serde(rename = "type")]
pub type_: String,
pub category: String,
#[serde(rename = "valueSettings")]
pub value_settings: ConversionValueSettings,
#[serde(rename = "countingType")]
pub counting_type: String,
#[serde(rename = "attributionModel")]
pub attribution_model: String,
#[serde(rename = "clickThroughWindow")]
pub click_through_window: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertConversionPixelDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(
rename = "conversionPixelId",
default,
skip_serializing_if = "Option::is_none"
)]
pub conversion_pixel_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "igUserId", default, skip_serializing_if = "Option::is_none")]
pub ig_user_id: Option<String>,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpsertSegmentDTO {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub members: Vec<MemberDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
rename = "membershipStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub membership_status: Option<String>,
#[serde(
rename = "ruleBasedUserList",
default,
skip_serializing_if = "Option::is_none"
)]
pub rule_based_user_list: Option<RuleBasedUserListDTO>,
#[serde(
rename = "membershipLifeSpan",
default,
skip_serializing_if = "Option::is_none"
)]
pub membership_life_span: Option<f64>,
#[serde(
rename = "seedUserListIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub seed_user_list_ids: Vec<String>,
#[serde(
rename = "countryCodes",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub country_codes: Vec<String>,
#[serde(
rename = "expansionLevel",
default,
skip_serializing_if = "Option::is_none"
)]
pub expansion_level: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WelcomeMessageQuestion {
pub question: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub response: Option<String>,
}