1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use serde::{Deserialize, Serialize};
use crate::types::{ Dimension, DimensionOrderBy, FilterExpression, Metric, MetricAggregation};

/// Realtime Dimensions & Metrics
/// https://developers.google.com/analytics/devguides/reporting/data/v1/realtime-api-schema

#[derive(Default, Debug, Serialize, Deserialize)]
pub struct RunRealtimeReportRequest {
    pub dimensions: Vec<Dimension>,
    pub metrics: Vec<Metric>,
    #[serde(rename = "dimensionFilter")]
    pub dimension_filter: Option<FilterExpression>,
    #[serde(rename = "metricFilter")]
    pub metric_filter: Option<FilterExpression>,
    pub limit: Option<String>,
    #[serde(rename = "metricAggregations")]
    pub metric_aggregations: Option<Vec<MetricAggregation>>,
    #[serde(rename = "orderBys")]
    pub order_bys: Option<Vec<DimensionOrderBy>>,
    #[serde(rename = "returnPropertyQuota")]
    pub return_property_quota: Option<bool>,
    #[serde(rename = "minuteRanges")]
    pub minute_ranges: Option<Vec<MinuteRange>>,
}

#[derive(Default, Debug, Serialize, Deserialize)]
pub struct MinuteRange {
    name: Option<String>,
    #[serde(rename = "startMinutesAgo")]
    start_minutes_ago: Option<String>,
    #[serde(rename = "endMinutesAgo")]
    end_minutes_ago: Option<String>,
}