docs(research): real playlists placement shape; drop dead filter params

Merged
SW
5mo ago
+8-90

Align /research/playlists docs with the real placement shape

Follow-up to the api#635 playlists fix (recoupable/api 3212c9eb), which makes /research/playlists return real placements instead of a metric descriptor. This reconciles the docs contract with the verified live SongStats response.

Changes (api-reference/openapi/research.json only)

  • ResearchPlaylistPlacement → the actual provider-neutral shape, verified on preview (Drake/spotify → Today's Top Hits, Top 50 Global, RapCaviar, …):
    { playlist_id, playlist_name, external_url, followers_total, image_url }
    
    (was the Chartmetric shape: track_name, position, peak_position, added_at, removed_at, curator_name).
  • Dropped the dead Chartmetric-only filter params from /playlists — editorial, since, sort, indie, majorCurator, popularIndie, personalized, chart. The SongStats integration ignores them; the handler now sends only platform, status, limit. Kept: artist, platform, status, limit, id.

Validation

  • mint openapi-check → valid; all $refs resolve; no other endpoints touched.

Tracking: recoupable/chat#1777.

🤖 Generated with Claude Code


Summary by cubic

Updates /research/playlists docs to match the real SongStats placement shape and removes unused Chartmetric-only filters. This aligns the contract with production responses.

  • Migration
    • ResearchPlaylistPlacement fields: playlist_id, playlist_name, external_url, followers_total, image_url. Removed: track_name, position, peak_position, added_at, removed_at, curator_name.
    • Removed query params on /research/playlists: editorial, since, sort, indie, majorCurator, popularIndie, personalized, chart. Supported: artist, platform, status, limit, id.