[API Request] Feature request: Add explicit negative preference (“dislike”) to the Subsonic API #193
squintgit
started this conversation in
API requests
Replies: 2 comments 3 replies
|
This is REALLY needed for multi-user servers |
3 replies
|
How is this not an option lol |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Type of change
API Clarification
Proposal description
The Subsonic API currently supports star ratings and favorites, but has no way to represent a negative preference (dislike / thumbs down).
In practice, clients and servers are forced to overload 1-star ratings to mean “dislike,” which is ambiguous. A low rating may indicate indifference rather than active dislike, and this prevents clients from implementing a clear, first-class thumbs-down interaction.
I’m proposing the addition of an explicit negative preference signal, for example:
or
This would be backward-compatible and optional. Existing clients could ignore the field, while servers and clients that support it could use it to improve shuffle, radio, and recommendation behavior without abusing star ratings.
Without an API-level representation of negative preference, Subsonic-compatible clients cannot implement a true dislike feature.
One practical example where this limitation becomes visible is CarPlay and Android Auto. Many clients do not expose star ratings in these environments, only a single “favorite” or “like” action. Without a negative preference signal, users cannot indicate “do not play this again” in contexts where minimizing interaction is especially important. A first-class dislike field would allow clients to expose a single, unambiguous action instead of relying on nested menus or overloading star ratings.
I believe this fits well as a backward-compatible extension and would benefit both server-side logic and client UX without breaking existing implementations.
Backward compatibility impact
This proposal can be fully backward-compatible if implemented as an optional extension:
If the project prefers to avoid modifying existing response schemas, an alternative is to introduce new endpoints for setting/getting the preference while keeping existing endpoints untouched.
Backward compatibility
API details
Proposed concept: a first-class negative preference signal for media items (primarily songs).
Two possible models:
Option A (recommended): ternary preference
• setPreference(id, preference) where id is songId (and optionally albumId/artistId later)
Option B: boolean dislike
Rationale: star ratings are ambiguous and not reliably surfaced in clients (e.g., CarPlay UIs often only surface a single “favorite” action). A distinct preference signal allows consistent UX and server-side logic (shuffle/radio/recommendations) without abusing 1-star ratings.
Security impacts
No direct security impact beyond existing authentication/authorization controls for user-specific metadata. The server must ensure preference changes apply only to the authenticated user’s library context, same as favorites/ratings.
Potential issues
Alternative solutions
All reactions