Add Docker/systemd deployment, documentation, extauth logout URL wiring
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user