syntax = "proto3";

message SpotifyAgeBand {
    uint64 all_0_17 = 1;
    uint64 all_18_22 = 2;
    uint64 all_23_27 = 3;
    uint64 all_28_34 = 4;
    uint64 all_35_44 = 5;
    uint64 all_45_59 = 6;
    uint64 all_60_150 = 7;
    uint64 all_unknown = 8;
    uint64 female_0_17 = 9;
    uint64 female_18_22 = 10;
    uint64 female_23_27 = 11;
    uint64 female_28_34 = 12;
    uint64 female_35_44 = 13;
    uint64 female_45_59 = 14;
    uint64 female_60_150 = 15;
    uint64 female_unknown = 16;
    uint64 male_0_17 = 17;
    uint64 male_18_22 = 18;
    uint64 male_23_27 = 19;
    uint64 male_28_34 = 20;
    uint64 male_35_44 = 21;
    uint64 male_45_59 = 22;
    uint64 male_60_150 = 23;
    uint64 male_unknown = 24;
    uint64 neutral_0_17 = 25;
    uint64 neutral_18_22 = 26;
    uint64 neutral_23_27 = 27;
    uint64 neutral_28_34 = 28;
    uint64 neutral_35_44 = 29;
    uint64 neutral_45_59 = 30;
    uint64 neutral_60_150 = 31;
    uint64 neutral_unknown = 32;
    uint64 unknown_0_17 = 33;
    uint64 unknown_18_22 = 34;
    uint64 unknown_23_27 = 35;
    uint64 unknown_28_34 = 36;
    uint64 unknown_35_44 = 37;
    uint64 unknown_45_59 = 38;
    uint64 unknown_60_150 = 39;
    uint64 unknown_unknown = 40;
}

message SpotifySource {
    uint64 album = 1;
    uint64 artist = 2;
    uint64 chart = 3;
    uint64 collection = 4;
    uint64 other = 5;
    uint64 others_playlist = 6;
    uint64 play_queue = 7;
    uint64 radio = 8;
    uint64 search = 9;
}

message SpotifyDeviceType {
    uint64 builtin_car_application = 1;
    uint64 cell_phone = 2;
    uint64 connected_audio_device = 3;
    uint64 gaming_console = 4;
    uint64 other = 5;
    uint64 personal_computer = 6;
    uint64 smart_tv_device = 7;
    uint64 tablet = 8;
    uint64 wearable = 9;
}

message SpotifySaves {
    uint64 free = 1;
    uint64 premium = 2;
    uint64 total = 3;
}

message SpotifyOperatingSystem {
    uint64 android = 1;
    uint64 blackberry = 2;
    uint64 browser = 3;
    uint64 ios = 4;
    uint64 linux = 5;
    uint64 mac = 6;
    uint64 other = 7;
    uint64 windows = 8;
}

message SpotifyEngagement {
    uint64 lean_back = 1;
    uint64 lean_forward = 2;
}

message SpotifyGender {
    uint64 female = 1;
    uint64 male = 2;
    uint64 other = 3;
}

message SpotifyStreamStats {
    uint64 streams = 1;
//    uint64 free_streams = 2;
//    uint64 paid_streams = 3;
//    uint64 repeat_play = 4;
//    uint64 shuffle_play = 5;
//    uint64 offline_play = 6;
//    uint64 completion_play = 7;
//    SpotifySource source = 8;
//    SpotifyDeviceType device_type = 9;
//    SpotifyOperatingSystem operating_system = 10;
//    SpotifyEngagement engagement = 11;
//    uint64 skips = 12;
    SpotifyAgeBand spotify_age_bands = 13;
//    SpotifySaves saves = 14;
    SpotifyGender genders = 15;
}

message SpotifyCountryStats {
    map<string, SpotifyStreamStats> countries = 1;
}
