Skip to main content

late/models/
ad_creative.rs

1/*
2 * Zernio API
3 *
4 * API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
5 *
6 * The version of the OpenAPI document: 1.0.1
7 * Contact: support@zernio.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14/// AdCreative : Platform-specific creative data. Fields vary by platform.
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct AdCreative {
17    /// Primary thumbnail/image URL
18    #[serde(rename = "thumbnailUrl", skip_serializing_if = "Option::is_none")]
19    pub thumbnail_url: Option<String>,
20    /// Alternative image URL
21    #[serde(rename = "imageUrl", skip_serializing_if = "Option::is_none")]
22    pub image_url: Option<String>,
23    /// Meta video ID for VIDEO-type ads. Null for non-video ads. Callers that need an embeddable MP4 can call GET /{videoId}?fields=source with the page access token.
24    #[serde(rename = "videoId", skip_serializing_if = "Option::is_none")]
25    pub video_id: Option<String>,
26    /// Public Facebook watch URL for VIDEO-type ads (https://www.facebook.com/watch/?v={videoId}). Null for non-video ads.
27    #[serde(rename = "videoUrl", skip_serializing_if = "Option::is_none")]
28    pub video_url: Option<String>,
29    /// Meta creative object_type (e.g. SHARE, VIDEO, PRIVACY_CHECK_FAIL, POST_DELETED). Use this to render state-aware previews — when Meta moderation strips image/video fields, only thumbnailUrl at 64x64 is available.
30    #[serde(rename = "objectType", skip_serializing_if = "Option::is_none")]
31    pub object_type: Option<String>,
32    /// All media URLs for this ad (carousel images, multiple assets). Populated for Meta (carousel child_attachments), Google Ads (responsive display marketing_images), and LinkedIn (multi-image posts).
33    #[serde(rename = "mediaUrls", skip_serializing_if = "Option::is_none")]
34    pub media_urls: Option<Vec<String>>,
35    /// Ad copy/text
36    #[serde(rename = "body", skip_serializing_if = "Option::is_none")]
37    pub body: Option<String>,
38    /// Google Ads headline
39    #[serde(rename = "googleHeadline", skip_serializing_if = "Option::is_none")]
40    pub google_headline: Option<String>,
41    /// Google Ads description
42    #[serde(rename = "googleDescription", skip_serializing_if = "Option::is_none")]
43    pub google_description: Option<String>,
44    /// Destination URL
45    #[serde(rename = "linkUrl", skip_serializing_if = "Option::is_none")]
46    pub link_url: Option<String>,
47    #[serde(rename = "pinterestImageUrl", skip_serializing_if = "Option::is_none")]
48    pub pinterest_image_url: Option<String>,
49    #[serde(rename = "pinterestTitle", skip_serializing_if = "Option::is_none")]
50    pub pinterest_title: Option<String>,
51    #[serde(
52        rename = "pinterestDescription",
53        skip_serializing_if = "Option::is_none"
54    )]
55    pub pinterest_description: Option<String>,
56}
57
58impl AdCreative {
59    /// Platform-specific creative data. Fields vary by platform.
60    pub fn new() -> AdCreative {
61        AdCreative {
62            thumbnail_url: None,
63            image_url: None,
64            video_id: None,
65            video_url: None,
66            object_type: None,
67            media_urls: None,
68            body: None,
69            google_headline: None,
70            google_description: None,
71            link_url: None,
72            pinterest_image_url: None,
73            pinterest_title: None,
74            pinterest_description: None,
75        }
76    }
77}