Add watch providers (where to stream/rent/buy)
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
New TMDb integration end to end: append_to_response "watch/providers", normalizer parsing grouped by country/monetization type, a WatchProvider catalog entry (external-id keyed, same get_or_create pattern as Company/ Collection/Person) + polymorphic WatchProviderOffering table (new migration 0002), ingestion write (including provider logos via the existing Artwork table), and API exposure -- embedded on movie/series detail plus a dedicated /watch-providers sub-route, shaped to mirror TMDb's own response for easy porting. Note: this data comes from JustWatch via TMDb and carries its own attribution requirement separate from TMDb's general one -- flagged in docs/api.md, must be satisfied before showing this in the frontend. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
74ebad379a
commit
6c95e18aad
+29
@@ -49,6 +49,7 @@ GET /api/v1/search?q=the%20matrix
|
||||
| GET | `/api/v1/movies/{aurora_id}/images` |
|
||||
| GET | `/api/v1/movies/{aurora_id}/videos` |
|
||||
| GET | `/api/v1/movies/{aurora_id}/recommendations` |
|
||||
| GET | `/api/v1/movies/{aurora_id}/watch-providers` |
|
||||
| GET | `/api/v1/movies/now-playing` |
|
||||
| GET | `/api/v1/movies/upcoming` |
|
||||
|
||||
@@ -131,6 +132,33 @@ ingested:
|
||||
}
|
||||
```
|
||||
|
||||
`watch_providers` (embedded on movie/series detail as shown above, or its own
|
||||
`GET .../watch-providers`) is grouped by country then by monetization type —
|
||||
mirroring TMDb's own `watch/providers` response shape directly, since that's
|
||||
the shape a client porting from TMDb already expects:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "aur_movie_01m1q7p1c...",
|
||||
"results": {
|
||||
"US": {
|
||||
"link": "https://www.themoviedb.org/movie/603-the-matrix/watch?locale=US",
|
||||
"flatrate": [{ "id": "aur_watch_provider_...", "name": "Netflix", "logo_path": "https://...", "display_priority": 0 }],
|
||||
"rent": [],
|
||||
"buy": [],
|
||||
"ads": [],
|
||||
"free": []
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**This data comes from JustWatch via TMDb, and carries its own attribution
|
||||
requirement separate from TMDb's general one** — TMDb's terms require
|
||||
sourcing watch-provider data back to JustWatch specifically if you display
|
||||
it, not just crediting TMDb itself. Read TMDb's current terms for the
|
||||
exact required wording/logo before showing this in the frontend.
|
||||
|
||||
`GET /api/v1/movies/now-playing` and `GET /api/v1/movies/upcoming` use the
|
||||
`release_dates` data above rather than `release_date`/`year`: `region`
|
||||
(ISO 3166-1 alpha-2, default `US`), `page`, `page_size` — same
|
||||
@@ -152,6 +180,7 @@ now-playing, soonest for upcoming) rather than appearing twice.
|
||||
| GET | `/api/v1/series/{aurora_id}/credits` |
|
||||
| GET | `/api/v1/series/{aurora_id}/images` |
|
||||
| GET | `/api/v1/series/{aurora_id}/videos` |
|
||||
| GET | `/api/v1/series/{aurora_id}/watch-providers` |
|
||||
| GET | `/api/v1/seasons/{aurora_id}` |
|
||||
| GET | `/api/v1/episodes/{aurora_id}` |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user