Copyright Review
Copyright Review is the combined triage surface for vote candidates — tracks that users have voted on as either copyright-infringing (blocked votes) or safe (safe votes). Unlike Copyright Reports, which covers individual report submissions one-by-one, the Review page aggregates votes across users and surfaces only the high-signal candidates needing a decision.
Where to find it
Admin sidebar → Copyright Review (/copyright-review).
Quick start
- Open Admin → Copyright Review.
- The page is split into two lists: Blocked Candidates (songs with mostly block-votes) and Safe Candidates (songs with mostly safe-votes).
- For each candidate, read the song, artist, block-vote count (
copyright votes), and safe-vote count (safe votes). - Click Approve to accept the prevailing verdict and move the track into the blocked/safe catalog.
- Click Dismiss to reject the candidate without changing catalog state.
Detailed walkthrough
Two-column layout
The UI renders two panels side-by-side (or stacked on narrow screens):
- Blocked Candidates — tracks where block-votes dominate. Approving marks the track copyright-blocked globally.
- Safe Candidates — tracks where safe-votes dominate. Approving marks the track copyright-safe globally.
Each panel shows the per-track vote tally: N copyright votes, N safe votes.
Row actions
- Approve — calls
POST /api/copyright/reports/\{reportId\}/approveand removes the row from the queue. - Dismiss — calls
POST /api/copyright/reports/\{reportId\}/dismissand removes the row.
Both endpoints are the same as Copyright Reports / Copyright Recommendations; the Review page is a higher-signal view over the same dataset.
Empty state
When no candidates are pending: "No candidates to review."
Common scenarios
- High-traffic triage session — blast through both columns, approving clear majorities and dismissing ambiguous ones.
- Policy change — review the Safe Candidates column to validate community consensus before mass-approving a new genre's picks.
- Suspected brigading — if a single track in Blocked Candidates has an absurd vote count coming from fresh accounts, dismiss and investigate via Abuse Reports.
- Cross-check with external copyright sources — before approving a Blocked candidate, confirm the track is actually copyrighted (Spotify's own "Content ID Block" metadata is a decent heuristic).
Permissions
| Action | Permission |
|---|---|
| View candidates | copyright:read |
| Approve / dismiss | copyright:edit |
Dashboard entry requires admin:access. System admins implicitly hold both.
API
| UI action | GraphQL | REST |
|---|---|---|
| List pending vote candidates | — | GET /v1/copyright/reports?status=pending |
| Approve a candidate | — | POST /v1/copyright/reports/\{id\}/approve |
| Dismiss a candidate | — | POST /v1/copyright/reports/\{id\}/dismiss |
| User-side vote submission | — | POST /v1/copyright/vote |
| List of vote candidates (raw) | — | GET /v1/copyright/vote-candidates |
| Approve raw vote candidate | — | POST /v1/copyright/vote-candidates/\{track_id\}/approve |
| Dismiss raw vote candidate | — | POST /v1/copyright/vote-candidates/\{track_id\}/dismiss |
The admin page fetches /api/copyright/reports?status=pending (via Next.js proxy) and splits the returned rows into the Blocked / Safe columns based on the dominant vote category. Low-level vote-candidates endpoints exist for debugging and can be called directly.
Tips & gotchas
- Approve is not reversible from the UI. Double-check the vote tally and confirm the correct panel (Blocked vs Safe) before clicking.
- The page is community-moderation at its rawest — brigading and sockpuppet voting are possible. Spot-check confirmation counts and reporter identities via the underlying reports endpoint.
- Approving a Safe candidate here is equivalent to approving a recommendation in Copyright Recommendations; the endpoints overlap.
- This page surfaces only
pendingcandidates. For historical review use the Copyright Reports page with a status filter.
Related
- Copyright Reports — granular per-report view
- Copyright Recommendations — positive-polarity per-report view
- Curated Playlists — where approved safe tracks live
- Abuse Reports — meta-reports against the voting system