syntax = "proto3";

package io.delphiplatform.api.v3.proto;

message YoutubeCountryStats {
  map<string, YoutubeStats> countries = 1;
}

message YoutubeStats {
  YoutubeStreams streams = 1;
  YoutubeWatchTime watch_time = 2;
  YoutubeEngagement engagement = 3;
  YoutubeDemographics demographic = 4;
  YoutubeTrafficSource traffic_source = 5;
  YoutubeDeviceType device_type = 6;
  YoutubeOperatingSystem operating_system = 7;
}

message YoutubeStreams {
  uint64 views = 1;
  float views_percentage = 2;
}

message YoutubeWatchTime {
  float average_view_duration_seconds = 1;
  float average_view_duration_percentage = 2;
}

message YoutubeEngagement {
  uint64 comments = 1;
  uint64 dislikes = 2;
  uint64 likes = 3;
  uint64 shares = 4;
}

message YoutubeDemographics {
  YoutubeAgeBands age_band_views_percentages = 1;
  YoutubeGenders gender_view_percentages = 2;
}

message YoutubeTrafficSource {
  uint64 browse_features = 1;
  uint64 direct_or_unknown = 2;
  uint64 external = 3;
  uint64 interactive_video_endscreen = 4;
  uint64 notifications = 5;
  uint64 other_youtube_features = 6;
  uint64 playlist_pages = 7;
  uint64 playlists = 8;
  uint64 programming_from_claimed_content = 9;
  uint64 shorts = 10;
  uint64 stories = 11;
  uint64 suggested_videos = 12;
  uint64 video_cards_and_annotations = 13;
  uint64 youtube_advertising = 14;
  uint64 youtube_channels = 15;
  uint64 youtube_search = 16;
  uint64 unknown = 17;
}

message YoutubeAgeBands {
  float all_13_17 = 1;
  float all_18_24 = 2;
  float all_25_34 = 3;
  float all_35_44 = 4;
  float all_45_54 = 5;
  float all_55_64 = 6;
  float all_65_plus = 7;
  float female_13_17 = 8;
  float female_18_24 = 9;
  float female_25_34 = 10;
  float female_35_44 = 11;
  float female_45_54 = 12;
  float female_55_64 = 13;
  float female_65_plus = 14;
  float male_13_17 = 15;
  float male_18_24 = 16;
  float male_25_34 = 17;
  float male_35_44 = 18;
  float male_45_54 = 19;
  float male_55_64 = 20;
  float male_65_plus = 21;
  // these field should be named with "unknown" for API
  // todo: add mapping from other->unknown for future copy/paste
  float unknown_13_17 = 22;
  float unknown_18_24 = 23;
  float unknown_25_34 = 24;
  float unknown_35_44 = 25;
  float unknown_45_54 = 26;
  float unknown_55_64 = 27;
  float unknown_65_plus = 28;
}

message YoutubeGenders {
  float female = 1;
  float male = 2;
  // this field should be named "unknown" for API
  float unknown = 3;
}

message YoutubeDeviceType {
  uint64 desktop = 1;
  uint64 mobile = 2;
  uint64 tv = 3;
  uint64 tablet = 4;
  uint64 game_console = 5;
  uint64 other = 6;
  uint64 unknown = 7;
}

message YoutubeOperatingSystem {
  uint64 other = 1;
  uint64 windows = 2;
  uint64 windows_mobile = 3;
  uint64 android = 4;
  uint64 ios = 5;
  uint64 symbian = 6;
  uint64 blackberry = 7;
  uint64 mac = 8;
  uint64 playstation = 9;
  uint64 bada = 10;
  uint64 web_os = 11;
  uint64 linux = 12;
  uint64 hiptop = 13;
  uint64 meego = 14;
  uint64 wii = 15;
  uint64 xbox = 16;
  uint64 playstation_vita = 17;
  uint64 smart_tv = 18;
  uint64 nintendo_3ds = 19;
  uint64 chromecast = 20;
  uint64 tizen = 21;
  uint64 firefox = 22;
  uint64 realmedia = 23;
  uint64 kaios = 24;
  uint64 roku = 25;
  uint64 nintendo_switch = 26;
  uint64 apple_tvos = 27;
  uint64 fire_os = 28;
  uint64 chrome_os = 30;
  uint64 unknown = 29;
}
