diff --git a/API_COMPATIBILITY.md b/API_COMPATIBILITY.md new file mode 100644 index 000000000..ca0d11e99 --- /dev/null +++ b/API_COMPATIBILITY.md @@ -0,0 +1,57 @@ + +### Supported Subsonic API endpoints + +CloudSonic is currently compatible (to some extent) with [Subsonic API](subsonic.org/pages/api.jsp) v1.8.0, with some exceptions. + +This is an (almost) up to date list of all Subsonic API endpoints implemented by CloudSonic. +Check the "Notes" column for limitations/missing behaviour. Also keep in mind these differences between +CloudSonic and Subsonic: + +* Right now, CloudSonic only works with a single Music Library (Music Folder) +* CloudSonic does not mark songs as played by calls to `stream`, only when + `scrobble` is called with `submission=true` +* Next features to be implemented: Playlists (WIP), MultiUser (WIP), Jukebox, Sharing, Podcasts, Bookmarks, Internet Radio. + + +| ENDPOINT | NOTES | +|------------------------|-------| +| _SYSTEM_ || +| `ping` | | +| `getLicense` | Always valid ;) | +| || +| _BROWSING_ || +| `getMusicFolders` | Hardcoded to just one, configured in `app.conf` | +| `getIndexes` | Doesn't support shortcuts, nor direct children | +| `getMusicDirectory` | | +| `getSong` | | +| `getArtists` | | +| `getArtist` | | +| `getAlbum` | | +| `getGenres` | | +| || +| _ALBUM/SONGS LISTS_ || +| `getAlbumList` | `byYear` and `byGenre` are not implemented | +| `getAlbumList2` | `byYear` and `byGenre` are not implemented | +| `getStarred` | Doesn't return any artists, as iTunes does not support starred (loved) artists | +| `getStarred2` | Doesn't return any artists, as iTunes does not support starred (loved) artists | +| `getNowPlaying` | | +| `getRandomSongs` | Ignores `genre` and `year` parameters | +| || +| _SEARCHING_ || +| `search2` | Doesn't support Lucene queries, only simple auto complete queries | +| `search3` | Doesn't support Lucene queries, only simple auto complete queries | +| || +| _MEDIA RETRIEVAL_ || +| `stream` | Returns wrong content-length when downsampling | +| `download` | | +| `getCoverArt` | Only gets embedded artwork | +| `getAvatar` | Always returns the same image | +| || +| _MEDIA ANNOTATION_ || +| `star` | | +| `unstar` | | +| `setRating` | Doesn't work with artists | +| `scrobble` | No Last.FM support yet. It is used to update play count, last played, skip count and last skipped | +| || +| _USER MANAGEMENT_ || +| `getUser` | Hardcoded all roles, ignores `username` parameter| diff --git a/README.md b/README.md index becd88ddb..180e9bcf4 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,7 @@ Version 1.0 main goals are: ### Supported Subsonic API version -I'm currently trying to implement all functionality from API v1.8.0, with some exceptions. - -Check the (almost) up to date [compatibility chart](https://github.com/cloudsonic/sonic-server/wiki/Compatibility) +Check the (almost) up to date [compatibility chart](API_COMPATIBILITY.md) for what is working. ### Installation @@ -48,7 +46,7 @@ To change any configuration, create a file named `sonic.toml` in the project fol ### Development Environment -You will need to install [Go 1.13](https://golang.org/dl/) +You will need to install [Go 1.13](https://golang.org/dl/) and [Node 12.14.1](http://nodejs.org) Then install dependencies: