Skip to main content

Copyright Recommendations

Copyright Recommendations are user-submitted suggestions that a specific track is copyright-safe and should be added to the curated safe-songs catalog. Users vote or flag a track via the streamer dashboard; those submissions land in this queue with report_type = recommendation. Admins accept (promoting the track to the safe catalog, optionally into a specific Curated Playlist) or dismiss (rejecting the suggestion).

Where to find it

Admin sidebar → Recommendations (/copyright-recommendations).

Quick start

  1. Open Admin → Recommendations.
  2. Default status filter is Pending; flip to Confirmed or Dismissed to review past decisions.
  3. Read the song / artist / category for each row.
  4. Click Accept to promote to safe songs. In the dialog, optionally pick a Curated Playlist to drop the track into.
  5. Click Dismiss to reject the suggestion.

Detailed walkthrough

Status filters

Tabs across the top: All, Pending, Confirmed, Dismissed. Pending is the default landing state.

Recommendation rows

Each row exposes:

  • Song — track title.
  • Artist — track artist.
  • Category — submission category (e.g. safe).
  • Status — coloured badge.
  • Confirmations — count of other users who upvoted the same recommendation.
  • Date — submission timestamp.

Row actions (pending only):

  • Accept — opens the Accept Recommendation dialog.
  • Dismiss — one-click reject.

Accept Recommendation dialog

  • Title: "Accept Recommendation".
  • Add to curated playlist (optional) — dropdown of all curated playlists; default is None.
  • Approve — POSTs to the shared approve endpoint with optional playlist_id.

Accepting inserts the track into the safe-songs catalog and, when a playlist is selected, also appends it to that playlist's track list.

Common scenarios

  • Lo-fi track submitted by community — accept and route into the lofi curated playlist.
  • Obvious copyrighted track mis-recommended — dismiss; the recommendation moves to the Dismissed tab.
  • Duplicate suggestions — the Confirmations column reveals how many users agree. Don't accept the same track twice; the second recommendation can be dismissed.
  • Batch processing — cycle through Pending, decide one by one. There is no bulk action.

Permissions

ActionPermission
View recommendationscopyright:read
Accept / dismisscopyright:edit

Dashboard entry requires admin:access. System admins implicitly hold both.

API

Recommendations share the copyright_reports table with copyright reports, distinguished by the report_type column (recommendation vs copyright). They use the same approve / dismiss endpoints as reports.

UI actionGraphQLREST
List recommendations (filtered)GET /v1/copyright/recommendations?status=...
Accept (with optional playlist)POST /v1/copyright/reports/\{id\}/approve
DismissPOST /v1/copyright/reports/\{id\}/dismiss

Tips & gotchas

  • Accept is destructive-ish — the track enters the global safe catalog. Review the artist + track carefully.
  • The playlist dropdown is optional. Accepting without picking a playlist still promotes the track to the catalog; it just doesn't appear in any curated playlist yet.
  • Dismissed recommendations can be re-submitted by the same user later. The UI does not dedupe across time.
  • Reports and recommendations share an endpoint; accepting a recommendation is implemented as "approve a report" internally.