syntax = "proto2"; message PlaylistPublishedState { optional string uri = 0x1; optional int64 timestamp = 0x2; } message PlaylistTrackAddedState { optional string playlist_uri = 0x1; optional string track_uri = 0x2; optional int64 timestamp = 0x3; } message TrackFinishedPlayingState { optional string uri = 0x1; optional string context_uri = 0x2; optional int64 timestamp = 0x3; optional string referrer_uri = 0x4; } message FavoriteAppAddedState { optional string app_uri = 0x1; optional int64 timestamp = 0x2; } message TrackStartedPlayingState { optional string uri = 0x1; optional string context_uri = 0x2; optional int64 timestamp = 0x3; optional string referrer_uri = 0x4; } message UriSharedState { optional string uri = 0x1; optional string message = 0x2; optional int64 timestamp = 0x3; } message ArtistFollowedState { optional string uri = 0x1; optional string artist_name = 0x2; optional string artist_cover_uri = 0x3; optional int64 timestamp = 0x4; } message DeviceInformation { optional string os = 0x1; optional string type = 0x2; } message GenericPresenceState { optional int32 type = 0x1; optional int64 timestamp = 0x2; optional string item_uri = 0x3; optional string item_name = 0x4; optional string item_image = 0x5; optional string context_uri = 0x6; optional string context_name = 0x7; optional string context_image = 0x8; optional string referrer_uri = 0x9; optional string referrer_name = 0xa; optional string referrer_image = 0xb; optional string message = 0xc; optional DeviceInformation device_information = 0xd; } message State { optional int64 timestamp = 0x1; optional Type type = 0x2; enum Type { PLAYLIST_PUBLISHED = 0x1; PLAYLIST_TRACK_ADDED = 0x2; TRACK_FINISHED_PLAYING = 0x3; FAVORITE_APP_ADDED = 0x4; TRACK_STARTED_PLAYING = 0x5; URI_SHARED = 0x6; ARTIST_FOLLOWED = 0x7; GENERIC = 0xb; } optional string uri = 0x3; optional PlaylistPublishedState playlist_published = 0x4; optional PlaylistTrackAddedState playlist_track_added = 0x5; optional TrackFinishedPlayingState track_finished_playing = 0x6; optional FavoriteAppAddedState favorite_app_added = 0x7; optional TrackStartedPlayingState track_started_playing = 0x8; optional UriSharedState uri_shared = 0x9; optional ArtistFollowedState artist_followed = 0xa; optional GenericPresenceState generic = 0xb; } message StateList { repeated State states = 0x1; }