late 0.0.1352

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). Request ids: responses carry an X-Request-Id header with the id we log the request under. Quote it when reporting a problem. A valid x-request-id you send is reused as that id.
Documentation
/*
 * 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).  Request ids: responses carry an X-Request-Id header with the id we log the request under. Quote it when reporting a problem. A valid x-request-id you send is reused as that id.
 *
 * The version of the OpenAPI document: 1.531.0
 * Contact: support@zernio.com
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// AdRuleActionOneOf7 : Exactly one of `add` and `remove`.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AdRuleActionOneOf7 {
    /// Tag the object by its name. Meta, TikTok and Reddit campaigns, ad sets and ads, and Google, LinkedIn and Pinterest campaigns and ad sets. An object whose name already has the tag (or lacks it, for `remove`) is skipped with `name_unchanged`.
    #[serde(rename = "type")]
    pub r#type: Type,
    /// Text to add, like `[WINNER]`. Compared without case.
    #[serde(rename = "add", skip_serializing_if = "Option::is_none")]
    pub add: Option<String>,
    /// Where `add` goes. Defaults to `start`.
    #[serde(rename = "at", skip_serializing_if = "Option::is_none")]
    pub at: Option<At>,
    /// Text to take out of the name, every copy of it.
    #[serde(rename = "remove", skip_serializing_if = "Option::is_none")]
    pub remove: Option<String>,
    /// At most this many objects changed in any 24 hours, across runs. Matches over the limit are skipped with `daily_limit_reached` and tried again later.
    #[serde(rename = "maxChangesPerDay", skip_serializing_if = "Option::is_none")]
    pub max_changes_per_day: Option<i32>,
    /// At most this many changes to one object by this rule, counted over the last 400 days. An object at the limit is left alone like one in cooldown.
    #[serde(
        rename = "maxChangesPerObject",
        skip_serializing_if = "Option::is_none"
    )]
    pub max_changes_per_object: Option<i32>,
}

impl AdRuleActionOneOf7 {
    /// Exactly one of `add` and `remove`.
    pub fn new(r#type: Type) -> AdRuleActionOneOf7 {
        AdRuleActionOneOf7 {
            r#type,
            add: None,
            at: None,
            remove: None,
            max_changes_per_day: None,
            max_changes_per_object: None,
        }
    }
}
/// Tag the object by its name. Meta, TikTok and Reddit campaigns, ad sets and ads, and Google, LinkedIn and Pinterest campaigns and ad sets. An object whose name already has the tag (or lacks it, for `remove`) is skipped with `name_unchanged`.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
    #[serde(rename = "edit_name")]
    EditName,
}

impl Default for Type {
    fn default() -> Type {
        Self::EditName
    }
}
/// Where `add` goes. Defaults to `start`.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum At {
    #[serde(rename = "start")]
    Start,
    #[serde(rename = "end")]
    End,
}

impl Default for At {
    fn default() -> At {
        Self::Start
    }
}