45 lines
1.9 KiB
Markdown
45 lines
1.9 KiB
Markdown
|
|
# Frontend Integration Spec (Household v2)
|
||
|
|
|
||
|
|
Date: 2025-11-01
|
||
|
|
|
||
|
|
This document summarizes the current backend API surface (post v2 migration) and the prioritized actions to keep the frontend aligned.
|
||
|
|
|
||
|
|
## Current API Highlights
|
||
|
|
|
||
|
|
- Auth: JWT bearer via `/api/v1/auth/register|login|refresh|logout`; refresh via HttpOnly cookie.
|
||
|
|
- Households: create households and list memberships.
|
||
|
|
- Household-scoped resources under `/api/v1/households/{householdSlug}`:
|
||
|
|
- Recipes: list/get/create/delete (soft-hide); list supports `q`, `cursor`, `limit`.
|
||
|
|
- Meals: upcoming/get/create/update/delete; mark consumed.
|
||
|
|
- Shopping: current aggregate; list-by-id; purchase; request/unrequest meal.
|
||
|
|
- RFC7807 Problem Details standardized for errors.
|
||
|
|
- OpenAPI includes bearerAuth and 403 for protected household routes.
|
||
|
|
|
||
|
|
## DTO alignment
|
||
|
|
|
||
|
|
- Meals v2 participants (chefs, cleanup, consumers) now use MemberRef:
|
||
|
|
- `{ id: number, displayName: string }`
|
||
|
|
- Returned in MealOut; sent in MealIn. No legacy `Person` in outward schema.
|
||
|
|
|
||
|
|
- Recipes v2 outward DTO currently omits `createdBy` in v2 list/create responses; if exposed later, it will use a user/member shape (no Person).
|
||
|
|
|
||
|
|
## Breaking changes to watch for
|
||
|
|
|
||
|
|
- Person removed from meals outward schema; use MemberRef.displayName instead of `name`.
|
||
|
|
- Household slug is required in all v2 data routes.
|
||
|
|
|
||
|
|
## Prioritized Actions (Frontend)
|
||
|
|
|
||
|
|
1) Replace any usage of Person in meals UI/state with MemberRef { id, displayName }.
|
||
|
|
2) Verify create/update meal payloads send participants in the new format (displayName).
|
||
|
|
3) Ensure auth flow relies on JWT bearer and refresh cookie; remove legacy cookie logic if still present.
|
||
|
|
4) Align OpenAPI client generation with the updated schema (regenerate clients).
|
||
|
|
|
||
|
|
## Upcoming backend cleanups (FYI)
|
||
|
|
|
||
|
|
- Remove v1 routers; rename `*_v2.py` to canonical; drop `persons/` package.
|
||
|
|
- Expose user/member DTO for recipe authorship if needed.
|
||
|
|
- Add invitation email delivery.
|
||
|
|
- DB indices/FKs polish.
|
||
|
|
|