// Extracted from: Spotify 1.2.52.442 (windows) syntax = "proto3"; package spotify.connectstate; option optimize_for = CODE_SIZE; option java_package = "com.spotify.connectstate.model"; message PlayerState { reserved 26; reserved 27; reserved 28; reserved 29; reserved 30; reserved 31; reserved 34; 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; PlaybackQuality playback_quality = 32; repeated string signals = 33; string session_command_id = 35; } message ProvidedTrack { reserved 11; 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; } message ContextIndex { uint32 page = 1; uint32 track = 2; } message ModeRestrictions { map values = 1; } message RestrictionReasons { repeated string reasons = 1; } message Restrictions { reserved 26; reserved 27; 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; repeated string disallow_add_to_queue_reasons = 24; repeated string disallow_setting_playback_speed_reasons = 25; map disallow_setting_modes = 28; map disallow_signals = 29; } 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; string restriction_identifier = 8; } message ContextPlayerOptions { bool shuffling_context = 1; bool repeating_context = 2; bool repeating_track = 3; map modes = 5; optional float playback_speed = 4; } message Suppressions { repeated string providers = 1; } message PlaybackQuality { BitrateLevel bitrate_level = 1; BitrateStrategy strategy = 2; BitrateLevel target_bitrate_level = 3; bool target_bitrate_available = 4; HiFiStatus hifi_status = 5; } enum BitrateLevel { unknown_bitrate_level = 0; low = 1; normal = 2; high = 3; very_high = 4; hifi = 5; hifi24 = 6; } enum BitrateStrategy { unknown_strategy = 0; best_matching = 1; backend_advised = 2; offlined_file = 3; cached_file = 4; local_file = 5; } enum HiFiStatus { none = 0; off = 1; on = 2; }