Skip to content

feat(apps): broaden Spotify read-only scopes#14

Merged
jezekra1 merged 1 commit intomainfrom
feat/spotify-more-read-scopes
Apr 19, 2026
Merged

feat(apps): broaden Spotify read-only scopes#14
jezekra1 merged 1 commit intomainfrom
feat/spotify-more-read-scopes

Conversation

@jezekra1
Copy link
Copy Markdown

Summary

Expands the Spotify connector's default scopes to cover additional read-only endpoints that agents hit in practice. No write scopes added.

New scopes (all read)

Scope Unlocks
user-follow-read GET /me/following
user-read-playback-state GET /me/player, /me/player/devices, /me/player/currently-playing
user-read-currently-playing narrower form of the above
user-read-playback-position podcast resume positions
user-personalized personalized content / recommendations

Combined with the existing scopes (user-read-email, user-read-private, user-library-read, playlist-read-private, playlist-read-collaborative, user-top-read, user-read-recently-played), the connector now covers every read scope Spotify exposes on the Web API. The only Spotify scopes intentionally excluded are:

  • All write scopesuser-library-modify, user-follow-modify, playlist-modify-public, playlist-modify-private, user-modify-playback-state, ugc-image-upload
  • Client-SDK-onlystreaming (Web Playback SDK), app-remote-control (iOS/Android SDK)
  • Partner-onlyuser-soa-*, soa-* (Spotify Open Access, for integration partners)

Note unrelated to scopes

GET /playlists/{id}/tracks returning 403 is a Spotify Web API access change from Nov 2024 — endpoints like /playlists/{id}/tracks, /audio-features, /audio-analysis, recommendations, and related-artists are restricted for apps in Development mode. No scope unlocks them. Workaround: read items embedded in GET /playlists/{id} (includes first 100 tracks with a next URL for pagination).

Test plan

  • pnpm --filter @onecli/web lint — clean
  • pnpm --filter @onecli/web check-types — clean
  • Manual: reconnect a Spotify account, verify /me/following, /me/player, /me/player/currently-playing now return 200

Adds user-follow-read, user-read-playback-state,
user-read-currently-playing, user-read-playback-position,
and user-personalized so agents can access followed
artists, player state, and personalized content in addition
to library/playlists/top-tracks/history.

Signed-off-by: Radek Ježek <radek.jezek@ibm.com>
@jezekra1 jezekra1 merged commit 908723d into main Apr 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants