spotify-graphql
spotify-graphql copied to clipboard
2.0.0: complete rewrite using @graphql-mesh/json-schema
cf: #79
- [x] build system
- [x] CLI
npm serve - [ ] public API to get GraphQL Mesh instance and run custom express
- [x] 🐞
Query.show.episodesis not an array (Spotify doc not matching API response) - [ ] 🐞
Query.playlistTracksshould supports episodes as item (requires custom resolver for union type) - [ ] "Get Recommendations" requires a custom resolver given the high number of optional query parameters (
additionalTypeDefs/additionalResolvers) - [x] ~use transform mock to return a
success: truefor empty responses~
Albums API
- [x] Get Multiple Albums
- [x] Get an Album
- [x] Get an Album's Tracks
Artists API
- [x] Get Multiple Artists
- [x] Get an Artist
- [x] Get an Artist's Top Tracks
- [x] Get an Artist's Related Artists
- [x] Get an Artist's Albums
Browse API
- [x] Get All New Releases
- [x] Get All Featured Playlists
- [x] Get All Categories
- [x] Get a Category
- [x] Get a Category's Playlists
- [ ] Get Recommendations
- [x] Get Recommendation Genres
Episodes API
- [x] Get Multiple Episodes
- [x] Get an Episode
Follow API
- [x] Follow a Playlist
- [x] Unfollow Playlist
- [x] Check if Users Follow a Playlist
- [x] Get User's Followed Artists
- [x] Follow Artists or Users
- [x] Unfollow Artists or Users
- [x] Get Following State for Artists/Users
Library API
- [x] Get User's Saved Albums
- [x] Save Albums for Current User
- [x] Remove Albums for Current User
- [x] Check User's Saved Albums
- [x] Get User's Saved Tracks
- [x] Save Tracks for User
- [x] Remove User's Saved Tracks
- [x] Check User's Saved Tracks
- [x] Get User's Saved Shows
- [x] Save Shows for Current User
- [x] Remove User's Saved Shows
- [x] Check User's Saved Shows
Personalization API
- [x] Get a User's Top Artists and Tracks
Player API
- [x] Get Information About The User's Current Playback
- [x] Transfer a User's Playback
- [x] Get a User's Available Devices
- [x] Get the User's Currently Playing Track
- [x] Start/Resume a User's Playback
- [x] Pause a User's Playback
- [x] Skip User’s Playback To Next Track
- [x] Skip User’s Playback To Previous Track
- [x] Seek To Position In Currently Playing Track
- [x] Set Repeat Mode On User’s Playback
- [x] Set Volume For User's Playback
- [x] Toggle Shuffle For User’s Playback
- [x] Get Current User's Recently Played Tracks
- [x] Add an item to queue
Playlists API
- [x] Get a List of Current User's Playlists
- [x] Get a List of a User's Playlists
- [x] Create a Playlist
- [x] Get a Playlist
- [x] Change a Playlist's Details
- [x] Get a Playlist's Items
- [x] Add Items to a Playlist
- [x] Reorder or Replace a Playlist's Items
- [x] Remove Items from a Playlist
- [x] Get a Playlist Cover Image
- [ ] ~Upload a Custom Playlist Cover Image~
Search API
- [x] Search for an Item
Shows API
- [x] Get Multiple Shows
- [x] Get a Show
- [x] Get a Show's Episodes
Tracks API
- [x] Get Several Tracks
- [x] Get a Track
- [x] Get Audio Features for Several Tracks
- [x] Get Audio Features for a Track
- [ ] ~Get Audio Analysis for a Track~
Users Profile API
- [x] Get Current User's Profile
- [x] Get a User's Profile
Next steps:
- [x] nested queries
- [ ]
build.ts➡️meshrc.ts - [ ] Serverless live console with GraphQL Helix: https://github.com/contra/graphql-helix/blob/master/examples/nextjs/pages/api/graphql.ts
- [ ] "Deploy to Vercel" button + CF Workers?