Files
vibesonic/docs/subsonic-compatibility.md
T

4.8 KiB

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
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.