Update protobufs to 1.1.73.517

This commit is contained in:
Roderick van Domburg 2021-12-10 20:33:43 +01:00
parent 4f51c1e810
commit 40163754bb
No known key found for this signature in database
GPG key ID: A9EF5222A26F0451
200 changed files with 3016 additions and 978 deletions

View file

@ -8,6 +8,7 @@ use crate::{
item::{AudioItem, AudioItemResult, InnerAudioItem}, item::{AudioItem, AudioItemResult, InnerAudioItem},
}, },
availability::Availabilities, availability::Availabilities,
content_rating::ContentRatings,
date::Date, date::Date,
error::{MetadataError, RequestError}, error::{MetadataError, RequestError},
image::Images, image::Images,
@ -48,6 +49,8 @@ pub struct Episode {
pub external_url: String, pub external_url: String,
pub episode_type: EpisodeType, pub episode_type: EpisodeType,
pub has_music_and_talk: bool, pub has_music_and_talk: bool,
pub content_rating: ContentRatings,
pub is_audiobook_chapter: bool,
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -125,6 +128,8 @@ impl TryFrom<&<Self as Metadata>::Message> for Episode {
external_url: episode.get_external_url().to_owned(), external_url: episode.get_external_url().to_owned(),
episode_type: episode.get_field_type(), episode_type: episode.get_field_type(),
has_music_and_talk: episode.get_music_and_talk(), has_music_and_talk: episode.get_music_and_talk(),
content_rating: episode.get_content_rating().into(),
is_audiobook_chapter: episode.get_is_audiobook_chapter(),
}) })
} }
} }

View file

@ -9,6 +9,8 @@ use super::attribute::{PlaylistAttributes, PlaylistItemAttributes};
use librespot_core::spotify_id::SpotifyId; use librespot_core::spotify_id::SpotifyId;
use librespot_protocol as protocol; use librespot_protocol as protocol;
use super::permission::Capabilities;
use protocol::playlist4_external::Item as PlaylistItemMessage; use protocol::playlist4_external::Item as PlaylistItemMessage;
use protocol::playlist4_external::ListItems as PlaylistItemsMessage; use protocol::playlist4_external::ListItems as PlaylistItemsMessage;
use protocol::playlist4_external::MetaItem as PlaylistMetaItemMessage; use protocol::playlist4_external::MetaItem as PlaylistMetaItemMessage;
@ -44,6 +46,8 @@ pub struct PlaylistMetaItem {
pub length: i32, pub length: i32,
pub timestamp: Date, pub timestamp: Date,
pub owner_username: String, pub owner_username: String,
pub has_abuse_reporting: bool,
pub capabilities: Capabilities,
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -89,6 +93,8 @@ impl TryFrom<&PlaylistMetaItemMessage> for PlaylistMetaItem {
length: item.get_length(), length: item.get_length(),
timestamp: item.get_timestamp().try_into()?, timestamp: item.get_timestamp().try_into()?,
owner_username: item.get_owner_username().to_owned(), owner_username: item.get_owner_username().to_owned(),
has_abuse_reporting: item.get_abuse_reporting_enabled(),
capabilities: item.get_capabilities().into(),
}) })
} }
} }

View file

@ -8,16 +8,31 @@ use crate::{
date::Date, date::Date,
error::MetadataError, error::MetadataError,
request::{MercuryRequest, RequestResult}, request::{MercuryRequest, RequestResult},
util::try_from_repeated_message, util::{from_repeated_enum, try_from_repeated_message},
Metadata, Metadata,
}; };
use super::{attribute::PlaylistAttributes, diff::PlaylistDiff, item::PlaylistItemList}; use super::{
attribute::PlaylistAttributes, diff::PlaylistDiff, item::PlaylistItemList,
permission::Capabilities,
};
use librespot_core::session::Session; use librespot_core::session::Session;
use librespot_core::spotify_id::{NamedSpotifyId, SpotifyId}; use librespot_core::spotify_id::{NamedSpotifyId, SpotifyId};
use librespot_protocol as protocol; use librespot_protocol as protocol;
use protocol::playlist4_external::GeoblockBlockingType as Geoblock;
#[derive(Debug, Clone)]
pub struct Geoblocks(Vec<Geoblock>);
impl Deref for Geoblocks {
type Target = Vec<Geoblock>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct Playlist { pub struct Playlist {
pub id: NamedSpotifyId, pub id: NamedSpotifyId,
@ -33,6 +48,8 @@ pub struct Playlist {
pub nonces: Vec<i64>, pub nonces: Vec<i64>,
pub timestamp: Date, pub timestamp: Date,
pub has_abuse_reporting: bool, pub has_abuse_reporting: bool,
pub capabilities: Capabilities,
pub geoblocks: Geoblocks,
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -70,6 +87,8 @@ pub struct SelectedListContent {
pub timestamp: Date, pub timestamp: Date,
pub owner_username: String, pub owner_username: String,
pub has_abuse_reporting: bool, pub has_abuse_reporting: bool,
pub capabilities: Capabilities,
pub geoblocks: Geoblocks,
} }
impl Playlist { impl Playlist {
@ -153,6 +172,8 @@ impl Metadata for Playlist {
nonces: playlist.nonces, nonces: playlist.nonces,
timestamp: playlist.timestamp, timestamp: playlist.timestamp,
has_abuse_reporting: playlist.has_abuse_reporting, has_abuse_reporting: playlist.has_abuse_reporting,
capabilities: playlist.capabilities,
geoblocks: playlist.geoblocks,
}) })
} }
} }
@ -194,8 +215,11 @@ impl TryFrom<&<Playlist as Metadata>::Message> for SelectedListContent {
timestamp: playlist.get_timestamp().try_into()?, timestamp: playlist.get_timestamp().try_into()?,
owner_username: playlist.get_owner_username().to_owned(), owner_username: playlist.get_owner_username().to_owned(),
has_abuse_reporting: playlist.get_abuse_reporting_enabled(), has_abuse_reporting: playlist.get_abuse_reporting_enabled(),
capabilities: playlist.get_capabilities().into(),
geoblocks: playlist.get_geoblock().into(),
}) })
} }
} }
from_repeated_enum!(Geoblock, Geoblocks);
try_from_repeated_message!(Vec<u8>, Playlists); try_from_repeated_message!(Vec<u8>, Playlists);

View file

@ -4,6 +4,7 @@ pub mod diff;
pub mod item; pub mod item;
pub mod list; pub mod list;
pub mod operation; pub mod operation;
pub mod permission;
pub use annotation::PlaylistAnnotation; pub use annotation::PlaylistAnnotation;
pub use list::Playlist; pub use list::Playlist;

View file

@ -0,0 +1,44 @@
use std::fmt::Debug;
use std::ops::Deref;
use crate::util::from_repeated_enum;
use librespot_protocol as protocol;
use protocol::playlist_permission::Capabilities as CapabilitiesMessage;
use protocol::playlist_permission::PermissionLevel;
#[derive(Debug, Clone)]
pub struct Capabilities {
pub can_view: bool,
pub can_administrate_permissions: bool,
pub grantable_levels: PermissionLevels,
pub can_edit_metadata: bool,
pub can_edit_items: bool,
pub can_cancel_membership: bool,
}
#[derive(Debug, Clone)]
pub struct PermissionLevels(pub Vec<PermissionLevel>);
impl Deref for PermissionLevels {
type Target = Vec<PermissionLevel>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<&CapabilitiesMessage> for Capabilities {
fn from(playlist: &CapabilitiesMessage) -> Self {
Self {
can_view: playlist.get_can_view(),
can_administrate_permissions: playlist.get_can_administrate_permissions(),
grantable_levels: playlist.get_grantable_level().into(),
can_edit_metadata: playlist.get_can_edit_metadata(),
can_edit_items: playlist.get_can_edit_items(),
can_cancel_membership: playlist.get_can_cancel_membership(),
}
}
}
from_repeated_enum!(PermissionLevel, PermissionLevels);

View file

@ -31,6 +31,7 @@ pub struct Show {
pub availability: Availabilities, pub availability: Availabilities,
pub trailer_uri: SpotifyId, pub trailer_uri: SpotifyId,
pub has_music_and_talk: bool, pub has_music_and_talk: bool,
pub is_audiobook: bool,
} }
#[async_trait] #[async_trait]
@ -70,6 +71,7 @@ impl TryFrom<&<Self as Metadata>::Message> for Show {
availability: show.get_availability().into(), availability: show.get_availability().into(),
trailer_uri: SpotifyId::from_uri(show.get_trailer_uri())?, trailer_uri: SpotifyId::from_uri(show.get_trailer_uri())?,
has_music_and_talk: show.get_music_and_talk(), has_music_and_talk: show.get_music_and_talk(),
is_audiobook: show.get_is_audiobook(),
}) })
} }
} }

View file

@ -24,11 +24,13 @@ fn compile() {
proto_dir.join("metadata.proto"), proto_dir.join("metadata.proto"),
proto_dir.join("player.proto"), proto_dir.join("player.proto"),
proto_dir.join("playlist_annotate3.proto"), proto_dir.join("playlist_annotate3.proto"),
proto_dir.join("playlist_permission.proto"),
proto_dir.join("playlist4_external.proto"), proto_dir.join("playlist4_external.proto"),
// TODO: remove these legacy protobufs when we are on the new API completely // TODO: remove these legacy protobufs when we are on the new API completely
proto_dir.join("authentication.proto"), proto_dir.join("authentication.proto"),
proto_dir.join("canvaz.proto"), proto_dir.join("canvaz.proto"),
proto_dir.join("canvaz-meta.proto"), proto_dir.join("canvaz-meta.proto"),
proto_dir.join("explicit_content_pubsub.proto"),
proto_dir.join("keyexchange.proto"), proto_dir.join("keyexchange.proto"),
proto_dir.join("mercury.proto"), proto_dir.join("mercury.proto"),
proto_dir.join("pubsub.proto"), proto_dir.join("pubsub.proto"),

View file

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AdContext {
optional string preceding_content_uri = 1;
optional string preceding_playback_id = 2;
optional int32 preceding_end_position = 3;
repeated string ad_ids = 4;
optional string ad_request_id = 5;
optional string succeeding_content_uri = 6;
optional string succeeding_playback_id = 7;
optional int32 succeeding_start_position = 8;
optional int32 preceding_duration = 9;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -24,4 +24,5 @@ message AdEvent {
optional int32 duration = 15; optional int32 duration = 15;
optional bool in_focus = 16; optional bool in_focus = 16;
optional float volume = 17; optional float volume = 17;
optional string product_name = 18;
} }

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -13,4 +13,7 @@ message CacheError {
optional bytes file_id = 4; optional bytes file_id = 4;
optional int64 num_errors = 5; optional int64 num_errors = 5;
optional string cache_path = 6; optional string cache_path = 6;
optional int64 size = 7;
optional int64 range_start = 8;
optional int64 range_end = 9;
} }

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -8,6 +8,8 @@ option optimize_for = CODE_SIZE;
message CacheReport { message CacheReport {
optional bytes cache_id = 1; optional bytes cache_id = 1;
optional string cache_path = 21;
optional string volatile_path = 22;
optional int64 max_cache_size = 2; optional int64 max_cache_size = 2;
optional int64 free_space = 3; optional int64 free_space = 3;
optional int64 total_space = 4; optional int64 total_space = 4;

View file

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectionStateChange {
optional string type = 1;
optional string old = 2;
optional string new = 3;
}

View file

@ -0,0 +1,106 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopDeviceInformation {
optional string os_platform = 1;
optional string os_version = 2;
optional string computer_manufacturer = 3;
optional string mac_computer_model = 4;
optional string mac_computer_model_family = 5;
optional bool computer_has_internal_battery = 6;
optional bool computer_is_currently_running_on_battery_power = 7;
optional string mac_cpu_product_name = 8;
optional int64 mac_cpu_family_code = 9;
optional int64 cpu_num_physical_cores = 10;
optional int64 cpu_num_logical_cores = 11;
optional int64 cpu_clock_frequency_herz = 12;
optional int64 cpu_level_1_cache_size_bytes = 13;
optional int64 cpu_level_2_cache_size_bytes = 14;
optional int64 cpu_level_3_cache_size_bytes = 15;
optional bool cpu_is_64_bit_capable = 16;
optional int64 computer_ram_size_bytes = 17;
optional int64 computer_ram_speed_herz = 18;
optional int64 num_graphics_cards = 19;
optional int64 num_connected_screens = 20;
optional string app_screen_model_name = 21;
optional double app_screen_width_logical_points = 22;
optional double app_screen_height_logical_points = 23;
optional double mac_app_screen_scale_factor = 24;
optional double app_screen_physical_size_inches = 25;
optional int64 app_screen_bits_per_pixel = 26;
optional bool app_screen_supports_dci_p3_color_gamut = 27;
optional bool app_screen_is_built_in = 28;
optional string app_screen_graphics_card_model = 29;
optional int64 app_screen_graphics_card_vram_size_bytes = 30;
optional bool mac_app_screen_currently_contains_the_dock = 31;
optional bool mac_app_screen_currently_contains_active_menu_bar = 32;
optional bool boot_disk_is_known_ssd = 33;
optional string mac_boot_disk_connection_type = 34;
optional int64 boot_disk_capacity_bytes = 35;
optional int64 boot_disk_free_space_bytes = 36;
optional bool application_disk_is_same_as_boot_disk = 37;
optional bool application_disk_is_known_ssd = 38;
optional string mac_application_disk_connection_type = 39;
optional int64 application_disk_capacity_bytes = 40;
optional int64 application_disk_free_space_bytes = 41;
optional bool application_cache_disk_is_same_as_boot_disk = 42;
optional bool application_cache_disk_is_known_ssd = 43;
optional string mac_application_cache_disk_connection_type = 44;
optional int64 application_cache_disk_capacity_bytes = 45;
optional int64 application_cache_disk_free_space_bytes = 46;
optional bool has_pointing_device = 47;
optional bool has_builtin_pointing_device = 48;
optional bool has_touchpad = 49;
optional bool has_keyboard = 50;
optional bool has_builtin_keyboard = 51;
optional bool mac_has_touch_bar = 52;
optional bool has_touch_screen = 53;
optional bool has_pen_input = 54;
optional bool has_game_controller = 55;
optional bool has_bluetooth_support = 56;
optional int64 bluetooth_link_manager_version = 57;
optional string bluetooth_version_string = 58;
optional int64 num_audio_output_devices = 59;
optional string default_audio_output_device_name = 60;
optional string default_audio_output_device_manufacturer = 61;
optional double default_audio_output_device_current_sample_rate = 62;
optional int64 default_audio_output_device_current_bit_depth = 63;
optional int64 default_audio_output_device_current_buffer_size = 64;
optional int64 default_audio_output_device_current_num_channels = 65;
optional double default_audio_output_device_maximum_sample_rate = 66;
optional int64 default_audio_output_device_maximum_bit_depth = 67;
optional int64 default_audio_output_device_maximum_num_channels = 68;
optional bool default_audio_output_device_is_builtin = 69;
optional bool default_audio_output_device_is_virtual = 70;
optional string mac_default_audio_output_device_transport_type = 71;
optional string mac_default_audio_output_device_terminal_type = 72;
optional int64 num_video_capture_devices = 73;
optional string default_video_capture_device_manufacturer = 74;
optional string default_video_capture_device_model = 75;
optional string default_video_capture_device_name = 76;
optional int64 default_video_capture_device_image_width = 77;
optional int64 default_video_capture_device_image_height = 78;
optional string mac_default_video_capture_device_transport_type = 79;
optional bool default_video_capture_device_is_builtin = 80;
optional int64 num_active_network_interfaces = 81;
optional string mac_main_network_interface_name = 82;
optional string mac_main_network_interface_type = 83;
optional bool main_network_interface_supports_ipv4 = 84;
optional bool main_network_interface_supports_ipv6 = 85;
optional string main_network_interface_hardware_vendor = 86;
optional string main_network_interface_hardware_model = 87;
optional int64 main_network_interface_medium_speed_bps = 88;
optional int64 main_network_interface_link_speed_bps = 89;
optional double system_up_time_including_sleep_seconds = 90;
optional double system_up_time_awake_seconds = 91;
optional double app_up_time_including_sleep_seconds = 92;
optional string system_user_preferred_language_code = 93;
optional string system_user_preferred_locale = 94;
optional string mac_app_system_localization_language = 95;
optional string app_localization_language = 96;
}

View file

@ -0,0 +1,88 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopPerformanceIssue {
optional string event_type = 1;
optional bool is_continuation_event = 2;
optional double sample_time_interval_seconds = 3;
optional string computer_platform = 4;
optional double last_seen_main_thread_latency_seconds = 5;
optional double last_seen_core_thread_latency_seconds = 6;
optional double total_spotify_processes_cpu_load_percent = 7;
optional double main_process_cpu_load_percent = 8;
optional int64 mac_main_process_vm_size_bytes = 9;
optional int64 mac_main_process_resident_size_bytes = 10;
optional double mac_main_process_num_page_faults_per_second = 11;
optional double mac_main_process_num_pageins_per_second = 12;
optional double mac_main_process_num_cow_faults_per_second = 13;
optional double mac_main_process_num_context_switches_per_second = 14;
optional int64 main_process_num_total_threads = 15;
optional int64 main_process_num_running_threads = 16;
optional double renderer_process_cpu_load_percent = 17;
optional int64 mac_renderer_process_vm_size_bytes = 18;
optional int64 mac_renderer_process_resident_size_bytes = 19;
optional double mac_renderer_process_num_page_faults_per_second = 20;
optional double mac_renderer_process_num_pageins_per_second = 21;
optional double mac_renderer_process_num_cow_faults_per_second = 22;
optional double mac_renderer_process_num_context_switches_per_second = 23;
optional int64 renderer_process_num_total_threads = 24;
optional int64 renderer_process_num_running_threads = 25;
optional double system_total_cpu_load_percent = 26;
optional int64 mac_system_total_free_memory_size_bytes = 27;
optional int64 mac_system_total_active_memory_size_bytes = 28;
optional int64 mac_system_total_inactive_memory_size_bytes = 29;
optional int64 mac_system_total_wired_memory_size_bytes = 30;
optional int64 mac_system_total_compressed_memory_size_bytes = 31;
optional double mac_system_current_num_pageins_per_second = 32;
optional double mac_system_current_num_pageouts_per_second = 33;
optional double mac_system_current_num_page_faults_per_second = 34;
optional double mac_system_current_num_cow_faults_per_second = 35;
optional int64 system_current_num_total_processes = 36;
optional int64 system_current_num_total_threads = 37;
optional int64 computer_boot_disk_free_space_bytes = 38;
optional int64 application_disk_free_space_bytes = 39;
optional int64 application_cache_disk_free_space_bytes = 40;
optional bool computer_is_currently_running_on_battery_power = 41;
optional double computer_remaining_battery_capacity_percent = 42;
optional double computer_estimated_remaining_battery_time_seconds = 43;
optional int64 mac_computer_num_available_logical_cpu_cores_due_to_power_management = 44;
optional double mac_computer_current_processor_speed_percent_due_to_power_management = 45;
optional double mac_computer_current_cpu_time_limit_percent_due_to_power_management = 46;
optional double app_screen_width_points = 47;
optional double app_screen_height_points = 48;
optional double mac_app_screen_scale_factor = 49;
optional int64 app_screen_bits_per_pixel = 50;
optional bool app_screen_supports_dci_p3_color_gamut = 51;
optional bool app_screen_is_built_in = 52;
optional string app_screen_graphics_card_model = 53;
optional int64 app_screen_graphics_card_vram_size_bytes = 54;
optional double app_window_width_points = 55;
optional double app_window_height_points = 56;
optional double app_window_percentage_on_screen = 57;
optional double app_window_percentage_non_obscured = 58;
optional double system_up_time_including_sleep_seconds = 59;
optional double system_up_time_awake_seconds = 60;
optional double app_up_time_including_sleep_seconds = 61;
optional double computer_time_since_last_sleep_start_seconds = 62;
optional double computer_time_since_last_sleep_end_seconds = 63;
optional bool mac_system_user_session_is_currently_active = 64;
optional double mac_system_time_since_last_user_session_deactivation_seconds = 65;
optional double mac_system_time_since_last_user_session_reactivation_seconds = 66;
optional bool application_is_currently_active = 67;
optional bool application_window_is_currently_visible = 68;
optional bool mac_application_window_is_currently_minimized = 69;
optional bool application_window_is_currently_fullscreen = 70;
optional bool mac_application_is_currently_hidden = 71;
optional bool application_user_is_currently_logged_in = 72;
optional double application_time_since_last_user_log_in = 73;
optional double application_time_since_last_user_log_out = 74;
optional bool application_is_playing_now = 75;
optional string application_currently_playing_type = 76;
optional string application_currently_playing_uri = 77;
optional string application_currently_playing_ad_id = 78;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -50,4 +50,6 @@ message Download {
optional int64 reqs_from_cdn = 41; optional int64 reqs_from_cdn = 41;
optional int64 error_from_cdn = 42; optional int64 error_from_cdn = 42;
optional string file_origin = 43; optional string file_origin = 43;
optional string initial_disk_state = 44;
optional bool locked = 45;
} }

View file

@ -0,0 +1,23 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message EventSenderStats2NonAuth {
repeated bytes sequence_ids = 1;
repeated string event_names = 2;
repeated int32 loss_stats_num_entries_per_sequence_id = 3;
repeated int32 loss_stats_event_name_index = 4;
repeated int64 loss_stats_storage_sizes = 5;
repeated int64 loss_stats_sequence_number_mins = 6;
repeated int64 loss_stats_sequence_number_nexts = 7;
repeated int32 ratelimiter_stats_event_name_index = 8;
repeated int64 ratelimiter_stats_drop_count = 9;
repeated int32 drop_list_num_entries_per_sequence_id = 10;
repeated int32 drop_list_event_name_index = 11;
repeated int64 drop_list_counts_total = 12;
repeated int64 drop_list_counts_unreported = 13;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -23,4 +23,5 @@ message HeadFileDownload {
optional int64 bytes_from_cache = 14; optional int64 bytes_from_cache = 14;
optional string socket_reuse = 15; optional string socket_reuse = 15;
optional string request_type = 16; optional string request_type = 16;
optional string initial_disk_state = 17;
} }

View file

@ -0,0 +1,62 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message LegacyEndSong {
optional int64 sequence_number = 1;
optional string sequence_id = 2;
optional bytes playback_id = 3;
optional bytes parent_playback_id = 4;
optional string source_start = 5;
optional string reason_start = 6;
optional string source_end = 7;
optional string reason_end = 8;
optional int64 bytes_played = 9;
optional int64 bytes_in_song = 10;
optional int64 ms_played = 11;
optional int64 ms_nominal_played = 12;
optional int64 ms_total_est = 13;
optional int64 ms_rcv_latency = 14;
optional int64 ms_overlapping = 15;
optional int64 n_seekback = 16;
optional int64 ms_seekback = 17;
optional int64 n_seekfwd = 18;
optional int64 ms_seekfwd = 19;
optional int64 ms_latency = 20;
optional int64 ui_latency = 21;
optional string player_id = 22;
optional int64 ms_key_latency = 23;
optional bool offline_key = 24;
optional bool cached_key = 25;
optional int64 n_stutter = 26;
optional int64 p_lowbuffer = 27;
optional bool shuffle = 28;
optional int64 max_continous = 29;
optional int64 union_played = 30;
optional int64 artificial_delay = 31;
optional int64 bitrate = 32;
optional string play_context = 33;
optional string audiocodec = 34;
optional string play_track = 35;
optional string display_track = 36;
optional bool offline = 37;
optional int64 offline_timestamp = 38;
optional bool incognito_mode = 39;
optional string provider = 40;
optional string referer = 41;
optional string referrer_version = 42;
optional string referrer_vendor = 43;
optional string transition = 44;
optional string streaming_rule = 45;
optional string gaia_dev_id = 46;
optional string accepted_tc = 47;
optional string promotion_type = 48;
optional string page_instance_id = 49;
optional string interaction_id = 50;
optional string parent_play_track = 51;
optional int64 core_version = 52;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -9,4 +9,5 @@ option optimize_for = CODE_SIZE;
message LocalFilesError { message LocalFilesError {
optional int64 error_code = 1; optional int64 error_code = 1;
optional string context = 2; optional string context = 2;
optional string info = 3;
} }

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -12,4 +12,5 @@ message LocalFilesImport {
optional int64 failed_tracks = 3; optional int64 failed_tracks = 3;
optional int64 matched_tracks = 4; optional int64 matched_tracks = 4;
optional string source = 5; optional string source = 5;
optional int64 invalid_tracks = 6;
} }

View file

@ -1,20 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message MercuryCacheReport {
optional int64 mercury_cache_version = 1;
optional int64 num_items = 2;
optional int64 num_locked_items = 3;
optional int64 num_expired_items = 4;
optional int64 num_lock_ids = 5;
optional int64 num_expired_lock_ids = 6;
optional int64 max_size = 7;
optional int64 total_size = 8;
optional int64 used_size = 9;
optional int64 free_size = 10;
}

View file

@ -1,11 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ModuleDebug {
optional string blob = 1;
}

View file

@ -1,11 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message OfflineUserPwdLoginNonAuth {
optional string connection_type = 1;
}

View file

@ -0,0 +1,52 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message RawCoreStream {
optional bytes playback_id = 1;
optional bytes parent_playback_id = 2;
optional string video_session_id = 3;
optional bytes media_id = 4;
optional string media_type = 5;
optional string feature_identifier = 6;
optional string feature_version = 7;
optional string view_uri = 8;
optional string source_start = 9;
optional string reason_start = 10;
optional string source_end = 11;
optional string reason_end = 12;
optional int64 playback_start_time = 13;
optional int32 ms_played = 14;
optional int32 ms_played_nominal = 15;
optional int32 ms_played_overlapping = 16;
optional int32 ms_played_video = 17;
optional int32 ms_played_background = 18;
optional int32 ms_played_fullscreen = 19;
optional bool live = 20;
optional bool shuffle = 21;
optional string audio_format = 22;
optional string play_context = 23;
optional string content_uri = 24;
optional string displayed_content_uri = 25;
optional bool content_is_downloaded = 26;
optional bool incognito_mode = 27;
optional string provider = 28;
optional string referrer = 29;
optional string referrer_version = 30;
optional string referrer_vendor = 31;
optional string streaming_rule = 32;
optional string connect_controller_device_id = 33;
optional string page_instance_id = 34;
optional string interaction_id = 35;
optional string parent_content_uri = 36;
optional int64 core_version = 37;
optional string core_bundle = 38;
optional bool is_assumed_premium = 39;
optional int32 ms_played_external = 40;
optional string local_content_uri = 41;
optional bool client_offline_at_stream_start = 42;
}

View file

@ -1,14 +0,0 @@
// Extracted from: Spotify 1.1.33.569 (Windows)
syntax = "proto3";
package spotify.anchor.extension;
option objc_class_prefix = "SPT";
option java_multiple_files = true;
option java_outer_classname = "AnchorExtensionProviderProto";
option java_package = "com.spotify.anchorextensionprovider.proto";
message PodcastCounter {
uint32 counter = 1;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // No longer present in Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -39,11 +39,6 @@ message RemoveDeviceRequest {
bool is_force_remove = 2; bool is_force_remove = 2;
} }
message RemoveDeviceResponse {
bool pending = 1;
Device device = 2;
}
message OfflineEnableDeviceResponse { message OfflineEnableDeviceResponse {
Restrictions restrictions = 1; Restrictions restrictions = 1;
} }

View file

@ -0,0 +1,17 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.offline.proto;
option optimize_for = CODE_SIZE;
message AppStateRequest {
AppState state = 1;
}
enum AppState {
UNKNOWN = 0;
BACKGROUND = 1;
FOREGROUND = 2;
}

View file

@ -0,0 +1,53 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.autodownloadservice.v1.proto;
import "google/protobuf/timestamp.proto";
message Identifiers {
string device_id = 1;
string cache_id = 2;
}
message Settings {
oneof episode_download {
bool most_recent_no_limit = 1;
int32 most_recent_count = 2;
}
}
message SetSettingsRequest {
Identifiers identifiers = 1;
Settings settings = 2;
google.protobuf.Timestamp client_timestamp = 3;
}
message GetSettingsRequest {
Identifiers identifiers = 1;
}
message GetSettingsResponse {
Settings settings = 1;
}
message ShowRequest {
Identifiers identifiers = 1;
string show_uri = 2;
google.protobuf.Timestamp client_timestamp = 3;
}
message ReplaceIdentifiersRequest {
Identifiers old_identifiers = 1;
Identifiers new_identifiers = 2;
}
message PendingItem {
google.protobuf.Timestamp client_timestamp = 1;
oneof pending {
bool is_removed = 2;
Settings settings = 3;
}
}

View file

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.autodownload_esperanto.proto;
option objc_class_prefix = "ESP";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "spotify.autodownload.esperanto.proto";
message AutoDownloadGlobalConfig {
uint32 number_of_episodes = 1;
}
message AutoDownloadShowConfig {
string uri = 1;
bool active = 2;
}

View file

@ -0,0 +1,22 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.autodownload_esperanto.proto;
import "autodownload_config_common.proto";
option objc_class_prefix = "ESP";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "spotify.autodownload.esperanto.proto";
message AutoDownloadGetRequest {
repeated string uri = 1;
}
message AutoDownloadGetResponse {
AutoDownloadGlobalConfig global = 1;
repeated AutoDownloadShowConfig show = 2;
string error = 99;
}

View file

@ -0,0 +1,23 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.autodownload_esperanto.proto;
import "autodownload_config_common.proto";
option objc_class_prefix = "ESP";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "spotify.autodownload.esperanto.proto";
message AutoDownloadSetRequest {
oneof config {
AutoDownloadGlobalConfig global = 1;
AutoDownloadShowConfig show = 2;
}
}
message AutoDownloadSetResponse {
string error = 99;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -6,8 +6,21 @@ package spotify.automix.proto;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message AutomixConfig {
TransitionType transition_type = 1;
string fade_out_curves = 2;
string fade_in_curves = 3;
int32 beats_min = 4;
int32 beats_max = 5;
int32 fade_duration_max_ms = 6;
}
message AutomixMode { message AutomixMode {
AutomixStyle style = 1; AutomixStyle style = 1;
AutomixConfig config = 2;
AutomixConfig ml_config = 3;
AutomixConfig shuffle_config = 4;
AutomixConfig shuffle_ml_config = 5;
} }
enum AutomixStyle { enum AutomixStyle {
@ -18,4 +31,11 @@ enum AutomixStyle {
RADIO_AIRBAG = 4; RADIO_AIRBAG = 4;
SLEEP = 5; SLEEP = 5;
MIXED = 6; MIXED = 6;
CUSTOM = 7;
}
enum TransitionType {
CUEPOINTS = 0;
CROSSFADE = 1;
GAPLESS = 2;
} }

View file

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.canvas.proto.storage;
import "canvaz.proto";
option optimize_for = CODE_SIZE;
message CanvasCacheEntry {
string entity_uri = 1;
uint64 expires_on_seconds = 2;
canvaz.cache.EntityCanvazResponse.Canvaz canvas = 3;
}
message CanvasCacheFile {
repeated CanvasCacheEntry entries = 1;
}

View file

@ -1,9 +1,12 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
package com.spotify.canvaz; package spotify.canvaz;
option java_multiple_files = true;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
option java_package = "com.spotify.canvaz"; option java_package = "com.spotify.canvaz.proto";
enum Type { enum Type {
IMAGE = 0; IMAGE = 0;

View file

@ -1,11 +1,14 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
package com.spotify.canvazcache; package spotify.canvaz.cache;
import "canvaz-meta.proto"; import "canvaz-meta.proto";
option java_multiple_files = true;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
option java_package = "com.spotify.canvaz"; option java_package = "com.spotify.canvazcache.proto";
message Artist { message Artist {
string uri = 1; string uri = 1;
@ -19,13 +22,14 @@ message EntityCanvazResponse {
string id = 1; string id = 1;
string url = 2; string url = 2;
string file_id = 3; string file_id = 3;
com.spotify.canvaz.Type type = 4; spotify.canvaz.Type type = 4;
string entity_uri = 5; string entity_uri = 5;
Artist artist = 6; Artist artist = 6;
bool explicit = 7; bool explicit = 7;
string uploaded_by = 8; string uploaded_by = 8;
string etag = 9; string etag = 9;
string canvas_uri = 11; string canvas_uri = 11;
string storylines_id = 12;
} }
int64 ttl_in_seconds = 2; int64 ttl_in_seconds = 2;

View file

@ -0,0 +1,30 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.narration_injection.proto;
import "tts-resolve.proto";
option optimize_for = CODE_SIZE;
service ClientTtsService {
rpc GetTtsUrl(TtsRequest) returns (TtsResponse);
}
message TtsRequest {
ResolveRequest.AudioFormat audio_format = 3;
string language = 4;
ResolveRequest.TtsVoice tts_voice = 5;
ResolveRequest.TtsProvider tts_provider = 6;
int32 sample_rate_hz = 7;
oneof prompt {
string text = 1;
string ssml = 2;
}
}
message TtsResponse {
string url = 1;
}

View file

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.extendedmetadata.config.v1;
option optimize_for = CODE_SIZE;
message ClientConfig {
uint32 log_sampling_rate = 1;
uint32 avg_log_messages_per_minute = 2;
uint32 log_messages_burst_size = 3;
}

View file

@ -1,152 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto3";
package spotify.social_listening.cloud_host;
option objc_class_prefix = "CloudHost";
option optimize_for = CODE_SIZE;
option java_package = "com.spotify.social_listening.cloud_host";
message LookupSessionRequest {
string token = 1;
JoinType join_type = 2;
}
message LookupSessionResponse {
oneof response {
Session session = 1;
ErrorCode error = 2;
}
}
message CreateSessionRequest {
}
message CreateSessionResponse {
oneof response {
Session session = 1;
ErrorCode error = 2;
}
}
message DeleteSessionRequest {
string session_id = 1;
}
message DeleteSessionResponse {
oneof response {
Session session = 1;
ErrorCode error = 2;
}
}
message JoinSessionRequest {
string join_token = 1;
Experience experience = 3;
}
message JoinSessionResponse {
oneof response {
Session session = 1;
ErrorCode error = 2;
}
}
message LeaveSessionRequest {
string session_id = 1;
}
message LeaveSessionResponse {
oneof response {
Session session = 1;
ErrorCode error = 2;
}
}
message GetCurrentSessionRequest {
}
message GetCurrentSessionResponse {
oneof response {
Session session = 1;
ErrorCode error = 2;
}
}
message SessionUpdateRequest {
}
message SessionUpdate {
Session session = 1;
SessionUpdateReason reason = 3;
repeated SessionMember updated_session_members = 4;
}
message SessionUpdateResponse {
oneof response {
SessionUpdate session_update = 1;
ErrorCode error = 2;
}
}
message Session {
int64 timestamp = 1;
string session_id = 2;
string join_session_token = 3;
string join_session_url = 4;
string session_owner_id = 5;
repeated SessionMember session_members = 6;
string join_session_uri = 7;
bool is_session_owner = 8;
}
message SessionMember {
int64 timestamp = 1;
string member_id = 2;
string username = 3;
string display_name = 4;
string image_url = 5;
string large_image_url = 6;
bool current_user = 7;
}
enum JoinType {
NotSpecified = 0;
Scanning = 1;
DeepLinking = 2;
DiscoveredDevice = 3;
Frictionless = 4;
NearbyWifi = 5;
}
enum ErrorCode {
Unknown = 0;
ParseError = 1;
JoinFailed = 1000;
SessionFull = 1001;
FreeUser = 1002;
ScannableError = 1003;
JoinExpiredSession = 1004;
NoExistingSession = 1005;
}
enum Experience {
UNKNOWN = 0;
BEETHOVEN = 1;
BACH = 2;
}
enum SessionUpdateReason {
UNKNOWN_UPDATE_REASON = 0;
NEW_SESSION = 1;
USER_JOINED = 2;
USER_LEFT = 3;
SESSION_DELETED = 4;
YOU_LEFT = 5;
YOU_WERE_KICKED = 6;
YOU_JOINED = 7;
}

View file

@ -1,9 +1,10 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
package spotify.cosmos_util.proto; package spotify.cosmos_util.proto;
option objc_class_prefix = "SPTCosmosUtil";
option java_multiple_files = true; option java_multiple_files = true;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
option java_package = "com.spotify.cosmos.util.proto"; option java_package = "com.spotify.cosmos.util.proto";

View file

@ -0,0 +1,17 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.collection_cosmos.proto;
import "status.proto";
option optimize_for = CODE_SIZE;
message CollectionAddRemoveItemsRequest {
repeated string item = 1;
}
message CollectionAddRemoveItemsResponse {
Status status = 1;
}

View file

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.collection_cosmos.proto;
import "status.proto";
option optimize_for = CODE_SIZE;
message CollectionBanRequest {
string context_source = 1;
repeated string uri = 2;
}
message CollectionBanResponse {
Status status = 1;
repeated bool success = 2;
}

View file

@ -0,0 +1,38 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.collection_cosmos.proto;
import "policy/artist_decoration_policy.proto";
import "policy/album_decoration_policy.proto";
import "policy/track_decoration_policy.proto";
option optimize_for = CODE_SIZE;
message CollectionArtistDecorationPolicy {
cosmos_util.proto.ArtistCollectionDecorationPolicy collection_policy = 1;
cosmos_util.proto.ArtistSyncDecorationPolicy sync_policy = 2;
cosmos_util.proto.ArtistDecorationPolicy artist_policy = 3;
bool decorated = 4;
}
message CollectionAlbumDecorationPolicy {
bool decorated = 1;
bool album_type = 2;
CollectionArtistDecorationPolicy artist_policy = 3;
CollectionArtistDecorationPolicy artists_policy = 4;
cosmos_util.proto.AlbumCollectionDecorationPolicy collection_policy = 5;
cosmos_util.proto.AlbumSyncDecorationPolicy sync_policy = 6;
cosmos_util.proto.AlbumDecorationPolicy album_policy = 7;
}
message CollectionTrackDecorationPolicy {
cosmos_util.proto.TrackCollectionDecorationPolicy collection_policy = 1;
cosmos_util.proto.TrackSyncDecorationPolicy sync_policy = 2;
cosmos_util.proto.TrackDecorationPolicy track_policy = 3;
cosmos_util.proto.TrackPlayedStateDecorationPolicy played_state_policy = 4;
CollectionAlbumDecorationPolicy album_policy = 5;
cosmos_util.proto.ArtistDecorationPolicy artist_policy = 6;
bool decorated = 7;
}

View file

@ -0,0 +1,33 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.collection_cosmos.proto;
import "policy/track_decoration_policy.proto";
import "policy/artist_decoration_policy.proto";
import "metadata/track_metadata.proto";
import "metadata/artist_metadata.proto";
import "status.proto";
option objc_class_prefix = "SPTCollectionCosmos";
option optimize_for = CODE_SIZE;
message CollectionGetBansRequest {
cosmos_util.proto.TrackDecorationPolicy track_policy = 1;
cosmos_util.proto.ArtistDecorationPolicy artist_policy = 2;
string sort = 3;
bool timestamp = 4;
uint32 update_throttling = 5;
}
message Item {
uint32 add_time = 1;
cosmos_util.proto.TrackMetadata track_metadata = 2;
cosmos_util.proto.ArtistMetadata artist_metadata = 3;
}
message CollectionGetBansResponse {
Status status = 1;
repeated Item item = 2;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -12,7 +12,7 @@ message IndexRepairerState {
} }
message CollectionTrackEntry { message CollectionTrackEntry {
string track_uri = 1; string uri = 1;
string track_name = 2; string track_name = 2;
string album_uri = 3; string album_uri = 3;
string album_name = 4; string album_name = 4;
@ -23,18 +23,16 @@ message CollectionTrackEntry {
int64 add_time = 9; int64 add_time = 9;
} }
message CollectionAlbumEntry { message CollectionAlbumLikeEntry {
string album_uri = 1; string uri = 1;
string album_name = 2; string album_name = 2;
string album_image_uri = 3; string creator_uri = 4;
string artist_uri = 4; string creator_name = 5;
string artist_name = 5;
int64 add_time = 6; int64 add_time = 6;
} }
message CollectionMetadataMigratorState { message CollectionArtistEntry {
bytes last_checked_key = 1; string uri = 1;
bool migrated_tracks = 2; string artist_name = 2;
bool migrated_albums = 3; int64 add_time = 4;
bool migrated_album_tracks = 4;
} }

View file

@ -0,0 +1,48 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.collection_cosmos.proto;
import "metadata/album_metadata.proto";
import "metadata/artist_metadata.proto";
import "metadata/track_metadata.proto";
import "collection/artist_collection_state.proto";
import "collection/album_collection_state.proto";
import "collection/track_collection_state.proto";
import "sync/artist_sync_state.proto";
import "sync/album_sync_state.proto";
import "sync/track_sync_state.proto";
import "played_state/track_played_state.proto";
option optimize_for = CODE_SIZE;
message CollectionTrack {
uint32 index = 1;
uint32 add_time = 2;
cosmos_util.proto.TrackMetadata track_metadata = 3;
cosmos_util.proto.TrackCollectionState track_collection_state = 4;
cosmos_util.proto.TrackPlayState track_play_state = 5;
cosmos_util.proto.TrackSyncState track_sync_state = 6;
bool decorated = 7;
CollectionAlbum album = 8;
string cover = 9;
}
message CollectionAlbum {
uint32 add_time = 1;
cosmos_util.proto.AlbumMetadata album_metadata = 2;
cosmos_util.proto.AlbumCollectionState album_collection_state = 3;
cosmos_util.proto.AlbumSyncState album_sync_state = 4;
bool decorated = 5;
string album_type = 6;
repeated CollectionTrack track = 7;
}
message CollectionArtist {
cosmos_util.proto.ArtistMetadata artist_metadata = 1;
cosmos_util.proto.ArtistCollectionState artist_collection_state = 2;
cosmos_util.proto.ArtistSyncState artist_sync_state = 3;
bool decorated = 4;
repeated CollectionAlbum album = 5;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -6,10 +6,6 @@ package spotify.collection_platform.proto;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message CollectionPlatformSimpleRequest {
CollectionSet set = 1;
}
message CollectionPlatformItemsRequest { message CollectionPlatformItemsRequest {
CollectionSet set = 1; CollectionSet set = 1;
repeated string items = 2; repeated string items = 2;
@ -21,4 +17,5 @@ enum CollectionSet {
BAN = 2; BAN = 2;
LISTENLATER = 3; LISTENLATER = 3;
IGNOREINRECS = 4; IGNOREINRECS = 4;
ENHANCED = 5;
} }

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -10,8 +10,13 @@ message CollectionPlatformSimpleResponse {
string error_msg = 1; string error_msg = 1;
} }
message CollectionPlatformItem {
string uri = 1;
int64 add_time = 2;
}
message CollectionPlatformItemsResponse { message CollectionPlatformItemsResponse {
repeated string items = 1; repeated CollectionPlatformItem items = 1;
} }
message CollectionPlatformContainsResponse { message CollectionPlatformContainsResponse {

View file

@ -1,20 +0,0 @@
// Extracted from: Spotify 1.1.33.569 (Windows)
syntax = "proto2";
package spotify.collection.proto.storage;
import "collection2.proto";
option optimize_for = CODE_SIZE;
message CollectionHeader {
optional bytes etag = 1;
}
message CollectionCache {
optional CollectionHeader header = 1;
optional CollectionItems collection = 2;
optional CollectionItems pending = 3;
optional uint32 collection_item_limit = 4;
}

View file

@ -1,31 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.player.proto;
import "track_instance.proto";
import "track_instantiator.proto";
option optimize_for = CODE_SIZE;
message InjectionSegment {
required string track_uri = 1;
optional int64 start = 2;
optional int64 stop = 3;
required int64 duration = 4;
}
message InjectionModel {
required string episode_uri = 1;
required int64 total_duration = 2;
repeated InjectionSegment segments = 3;
}
message CompositeFormatsPrototypeNode {
required string mode = 1;
optional InjectionModel injection_model = 2;
required uint32 index = 3;
required TrackInstantiator instantiator = 4;
optional TrackInstance track = 5;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -87,6 +87,9 @@ message DeviceInfo {
string public_ip = 22; string public_ip = 22;
string license = 23; string license = 23;
bool is_group = 25; bool is_group = 25;
bool is_dynamic_device = 26;
repeated string disallow_playback_reasons = 27;
repeated string disallow_transfer_reasons = 28;
oneof _audio_output_device_info { oneof _audio_output_device_info {
AudioOutputDeviceInfo audio_output_device_info = 24; AudioOutputDeviceInfo audio_output_device_info = 24;
@ -133,8 +136,9 @@ message Capabilities {
bool supports_gzip_pushes = 23; bool supports_gzip_pushes = 23;
bool supports_set_options_command = 25; bool supports_set_options_command = 25;
CapabilitySupportDetails supports_hifi = 26; CapabilitySupportDetails supports_hifi = 26;
string connect_capabilities = 27;
// reserved 1, 4, 24, "supported_contexts", "supports_lossless_audio"; //reserved 1, 4, 24, "supported_contexts", "supports_lossless_audio";
} }
message CapabilitySupportDetails { message CapabilitySupportDetails {

View file

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ApplicationDesktop {
string version_string = 1;
int64 version_code = 2;
}

View file

@ -1,14 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto3";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message Core {
string os_name = 1;
string os_version = 2;
string device_id = 3;
string client_version = 4;
}

View file

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DeviceDesktop {
string platform_type = 1;
string device_manufacturer = 2;
string device_model = 3;
string device_id = 4;
string os_version = 5;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -20,4 +20,5 @@ message ContextNode {
optional ContextProcessor context_processor = 6; optional ContextProcessor context_processor = 6;
optional string session_id = 7; optional string session_id = 7;
optional sint32 iteration = 8; optional sint32 iteration = 8;
optional bool pending_pause = 9;
} }

View file

@ -1,12 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.player.proto;
option optimize_for = CODE_SIZE;
message ContextPlayerNg {
map<string, bytes> player_model = 1;
optional uint64 playback_position = 2;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -8,4 +8,5 @@ option optimize_for = CODE_SIZE;
message Sdk { message Sdk {
string version_name = 1; string version_name = 1;
string type = 2;
} }

View file

@ -1,11 +0,0 @@
// Extracted from: Spotify 1.1.33.569 (Windows)
syntax = "proto3";
package spotify.remote_config.proto;
option optimize_for = CODE_SIZE;
message CoreConfigurationAppliedNonAuth {
string configuration_assignment_id = 1;
}

View file

@ -1,9 +1,10 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
package spotify.collection_cosmos.changes_request.proto; package spotify.collection_cosmos.changes_request.proto;
option objc_class_prefix = "SPTCollectionCosmosChanges";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Response { message Response {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -22,6 +22,7 @@ import "metadata/episode_metadata.proto";
import "metadata/show_metadata.proto"; import "metadata/show_metadata.proto";
import "metadata/track_metadata.proto"; import "metadata/track_metadata.proto";
option objc_class_prefix = "SPTCollectionCosmosDecorate";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Album { message Album {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -8,6 +8,7 @@ import "collection/album_collection_state.proto";
import "sync/album_sync_state.proto"; import "sync/album_sync_state.proto";
import "metadata/album_metadata.proto"; import "metadata/album_metadata.proto";
option objc_class_prefix = "SPTCollectionCosmosAlbumList";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Item { message Item {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -8,6 +8,7 @@ import "collection/artist_collection_state.proto";
import "sync/artist_sync_state.proto"; import "sync/artist_sync_state.proto";
import "metadata/artist_metadata.proto"; import "metadata/artist_metadata.proto";
option objc_class_prefix = "SPTCollectionCosmosArtistList";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Item { message Item {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -9,6 +9,7 @@ import "played_state/episode_played_state.proto";
import "sync/episode_sync_state.proto"; import "sync/episode_sync_state.proto";
import "metadata/episode_metadata.proto"; import "metadata/episode_metadata.proto";
option objc_class_prefix = "SPTCollectionCosmosEpisodeList";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Item { message Item {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -8,6 +8,7 @@ import "collection/show_collection_state.proto";
import "played_state/show_played_state.proto"; import "played_state/show_played_state.proto";
import "metadata/show_metadata.proto"; import "metadata/show_metadata.proto";
option objc_class_prefix = "SPTCollectionCosmosShowList";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Item { message Item {

View file

@ -1,9 +1,10 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
package spotify.collection_cosmos.tags_info_request.proto; package spotify.collection_cosmos.tags_info_request.proto;
option objc_class_prefix = "SPTCollectionCosmosTagsInfo";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Response { message Response {

View file

@ -1,9 +1,10 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
package spotify.collection_cosmos.proto; package spotify.collection_cosmos.proto;
option objc_class_prefix = "SPTCollectionCosmos";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message TrackListMetadata { message TrackListMetadata {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -9,6 +9,7 @@ import "played_state/track_played_state.proto";
import "sync/track_sync_state.proto"; import "sync/track_sync_state.proto";
import "metadata/track_metadata.proto"; import "metadata/track_metadata.proto";
option objc_class_prefix = "SPTCollectionCosmosTrackList";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Item { message Item {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -9,6 +9,7 @@ import "played_state/episode_played_state.proto";
import "sync/episode_sync_state.proto"; import "sync/episode_sync_state.proto";
import "metadata/episode_metadata.proto"; import "metadata/episode_metadata.proto";
option objc_class_prefix = "SPTCollectionCosmosUnplayedEpisodes";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Item { message Item {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -6,6 +6,7 @@ package spotify.show_cosmos.decorate_request.proto;
import "metadata/episode_metadata.proto"; import "metadata/episode_metadata.proto";
import "metadata/show_metadata.proto"; import "metadata/show_metadata.proto";
import "played_state/episode_played_state.proto";
import "show_access.proto"; import "show_access.proto";
import "show_episode_state.proto"; import "show_episode_state.proto";
import "show_show_state.proto"; import "show_show_state.proto";
@ -14,8 +15,11 @@ import "podcast_virality.proto";
import "podcastextensions.proto"; import "podcastextensions.proto";
import "podcast_poll.proto"; import "podcast_poll.proto";
import "podcast_qna.proto"; import "podcast_qna.proto";
import "podcast_ratings.proto";
import "transcripts.proto"; import "transcripts.proto";
import "clips_cover.proto";
option objc_class_prefix = "SPTShowCosmosDecorate";
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message Show { message Show {
@ -24,13 +28,14 @@ message Show {
optional show_cosmos.proto.ShowPlayState show_play_state = 3; optional show_cosmos.proto.ShowPlayState show_play_state = 3;
optional string link = 4; optional string link = 4;
optional podcast_paywalls.ShowAccess access_info = 5; optional podcast_paywalls.ShowAccess access_info = 5;
optional ratings.PodcastRating podcast_rating = 6;
} }
message Episode { message Episode {
optional cosmos_util.proto.EpisodeMetadata episode_metadata = 1; optional cosmos_util.proto.EpisodeMetadata episode_metadata = 1;
optional show_cosmos.proto.EpisodeCollectionState episode_collection_state = 2; optional show_cosmos.proto.EpisodeCollectionState episode_collection_state = 2;
optional show_cosmos.proto.EpisodeOfflineState episode_offline_state = 3; optional show_cosmos.proto.EpisodeOfflineState episode_offline_state = 3;
optional show_cosmos.proto.EpisodePlayState episode_play_state = 4; optional cosmos_util.proto.EpisodePlayState episode_play_state = 4;
optional string link = 5; optional string link = 5;
optional podcast_segments.PodcastSegments segments = 6; optional podcast_segments.PodcastSegments segments = 6;
optional podcast.extensions.PodcastHtmlDescription html_description = 7; optional podcast.extensions.PodcastHtmlDescription html_description = 7;
@ -38,6 +43,7 @@ message Episode {
optional podcastvirality.v1.PodcastVirality virality = 10; optional podcastvirality.v1.PodcastVirality virality = 10;
optional polls.PodcastPoll podcast_poll = 11; optional polls.PodcastPoll podcast_poll = 11;
optional qanda.PodcastQna podcast_qna = 12; optional qanda.PodcastQna podcast_qna = 12;
optional clips.ClipsCover clips = 13;
reserved 8; reserved 8;
} }

View file

@ -1,121 +0,0 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto3";
package com.spotify.sessioncontrol.api.v1;
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "com.spotify.sessioncontrol.api.v1.proto";
service SessionControlService {
rpc GetCurrentSession(GetCurrentSessionRequest) returns (GetCurrentSessionResponse);
rpc GetCurrentSessionOrNew(GetCurrentSessionOrNewRequest) returns (GetCurrentSessionOrNewResponse);
rpc JoinSession(JoinSessionRequest) returns (JoinSessionResponse);
rpc GetSessionInfo(GetSessionInfoRequest) returns (GetSessionInfoResponse);
rpc LeaveSession(LeaveSessionRequest) returns (LeaveSessionResponse);
rpc EndSession(EndSessionRequest) returns (EndSessionResponse);
rpc VerifyCommand(VerifyCommandRequest) returns (VerifyCommandResponse);
}
message SessionUpdate {
Session session = 1;
SessionUpdateReason reason = 2;
repeated SessionMember updated_session_members = 3;
}
message GetCurrentSessionRequest {
}
message GetCurrentSessionResponse {
Session session = 1;
}
message GetCurrentSessionOrNewRequest {
string fallback_device_id = 1;
}
message GetCurrentSessionOrNewResponse {
Session session = 1;
}
message JoinSessionRequest {
string join_token = 1;
string device_id = 2;
Experience experience = 3;
}
message JoinSessionResponse {
Session session = 1;
}
message GetSessionInfoRequest {
string join_token = 1;
}
message GetSessionInfoResponse {
Session session = 1;
}
message LeaveSessionRequest {
}
message LeaveSessionResponse {
}
message EndSessionRequest {
string session_id = 1;
}
message EndSessionResponse {
}
message VerifyCommandRequest {
string session_id = 1;
string command = 2;
}
message VerifyCommandResponse {
bool allowed = 1;
}
message Session {
int64 timestamp = 1;
string session_id = 2;
string join_session_token = 3;
string join_session_url = 4;
string session_owner_id = 5;
repeated SessionMember session_members = 6;
string join_session_uri = 7;
bool is_session_owner = 8;
}
message SessionMember {
int64 timestamp = 1;
string id = 2;
string username = 3;
string display_name = 4;
string image_url = 5;
string large_image_url = 6;
}
enum SessionUpdateReason {
UNKNOWN_UPDATE_REASON = 0;
NEW_SESSION = 1;
USER_JOINED = 2;
USER_LEFT = 3;
SESSION_DELETED = 4;
YOU_LEFT = 5;
YOU_WERE_KICKED = 6;
YOU_JOINED = 7;
}
enum Experience {
UNKNOWN = 0;
BEETHOVEN = 1;
BACH = 2;
}

View file

@ -0,0 +1,54 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.displaysegments.v1;
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_outer_classname = "DisplaySegmentsExtensionProto";
option java_package = "com.spotify.displaysegments.v1.proto";
message DisplaySegmentsExtension {
string episode_uri = 1;
repeated DisplaySegment segments = 2;
int32 duration_ms = 3;
oneof decoration {
MusicAndTalkDecoration music_and_talk_decoration = 4;
}
}
message DisplaySegment {
string uri = 1;
SegmentType type = 2;
int32 duration_ms = 3;
int32 seek_start_ms = 4;
int32 seek_stop_ms = 5;
oneof _title {
string title = 6;
}
oneof _subtitle {
string subtitle = 7;
}
oneof _image_url {
string image_url = 8;
}
oneof _is_preview {
bool is_preview = 9;
}
}
message MusicAndTalkDecoration {
bool can_upsell = 1;
}
enum SegmentType {
SEGMENT_TYPE_UNSPECIFIED = 0;
SEGMENT_TYPE_TALK = 1;
SEGMENT_TYPE_MUSIC = 2;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -12,4 +12,5 @@ message CommandOptions {
bool override_restrictions = 1; bool override_restrictions = 1;
bool only_for_local_device = 2; bool only_for_local_device = 2;
bool system_initiated = 3; bool system_initiated = 3;
bytes only_for_playback_id = 4;
} }

View file

@ -0,0 +1,11 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.connectivity.pubsub.esperanto.proto;
option java_package = "com.spotify.connectivity.pubsub.esperanto.proto";
message Ident {
string Ident = 1;
}

View file

@ -0,0 +1,11 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.connectivity.pubsub.esperanto.proto;
option java_package = "com.spotify.connectivity.pubsub.esperanto.proto";
message IdentFilter {
string Prefix = 1;
}

View file

@ -0,0 +1,53 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.prefs.esperanto.proto;
option objc_class_prefix = "ESP";
option java_package = "com.spotify.prefs.esperanto.proto";
service Prefs {
rpc Get(GetParams) returns (PrefValues);
rpc Sub(SubParams) returns (stream PrefValues);
rpc GetAll(GetAllParams) returns (PrefValues);
rpc SubAll(SubAllParams) returns (stream PrefValues);
rpc Set(SetParams) returns (PrefValues);
rpc Create(CreateParams) returns (PrefValues);
}
message GetParams {
string key = 1;
}
message SubParams {
string key = 1;
}
message GetAllParams {
}
message SubAllParams {
}
message Value {
oneof value {
int64 number = 1;
bool bool = 2;
string string = 3;
}
}
message SetParams {
map<string, Value> entries = 1;
}
message CreateParams {
map<string, Value> entries = 1;
}
message PrefValues {
map<string, Value> entries = 1;
}

View file

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.connectivity.pubsub.esperanto.proto;
import "es_ident.proto";
option java_package = "com.spotify.connectivity.pubsub.esperanto.proto";
message PushedMessage {
Ident Ident = 1;
repeated string Payloads = 2;
map<string, string> Attributes = 3;
}

View file

@ -0,0 +1,21 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.remote_config.esperanto.proto;
option objc_class_prefix = "ESP";
option java_package = "com.spotify.remoteconfig.esperanto.proto";
service RemoteConfig {
rpc lookupBool(LookupRequest) returns (BoolResponse);
}
message LookupRequest {
string component_id = 1;
string key = 2;
}
message BoolResponse {
bool value = 1;
}

View file

@ -0,0 +1,27 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.connectivity.netstat.esperanto.proto;
option java_package = "com.spotify.connectivity.netstat.esperanto.proto";
message RepeatedRequestInfo {
repeated RequestInfo infos = 1;
}
message RequestInfo {
string uri = 1;
string verb = 2;
string source_identifier = 3;
int32 downloaded = 4;
int32 uploaded = 5;
int32 payload_size = 6;
bool connection_reuse = 7;
int64 event_started = 8;
int64 event_connected = 9;
int64 event_request_sent = 10;
int64 event_first_byte_received = 11;
int64 event_last_byte_received = 12;
int64 event_ended = 13;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -15,4 +15,11 @@ message SeekToRequest {
CommandOptions options = 1; CommandOptions options = 1;
LoggingParams logging_params = 2; LoggingParams logging_params = 2;
int64 position = 3; int64 position = 3;
Relative relative = 4;
enum Relative {
BEGINNING = 0;
END = 1;
CURRENT = 2;
}
} }

View file

@ -0,0 +1,88 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.storage.esperanto.proto;
import "google/protobuf/empty.proto";
option objc_class_prefix = "ESP";
option java_package = "com.spotify.storage.esperanto.proto";
service Storage {
rpc GetCacheSizeLimit(GetCacheSizeLimitParams) returns (CacheSizeLimit);
rpc SetCacheSizeLimit(SetCacheSizeLimitParams) returns (google.protobuf.Empty);
rpc DeleteExpiredItems(DeleteExpiredItemsParams) returns (google.protobuf.Empty);
rpc DeleteUnlockedItems(DeleteUnlockedItemsParams) returns (google.protobuf.Empty);
rpc GetStats(GetStatsParams) returns (Stats);
rpc GetFileRanges(GetFileRangesParams) returns (FileRanges);
}
message CacheSizeLimit {
int64 size = 1;
}
message GetCacheSizeLimitParams {
}
message SetCacheSizeLimitParams {
CacheSizeLimit limit = 1;
}
message DeleteExpiredItemsParams {
}
message DeleteUnlockedItemsParams {
}
message RealmStats {
Realm realm = 1;
int64 size = 2;
int64 num_entries = 3;
int64 num_complete_entries = 4;
}
message Stats {
string cache_id = 1;
int64 creation_date_sec = 2;
int64 max_cache_size = 3;
int64 current_size = 4;
int64 current_locked_size = 5;
int64 free_space = 6;
int64 total_space = 7;
int64 current_numfiles = 8;
repeated RealmStats realm_stats = 9;
}
message GetStatsParams {
}
message FileRanges {
bool byte_size_known = 1;
uint64 byte_size = 2;
repeated Range ranges = 3;
message Range {
uint64 from_byte = 1;
uint64 to_byte = 2;
}
}
message GetFileRangesParams {
Realm realm = 1;
string file_id = 2;
}
enum Realm {
STREAM = 0;
COVER_ART = 1;
PLAYLIST = 4;
AUDIO_SHOW = 5;
HEAD_FILES = 7;
EXTERNAL_AUDIO_SHOW = 8;
KARAOKE_MASK = 9;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -7,12 +7,12 @@ package spotify.event_sender.proto;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
message EventEntity { message EventEntity {
int32 file_format_version = 1; uint32 file_format_version = 1;
string event_name = 2; string event_name = 2;
bytes sequence_id = 3; bytes sequence_id = 3;
int64 sequence_number = 4; uint64 sequence_number = 4;
bytes payload = 5; bytes payload = 5;
string owner = 6; string owner = 6;
bool authenticated = 7; bool authenticated = 7;
int64 record_id = 8; uint64 record_id = 8;
} }

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -26,4 +26,5 @@ enum ExtensionDescriptorType {
INSTRUMENT = 4; INSTRUMENT = 4;
TIME = 5; TIME = 5;
ERA = 6; ERA = 6;
AESTHETIC = 7;
} }

View file

@ -1,9 +1,10 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
package spotify.extendedmetadata; package spotify.extendedmetadata;
option objc_class_prefix = "SPTExtendedMetadata";
option cc_enable_arenas = true; option cc_enable_arenas = true;
option java_multiple_files = true; option java_multiple_files = true;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
@ -43,4 +44,11 @@ enum ExtensionKind {
SHOW_ACCESS = 31; SHOW_ACCESS = 31;
PODCAST_QNA = 32; PODCAST_QNA = 32;
CLIPS = 33; CLIPS = 33;
PODCAST_CTA_CARDS = 36;
PODCAST_RATING = 37;
DISPLAY_SEGMENTS = 38;
GREENROOM = 39;
USER_CREATED = 40;
CLIENT_CONFIG = 48;
AUDIOBOOK_SPECIFICS = 52;
} }

View file

@ -0,0 +1,21 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.socialgraph_esperanto.proto;
import "socialgraph_response_status.proto";
option objc_class_prefix = "ESP";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "spotify.socialgraph.esperanto.proto";
message FollowRequest {
repeated string username = 1;
bool follow = 2;
}
message FollowResponse {
ResponseStatus status = 1;
}

View file

@ -0,0 +1,21 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.socialgraph_esperanto.proto;
import "socialgraph_response_status.proto";
option objc_class_prefix = "ESP";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "spotify.socialgraph.esperanto.proto";
message FollowedUsersRequest {
bool force_reload = 1;
}
message FollowedUsersResponse {
ResponseStatus status = 1;
repeated string users = 2;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -189,7 +189,7 @@ message MessageOptions {
extensions 1000 to max; extensions 1000 to max;
reserved 8, 9; reserved 4, 5, 6, 8, 9;
} }
message FieldOptions { message FieldOptions {

View file

@ -0,0 +1,17 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
option cc_enable_arenas = true;
option go_package = "google.golang.org/protobuf/types/known/emptypb";
option java_multiple_files = true;
option java_outer_classname = "EmptyProto";
option java_package = "com.google.protobuf";
message Empty {
}

View file

@ -0,0 +1,29 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.greenroom.api.extendedmetadata.v1;
option objc_class_prefix = "SPT";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_outer_classname = "GreenroomMetadataProto";
option java_package = "com.spotify.greenroom.api.extendedmetadata.v1.proto";
message GreenroomSection {
repeated GreenroomItem items = 1;
}
message GreenroomItem {
string title = 1;
string description = 2;
repeated GreenroomHost hosts = 3;
int64 start_timestamp = 4;
string deeplink_url = 5;
bool live = 6;
}
message GreenroomHost {
string name = 1;
string image_url = 2;
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -7,7 +7,7 @@ package spotify.stream_reporting_esperanto.proto;
option objc_class_prefix = "ESP"; option objc_class_prefix = "ESP";
option java_package = "com.spotify.stream_reporting_esperanto.proto"; option java_package = "com.spotify.stream_reporting_esperanto.proto";
enum Format { enum MediaFormat {
FORMAT_UNKNOWN = 0; FORMAT_UNKNOWN = 0;
FORMAT_OGG_VORBIS_96 = 1; FORMAT_OGG_VORBIS_96 = 1;
FORMAT_OGG_VORBIS_160 = 2; FORMAT_OGG_VORBIS_160 = 2;
@ -27,4 +27,6 @@ enum Format {
FORMAT_MP4_256_CBCS = 16; FORMAT_MP4_256_CBCS = 16;
FORMAT_FLAC_FLAC = 17; FORMAT_FLAC_FLAC = 17;
FORMAT_MP4_FLAC = 18; FORMAT_MP4_FLAC = 18;
FORMAT_MP4_Unknown = 19;
FORMAT_MP3_Unknown = 20;
} }

View file

@ -1,8 +1,8 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
package spotify.media_manifest; package spotify.media_manifest.proto;
option optimize_for = CODE_SIZE; option optimize_for = CODE_SIZE;
@ -33,9 +33,12 @@ message File {
message ExternalFile { message ExternalFile {
string method = 1; string method = 1;
string url = 2; bytes body = 4;
bytes body = 3;
bool is_webgate_endpoint = 4; oneof endpoint {
string url = 2;
string service = 3;
}
} }
message FileIdFile { message FileIdFile {

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3"; syntax = "proto3";
@ -8,7 +8,6 @@ option objc_class_prefix = "ESP";
option java_package = "com.spotify.stream_reporting_esperanto.proto"; option java_package = "com.spotify.stream_reporting_esperanto.proto";
enum MediaType { enum MediaType {
MEDIA_TYPE_UNSET = 0; AUDIO = 0;
AUDIO = 1; VIDEO = 1;
VIDEO = 2;
} }

View file

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.playlist.cosmos.proto;
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "com.spotify.playlist.proto";
message OptionalLimit {
uint32 value = 1;
}
message PlaylistMembersRequest {
string uri = 1;
OptionalLimit limit = 2;
}

View file

@ -0,0 +1,35 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.playlist.cosmos.proto;
import "playlist_permission.proto";
import "playlist_user_state.proto";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "com.spotify.playlist.proto";
message Member {
optional User user = 1;
optional bool is_owner = 2;
optional uint32 num_tracks = 3;
optional uint32 num_episodes = 4;
optional FollowState follow_state = 5;
optional playlist_permission.proto.PermissionLevel permission_level = 6;
}
message PlaylistMembersResponse {
optional string title = 1;
optional uint32 num_total_members = 2;
optional playlist_permission.proto.Capabilities capabilities = 3;
optional playlist_permission.proto.PermissionLevel base_permission_level = 4;
repeated Member members = 5;
}
enum FollowState {
NONE = 0;
CAN_BE_FOLLOWED = 1;
CAN_BE_UNFOLLOWED = 2;
}

View file

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.connect.esperanto.proto;
option java_package = "com.spotify.connect.esperanto.proto";
message ForceDiscoverRequest {
}
message ForceDiscoverResponse {
}

View file

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.connect.esperanto.proto;
option java_package = "com.spotify.connect.esperanto.proto";
message StartDiscoveryRequest {
}
message StartDiscoveryResponse {
}

View file

@ -1,4 +1,4 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
@ -140,6 +140,7 @@ message Show {
repeated Availability availability = 78; repeated Availability availability = 78;
optional string trailer_uri = 83; optional string trailer_uri = 83;
optional bool music_and_talk = 85; optional bool music_and_talk = 85;
optional bool is_audiobook = 89;
} }
message Episode { message Episode {
@ -173,6 +174,8 @@ message Episode {
} }
optional bool music_and_talk = 91; optional bool music_and_talk = 91;
repeated ContentRating content_rating = 95;
optional bool is_audiobook_chapter = 96;
} }
message Licensor { message Licensor {

View file

@ -1,9 +1,10 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
package spotify.cosmos_util.proto; package spotify.cosmos_util.proto;
import "metadata/extension.proto";
import "metadata/image_group.proto"; import "metadata/image_group.proto";
import "podcast_segments.proto"; import "podcast_segments.proto";
import "podcast_subscription.proto"; import "podcast_subscription.proto";
@ -56,4 +57,7 @@ message EpisodeMetadata {
optional bool is_music_and_talk = 19; optional bool is_music_and_talk = 19;
optional podcast_segments.PodcastSegments podcast_segments = 20; optional podcast_segments.PodcastSegments podcast_segments = 20;
optional podcast_paywalls.PodcastSubscription podcast_subscription = 21; optional podcast_paywalls.PodcastSubscription podcast_subscription = 21;
repeated Extension extension = 22;
optional bool is_19_plus_only = 23;
optional bool is_book_chapter = 24;
} }

View file

@ -0,0 +1,16 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.cosmos_util.proto;
import "extension_kind.proto";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "com.spotify.cosmos.util.proto";
message Extension {
optional extendedmetadata.ExtensionKind extension_kind = 1;
optional bytes data = 2;
}

View file

@ -1,9 +1,10 @@
// Extracted from: Spotify 1.1.61.583 (Windows) // Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2"; syntax = "proto2";
package spotify.cosmos_util.proto; package spotify.cosmos_util.proto;
import "metadata/extension.proto";
import "metadata/image_group.proto"; import "metadata/image_group.proto";
option java_multiple_files = true; option java_multiple_files = true;
@ -25,4 +26,6 @@ message ShowMetadata {
repeated string copyright = 12; repeated string copyright = 12;
optional string trailer_uri = 13; optional string trailer_uri = 13;
optional bool is_music_and_talk = 14; optional bool is_music_and_talk = 14;
repeated Extension extension = 15;
optional bool is_book = 16;
} }

View file

@ -0,0 +1,24 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.metadata_esperanto.proto;
import "metadata_cosmos.proto";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "com.spotify.metadata.esperanto.proto";
service ClassicMetadataService {
rpc GetEntity(GetEntityRequest) returns (GetEntityResponse);
rpc MultigetEntity(metadata_cosmos.proto.MultiRequest) returns (metadata_cosmos.proto.MultiResponse);
}
message GetEntityRequest {
string uri = 1;
}
message GetEntityResponse {
metadata_cosmos.proto.MetadataItem item = 1;
}

View file

@ -1,4 +1,2 @@
// generated protobuf files will be included here. See build.rs for details // generated protobuf files will be included here. See build.rs for details
#![allow(renamed_and_removed_lints)]
include!(env!("PROTO_MOD_RS")); include!(env!("PROTO_MOD_RS"));

Some files were not shown because too many files have changed in this diff Show more