Skip to content

Enums

All enums are str-based: members compare equal to and serialize exactly like their raw API strings, so plain strings keep working everywhere.

from deezify import SearchOrder, Permission, RecommendationKind

SearchOrder.RANKING == "RANKING"          # True
str(SearchOrder.TRACK_ASC)                # "TRACK_ASC"

client.search.tracks("eminem", order=SearchOrder.RANKING, limit=5)
client.search.tracks("eminem", order="RANKING", limit=5)   # identical
client.user.recommendations("me", RecommendationKind.TRACKS)
authorization_url(APP_ID, REDIRECT, perms=[Permission.EMAIL])
Enum Values
SearchOrder RANKING TRACK_ASC TRACK_DESC ARTIST_ASC ARTIST_DESC ALBUM_ASC ALBUM_DESC RATING_ASC RATING_DESC DURATION_ASC DURATION_DESC
SearchField artist album track label dur_min dur_max bpm_min bpm_max
Permission basic_access email offline_access manage_library manage_community delete_library listening_history
RecommendationKind albums artists playlists tracks radios releases
UserChartKind albums playlists tracks
OEmbedFormat json xml (only json is decoded)
EntityType track album artist playlist user podcast episode radio genre editorial options chart
Gender / RecordType / ExplicitContentLevel typing helpers for user/album fields

deezify.enums

Central enums for the Deezer SDK.

All enums are str-based (class X(str, Enum)), so every member compares equal to — and serializes exactly like — its raw API string::

SearchOrder.RANKING == "RANKING"          # True
f"{SearchOrder.TRACK_ASC}"                # "TRACK_ASC" (str Enum)
json.dumps({"order": SearchOrder.RANKING})  # '{"order": "RANKING"}'

This means enums are purely additive convenience: anywhere the SDK accepts a str you may pass either the plain string or the enum member. Validation helpers accept both and always send the plain string value.

SearchOrder

Bases: _StrEnum

Sort orders accepted by GET /search* (order=...).

Source code in deezify/enums.py
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class SearchOrder(_StrEnum):
    """Sort orders accepted by ``GET /search*`` (``order=...``)."""

    RANKING = "RANKING"
    TRACK_ASC = "TRACK_ASC"
    TRACK_DESC = "TRACK_DESC"
    ARTIST_ASC = "ARTIST_ASC"
    ARTIST_DESC = "ARTIST_DESC"
    ALBUM_ASC = "ALBUM_ASC"
    ALBUM_DESC = "ALBUM_DESC"
    RATING_ASC = "RATING_ASC"
    RATING_DESC = "RATING_DESC"
    DURATION_ASC = "DURATION_ASC"
    DURATION_DESC = "DURATION_DESC"

SearchField

Bases: _StrEnum

Field names for advanced search (q=field:value).

Source code in deezify/enums.py
62
63
64
65
66
67
68
69
70
71
72
class SearchField(_StrEnum):
    """Field names for advanced search (``q=field:value``)."""

    ARTIST = "artist"
    ALBUM = "album"
    TRACK = "track"
    LABEL = "label"
    DUR_MIN = "dur_min"
    DUR_MAX = "dur_max"
    BPM_MIN = "bpm_min"
    BPM_MAX = "bpm_max"

Permission

Bases: _StrEnum

OAuth permission scopes (perms=...).

Source code in deezify/enums.py
75
76
77
78
79
80
81
82
83
84
class Permission(_StrEnum):
    """OAuth permission scopes (``perms=...``)."""

    BASIC_ACCESS = "basic_access"
    EMAIL = "email"
    OFFLINE_ACCESS = "offline_access"
    MANAGE_LIBRARY = "manage_library"
    MANAGE_COMMUNITY = "manage_community"
    DELETE_LIBRARY = "delete_library"
    LISTENING_HISTORY = "listening_history"

RecommendationKind

Bases: _StrEnum

Recommendation feeds (GET /user/{id}/recommendations/{kind}).

Source code in deezify/enums.py
87
88
89
90
91
92
93
94
95
class RecommendationKind(_StrEnum):
    """Recommendation feeds (``GET /user/{id}/recommendations/{kind}``)."""

    ALBUMS = "albums"
    ARTISTS = "artists"
    PLAYLISTS = "playlists"
    TRACKS = "tracks"
    RADIOS = "radios"
    RELEASES = "releases"

UserChartKind

Bases: _StrEnum

User chart feeds (GET /user/{id}/charts/{kind}).

Source code in deezify/enums.py
 98
 99
100
101
102
103
class UserChartKind(_StrEnum):
    """User chart feeds (``GET /user/{id}/charts/{kind}``)."""

    ALBUMS = "albums"
    PLAYLISTS = "playlists"
    TRACKS = "tracks"

ExplicitContentLevel

Bases: _StrEnum

Values of user.explicit_content_levels_available[].

Source code in deezify/enums.py
106
107
108
109
110
111
class ExplicitContentLevel(_StrEnum):
    """Values of ``user.explicit_content_levels_available[]``."""

    EXPLICIT_DISPLAY = "explicit_display"
    EXPLICIT_NO_RECOMMENDATION = "explicit_no_recommendation"
    EXPLICIT_HIDE = "explicit_hide"

Gender

Bases: _StrEnum

Values of user.gender.

Source code in deezify/enums.py
114
115
116
117
118
class Gender(_StrEnum):
    """Values of ``user.gender``."""

    FEMALE = "F"
    MALE = "M"

RecordType

Bases: _StrEnum

Common values of album.record_type (open-ended at the API).

Source code in deezify/enums.py
121
122
123
124
125
126
class RecordType(_StrEnum):
    """Common values of ``album.record_type`` (open-ended at the API)."""

    EP = "EP"
    ALBUM = "ALBUM"
    SINGLE = "SINGLE"

OEmbedFormat

Bases: _StrEnum

Response formats for GET /oembed.

Source code in deezify/enums.py
129
130
131
132
133
class OEmbedFormat(_StrEnum):
    """Response formats for ``GET /oembed``."""

    JSON = "json"
    XML = "xml"

EntityType

Bases: _StrEnum

The type discriminator on API objects and oEmbed entity.

Source code in deezify/enums.py
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
class EntityType(_StrEnum):
    """The ``type`` discriminator on API objects and oEmbed ``entity``."""

    TRACK = "track"
    ALBUM = "album"
    ARTIST = "artist"
    PLAYLIST = "playlist"
    USER = "user"
    PODCAST = "podcast"
    EPISODE = "episode"
    RADIO = "radio"
    GENRE = "genre"
    EDITORIAL = "editorial"
    OPTIONS = "options"
    CHART = "chart"

coerce_optional_enum(enum_cls, value, *, label)

Coerce an optional enum/str parameter to its wire string.

Source code in deezify/enums.py
153
154
155
156
157
158
159
def coerce_optional_enum(
    enum_cls: type[_StrEnum], value: Any | None, *, label: str
) -> str | None:
    """Coerce an optional enum/str parameter to its wire string."""
    if value is None:
        return None
    return enum_cls.coerce(value, label=label)