use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateAdCreativeRequest {
#[serde(rename = "accountId")]
pub account_id: String,
#[serde(rename = "adAccountId")]
pub ad_account_id: String,
#[serde(rename = "headline")]
pub headline: String,
#[serde(rename = "body")]
pub body: String,
#[serde(rename = "description", skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "callToAction", skip_serializing_if = "Option::is_none")]
pub call_to_action: Option<String>,
#[serde(rename = "linkUrl")]
pub link_url: String,
#[serde(rename = "imageUrl", skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
#[serde(rename = "imageHash", skip_serializing_if = "Option::is_none")]
pub image_hash: Option<String>,
#[serde(rename = "carouselCards", skip_serializing_if = "Option::is_none")]
pub carousel_cards: Option<Vec<models::CreateAdCreativeRequestCarouselCardsInner>>,
#[serde(rename = "urlTags", skip_serializing_if = "Option::is_none")]
pub url_tags: Option<String>,
#[serde(rename = "creativeFeatures", skip_serializing_if = "Option::is_none")]
pub creative_features: Option<CreativeFeatures>,
}
impl CreateAdCreativeRequest {
pub fn new(
account_id: String,
ad_account_id: String,
headline: String,
body: String,
link_url: String,
) -> CreateAdCreativeRequest {
CreateAdCreativeRequest {
account_id,
ad_account_id,
headline,
body,
description: None,
call_to_action: None,
link_url,
image_url: None,
image_hash: None,
carousel_cards: None,
url_tags: None,
creative_features: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum CreativeFeatures {
#[serde(rename = "OPT_IN")]
OptIn,
#[serde(rename = "OPT_OUT")]
OptOut,
}
impl Default for CreativeFeatures {
fn default() -> CreativeFeatures {
Self::OptIn
}
}