/*
 * 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};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct YouTubeVideoRetentionResponseRetentionCurveInner {
    /// Position in the video as a ratio (0.01-1.0, exclusive end of each interval)
    #[serde(
        rename = "elapsedVideoTimeRatio",
        skip_serializing_if = "Option::is_none"
    )]
    pub elapsed_video_time_ratio: Option<f64>,
    /// Absolute share of viewers watching at this point. Can exceed 1 (rewinds/looping, common on Shorts).
    #[serde(rename = "audienceWatchRatio", skip_serializing_if = "Option::is_none")]
    pub audience_watch_ratio: Option<f64>,
    /// Retention vs videos of similar length (0 = worst, 0.5 = median, 1 = best)
    #[serde(
        rename = "relativeRetentionPerformance",
        skip_serializing_if = "Option::is_none"
    )]
    pub relative_retention_performance: Option<f64>,
    /// Viewers who started watching in this segment
    #[serde(rename = "startedWatching", skip_serializing_if = "Option::is_none")]
    pub started_watching: Option<i32>,
    /// Viewers who stopped watching in this segment
    #[serde(rename = "stoppedWatching", skip_serializing_if = "Option::is_none")]
    pub stopped_watching: Option<i32>,
    /// Total views of this segment, including rewatches
    #[serde(
        rename = "totalSegmentImpressions",
        skip_serializing_if = "Option::is_none"
    )]
    pub total_segment_impressions: Option<i32>,
}

impl YouTubeVideoRetentionResponseRetentionCurveInner {
    pub fn new() -> YouTubeVideoRetentionResponseRetentionCurveInner {
        YouTubeVideoRetentionResponseRetentionCurveInner {
            elapsed_video_time_ratio: None,
            audience_watch_ratio: None,
            relative_retention_performance: None,
            started_watching: None,
            stopped_watching: None,
            total_segment_impressions: None,
        }
    }
}
