From f2549231ee19f48ec8dba553681dcea57fa780cc Mon Sep 17 00:00:00 2001 From: Julien EYRIES Date: Sat, 2 May 2026 11:32:24 +0200 Subject: [PATCH] Migrate playlist endpoints from /tracks to /items MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated API paths from `/playlists/{id}/tracks` to `/playlists/{id}/items` and updated JSON decoding keys accordingly (`"tracks"` → `"items"`, `"track"` → `"item"`) to align with the current Spotify Web API. Co-Authored-By: Claude Sonnet 4.6 --- Sources/SpotifyWebAPI/API/SpotifyAPI+Playlists.swift | 4 ++-- .../Object Model/Playlist Objects/Playlist.swift | 2 +- .../Object Model/Playlist Objects/PlaylistItemContainer.swift | 2 +- .../Post Request Objects/Playlist Objects/URIsContainer.swift | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/SpotifyWebAPI/API/SpotifyAPI+Playlists.swift b/Sources/SpotifyWebAPI/API/SpotifyAPI+Playlists.swift index ec71c5c2f..108e88bea 100644 --- a/Sources/SpotifyWebAPI/API/SpotifyAPI+Playlists.swift +++ b/Sources/SpotifyWebAPI/API/SpotifyAPI+Playlists.swift @@ -30,7 +30,7 @@ private extension SpotifyAPI { ).id return self.apiRequest( - path: "/playlists/\(playlistId)/tracks", + path: "/playlists/\(playlistId)/items", queryItems: queryItems, httpMethod: httpMethod, makeHeaders: Headers.bearerAuthorizationAndContentTypeJSON(_:), @@ -77,7 +77,7 @@ private extension SpotifyAPI { )?.commaSeparatedString() return self.getRequest( - path: "/playlists/\(playlistId)/tracks", + path: "/playlists/\(playlistId)/items", queryItems: [ "fields": filters, "limit": limit, diff --git a/Sources/SpotifyWebAPI/Object Model/Playlist Objects/Playlist.swift b/Sources/SpotifyWebAPI/Object Model/Playlist Objects/Playlist.swift index 72de0d71e..f2665f25a 100644 --- a/Sources/SpotifyWebAPI/Object Model/Playlist Objects/Playlist.swift +++ b/Sources/SpotifyWebAPI/Object Model/Playlist Objects/Playlist.swift @@ -260,7 +260,7 @@ extension Playlist: Codable { private enum CodingKeys: String, CodingKey { case name - case items = "tracks" + case items case owner case isPublic = "public" case isCollaborative = "collaborative" diff --git a/Sources/SpotifyWebAPI/Object Model/Playlist Objects/PlaylistItemContainer.swift b/Sources/SpotifyWebAPI/Object Model/Playlist Objects/PlaylistItemContainer.swift index 1e045d8a8..ae9df4671 100644 --- a/Sources/SpotifyWebAPI/Object Model/Playlist Objects/PlaylistItemContainer.swift +++ b/Sources/SpotifyWebAPI/Object Model/Playlist Objects/PlaylistItemContainer.swift @@ -77,7 +77,7 @@ extension PlaylistItemContainer: Codable { case addedAt = "added_at" case addedBy = "added_by" case isLocal = "is_local" - case item = "track" + case item } public init(from decoder: Decoder) throws { diff --git a/Sources/SpotifyWebAPI/Object Model/Post Request Objects/Playlist Objects/URIsContainer.swift b/Sources/SpotifyWebAPI/Object Model/Post Request Objects/Playlist Objects/URIsContainer.swift index c350b7e57..d16d95fd0 100644 --- a/Sources/SpotifyWebAPI/Object Model/Post Request Objects/Playlist Objects/URIsContainer.swift +++ b/Sources/SpotifyWebAPI/Object Model/Post Request Objects/Playlist Objects/URIsContainer.swift @@ -84,7 +84,7 @@ extension URIsContainer: Codable { private enum CodingKeys: String, CodingKey { case snapshotId = "snapshot_id" - case items = "tracks" + case items } }