6901e2661e
The v1 photo upload endpoint previously ignored any caller-supplied category and inserted photos with category_id=NULL. That meant programmatic uploads via API tokens (e.g. a photobox sidecar) landed in picpeak as uncategorized, forcing operators to bulk-assign category in the admin UI after each event. Mirror the adminPhotos.js category-handling logic on v1: - Read optional `category_id` from the multipart form body. - Reject unknown ids with 400 (with the id in the error) so callers fail fast on misconfigured envs instead of silently uncategorized uploads. - Set photos.category_id on insert. - Flip photos.type to 'collage' when the category's slug is collage/collages, matching adminPhotos. Backwards-compatible: omitting category_id keeps the prior behavior (insert with NULL category, type='individual'). OpenAPI spec + 201 response body updated to include the new field. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>