API Changelog
API 6.9.0
This version is being released for Ampache7 only
Added
- ALL
- Support POST requests for all methods
Fixed
- ALL
- Localplay methods might not complete when pulling status from missing controllers
API 6.8.0
This version is being released for Ampache7 only
Added
- ALL
- Support regular handshake and ping actions with a Bearer Token
- API6
- New Method: search_rules (Get a list of valid search rules per search type)
- user_playlists: Add include parameter to get song data
- user_smartlists: Add include parameter to get song data
- toggle_follow: Return errors when the users aren't found
- deprecation warnings from tag methods in the main API handler
- API5
- toggle_follow: Return errors when the users aren't found
Changed
- API6
- browse: don't require
catalogwhen browsing acatalog
- browse: don't require
Fixed
- ALL
- user_update: incorrect parameter check for
filterinstead ofusername - get_indexes: XML data may generate extra root elements
- user_create: validate
disablebool with make_bool - playlists: validate
show_dupesbool with make_bool - get_bookmark: validate
includeandallbools with make_bool - flag: validate
includebool with make_bool - bookmarks: validate
includebool with make_bool - bookmark: validate
includebool with make_bool - bookmark_create: validate
includebool with make_bool - bookmark_edit: validate
includebool with make_bool API6 albumandalbumsinclude didn't always work correctlyartistandartistsinclude fixes API5- user_edit: incorrect parameter check for
filterinstead ofusername - bookmark: Bookmark is a valid
typeAPI3 - genres: fallback function missing
- genre: fallback function missing
- genre_songs: fallback function missing
- genre_artists: fallback function missing
- genre_albums: fallback function missing
- user_update: incorrect parameter check for
API 6.7.3
This version is being released for Ampache7 only
Added
- API6
- Add mbid_group to
albumdata responses
- Add mbid_group to
Fixed
- ALL
- handshake: Check if auth is sent as a valid session and don't try to create a new one
API 6.7.2
This version is being released for Ampache7 only
Changed
- Header auth using a bearer token will return valid sessions on handshake and ping
- Header auth for other methods will hide the session behind an MD5 hash of the username (previous behaviour)
API 6.7.1
This version is being released for Ampache7 only
Added
- API6
- get_art: Extend
typeparameter to include 'label', 'live_stream', 'search', 'user', 'video'
- get_art: Extend
API 6.7.0
This version is being released for Ampache7 only
Added
- API6
- New Method: song_tags (Read and return all file and enabled plugin tags for the song)
- get_art: return error 404 on bad size dimensions
Changed
- ALL
- localplay will not clear mpd playlists when stopped if
clear=0 - Ensure lowercase parameters are set on localplay calls
- localplay will not clear mpd playlists when stopped if
Fixed
- ALL
- get_art: Correctly size and scale art responses
- API6
- catalog_add: typing for adding beets catalog
API 6.6.8
This version is being released for Ampache7 only
This is a massive update to the code typing and backend quality without changing function.
Changed
- ALL
- Typed parameters, properties and arrays for all API versions
- Ensure nullable input is allowed to be null in the code
- Make sure size dimensions for
get_artcalls are valid and split correctly
- API6
- Empty results on
listcalls will send an empty response
- Empty results on
- API5
playlist_generatewithflagnot checking valuecatalog_filecatch exception on add_file error
Fixed
- ALL
- Democratic methods vote array not correct in all cases
API 6.6.7
This version is being released for Ampache7 only
Added
- API6
- get_external_metadata: Get metadata from external plugins. (Useful for scripting)
- Add
is_hiddenstatus andmergegenres into genre data objects
Changed
- ALL
- stats: Allow
limit-1 for no limit. (0 falls back topopular_thresholdvalue)
- stats: Allow
- API6
- user_preference
- Add
has_accessto show whether you can change the preference - Add
valuesto the response for allspecialpreferences
- Add
- user_preferences
- Add
has_accessto show whether you can change the preference - Add
valuesto the response for allspecialpreferences
- Add
- system_preference
- Add
has_accessto show whether you can change the preference - Add
valuesto the response for allspecialpreferences
- Add
- system_preferences
- Add
has_accessto show whether you can change the preference - Add
valuesto the response for allspecialpreferences
- Add
- user_preference
Fixed
- XML
- Index keyed_array data on int indexed arrays
API 6.6.6
Fixed
- ALL
- Not checking auth on User lookup
API 6.6.5
Merge update from Ampache7.
Added
- Search
- Add
disk_countto Album & AlbumDisk search types - Add
no_licenseto Song search
- Add
Fixed
- API6
- handshake: Downgrade version 7 calls to 6
- get_indexes: Respect 'api_hidden_playlists'
- index: Respect 'api_hidden_playlists'
- list: Respect 'api_hidden_playlists'
- playlists: Respect 'api_hidden_playlists'
- API5
- get_indexes: Respect 'api_hidden_playlists'
- playlists: Respect 'api_hidden_playlists'
API 6.6.4
Merge update from Ampache7.
This update has counting updates to allow faster responses on larger results
Added
- API6
- Use set_count function on data classes to speed up counting response totals
- Validate
websiteforuser_edit - Use split search for search methods
- advanced_search / search
- search_songs
- user_update
- playlist_generate
- API5
- Use split search for search methods
- advanced_search
- search_songs
- user_update
- playlist_generate
- Use split search for search methods
- API4
- Use split search for search methods
- advanced_search
- search_songs
- user_update
- playlist_generate
- Use split search for search methods
- API3
- Use split search for search methods
- advanced_search
- search_songs
- Use split search for search methods
Changed
- Rename API-CHANGELOG.md => CHANGELOG-API.md
API 6.6.3
NO CHANGE
API 6.6.2
Added
- API6
- Add
statsparameter to stream and download methods (If false disable stat recording when playing the object) - Respect
api_always_downloadin stream and download methods - Add sorting to stats calls
- add
userobject to playlist responses (owner of the playlist)
- Add
Fixed
- ALL
- index: Artist index not showing albums
API 6.6.1
This release keeps parity between Ampache7 releases by backporting the updated code.
Added
- API6
- Add maximum ID properties to
handshakeandping(with auth) responses for media typesmax_song,max_album,max_artist,max_video,max_podcast,max_podcast_episode
- flag: add
dateas a parameter (set the time for your flag)
- Add maximum ID properties to
Changed
- lost_password: deny access in simple_user_mode
API 6.6.0
Like with total_count, we've added an md5sum of the results (called md5) in responses
This is useful for recording whether you need to update or change results.
Inconsistency with the return of object arrays and single items have been fixed and docs updated.
Added
- ALL
- Track user IP on handshake and ping calls
- playlist_edit: separate error when the playlist doesn't exist
- API6
- New Method: playlist_hash (Get the MD5 hash of the playlist without getting the whole object)
- Add
md5to responses. (Hash objects in the response before slicing and limiting) - Add
md5property to playlist objects. (Hash of song objects in the response) - Add
usernameproperty to handshake and ping (with auth) responses to workaround missing usernames in token auth - Add
has_accessproperty to playlist objects. (Can edit the playlist if true) - Add
has_collaborateproperty to playlist objects. (Can add and remove songs to the playlist if true) - Add
last_updateproperty to playlist objects. (Time a playlist changed. Smartplaylists do not change based on returned songs) - Add
object_typeandobject_idproperty to shout objects
Changed
- API6
- playlist_edit: Add songs if you're a collaborator and ignore edit parameters if you fail has_access check
- catalog_add: Do not return an object. (We return a single item)
- bookmark_create: Do not return an object. (We return a single item)
Fixed
- ALL
- User preferences were not initiated and the server preferences would overwrite differences
- Api::set_user_id function sending an int instead of a user
- Some responses that include users not checking the user is valid
- API6
- JSON: Send empty array for missing single item methods
- lost_password: function name incorrect
- flag: id smartplaylists correctly
- rate: id smartplaylists correctly
- albums: Browse user may not be set
- podcast_episodes: Browse user may not be set
API 6.5.0
Added
- API6
- Add
songartiststo all album data responses. (In an albumartists=album_artists,songartists=song_artists) - artist_albums: add
album_artistas an optional parameter - get_indexes: add
catalog,album_artistandsong_artistas possibletypevalues - list: add
catalogandsong_artistas possibletypevalues - Add
condandsortparameters to browse methods- album_songs
- albums
- artist_albums
- artist_songs
- artists
- browse
- catalogs
- followers
- genre_albums
- genre_artists
- genre_songs
- genres
- get_indexes
- index
- label_artists
- labels
- license_songs
- licenses
- list
- live_streams
- playlists
- podcasts
- podcast_episodes
- shares
- songs
- user_playlists
- user_smartlists
- Add
Changed
- Reset any existing browse when calling Api::getBrowse()
- Filter duplicate search names outside of the data classes and filter on browses
- API6 methods converted to Browse
- artist_albums
- artist_songs
- browse (
catalogtypes) - catalogs
- followers
- genre_albums
- genre_artists
- genre_songs
- get_indexes (
catalogandplaylisttypes) - index (
catalogandplaylisttypes) - label_artists
- license_songs
- list (
playlisttypes) - playlists
- podcast_episodes
- stats (random
playlisttypes) - user_playlists
- user_smartlists
- API5 methods converted to Browse
- get_indexes (
playlisttypes) - playlists
- stats (random
playlisttypes)
- get_indexes (
- API4 methods converted to Browse
- get_indexes (
playlisttypes) - playlists
- get_indexes (
Fixed
- ALL
- html_entity_decode
include,itemsandtracksparameter for applicable methods - Rating and flag data for smartlists was using incorrect id
- playlist_edit: track insert broken by removing table constraint
- playlist_edit: workaround sending owner username instead of ID
- playlist_add_song: When using
unique_playlistdon't grab the whole playlist
- html_entity_decode
- API6
- list: sorting was by
idinstead ofname - browse: sorting was by
idinstead ofname - download: The API can use searches as playlists so check for the
smart_prefix - stream: The API can use searches as playlists so check for the
smart_prefix - Respect album sort preferences in all album object responses
- list: sorting was by
API 6.4.0
Added
- API6
- Downgrade any API7 calls to API6 wiki
- New Method: player (Inform the server about the state of your client player)
- Returns
now_playingstate on completion
- Returns
- download: add
bitrateparameter - playlists: add
includeparameter (note this can be massive and slow when searches are included)
Changed
- API6
- Do not translate API
errorMessagestrings ampache.org
- Do not translate API
Fixed
- ALL
- Download method format parameter didn't have a fallback value
- API4
- playlist: error check for missing/deleted playlists
- playlist_songs: error check for missing/deleted playlists
- API6
- Playlists objects would not return duplicates items if allowed
- has_art property missing from songs and albums
- playlist_add: couldn't add a single item
API 6.3.1
Added
- API6
- New Method: now_playing (Get what is currently being played by all users.)
API 6.3.0
Added
- API6
- New Method: search_group (return multiple object types from a single set of search rules)
- New Method: search (alias for advanced_search)
- New Method: user_playlists (return user playlists and does not include smartlists)
- New Method: user_smartlists (return user smartlists (searches) and does not include playlists)
- New Method: playlist_add (add songs to a playlist, allowing different song parent types)
- New Method: index (replaces get_indexes with a simpler list of id's. children can be included)
- Add
has_artparameter to any object with anarturl - Add avatar url to user objects
Changed
- API6
- playlist_add_song: depreciated and will be removed in API7 (Use playlist_add)
- share_create: add more valid types ('playlist', 'podcast', 'podcast_episode', 'video')
- user: make username optional
Fixed
- ALL
- Userflag wasn't sending bool when cached in the database
- Admin would always get everyones playlists when filtering
- Stream methods would not send the bitrate correctly
- API4
- playlists method not respecting like for smartlists
- API5
- playlists method not respecting like for smartlists
- API6
- playlists method not respecting like for smartlists
- playlist_edit method will decode html
,separators
API 6.2.1
NO CHANGE
API 6.2.0
Added
- API: Allow non-expiring user sessions when using a header token
- Allow endless api sessions. (You should start using http header auth to hide these)
Changed
- Set default API version to 6 (was 5)
- Allow raising and lowering response version on ping to any version
- API6
- Return error on handshake version failure
Fixed
- ALL
- UrlToSong couldn't handle encoded urls
- API3
- Video data would get an incorrect stream url
- API5
- bookmark_create: type is mandatory
- API6
- bookmark_create: type is mandatory
API 6.1.0
Two new methods have been added
The bookmark methods have had a bit of a rework as they were not very useful
Finally the issues with setting your auth token in the http header have been fixed
Added
- API6
- New Method: bookmark (Get single bookmark by bookmark_id)
- New Method: lost_password (Allows a non-admin user to reset their password)
- bookmark_create: Add
includeparameter (if true include the object in the bookmark) - bookmark_edit: Add
includeparameter (if true include the object in the bookmark) - get_bookmark
- Add
includeparameter (if true include the object in the bookmark) - Add
allparameter (if true include every bookmark for the object)
- Add
- bookmarks
- Add parameter
clientto filter by specific groups of bookmarks - Add
includeparameter (if true include the object in the bookmark)
- Add parameter
Changed
- API5
- bookmark_edit: show error on missing bookmark instead of empty object
- bookmark_delete: show error on missing bookmark instead of empty object
- API6
- get_bookmark
- add bookmark as a valid
object_type - Don't return single JSON bookmarks as an object
- add bookmark as a valid
- bookmark_create: Remove
clientparameter default value ('AmpacheAPI') - bookmark_edit
- Remove
clientparameter default value ('AmpacheAPI') - show error on missing bookmark instead of empty object
- add bookmark as a valid
object_type - Don't return single JSON bookmarks as an object
- Remove
- bookmark_delete
- Remove
clientparameter default value ('AmpacheAPI') - show error on missing bookmark instead of empty object
- add bookmark as a valid
object_type
- Remove
- get_bookmark
Fixed
- ALL
- Some JSON methods with empty results would not show
total_countin results - handshake: auth failure with header token
- playlist_generate: Don't error when optional
modeandformatare not set - advanced_search: runtime error on empty data type
- Some JSON methods with empty results would not show
- API4
- Fix lots of Runtime Error's on missing optional data
- API5
- Fix lots of Runtime Error's on missing optional data
- video: error type was song instead of filter
- genre_artists, genre_albums, genre_songs: Parameter
filterruntime errors - download: random search/playlist didn't use the
idparameter - stream: random search/playlist didn't use the
idparameter - bookmark_edit
- Missing user id in data array
- Not able to edit all bookmarks
- API6
- Fix lots of Runtime Error's on missing optional data
- video: error type was song instead of filter
- catalog_folder didn't get the group of items correctly
- genre_artists, genre_albums, genre_songs: Parameter
filterruntime errors - download: random search/playlist didn't use the
idparameter - stream: random search/playlist didn't use the
idparameter - bookmark_edit
- Missing user id in data array
- Not able to edit all bookmarks
API 6.0.3
Added
- API5::playlist_songs: Add
randomto get random objects filtered by limit
Fixed
- ALL
- Fixed Bearer token auth on all methods
- handshake: runtime errors with bad username
- handshake: Don't error on empty data counts
- ping: Don't error on empty data counts
- Api6
- list: searches were missing from playlists
- browse: XML returned a list instead of a browse object
API 6.0.2
NO CHANGE
API 6.0.1
Changed
- API6 XML
- get_similar: return song objects to match json
Fixed
- API6
- user_preference: returned array instead of object
- system_preference: returned array instead of object
- preference_create: returned array instead of object
- preference_edit: returned array instead of object
API 6.0.0
Stream token's will let you design permalinked streams and allow users to stream without re authenticating to the server. wiki
Added
- API5::playlist_songs: Add
randomto get random objects filtered by limit - API6 (Based on API5)
- Added podcast id and name to
podcast_episodeobjects - API6::browse: List server contents in a directory-style listing (Music, Podcast and Video catalogs)
- API6::list: Replace get_indexes with a faster lookup and similar parameters returning
id,name,prefixandbasename - API6::catalog_add: Create a catalog (Require: 75)
- API6::catalog_delete: Delete a catalog (Require: 75)
- API6::catalog_folder: Perform actions on local catalog folders. (catalog_file but for folders) (Require: 50)
- API6::live_stream_create: Create a new live stream (radio station)
- API6::live_stream_edit: Edit a live stream
- API6::live_stream_delete: Delete a stream by ID
- API6::register: Allow users to register an account (if enabled)
- API6::playlist_create: Return an error if the playlist name already exists for that user
- API6::playlist_songs: Add
randomto get random objects filtered by limit - API6::user_edit (previously user_create):
- Add
groupparameter to pick a catalog filter group - Add
fullname_publicto enable/disable using fullname in public display - Add
reset_apikeyto reset a user Api Key - Add
reset_streamtokento reset a user Stream Token - Add
clear_statsreset all stats for this user be very sure about this one!
- Add
- Add
prefix(Prefix for Full Name) to album & artist responses - Add
basename(Name without prefix) to album & artist responses - Add
bitrateto Democratic objects - Add
formatto Song and Democratic objects - Add
stream_format,stream_bitrate,stream_mimeto Song objects (This is the transcoded output for a stream) - Add all mapped artists to song and album objects (JSON added an
artistselement) - Add
bitrate,stream_bitrate,rate,mode,channelsto Podcast Episode objects
- Added podcast id and name to
- JSON responses
- Cast bool fields to
trueandfalseinstead of "1" & "0" - Add
total_countto responses to give clients an idea of the total possible objects
- Cast bool fields to
- advanced_search
- Add
song_genreto album and artist searches - Add
possible_duplicate_albumto song search - Add
mbid_artistto album search - Add
barcodeto album search - Add
catalog_numberto album search - Add
smartplaylistto album search - Add
duplicate_tracksto album and song search (MIN & MAX id for song search) - Alias
possible_duplicate_album=>possible_duplicatefor album search - Alias
album_genre=>genrefor album search - Alias
mbid_album=>mbidfor album search - Alias
mbid_artist=>mbidfor artist search - Alias
song_genre=>genrefor song search
- Add
Changed
- Api6
- Renamed
user_updatetouser_edit(user_update still works and will be removed in API7)
- Renamed
- Api5
- Add backwards compatible
user_editmethod to point touser_update
- Add backwards compatible
- ALL
- Add all possible plugin preferences to the system list so they can't be deleted
- Albums with no album_artist may now return 0 artist called 'Various'
- Don't send AlbumDisk objects to the API
- Send the authenticated user to all method calls
- XML responses
- Api6 XML success and error response messages are put in a
messageelement (like json) - For data responses id is the only attribute and everything else is an element
- Name was not set as an attribute OR an element so now it's always an element
- Return original XML output (that may be malformed) when loadxml fails.
- Api6 XML success and error response messages are put in a
- Api6::get_indexes: This method is depreciated and will be removed in Ampache API7 (Use list instead)
Removed
- Api6
preciseratingremoved from all objects (use rating)- Remove non-song MBIDs as not relevant to the object
- album_songs remove
exactas a parameter - stream remove
podcastas a validtypevalue
- preference_create: don't allow creating 'system' preferences
- Warning of depreciated methods from API5 have been removed from API6
- Api6::tag
- Api6::tags
- Api6::tag_albums
- Api6::tag_artists
- Api6::tag_songs
Fixed
- ALL
- advanced_search methods were breaking with various offset and limits
- API4
- share_create: null
expiresfall back toshare_expireor 7 days
- share_create: null
- API5
- share_create: null
expiresfall back toshare_expireor 7 days - preference_edit: Could apply to the wrong user
- share_create: null
- Api6 JSON
- Share and Bookmark object id's were not strings
- Api3
- Never send 0 ratings. They should always be null (e.g.
<rating/>) - Artists method parameters were incorrect
- Never send 0 ratings. They should always be null (e.g.
API 5.6.2
Fixed
- ALL
- Require and set a valid version for
api_force_version
- Require and set a valid version for
API 5.6.1
NO CHANGE
API 5.6.0
Fixed
- ALL
- share_create and share_edit methods broken when setting expiry days
- advanced_search methods were breaking with various offset and limits
- playlists methods parameter 'exact' always ending up false
- Api5
- update_art hardcoded url to artist
- Typo in song bitrate xml
API 5.5.7
Changed
- Keep the original mime and bitrate on song objects instead of the transcoded value
API 5.5.6
Fix various runtime errors and incorrect parameters for responses.
Changed
- API browses all point to the Api class
- Use
FILTER_VALIDATE_IPon ping calls
Fixed
- Api5
songsset_filter call without browse parameter may have lost infoget_indexesset album_artist filter correctlyartistsset album_artist filter correctlyshare_createundefined filter check
- Api4
songsset_filter call without browse parameter may have lost infoget_indexesset album_artist filter correctlytimelineincorrect JSON attributedatainstead ofdatecatalogsJSON had incorrect data forlast_addand missingenabledalbumsreturn an empty response with a bad artist iddownloadurl parameter order matching "client, action, cache"catalogsundefined filter checkpodcastundefined filter checkpodcast_editundefined filter checkpodcastsundefined filter checkshare_createundefined filter checkshare_editundefined filter check
- Api3
album_songsreturn an empty response with a bad album idartist_albumsreturn an empty response with a bad artist id- Calls to
songswith user ID instead of user object
API 5.5.5
NO CHANGE
API 5.5.4
Fixed
- User count in Api::ping and Api::handshake was doubled
- Api3::stats method had incorrect recent parameters
- Ensure the output
bitrateandmimeare set for song objects
API 5.5.3
NO CHANGE
API 5.5.2
Added
- advanced_search
- Add
song_artistas a search type (uses artist rules) - Add
album_artistas a search type (uses artist rules) - Add
song_genre,mbid_artist,mbid_songto album search - Add
song_genre,mbid_album,mbid_songto artist search - Add
possible_duplicate_albumto song search
- Add
Fixed
- advanced_search
- unable to retrieve song_artist or album_artist results
API 5.5.1
NO CHANGE
API 5.5.0
This will likely be the last 5.x API release. API6 will be a continuation of API5 and not be a significant change like the 4->5 transition.
Added
- Api::stream add new types
playlistandsearch(Streams a random object from these lists) - Api::download add new types
playlistandsearch - advanced_search
- Add
podcastas a search type- Add rule
title - Add rule
podcast_episode(Search by podcast episode name) - Add rule
time(Episode length in minutes) - Add rule
state(Completed, Pending Skipped) - Add rule
file - Add rule
added - Add rule
pubdate(Episode Publication Date)
- Add rule
- Add
podcast_episodeas a search type- Add rule
title - Add rule
podcast(Search by podcast name) - Add rule
time(Length in minutes) - Add rule
state(Completed, Pending Skipped) - Add rule
file - Add rule
added - Add rule
pubdate(Publication Date)
- Add rule
- Add
genreas a search type- Add rule
title
- Add rule
- Add
Fixed
- API4::get_indexes podcast_episode was encoding into the API5 object
- API4::share_create was unable to share when using lowercase types
- advanced_search
- Added missing
song(wassong_title) to album searches
- Added missing
API 5.4.1
Added
- Include
lyricsin Song objects - advanced_search
- Add
fileto album and artist search - Add
trackto song search - Add
summaryto artist search
- Add
API 5.4.0
Added
- advanced_search
- Add
fileto album and artist search
- Add
API 5.3.3
Added
- advanced_search
- Add
song_titleto album search - Add
album_titleandsong_titleto artist search - Add
orphaned_albumto song search
- Add
Fixed
- Api4::record_play had the
useras mandatory again - After catalog actions; verify songs with an orphaned album which you won't be able to find in the ui
API 5.3.2
NO CHANGE
API 5.3.1
NO CHANGE
API 5.3.0
Added
- advanced_search:
- Add
songratingto album search (My Rating (Song)) - Add
songrating(My Rating (Song)) andalbumrating(My Rating (Album)) to artist search - Allow empty/null searches for all mbid searches
- Allow empty/null searches for label searches
- Add
song_countto album and artist search - Add
album_countto artist search - Add
myplayedartist(Played by Me (Artist)) to album search - Add
song_artistto album search - Add alias
album_artistto album search forartistsearches - Add
recent_addedto album search
- Add
API 5.2.1
Added
- API5
- The docs for errors have been extended for the type when returned
Changed
- API5
- Return the xml total_count of playlists based on hide_search preference
Fixed
- API5
- Some errors were returning the value and not the parameter on error
- API4
- update_from_tags: type case error
- rate: Object type to class mapping
- flag: Object type to class mapping
- update_art: Object type to class mapping and type case check
- update_from_tags: Object type to class mapping
- genre and tag function compatibility
- API3
- stats: incorrect getRandom call
- rate: Object type to class mapping
- playlist: bad escaping on the playlist id
API 5.2.0
Check out the docs for multi API support at ampache.org
note JSON didn't exist for API3 so all json requests from API3 calls will revert to API5
Added
- Support for API3, API4 and API5 responses including PHP8 support (keeps original tag calls)
- API5
- playlists: add parameter
show_dupesif true ignore 'api_hide_dupe_searches' setting - get_art: add parameter
fallbackif true return default art ('blankalbum.png') instead of an error
- playlists: add parameter
- API4
- playlists: add parameter
show_dupesif true ignore 'api_hide_dupe_searches' setting
- playlists: add parameter
- API3
- Added genre calls as an alias to tag functions to match API4 and API5
Fixed
- Session and user id identification and errors from that
- API5
- playlists: sql for searches wasn't filtering
- Art URL for searches was malformed
- API4
- Art URL for searches was malformed
- API3
- democratic: This method was broken in API3 and never worked correctly