Add GET /collections browse endpoint; fix embedded collection poster_path
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
Completes browse/discover across all five entity types: movies, series, people, companies, and now collections. No filter (no categorical field like company_type exists for a collection) -- just page/page_size, always alphabetical by name. While adding poster_path to CollectionBriefOut for the browse listing, found the same class of bug fixed earlier for company logo_path: movie_service's embedded `collection` field never looked up its poster artwork either, so it stayed null even after ingest_collection populated one. Fixed alongside since it's the same schema field this feature was already touching. Also removed PageMeta from schemas/common.py -- scaffolding from early spec work that was never actually wired into any endpoint; all five browse endpoints shipped this session use a flat page/page_size/ total_results/total_pages shape instead. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
4cf3556433
commit
f1ac072794
+8
-1
@@ -94,7 +94,7 @@ unknown status) is a 422, not a silently-empty result. Response:
|
||||
"cast": [{ "id": "aur_credit_...", "person": { "id": "aur_person_...", "name": "Keanu Reeves", "profile_path": null }, "character": "Neo", "billing_order": 0 }],
|
||||
"crew": [{ "id": "aur_credit_...", "person": { "id": "aur_person_...", "name": "Lana Wachowski" }, "department": "Directing", "job": "Director" }],
|
||||
"companies": [{ "id": "aur_company_...", "name": "Village Roadshow Pictures", "company_type": "production_company" }],
|
||||
"collection": { "id": "aur_collection_...", "name": "The Matrix Collection" },
|
||||
"collection": { "id": "aur_collection_...", "name": "The Matrix Collection", "poster_path": "https://..." },
|
||||
"images": { "posters": [...], "backdrops": [...], "logos": [...] },
|
||||
"videos": [{ "id": "aur_vid_...", "type": "trailer", "site": "YouTube", "url": "https://www.youtube.com/watch?v=...", "is_official": true }],
|
||||
"external_ids": { "tmdb": "603", "imdb": "tt0133093" },
|
||||
@@ -165,6 +165,7 @@ pagination and response shape as `/movies` and `/series`.
|
||||
|
||||
| Method | Path |
|
||||
|---|---|
|
||||
| GET | `/api/v1/collections` |
|
||||
| GET | `/api/v1/collections/{aurora_id}` |
|
||||
| GET | `/api/v1/companies` |
|
||||
| GET | `/api/v1/companies/{aurora_id}` |
|
||||
@@ -175,6 +176,12 @@ pagination and response shape as `/movies` and `/series`.
|
||||
`page_size` pagination. No `sort_by` — companies have no popularity or
|
||||
date field to sort by, so results are always alphabetical by name.
|
||||
|
||||
`GET /api/v1/collections` is the same idea for collections/franchises, but
|
||||
with no filter at all (no categorical field like `company_type` exists for
|
||||
a collection) — just `page`/`page_size`, always alphabetical by name. This
|
||||
is the last entity type to get a browse endpoint: movies, series, people,
|
||||
companies, and collections are all browsable now.
|
||||
|
||||
Collection detail's `movies` list only includes movies already ingested
|
||||
into Aurora — `POST /api/v1/admin/ingest/collection` links a franchise's
|
||||
member movies purely by external-id lookup, the same never-fabricate-a-stub
|
||||
|
||||
Reference in New Issue
Block a user