syntax = "proto3";
package spotify;

/* Stubs – ToDo: Replace with real message models */

message Spotify {
    message OperatingSystem {
        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 DeviceType {
        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;
    }
    message Demographic {
        uint64 female_age_0_17 = 1;
        uint64 male_age_0_17 = 2;
        uint64 neutral_age_0_17 = 3;
        uint64 unknown_age_0_17 = 4;
        uint64 female_age_18_22 = 5;
        uint64 male_age_18_22 = 6;
        uint64 neutral_age_18_22 = 7;
        uint64 unknown_age_18_22 = 8;
        uint64 female_age_23_27 = 9;
        uint64 male_age_23_27 = 10;
        uint64 neutral_age_23_27 = 11;
        uint64 unknown_age_23_27 = 12;
        uint64 female_age_28_34 = 13;
        uint64 male_age_28_34 = 14;
        uint64 neutral_age_28_34 = 15;
        uint64 unknown_age_28_34 = 16;
        uint64 female_age_35_44 = 17;
        uint64 male_age_35_44 = 18;
        uint64 neutral_age_35_44 = 19;
        uint64 unknown_age_35_44 = 20;
        uint64 female_age_45_59 = 21;
        uint64 male_age_45_59 = 22;
        uint64 neutral_age_45_59 = 23;
        uint64 unknown_age_45_59 = 24;
        uint64 female_age_60_plus = 25;
        uint64 male_age_60_plus = 26;
        uint64 neutral_age_60_plus = 27;
        uint64 unknown_age_60_plus = 28;
        uint64 male_unkown = 29;
        uint64 female_unknown = 30;
        uint64 neutral_unknown = 31;
        uint64 unknown_unknown = 32;
    }
    message SourceType {
        uint64 album = 1;
        uint64 artist = 2;
        uint64 chart = 3;
        uint64 collection = 4;
        uint64 daily_mix = 5;
        uint64 discover_weekly = 6;
        uint64 other = 7;
        uint64 others_playlist = 8;
        uint64 play_queue = 9;
        uint64 radio = 10;
        uint64 release_radar = 11;
        uint64 search = 12;
    }
}

message SpotifySave {
    uint64 saves_free = 1;
    uint64 saves_premium = 2;
    uint64 saves = 3;
}

message SpotifyTrackStreamStats {
    uint64 listeners = 1;
    uint64 repeat_play = 2;
    uint64 shuffle_play = 3;
    uint64 streams = 4;
    Spotify.DeviceType device_type = 5;
    Spotify.OperatingSystem operating_system = 6;
    Spotify.Demographic demographic = 7;
    Spotify.SourceType source_type = 8;
}

message SpotifyPlaylistTrackStreamStats {
    uint64 listeners = 1;
    uint64 repeat_play = 2;
    uint64 shuffle_play = 3;
    uint64 streams = 4;
    Spotify.DeviceType device_type = 5;
    Spotify.OperatingSystem operating_system = 6;
    Spotify.Demographic demographic = 7;
}

message SpotifyPlaylistStats {
}
