/*
* Zernio API
*
* API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
*
* The version of the OpenAPI document: 1.15.0
* Contact: support@zernio.com
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
/// GooglePmaxAssetGroupUpdate : Replacement assets for an existing Performance Max asset group, sent on PUT /v1/ads/{adId}. Google assets are immutable (AssetService only creates), so each field you send becomes new assets linked to the asset group, and the assets that role held are unlinked in the same atomic request. Send one field or many; a field you omit is left untouched. Re-sending a value the asset group already carries is a no-op for that asset, not a re-upload. Unlinked assets stay in the account's asset library: Google has no asset delete. At least one description must be 60 characters or fewer. Texts within each list must be distinct.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct GooglePmaxAssetGroupUpdate {
/// Replaces the asset group's final URL.
#[serde(rename = "finalUrl", skip_serializing_if = "Option::is_none")]
pub final_url: Option<String>,
/// Replaces every HEADLINE asset on the group.
#[serde(rename = "headlines", skip_serializing_if = "Option::is_none")]
pub headlines: Option<Vec<String>>,
/// Replaces the LONG_HEADLINE asset.
#[serde(rename = "longHeadline", skip_serializing_if = "Option::is_none")]
pub long_headline: Option<String>,
/// Replaces every DESCRIPTION asset. At least one must be 60 characters or fewer.
#[serde(rename = "descriptions", skip_serializing_if = "Option::is_none")]
pub descriptions: Option<Vec<String>>,
/// Replaces the BUSINESS_NAME asset.
#[serde(rename = "businessName", skip_serializing_if = "Option::is_none")]
pub business_name: Option<String>,
#[serde(rename = "images", skip_serializing_if = "Option::is_none")]
pub images: Option<Box<models::GooglePmaxAssetGroupUpdateImages>>,
/// Replaces YOUTUBE_VIDEO assets with existing YouTube video ids. Video uploads and arbitrary video URLs are not supported.
#[serde(rename = "youtubeVideoIds", skip_serializing_if = "Option::is_none")]
pub youtube_video_ids: Option<Vec<String>>,
}
impl GooglePmaxAssetGroupUpdate {
/// Replacement assets for an existing Performance Max asset group, sent on PUT /v1/ads/{adId}. Google assets are immutable (AssetService only creates), so each field you send becomes new assets linked to the asset group, and the assets that role held are unlinked in the same atomic request. Send one field or many; a field you omit is left untouched. Re-sending a value the asset group already carries is a no-op for that asset, not a re-upload. Unlinked assets stay in the account's asset library: Google has no asset delete. At least one description must be 60 characters or fewer. Texts within each list must be distinct.
pub fn new() -> GooglePmaxAssetGroupUpdate {
GooglePmaxAssetGroupUpdate {
final_url: None,
headlines: None,
long_headline: None,
descriptions: None,
business_name: None,
images: None,
youtube_video_ids: None,
}
}
}