diff --git a/changes/changelog.d/575.enhancement b/changes/changelog.d/575.enhancement new file mode 100644 index 000000000..eb1781def --- /dev/null +++ b/changes/changelog.d/575.enhancement @@ -0,0 +1 @@ +Documented which Subsonic endpoints are implemented (#575) diff --git a/docs/developpers/index.rst b/docs/developpers/index.rst new file mode 100644 index 000000000..6a56edbe1 --- /dev/null +++ b/docs/developpers/index.rst @@ -0,0 +1,15 @@ +Developpers documentation +========================= + +This documentation is targeted primarily at developpers who want to understand +how Funkwhale work and how to build apps that integrate with Funkwhale's ecosystem. + +Reference +--------- + +.. toctree:: + :maxdepth: 2 + + ../api + ../federation/index + subsonic diff --git a/docs/developpers/subsonic.rst b/docs/developpers/subsonic.rst new file mode 100644 index 000000000..df269e956 --- /dev/null +++ b/docs/developpers/subsonic.rst @@ -0,0 +1,70 @@ +Subsonic API +============ + +Funkwhale implements a subset of the `Subsonic API `_ that makes it compatible +with various apps in the Subsonic ecosystem (See :doc:`../users/apps`). + +Supported endpoints +------------------- + +We seek the best compatibility with existing apps and wil eventually implement +all endpoints that match Funkwhale's feature set. However, the current implementation +do not include folder-based endpoints, as it does not match our internal model at all +and will require substantial effort to emulate. + +We'll try to keep this list up-to-date, but you can also browse `the relevant code +`_ +if needed. + +As of today, the following endpoints are implemented: + +- createPlaylist +- deletePlaylist +- getAlbum +- getAlbumList2 +- getArtist +- getArtistInfo2 +- getArtists +- getAvatar +- getCoverArt +- getIndexes +- getLicense +- getMusicFolders +- getPlaylist +- getPlaylists +- getRandomSongs +- getSong +- getStarred +- getStarred2 +- getUser +- ping +- scrobble +- search3 +- star +- stream +- unstar +- updatePlaylist + +We support both XML and JSON formats for all those endpoints. + +Additional properties +--------------------- + +Regardless of the endpoints, we always return those additional properties +in our payload, which you can use to adapt your client behaviour if needed: + +.. code-block:: json + + { + "subsonic-response": { + ... + "type": "funkwhale", + "funkwhaleVersion": "0.17" + } + } + +Testing a Subsonic app +---------------------- + +We maintain a demo server at https://demo.funkwhale.audio/, which you can use for +your tests. Example with the ping endpoint: https://demo.funkwhale.audio/rest/ping.view?f=json diff --git a/docs/index.rst b/docs/index.rst index ef02db64b..5eb505c3f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -19,8 +19,7 @@ Funkwhale is a self-hosted, modern free and open-source music server, heavily in configuration troubleshooting importing-music - federation/index - api + developpers/index third-party contributing translators