/*
 * Zernio API
 *
 * API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
 *
 * The version of the OpenAPI document: 1.0.4
 * Contact: support@zernio.com
 * Generated by: https://openapi-generator.tech
 */

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

/// InstagramPlatformDataTrialParams : Trial Reels configuration. Trial reels are shared to non-followers first and can later be graduated to regular reels manually or automatically based on performance. Only applies to Reels.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct InstagramPlatformDataTrialParams {
    /// MANUAL (graduate from Instagram app) or SS_PERFORMANCE (auto-graduate if performs well with non-followers)
    #[serde(rename = "graduationStrategy", skip_serializing_if = "Option::is_none")]
    pub graduation_strategy: Option<GraduationStrategy>,
}

impl InstagramPlatformDataTrialParams {
    /// Trial Reels configuration. Trial reels are shared to non-followers first and can later be graduated to regular reels manually or automatically based on performance. Only applies to Reels.
    pub fn new() -> InstagramPlatformDataTrialParams {
        InstagramPlatformDataTrialParams {
            graduation_strategy: None,
        }
    }
}
/// MANUAL (graduate from Instagram app) or SS_PERFORMANCE (auto-graduate if performs well with non-followers)
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum GraduationStrategy {
    #[serde(rename = "MANUAL")]
    Manual,
    #[serde(rename = "SS_PERFORMANCE")]
    SsPerformance,
}

impl Default for GraduationStrategy {
    fn default() -> GraduationStrategy {
        Self::Manual
    }
}
