mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Update protobufs to 1.1.73.517
This commit is contained in:
parent
4f51c1e810
commit
40163754bb
200 changed files with 3016 additions and 978 deletions
|
@ -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(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
44
metadata/src/playlist/permission.rs
Normal file
44
metadata/src/playlist/permission.rs
Normal 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);
|
|
@ -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(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"),
|
||||||
|
|
19
protocol/proto/AdContext.proto
Normal file
19
protocol/proto/AdContext.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
13
protocol/proto/ConnectionStateChange.proto
Normal file
13
protocol/proto/ConnectionStateChange.proto
Normal 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;
|
||||||
|
}
|
106
protocol/proto/DesktopDeviceInformation.proto
Normal file
106
protocol/proto/DesktopDeviceInformation.proto
Normal 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;
|
||||||
|
}
|
88
protocol/proto/DesktopPerformanceIssue.proto
Normal file
88
protocol/proto/DesktopPerformanceIssue.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
23
protocol/proto/EventSenderStats2NonAuth.proto
Normal file
23
protocol/proto/EventSenderStats2NonAuth.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
62
protocol/proto/LegacyEndSong.proto
Normal file
62
protocol/proto/LegacyEndSong.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
52
protocol/proto/RawCoreStream.proto
Normal file
52
protocol/proto/RawCoreStream.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
17
protocol/proto/app_state.proto
Normal file
17
protocol/proto/app_state.proto
Normal 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;
|
||||||
|
}
|
53
protocol/proto/autodownload_backend_service.proto
Normal file
53
protocol/proto/autodownload_backend_service.proto
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
19
protocol/proto/autodownload_config_common.proto
Normal file
19
protocol/proto/autodownload_config_common.proto
Normal 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;
|
||||||
|
}
|
22
protocol/proto/autodownload_config_get_request.proto
Normal file
22
protocol/proto/autodownload_config_get_request.proto
Normal 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;
|
||||||
|
}
|
23
protocol/proto/autodownload_config_set_request.proto
Normal file
23
protocol/proto/autodownload_config_set_request.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
19
protocol/proto/canvas_storage.proto
Normal file
19
protocol/proto/canvas_storage.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
30
protocol/proto/client-tts.proto
Normal file
30
protocol/proto/client-tts.proto
Normal 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;
|
||||||
|
}
|
13
protocol/proto/client_config.proto
Normal file
13
protocol/proto/client_config.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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";
|
||||||
|
|
17
protocol/proto/collection_add_remove_items_request.proto
Normal file
17
protocol/proto/collection_add_remove_items_request.proto
Normal 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;
|
||||||
|
}
|
19
protocol/proto/collection_ban_request.proto
Normal file
19
protocol/proto/collection_ban_request.proto
Normal 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;
|
||||||
|
}
|
38
protocol/proto/collection_decoration_policy.proto
Normal file
38
protocol/proto/collection_decoration_policy.proto
Normal 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;
|
||||||
|
}
|
33
protocol/proto/collection_get_bans_request.proto
Normal file
33
protocol/proto/collection_get_bans_request.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
48
protocol/proto/collection_item.proto
Normal file
48
protocol/proto/collection_item.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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 {
|
||||||
|
|
12
protocol/proto/context_application_desktop.proto
Normal file
12
protocol/proto/context_application_desktop.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
|
||||||
}
|
|
15
protocol/proto/context_device_desktop.proto
Normal file
15
protocol/proto/context_device_desktop.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
54
protocol/proto/display_segments_extension.proto
Normal file
54
protocol/proto/display_segments_extension.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
11
protocol/proto/es_ident.proto
Normal file
11
protocol/proto/es_ident.proto
Normal 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;
|
||||||
|
}
|
11
protocol/proto/es_ident_filter.proto
Normal file
11
protocol/proto/es_ident_filter.proto
Normal 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;
|
||||||
|
}
|
53
protocol/proto/es_prefs.proto
Normal file
53
protocol/proto/es_prefs.proto
Normal 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;
|
||||||
|
}
|
15
protocol/proto/es_pushed_message.proto
Normal file
15
protocol/proto/es_pushed_message.proto
Normal 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;
|
||||||
|
}
|
21
protocol/proto/es_remote_config.proto
Normal file
21
protocol/proto/es_remote_config.proto
Normal 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;
|
||||||
|
}
|
27
protocol/proto/es_request_info.proto
Normal file
27
protocol/proto/es_request_info.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
88
protocol/proto/es_storage.proto
Normal file
88
protocol/proto/es_storage.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
21
protocol/proto/follow_request.proto
Normal file
21
protocol/proto/follow_request.proto
Normal 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;
|
||||||
|
}
|
21
protocol/proto/followed_users_request.proto
Normal file
21
protocol/proto/followed_users_request.proto
Normal 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;
|
||||||
|
}
|
|
@ -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 {
|
||||||
|
|
17
protocol/proto/google/protobuf/empty.proto
Normal file
17
protocol/proto/google/protobuf/empty.proto
Normal 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 {
|
||||||
|
|
||||||
|
}
|
29
protocol/proto/greenroom_extension.proto
Normal file
29
protocol/proto/greenroom_extension.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
|
@ -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;
|
||||||
|
bytes body = 4;
|
||||||
|
|
||||||
|
oneof endpoint {
|
||||||
string url = 2;
|
string url = 2;
|
||||||
bytes body = 3;
|
string service = 3;
|
||||||
bool is_webgate_endpoint = 4;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message FileIdFile {
|
message FileIdFile {
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
18
protocol/proto/members_request.proto
Normal file
18
protocol/proto/members_request.proto
Normal 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;
|
||||||
|
}
|
35
protocol/proto/members_response.proto
Normal file
35
protocol/proto/members_response.proto
Normal 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;
|
||||||
|
}
|
15
protocol/proto/messages/discovery/force_discover.proto
Normal file
15
protocol/proto/messages/discovery/force_discover.proto
Normal 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 {
|
||||||
|
|
||||||
|
}
|
15
protocol/proto/messages/discovery/start_discovery.proto
Normal file
15
protocol/proto/messages/discovery/start_discovery.proto
Normal 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 {
|
||||||
|
|
||||||
|
}
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
16
protocol/proto/metadata/extension.proto
Normal file
16
protocol/proto/metadata/extension.proto
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
24
protocol/proto/metadata_esperanto.proto
Normal file
24
protocol/proto/metadata_esperanto.proto
Normal 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;
|
||||||
|
}
|
|
@ -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
Loading…
Reference in a new issue