mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
add additionally required proto files
This commit is contained in:
parent
1a97247727
commit
58b0b3f316
26 changed files with 546 additions and 0 deletions
35
protocol/proto/audio_format.proto
Normal file
35
protocol/proto/audio_format.proto
Normal file
|
@ -0,0 +1,35 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.stream_reporting_esperanto.proto;
|
||||
|
||||
option java_package = "com.spotify.stream_reporting_esperanto.proto";
|
||||
option objc_class_prefix = "ESP";
|
||||
|
||||
enum AudioFormat {
|
||||
FORMAT_UNKNOWN = 0;
|
||||
FORMAT_OGG_VORBIS_96 = 1;
|
||||
FORMAT_OGG_VORBIS_160 = 2;
|
||||
FORMAT_OGG_VORBIS_320 = 3;
|
||||
FORMAT_MP3_256 = 4;
|
||||
FORMAT_MP3_320 = 5;
|
||||
FORMAT_MP3_160 = 6;
|
||||
FORMAT_MP3_96 = 7;
|
||||
FORMAT_MP3_160_ENCRYPTED = 8;
|
||||
FORMAT_AAC_24 = 9;
|
||||
FORMAT_AAC_48 = 10;
|
||||
FORMAT_MP4_128 = 11;
|
||||
FORMAT_MP4_128_DUAL = 12;
|
||||
FORMAT_MP4_128_CBCS = 13;
|
||||
FORMAT_MP4_256 = 14;
|
||||
FORMAT_MP4_256_DUAL = 15;
|
||||
FORMAT_MP4_256_CBCS = 16;
|
||||
FORMAT_FLAC_FLAC = 17;
|
||||
FORMAT_MP4_FLAC = 18;
|
||||
FORMAT_MP4_Unknown = 19;
|
||||
FORMAT_MP3_Unknown = 20;
|
||||
FORMAT_XHE_AAC_12 = 21;
|
||||
FORMAT_XHE_AAC_16 = 22;
|
||||
FORMAT_XHE_AAC_24 = 23;
|
||||
FORMAT_FLAC_FLAC_24 = 24;
|
||||
}
|
||||
|
19
protocol/proto/collection_platform_items.proto
Normal file
19
protocol/proto/collection_platform_items.proto
Normal file
|
@ -0,0 +1,19 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.collection_platform.proto;
|
||||
|
||||
option java_package = "com.spotify.collection_platform.esperanto.proto";
|
||||
option java_multiple_files = true;
|
||||
option objc_class_prefix = "ESP";
|
||||
|
||||
message CollectionPlatformItem {
|
||||
string uri = 1;
|
||||
int64 add_time = 2;
|
||||
}
|
||||
|
||||
message CollectionPlatformContextItem {
|
||||
string uri = 1;
|
||||
int64 add_time = 2;
|
||||
string context_uri = 3;
|
||||
}
|
||||
|
11
protocol/proto/es_pauseresume_origin.proto
Normal file
11
protocol/proto/es_pauseresume_origin.proto
Normal file
|
@ -0,0 +1,11 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.player.esperanto.proto;
|
||||
|
||||
option java_package = "com.spotify.player.esperanto.proto";
|
||||
option objc_class_prefix = "ESP";
|
||||
|
||||
message PauseResumeOrigin {
|
||||
string feature_identifier = 1;
|
||||
}
|
||||
|
6
protocol/proto/esperanto_options.proto
Normal file
6
protocol/proto/esperanto_options.proto
Normal file
|
@ -0,0 +1,6 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.esperanto;
|
||||
|
||||
import "google/protobuf/descriptor.proto";
|
||||
|
19
protocol/proto/lens-model.proto
Normal file
19
protocol/proto/lens-model.proto
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Extracted from: Spotify 1.2.52.442 (windows)
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package spotify.lens.model.proto;
|
||||
|
||||
option java_package = "com.spotify.lens.model.proto";
|
||||
option java_outer_classname = "LensModelProto";
|
||||
option optimize_for = CODE_SIZE;
|
||||
|
||||
message Lens {
|
||||
string identifier = 1;
|
||||
}
|
||||
|
||||
message LensState {
|
||||
string identifier = 1;
|
||||
bytes revision = 2;
|
||||
}
|
||||
|
19
protocol/proto/media.proto
Normal file
19
protocol/proto/media.proto
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Extracted from: Spotify 1.2.52.442 (windows)
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package spotify.common.media;
|
||||
|
||||
option java_package = "com.spotify.common.proto";
|
||||
option optimize_for = CODE_SIZE;
|
||||
|
||||
enum AudioQuality {
|
||||
DEFAULT = 0;
|
||||
LOW = 1;
|
||||
NORMAL = 2;
|
||||
HIGH = 3;
|
||||
VERY_HIGH = 4;
|
||||
HIFI = 5;
|
||||
HIFI_24 = 6;
|
||||
}
|
||||
|
12
protocol/proto/pause_resume_origin.proto
Normal file
12
protocol/proto/pause_resume_origin.proto
Normal file
|
@ -0,0 +1,12 @@
|
|||
// Extracted from: Spotify 1.2.52.442 (windows)
|
||||
|
||||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto;
|
||||
|
||||
option optimize_for = CODE_SIZE;
|
||||
|
||||
message PauseResumeOrigin {
|
||||
optional string feature_identifier = 1;
|
||||
}
|
||||
|
20
protocol/proto/play_history.proto
Normal file
20
protocol/proto/play_history.proto
Normal file
|
@ -0,0 +1,20 @@
|
|||
// Extracted from: Spotify 1.2.52.442 (windows)
|
||||
|
||||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.transfer;
|
||||
|
||||
option optimize_for = CODE_SIZE;
|
||||
|
||||
message PlayHistory {
|
||||
message Item {
|
||||
optional string context_id = 1;
|
||||
optional string uid = 2;
|
||||
optional bool disliked = 3;
|
||||
repeated transfer.PlayHistory.Item children = 4;
|
||||
}
|
||||
|
||||
repeated transfer.PlayHistory.Item backward_items = 1;
|
||||
repeated transfer.PlayHistory.Item forward_items = 2;
|
||||
}
|
||||
|
13
protocol/proto/playback_stack.proto
Normal file
13
protocol/proto/playback_stack.proto
Normal file
|
@ -0,0 +1,13 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.stream_reporting_esperanto.proto;
|
||||
|
||||
option java_package = "com.spotify.stream_reporting_esperanto.proto";
|
||||
option objc_class_prefix = "ESP";
|
||||
|
||||
enum PlaybackStack {
|
||||
BOOMBOX = 0;
|
||||
BETAMAX = 1;
|
||||
UNKNOWN = 2;
|
||||
}
|
||||
|
14
protocol/proto/playback_stack_v2.proto
Normal file
14
protocol/proto/playback_stack_v2.proto
Normal file
|
@ -0,0 +1,14 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.stream_reporting_esperanto.proto;
|
||||
|
||||
option java_package = "com.spotify.stream_reporting_esperanto.proto";
|
||||
option objc_class_prefix = "ESP";
|
||||
|
||||
enum PlaybackStackV2 {
|
||||
PLAYBACK_STACK_UNKNOWN = 0;
|
||||
PLAYBACK_STACK_BOOMBOX = 1;
|
||||
PLAYBACK_STACK_BETAMAX = 2;
|
||||
PLAYBACK_STACK_KUBRICK = 3;
|
||||
}
|
||||
|
14
protocol/proto/playback_state.proto
Normal file
14
protocol/proto/playback_state.proto
Normal file
|
@ -0,0 +1,14 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.stream_reporting_esperanto.proto;
|
||||
|
||||
option java_package = "com.spotify.stream_reporting_esperanto.proto";
|
||||
option objc_class_prefix = "ESP";
|
||||
|
||||
enum PlaybackState {
|
||||
ACTIVE = 0;
|
||||
PAUSED = 1;
|
||||
SUSPENDED = 2;
|
||||
INVALID_PLAYBACK_STATE = 3;
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.playlist.cosmos.proto;
|
||||
|
||||
option java_package = "com.spotify.playlist.policy.proto";
|
||||
option java_multiple_files = true;
|
||||
|
||||
enum LinkType {
|
||||
EMPTY = 0;
|
||||
ARTIST = 1;
|
||||
ALBUM = 2;
|
||||
TRACK = 4;
|
||||
LOCAL_TRACK = 9;
|
||||
SHOW = 62;
|
||||
EPISODE = 63;
|
||||
}
|
||||
|
9
protocol/proto/show_offline_state.proto
Normal file
9
protocol/proto/show_offline_state.proto
Normal file
|
@ -0,0 +1,9 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.show_cosmos.proto;
|
||||
|
||||
message ShowOfflineState {
|
||||
optional string offline_state = 1;
|
||||
optional uint32 sync_progress = 2;
|
||||
}
|
||||
|
16
protocol/proto/signal-model.proto
Normal file
16
protocol/proto/signal-model.proto
Normal file
|
@ -0,0 +1,16 @@
|
|||
// Extracted from: Spotify 1.2.52.442 (windows)
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package spotify.playlist.signal.proto;
|
||||
|
||||
option java_package = "com.spotify.playlist_signal.model.proto";
|
||||
option java_outer_classname = "SignalModelProto";
|
||||
option optimize_for = CODE_SIZE;
|
||||
|
||||
message Signal {
|
||||
string identifier = 1;
|
||||
bytes data = 2;
|
||||
bytes client_payload = 3;
|
||||
}
|
||||
|
18
protocol/proto/spotify/audiobookcashier/v1/audiobook_price.proto
Executable file
18
protocol/proto/spotify/audiobookcashier/v1/audiobook_price.proto
Executable file
|
@ -0,0 +1,18 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.audiobookcashier.v1;
|
||||
|
||||
option java_package = "com.spotify.audiobookcashier.v1";
|
||||
option java_multiple_files = true;
|
||||
|
||||
message Price {
|
||||
double amount = 1;
|
||||
string currency = 2;
|
||||
string formatted_price = 3;
|
||||
}
|
||||
|
||||
message AudiobookPrice {
|
||||
.spotify.audiobookcashier.v1.Price final_price = 1;
|
||||
.spotify.audiobookcashier.v1.Price final_list_price = 2;
|
||||
}
|
||||
|
9
protocol/proto/state_restore/automix_rules.proto
Normal file
9
protocol/proto/state_restore/automix_rules.proto
Normal file
|
@ -0,0 +1,9 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
message AutomixRules {
|
||||
required bool automix = 1;
|
||||
required string current_track_uri = 2;
|
||||
}
|
||||
|
11
protocol/proto/state_restore/automix_talk_rules.proto
Normal file
11
protocol/proto/state_restore/automix_talk_rules.proto
Normal file
|
@ -0,0 +1,11 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "state_restore/provided_track.proto";
|
||||
|
||||
message AutomixTalkRules {
|
||||
optional ProvidedTrack current_track = 1;
|
||||
optional int64 narration_duration = 2;
|
||||
}
|
||||
|
10
protocol/proto/state_restore/context_loader.proto
Normal file
10
protocol/proto/state_restore/context_loader.proto
Normal file
|
@ -0,0 +1,10 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "context.proto";
|
||||
|
||||
message ContextLoader {
|
||||
required Context context = 1;
|
||||
}
|
||||
|
23
protocol/proto/state_restore/context_player_restorable.proto
Normal file
23
protocol/proto/state_restore/context_player_restorable.proto
Normal file
|
@ -0,0 +1,23 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "state_restore/play_history.proto";
|
||||
import "state_restore/player_model.proto";
|
||||
import "state_restore/mft_state.proto";
|
||||
import "state_restore/mft_context_history.proto";
|
||||
import "state_restore/mft_fallback_page_history.proto";
|
||||
import "state_restore/pns_capper.proto";
|
||||
|
||||
message ContextPlayerRestorable {
|
||||
reserved 8;
|
||||
required int32 version = 1;
|
||||
optional string version_suffix = 2;
|
||||
required PlayerModel player_model = 3;
|
||||
required PlayHistory play_history = 4;
|
||||
required MftState mft_can_play_checker = 5;
|
||||
required MftContextHistory mft_context_history = 6;
|
||||
required MftFallbackPageHistory mft_fallback_page_history = 7;
|
||||
optional PnsCapper pns_capper = 9;
|
||||
}
|
||||
|
59
protocol/proto/state_restore/context_player_state.proto
Normal file
59
protocol/proto/state_restore/context_player_state.proto
Normal file
|
@ -0,0 +1,59 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "context_index.proto";
|
||||
import "restrictions.proto";
|
||||
import "play_origin.proto";
|
||||
import "state_restore/provided_track.proto";
|
||||
import "context_player_options.proto";
|
||||
import "prepare_play_options.proto";
|
||||
import "state_restore/playback_quality.proto";
|
||||
|
||||
message ContextPlayerState {
|
||||
message ContextMetadataEntry {
|
||||
optional string key = 1;
|
||||
optional string value = 2;
|
||||
}
|
||||
|
||||
message PageMetadataEntry {
|
||||
optional string key = 1;
|
||||
optional string value = 2;
|
||||
}
|
||||
|
||||
message ModesEntry {
|
||||
optional string key = 1;
|
||||
optional string value = 2;
|
||||
}
|
||||
|
||||
optional uint64 timestamp = 1;
|
||||
optional string context_uri = 2;
|
||||
optional string context_url = 3;
|
||||
optional Restrictions context_restrictions = 4;
|
||||
optional PlayOrigin play_origin = 5;
|
||||
optional ContextIndex index = 6;
|
||||
optional ProvidedTrack track = 7;
|
||||
optional bytes playback_id = 8;
|
||||
optional PlaybackQuality playback_quality = 9;
|
||||
optional double playback_speed = 10;
|
||||
optional uint64 position_as_of_timestamp = 11;
|
||||
optional uint64 duration = 12;
|
||||
optional bool is_playing = 13;
|
||||
optional bool is_paused = 14;
|
||||
optional bool is_buffering = 15;
|
||||
optional bool is_system_initiated = 16;
|
||||
optional ContextPlayerOptions options = 17;
|
||||
optional Restrictions restrictions = 18;
|
||||
repeated string suppressions = 19;
|
||||
repeated ProvidedTrack prev_tracks = 20;
|
||||
repeated ProvidedTrack next_tracks = 21;
|
||||
repeated ContextPlayerState.ContextMetadataEntry context_metadata = 22;
|
||||
repeated ContextPlayerState.PageMetadataEntry page_metadata = 23;
|
||||
optional string session_id = 24;
|
||||
optional uint64 queue_revision = 25;
|
||||
optional AudioStream audio_stream = 26;
|
||||
repeated string signals = 27;
|
||||
repeated ContextPlayerState.ModesEntry modes = 28;
|
||||
optional string session_command_id = 29;
|
||||
}
|
||||
|
30
protocol/proto/state_restore/kitteh_box_rules.proto
Normal file
30
protocol/proto/state_restore/kitteh_box_rules.proto
Normal file
|
@ -0,0 +1,30 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
message KittehBoxRules {
|
||||
message NodeAspectsEntry {
|
||||
optional string key = 1;
|
||||
optional bytes value = 2;
|
||||
}
|
||||
|
||||
enum Transition {
|
||||
ADVANCE = 0;
|
||||
SKIP_NEXT = 1;
|
||||
SKIP_PREV = 2;
|
||||
}
|
||||
|
||||
enum Position {
|
||||
BETWEEN_TRACKS = 0;
|
||||
ON_DELIMITER = 1;
|
||||
ON_NODE_TRACK = 2;
|
||||
}
|
||||
|
||||
repeated KittehBoxRules.NodeAspectsEntry node_aspects = 1;
|
||||
required KittehBoxRules.Position pos = 2;
|
||||
required KittehBoxRules.Transition last_transition = 3;
|
||||
required int32 context_iteration = 4;
|
||||
required bool pending_skip_to = 5;
|
||||
optional int64 page_index = 6;
|
||||
}
|
||||
|
15
protocol/proto/state_restore/playback_state.proto
Normal file
15
protocol/proto/state_restore/playback_state.proto
Normal file
|
@ -0,0 +1,15 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "state_restore/playback_quality.proto";
|
||||
|
||||
message PlaybackState {
|
||||
optional int64 timestamp = 1;
|
||||
optional int32 position_as_of_timestamp = 2;
|
||||
optional int32 duration = 3;
|
||||
optional bool is_buffering = 4;
|
||||
optional PlaybackQuality playback_quality = 5;
|
||||
optional double playback_speed = 6;
|
||||
}
|
||||
|
38
protocol/proto/state_restore/player_model.proto
Normal file
38
protocol/proto/state_restore/player_model.proto
Normal file
|
@ -0,0 +1,38 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "context_player_options.proto";
|
||||
import "state_restore/player_session_queue.proto";
|
||||
|
||||
message PlayerModel {
|
||||
message ConfigurationEntry {
|
||||
optional string key = 1;
|
||||
optional string value = 2;
|
||||
}
|
||||
|
||||
enum AdvanceReason {
|
||||
SKIP_TO_PREV_TRACK = 1;
|
||||
SKIP_TO_NEXT_TRACK = 2;
|
||||
EXTERNAL_ADVANCE = 3;
|
||||
INTERRUPTED = 4;
|
||||
SWITCHED_TO_VIDEO = 5;
|
||||
SWITCHED_TO_AUDIO = 6;
|
||||
}
|
||||
|
||||
enum StartReason {
|
||||
PLAY_CONTEXT = 1;
|
||||
PLAY_CONTEXT_TRACK = 2;
|
||||
STATE_RESTORE = 3;
|
||||
REMOTE_TRANSFER = 4;
|
||||
}
|
||||
|
||||
required ContextPlayerOptions options = 1;
|
||||
repeated PlayerModel.ConfigurationEntry configuration = 2;
|
||||
required PlayerSessionQueue session_queue = 3;
|
||||
required PlayerModel.AdvanceReason last_advance_reason = 4;
|
||||
optional PlayerModel.StartReason last_start_reason = 5;
|
||||
required string prev_state_id = 6;
|
||||
optional string override_state_id = 7;
|
||||
}
|
||||
|
39
protocol/proto/state_restore/player_session.proto
Normal file
39
protocol/proto/state_restore/player_session.proto
Normal file
|
@ -0,0 +1,39 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "context_track.proto";
|
||||
import "context_player_options.proto";
|
||||
import "logging_params.proto";
|
||||
import "play_origin.proto";
|
||||
import "player_license.proto";
|
||||
import "prepare_play_options.proto";
|
||||
import "state_restore/context_loader.proto";
|
||||
import "state_restore/context_player_rules.proto";
|
||||
import "state_restore/playback_state.proto";
|
||||
import "state_restore/player_session_fake.proto";
|
||||
import "state_restore/provided_track.proto";
|
||||
|
||||
message PlayerSession {
|
||||
required PreparePlayOptions prepare_play_options = 1;
|
||||
optional PlaybackState playback_state = 2;
|
||||
optional ProvidedTrack track = 3;
|
||||
optional ContextTrack track_to_skip_to = 4;
|
||||
optional bytes given_playback_id = 5;
|
||||
required LoggingParams next_command_logging_params = 6;
|
||||
required LoggingParams curr_command_logging_params = 7;
|
||||
required PlayOrigin play_origin = 8;
|
||||
required bool is_playing = 9;
|
||||
required bool is_paused = 10;
|
||||
required bool is_system_initiated = 11;
|
||||
required bool is_finished = 12;
|
||||
required ContextPlayerOptions options = 13;
|
||||
required uint64 playback_seed = 14;
|
||||
required int32 num_advances = 15;
|
||||
required bool did_skip_prev = 16;
|
||||
required PlayerLicense license = 17;
|
||||
required ContextPlayerRules rules = 18;
|
||||
required ContextLoader loader = 19;
|
||||
optional PlayerSessionFake fake = 100;
|
||||
}
|
||||
|
13
protocol/proto/state_restore/player_session_fake.proto
Normal file
13
protocol/proto/state_restore/player_session_fake.proto
Normal file
|
@ -0,0 +1,13 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package spotify.player.proto.state_restore;
|
||||
|
||||
import "context.proto";
|
||||
import "state_restore/context_player_state.proto";
|
||||
|
||||
message PlayerSessionFake {
|
||||
required ContextPlayerState player_state = 1;
|
||||
required Context player_context = 2;
|
||||
required bool is_finished = 3;
|
||||
}
|
||||
|
57
protocol/proto/your_library_config.proto
Normal file
57
protocol/proto/your_library_config.proto
Normal file
|
@ -0,0 +1,57 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package spotify.your_library.proto;
|
||||
|
||||
message YourLibraryLabelAndImage {
|
||||
string label = 1;
|
||||
string image = 2;
|
||||
bool include_empty = 3;
|
||||
}
|
||||
|
||||
message YourLibraryPseudoPlaylistConfig {
|
||||
.spotify.your_library.proto.YourLibraryLabelAndImage liked_songs = 1;
|
||||
.spotify.your_library.proto.YourLibraryLabelAndImage your_episodes = 2;
|
||||
.spotify.your_library.proto.YourLibraryLabelAndImage new_episodes = 3;
|
||||
.spotify.your_library.proto.YourLibraryLabelAndImage local_files = 4;
|
||||
.spotify.your_library.proto.YourLibraryLabelAndImage cached_files = 5;
|
||||
bool your_highlights = 6;
|
||||
bool all_available_configs_provided = 99;
|
||||
}
|
||||
|
||||
message YourLibraryFilters {
|
||||
enum Filter {
|
||||
ALBUM = 0;
|
||||
ARTIST = 1;
|
||||
PLAYLIST = 2;
|
||||
SHOW = 3;
|
||||
BOOK = 4;
|
||||
EVENT = 5;
|
||||
AUTHOR = 7;
|
||||
DOWNLOADED = 100;
|
||||
WRITABLE = 101;
|
||||
BY_YOU = 102;
|
||||
BY_SPOTIFY = 103;
|
||||
UNPLAYED = 104;
|
||||
IN_PROGRESS = 105;
|
||||
FINISHED = 106;
|
||||
}
|
||||
|
||||
repeated .spotify.your_library.proto.YourLibraryFilters.Filter filter = 1;
|
||||
}
|
||||
|
||||
message YourLibrarySortOrder {
|
||||
enum SortOrder {
|
||||
NAME = 0;
|
||||
RECENTLY_ADDED = 1;
|
||||
CREATOR = 2;
|
||||
CUSTOM = 4;
|
||||
RECENTLY_UPDATED = 5;
|
||||
RECENTLY_PLAYED_OR_ADDED = 6;
|
||||
RELEVANCE = 7;
|
||||
EVENT_START_TIME = 8;
|
||||
RELEASE_DATE = 9;
|
||||
}
|
||||
|
||||
.spotify.your_library.proto.YourLibrarySortOrder.SortOrder sort_order = 1;
|
||||
}
|
||||
|
Loading…
Reference in a new issue