Add movie/series ratings and watchlist
Builds on the accounts foundation: PUT/DELETE a rating (0.5-10.0) or a
watchlist entry on any movie or series, all scoped to the bearer token's
own user, plus GET /account/ratings|watchlist/{movies,series} to list
them back. Both are polymorphic entity_type/entity_id tables, same shape
as watch_provider_offerings and trending_entries, so movie and series
share one repository/router each rather than duplicating per type.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
a38c2074a6
commit
0ab31a314c
+20
-2
@@ -30,8 +30,26 @@ a consistent envelope:
|
||||
|
||||
Access tokens are JWTs signed with `AURORA_SECRET_KEY`, valid for 24 hours,
|
||||
with no refresh-token flow yet — a client re-authenticates (logs in again)
|
||||
once a token expires. This is the foundation ratings and a watchlist will
|
||||
build on next; those aren't live yet.
|
||||
once a token expires.
|
||||
|
||||
## Ratings and watchlist
|
||||
|
||||
All of these require `Authorization: Bearer <access_token>` and are scoped
|
||||
to the caller — there is no way to read or modify another user's ratings
|
||||
or watchlist. `{aurora_id}` is a movie or series id.
|
||||
|
||||
| Method | Path | Body | Notes |
|
||||
|---|---|---|---|
|
||||
| PUT | `/api/v1/movies/{aurora_id}/rating` | `{"value"}` | Rates a movie, 0.5-10.0. Upsert — rating the same movie again replaces the previous value rather than erroring. Returns `{"value", "created_at", "updated_at"}`. 404 if the movie doesn't exist, 422 if `value` is out of range. |
|
||||
| DELETE | `/api/v1/movies/{aurora_id}/rating` | — | Removes the caller's rating, if any. 204. |
|
||||
| PUT / DELETE | `/api/v1/series/{aurora_id}/rating` | `{"value"}` | Same as above, for a series. |
|
||||
| POST | `/api/v1/movies/{aurora_id}/watchlist` | — | Adds a movie to the caller's watchlist. Idempotent — adding an already-watchlisted movie is a no-op, not a 409. 204. |
|
||||
| DELETE | `/api/v1/movies/{aurora_id}/watchlist` | — | Removes it, if present. 204. |
|
||||
| POST / DELETE | `/api/v1/series/{aurora_id}/watchlist` | — | Same as above, for a series. |
|
||||
| GET | `/api/v1/account/ratings/movies` | — | Paginated list of the caller's rated movies. Each result is a normal movie summary plus `"rating"`. |
|
||||
| GET | `/api/v1/account/ratings/series` | — | Same, for series. |
|
||||
| GET | `/api/v1/account/watchlist/movies` | — | Paginated list of the caller's watchlisted movies (movie summaries, no rating field). |
|
||||
| GET | `/api/v1/account/watchlist/series` | — | Same, for series. |
|
||||
|
||||
## Search
|
||||
|
||||
|
||||
Reference in New Issue
Block a user