Subsonic / OpenSubsonic compatibility
VibeSonic aims to eventually implement the Subsonic API (/rest/*) and
OpenSubsonic extensions. Phase 1 implements none of this — it only
builds the foundation (database schema, stable IDs, library indexing,
streaming, cover art) that the protocol layer will sit on top of in a
later phase.
This matrix will be filled in as internal/subsonic and
internal/opensubsonic are implemented. For now, every endpoint is
"Not yet implemented."
System
| Endpoint |
Status |
ping |
Not yet implemented |
getLicense |
Not yet implemented |
Browsing (filesystem-style)
| Endpoint |
Status |
Notes |
getMusicFolders |
Not yet implemented |
music_folders table and internal/database queries exist |
getIndexes |
Not yet implemented |
internal/library.ListDirectory provides the foundation |
getMusicDirectory |
Not yet implemented |
same |
Browsing (ID3/tag-style)
| Endpoint |
Status |
Notes |
getArtists |
Not yet implemented |
database.ListArtists exists |
getArtist |
Not yet implemented |
database.ListAlbumsByArtist exists |
getAlbum |
Not yet implemented |
database.ListSongsByAlbum exists |
getSong |
Not yet implemented |
database.GetSong exists |
getGenres |
Not yet implemented |
database.ListGenres exists |
getAlbumList / getAlbumList2 |
Not yet implemented |
|
getRandomSongs |
Not yet implemented |
|
getSongsByGenre |
Not yet implemented |
|
Search
| Endpoint |
Status |
search3 |
Not yet implemented |
Streaming / media retrieval
| Endpoint |
Status |
Notes |
stream |
Not yet implemented |
internal/streaming provides range-request-aware serving; the web UI's /stream/{id} route is the non-Subsonic equivalent used today |
download |
Not yet implemented |
|
getCoverArt |
Not yet implemented |
internal/coverart provides discovery + resize cache; the web UI's /cover-art/{id} route is the non-Subsonic equivalent used today |
getLyrics / getLyricsBySongId |
Not yet implemented |
lyrics/lyrics_lines/lyrics_cues tables exist |
getAvatar |
Not yet implemented |
|
Playlists
| Endpoint |
Status |
Notes |
getPlaylists |
Not yet implemented |
database.ListPlaylistsVisibleToUser exists; web UI has a playlists page |
getPlaylist |
Not yet implemented |
|
createPlaylist |
Not yet implemented |
|
updatePlaylist |
Not yet implemented |
|
deletePlaylist |
Not yet implemented |
|
Favorites / ratings / activity
| Endpoint |
Status |
Notes |
star / unstar |
Not yet implemented |
database.Star/Unstar exist; web UI has favorite buttons |
setRating |
Not yet implemented |
database.SetRating exists |
scrobble |
Not yet implemented |
scrobbles table exists |
getStarred / getStarred2 |
Not yet implemented |
|
getNowPlaying |
Not yet implemented |
now_playing table + database.ListNowPlaying exist |
Bookmarks / play queue
| Endpoint |
Status |
Notes |
getBookmarks / createBookmark / deleteBookmark |
Not yet implemented |
database functions exist |
getPlayQueue / savePlayQueue |
Not yet implemented |
database functions exist |
Sharing
| Endpoint |
Status |
Notes |
getShares / createShare / updateShare / deleteShare |
Not yet implemented |
shares/share_items tables exist |
Podcasts
| Endpoint |
Status |
Notes |
getPodcasts |
Not yet implemented |
podcast_channels/podcast_episodes tables exist |
createPodcastChannel / deletePodcastChannel |
Not yet implemented |
|
downloadPodcastEpisode / deletePodcastEpisode |
Not yet implemented |
|
Internet radio
| Endpoint |
Status |
Notes |
getInternetRadioStations |
Not yet implemented |
internet_radio_stations table exists |
createInternetRadioStation / updateInternetRadioStation / deleteInternetRadioStation |
Not yet implemented |
|
Users / chat
| Endpoint |
Status |
Notes |
getUser / getUsers |
Not yet implemented |
native web admin has a users page |
createUser / updateUser / deleteUser |
Not yet implemented |
|
addChatMessage / getChatMessages |
Not yet implemented |
chat_messages table exists |
Transcoding
| Endpoint |
Status |
Notes |
Transcoding profiles (internal/transcoding) |
Not yet implemented |
transcode_profiles table exists; Phase 1 only supports direct (non-transcoded) streaming |
Authentication
Phase 1's /rest/* authentication (token-based u/t/s or API key)
is not yet implemented. When it is, it will authenticate independently
of the browser session/CSRF/external-auth flow used by the web UI, per
the project's design constraint that external auth must never interfere
with native Subsonic client authentication.