Account and personal data

Profile, onboarding, export, notifications, and transactional erasure.

Every operation derives the account id from the current Better Auth session. No request field can select another person.

OperationPurpose
GET /api/account/summaryAccount identity and profile consent state.
GET /api/account/onboardingProfile, preferences, and available categories.
POST /api/account/onboardingSave validated profile, consent, and category choices.
GET /api/me/exportDownload the actor's canonical JSON export with private no-store caching.
DELETE /api/accountTransactionally erase or anonymise actor-owned records.
POST /api/account/notifications/openReturn actor-owned notifications and mark only those rows read.
GET /api/account/pushRead push capability and the signed-in user's registered devices.
POST /api/account/pushRegister or update one browser push subscription for the current account.
DELETE /api/account/pushRemove one browser push subscription owned by the current account.

The legacy application route adds content-disposition: attachment; the direct canonical API route returns the same JSON without promising that download header. Both are private and no-store. See Account export for the complete relation-level payload.

Missing authentication returns 401. Mutations require an exact configured Origin; successful direct Nest POST operations return 201.

Push registration is available only when all three VAPID values are configured (public key, private key, and subject). The browser must obtain explicit notification permission before saving a subscription. Delivery is a generic event update alert; the in-app inbox remains the durable record. iOS visitors must add the web app to the Home Screen for web push support. This local candidate has no verified external provider delivery yet.