syntax = "proto3"; package connectstate; option optimize_for = CODE_SIZE; option java_package = "com.spotify.connectstate"; message PlayerState { int64 timestamp = 1; string context_uri = 2; string context_url = 3; Restrictions context_restrictions = 4; PlayOrigin play_origin = 5; ContextIndex index = 6; ProvidedTrack track = 7; string playback_id = 8; double playback_speed = 9; int64 position_as_of_timestamp = 10; int64 duration = 11; bool is_playing = 12; bool is_paused = 13; bool is_buffering = 14; bool is_system_initiated = 15; ContextPlayerOptions options = 16; Restrictions restrictions = 17; Suppressions suppressions = 18; repeated ProvidedTrack prev_tracks = 19; repeated ProvidedTrack next_tracks = 20; map context_metadata = 21; map page_metadata = 22; string session_id = 23; string queue_revision = 24; int64 position = 25; string entity_uri = 26; repeated ProvidedTrack reverse = 27; repeated ProvidedTrack future = 28; } message ProvidedTrack { string uri = 1; string uid = 2; map metadata = 3; repeated string removed = 4; repeated string blocked = 5; string provider = 6; Restrictions restrictions = 7; string album_uri = 8; repeated string disallow_reasons = 9; string artist_uri = 10; repeated string disallow_undecided = 11; } message ContextIndex { uint32 page = 1; uint32 track = 2; } message Restrictions { repeated string disallow_pausing_reasons = 1; repeated string disallow_resuming_reasons = 2; repeated string disallow_seeking_reasons = 3; repeated string disallow_peeking_prev_reasons = 4; repeated string disallow_peeking_next_reasons = 5; repeated string disallow_skipping_prev_reasons = 6; repeated string disallow_skipping_next_reasons = 7; repeated string disallow_toggling_repeat_context_reasons = 8; repeated string disallow_toggling_repeat_track_reasons = 9; repeated string disallow_toggling_shuffle_reasons = 10; repeated string disallow_set_queue_reasons = 11; repeated string disallow_interrupting_playback_reasons = 12; repeated string disallow_transferring_playback_reasons = 13; repeated string disallow_remote_control_reasons = 14; repeated string disallow_inserting_into_next_tracks_reasons = 15; repeated string disallow_inserting_into_context_tracks_reasons = 16; repeated string disallow_reordering_in_next_tracks_reasons = 17; repeated string disallow_reordering_in_context_tracks_reasons = 18; repeated string disallow_removing_from_next_tracks_reasons = 19; repeated string disallow_removing_from_context_tracks_reasons = 20; repeated string disallow_updating_context_reasons = 21; repeated string disallow_playing_reasons = 22; repeated string disallow_stopping_reasons = 23; } message PlayOrigin { string feature_identifier = 1; string feature_version = 2; string view_uri = 3; string external_referrer = 4; string referrer_identifier = 5; string device_identifier = 6; repeated string feature_classes = 7; } message ContextPlayerOptions { bool shuffling_context = 1; bool repeating_context = 2; bool repeating_track = 3; } message Suppressions { repeated string providers = 1; }