use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsResult {
pub keywords: Option<Vec<String>>,
#[serde(rename = "type")]
pub trends_type: Option<String>,
pub location_code: Option<i32>,
pub language_code: Option<String>,
pub datetime: Option<String>,
pub items_count: Option<i64>,
pub items: Option<Vec<KeywordsDataApiDataforseoTrendsItem>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum KeywordsDataApiDataforseoTrendsItem {
DataforseoTrendsGraph(KeywordsDataApiDataforseoTrendsGraph),
SubregionInterests(KeywordsDataApiDataforseoTrendsSubregionInterests),
Demography(KeywordsDataApiDataforseoTrendsDemography),
#[serde(other)]
#[default]
Unknown,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsGraph {
pub position: Option<i32>,
pub keywords: Option<Vec<String>>,
pub data: Option<Vec<KeywordsDataApiDataforseoTrendsGraphData>>,
pub averages: Option<Vec<i64>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsGraphData {
pub date_from: Option<String>,
pub date_to: Option<String>,
pub timestamp: Option<i64>,
pub values: Option<Vec<i64>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsSubregionInterests {
pub position: Option<i32>,
pub keywords: Option<Vec<String>>,
pub interests: Option<Vec<KeywordsDataApiDataforseoTrendsInterest>>,
pub interests_comparison: Option<Value>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsInterest {
pub keyword: Option<String>,
pub values: Option<Vec<KeywordsDataApiDataforseoTrendsInterestValue>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsInterestValue {
pub geo_id: Option<String>,
pub geo_name: Option<String>,
pub value: Option<i32>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsDemography {
pub position: Option<i32>,
pub keywords: Option<Vec<String>>,
pub demography: Option<KeywordsDataApiDataforseoTrendsDemographyData>,
pub demography_comparison: Option<Value>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsDemographyData {
pub age: Option<Vec<KeywordsDataApiDataforseoTrendsDemographyKeyword>>,
pub gender: Option<Vec<KeywordsDataApiDataforseoTrendsDemographyKeyword>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsDemographyKeyword {
pub keyword: Option<String>,
pub values: Option<Vec<KeywordsDataApiDataforseoTrendsDemographyValue>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiDataforseoTrendsDemographyValue {
#[serde(rename = "type")]
pub segment_type: Option<String>,
pub value: Option<i32>,
}