// Extracted from: Spotify 1.2.52.442 (windows)

syntax = "proto3";

package spotify.playlist_esperanto.proto;

import "policy/supported_link_types_in_playlists.proto";

option objc_class_prefix = "ESP";
option java_multiple_files = true;
option optimize_for = CODE_SIZE;
option java_package = "spotify.playlist.esperanto.proto";

message PlaylistRange {
    int32 start = 1;
    int32 length = 2;
}

message PlaylistQuery {
    repeated BoolPredicate bool_predicates = 1;
    enum BoolPredicate {
        NO_FILTER = 0;
        AVAILABLE = 1;
        AVAILABLE_OFFLINE = 2;
        ARTIST_NOT_BANNED = 3;
        NOT_BANNED = 4;
        NOT_EXPLICIT = 5;
        NOT_EPISODE = 6;
        NOT_RECOMMENDATION = 7;
        UNPLAYED = 8;
        IN_PROGRESS = 9;
        NOT_FULLY_PLAYED = 10;
    }

    string text_filter = 2;

    SortBy sort_by = 3;
    enum SortBy {
        NO_SORT = 0;
        ALBUM_ARTIST_NAME_ASC = 1;
        ALBUM_ARTIST_NAME_DESC = 2;
        TRACK_NUMBER_ASC = 3;
        TRACK_NUMBER_DESC = 4;
        DISC_NUMBER_ASC = 5;
        DISC_NUMBER_DESC = 6;
        ALBUM_NAME_ASC = 7;
        ALBUM_NAME_DESC = 8;
        ARTIST_NAME_ASC = 9;
        ARTIST_NAME_DESC = 10;
        NAME_ASC = 11;
        NAME_DESC = 12;
        ADD_TIME_ASC = 13;
        ADD_TIME_DESC = 14;
        ADDED_BY_ASC = 15;
        ADDED_BY_DESC = 16;
        DURATION_ASC = 17;
        DURATION_DESC = 18;
        SHOW_NAME_ASC = 19;
        SHOW_NAME_DESC = 20;
        PUBLISH_DATE_ASC = 21;
        PUBLISH_DATE_DESC = 22;
    }

    PlaylistRange range = 4;
    int32 update_throttling_ms = 5;
    bool group = 6;
    PlaylistSourceRestriction source_restriction = 7;
    bool show_unavailable = 8;
    bool always_show_windowed = 9;
    bool load_recommendations = 10;
    repeated playlist.cosmos.proto.LinkType supported_placeholder_types = 11;
    repeated string descriptor_filter = 12;
    string item_id_filter = 13;

    repeated AttributeFilter attribute_filter = 14;
    message AttributeFilter {
        repeated string contains_one_of = 1;
    }

    bool include_all_placeholders = 15;
}

enum PlaylistSourceRestriction {
    NO_RESTRICTION = 0;
    RESTRICT_SOURCE_TO_50 = 1;
    RESTRICT_SOURCE_TO_500 = 2;
}
