feat(api): export a saved trip as JSON #22

Merged
charles merged 1 commit from feat/trip-export into main 2026-06-17 15:34:40 +00:00
Owner

Data portability / no lock-in (FR-PRES-15). GET /trips/:id/export.json → the owner's trip as JSON; owner-scoped + account-gated (anon → /login, missing → 404). Download link on the trip page.

Verification

  • just qa green. Signed-in export → valid JSON (stops/total/status=Saved); anon → 303 to login.

PDF/ICS export + living-person stripping on share land later. Traces: FR-PRES-15.

Data portability / no lock-in (FR-PRES-15). `GET /trips/:id/export.json` → the owner's trip as JSON; owner-scoped + account-gated (anon → /login, missing → 404). Download link on the trip page. ## Verification - `just qa` green. Signed-in export → valid JSON (stops/total/status=Saved); anon → 303 to login. PDF/ICS export + living-person stripping on share land later. Traces: FR-PRES-15.
feat(api): export a saved trip as JSON (FR-PRES-15)
All checks were successful
qa / qa-1 (push) Successful in 43s
qa / qa-1 (pull_request) Successful in 44s
qa / qa (push) Successful in 0s
qa / qa (pull_request) Successful in 0s
bf5e391456
GET /trips/:id/export.json → the owner's trip serialized as JSON (data
portability / no lock-in). Owner-scoped + account-gated (anon → /login; missing
→ 404). Download link on the trip page.

Verified: signed-in export returns valid JSON (stops/total/status); anon → 303.
just qa green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/geneatrip!22
No description provided.