|
| 1 | +# Legacy tRPC / WebSocket → new HTTP map |
| 2 | + |
| 3 | +Working checklist for Phase 0 of [docs/RESTART_PLAN.md](../../docs/RESTART_PLAN.md). Proposed paths are **suggestions**; wire `501 Not Implemented` until handlers exist. **Out of scope** for the new product: user/group **rotate keys** (WebSocket) and **RevenueCat**. |
| 4 | + |
| 5 | +## Sessions (`sessionsRouter`) |
| 6 | + |
| 7 | +| Legacy procedure | Proposed REST / notes | |
| 8 | +|------------------|----------------------| |
| 9 | +| `sessions.startDemo` | `POST /api/sessions/demo` | |
| 10 | +| `sessions.login` | `POST /api/sessions/login` | |
| 11 | +| `sessions.refresh` | `POST /api/sessions/refresh` | |
| 12 | +| `sessions.logout` | `POST /api/sessions/logout` | |
| 13 | + |
| 14 | +## Users — account (`users.account`) |
| 15 | + |
| 16 | +| Legacy procedure | Proposed REST / notes | |
| 17 | +|------------------|----------------------| |
| 18 | +| `users.account.register` | `POST /api/users` | |
| 19 | +| `users.account.resendVerificationEmail` | `POST /api/users/me/email-verification/resend` | |
| 20 | +| `users.account.verifyEmail` | `POST /api/users/me/email-verification/confirm` | |
| 21 | +| `users.account.emailChange.request` | `POST /api/users/me/email-change` | |
| 22 | +| `users.account.twoFactorAuth.enable.request` | `POST /api/users/me/2fa/enable/request` | |
| 23 | +| `users.account.twoFactorAuth.enable.finish` | `POST /api/users/me/2fa/enable/finish` | |
| 24 | +| `users.account.twoFactorAuth.load` | `GET /api/users/me/2fa` | |
| 25 | +| `users.account.twoFactorAuth.generateRecoveryCodes` | `POST /api/users/me/2fa/recovery-codes` | |
| 26 | +| `users.account.twoFactorAuth.forgetTrustedDevices` | `POST /api/users/me/2fa/devices/forget` | |
| 27 | +| `users.account.twoFactorAuth.disable` | `POST /api/users/me/2fa/disable` | |
| 28 | +| `users.account.stripe.createCheckoutSession` | `POST /api/billing/stripe/checkout-session` | |
| 29 | +| `users.account.stripe.createPortalSession` | `POST /api/billing/stripe/portal-session` | |
| 30 | +| `users.account.delete` | `DELETE /api/users/me` | |
| 31 | + |
| 32 | +## Users — pages (`users.pages`) |
| 33 | + |
| 34 | +| Legacy procedure | Proposed REST / notes | |
| 35 | +|------------------|----------------------| |
| 36 | +| `users.pages.notifications.load` | `GET /api/users/me/notifications` | |
| 37 | +| `users.pages.notifications.markAsRead` | `POST /api/users/me/notifications/read` | |
| 38 | +| `users.pages.getStartingPageId` | `GET /api/users/me/pages/starting` | |
| 39 | +| `users.pages.getCurrentPath` | `GET /api/users/me/pages/path` | |
| 40 | +| `users.pages.removeRecentPages` | `POST /api/users/me/pages/recent/remove` | |
| 41 | +| `users.pages.clearRecentPages` | `POST /api/users/me/pages/recent/clear` | |
| 42 | +| `users.pages.addFavoritePages` | `POST /api/users/me/pages/favorites` | |
| 43 | +| `users.pages.removeFavoritePages` | `POST /api/users/me/pages/favorites/remove` | |
| 44 | +| `users.pages.clearFavoritePages` | `POST /api/users/me/pages/favorites/clear` | |
| 45 | +| `users.pages.setEncryptedDefaultNote` | `PATCH /api/users/me/defaults/note` | |
| 46 | +| `users.pages.setEncryptedDefaultArrow` | `PATCH /api/users/me/defaults/arrow` | |
| 47 | +| `users.pages.getGroupIds` | `GET /api/users/me/groups` | |
| 48 | + |
| 49 | +## Groups (`groupsRouter`) |
| 50 | + |
| 51 | +| Legacy procedure | Proposed REST / notes | |
| 52 | +|------------------|----------------------| |
| 53 | +| `groups.getMainPageId` | `GET /api/groups/:groupId/main-page` | |
| 54 | +| `groups.getUserIds` | `GET /api/groups/:groupId/members` (ids / minimal DTO) | |
| 55 | +| `groups.getPages` | `GET /api/groups/:groupId/pages` | |
| 56 | +| `groups.password.enable` | `POST /api/groups/:groupId/password` | |
| 57 | +| `groups.password.change` | `PATCH /api/groups/:groupId/password` | |
| 58 | +| `groups.password.disable` | `DELETE /api/groups/:groupId/password` | |
| 59 | +| `groups.privacy.makePublic` | `POST /api/groups/:groupId/privacy/public` | |
| 60 | +| `groups.privacy.setJoinRequestsAllowed` | `PATCH /api/groups/:groupId/privacy/join-requests` | |
| 61 | +| `groups.deletion.delete` | `DELETE /api/groups/:groupId` (soft) | |
| 62 | +| `groups.deletion.restore` | `POST /api/groups/:groupId/restore` | |
| 63 | +| `groups.deletion.deletePermanently` | `POST /api/groups/:groupId/purge` | |
| 64 | + |
| 65 | +## Pages (`pagesRouter`) |
| 66 | + |
| 67 | +| Legacy procedure | Proposed REST / notes | |
| 68 | +|------------------|----------------------| |
| 69 | +| `pages.create` | `POST /api/groups/:groupId/pages` | |
| 70 | +| `pages.bump` | `POST /api/pages/:pageId/bump` | |
| 71 | +| `pages.backlinks.create` | `POST /api/pages/:pageId/backlinks` | |
| 72 | +| `pages.backlinks.delete` | `DELETE /api/pages/:pageId/backlinks/:targetPageId` | |
| 73 | +| `pages.snapshots.save` | `POST /api/pages/:pageId/snapshots` | |
| 74 | +| `pages.snapshots.load` | `GET /api/pages/:pageId/snapshots/:snapshotId` | |
| 75 | +| `pages.snapshots.delete` | `DELETE /api/pages/:pageId/snapshots/:snapshotId` | |
| 76 | +| `pages.deletion.delete` | `DELETE /api/pages/:pageId` (soft) | |
| 77 | +| `pages.deletion.restore` | `POST /api/pages/:pageId/restore` | |
| 78 | +| `pages.deletion.deletePermanently` | `POST /api/pages/:pageId/purge` | |
| 79 | + |
| 80 | +## Legacy app-server WebSocket → target |
| 81 | + |
| 82 | +| Legacy handler | New surface | Notes | |
| 83 | +|----------------|-------------|--------| |
| 84 | +| `websocket/groups/join-invitations/*` | `WS /api/ws/groups/...` or REST for low-frequency | send / accept / reject / cancel | |
| 85 | +| `websocket/groups/join-requests/*` | same | send / accept / reject / cancel | |
| 86 | +| `websocket/groups/change-user-role` | `PATCH /api/groups/:groupId/members/:userId` | prefer REST if acceptable | |
| 87 | +| `websocket/groups/remove-user` | `DELETE /api/groups/:groupId/members/:userId` | | |
| 88 | +| `websocket/groups/privacy/make-private` | `POST /api/groups/:groupId/privacy/private` | | |
| 89 | +| `websocket/groups/rotate-keys` | — | **removed** per RESTART_PLAN | |
| 90 | +| `websocket/pages/move` | `POST /api/pages/:pageId/move` | | |
| 91 | +| `websocket/users/account/change-password` | `POST /api/users/me/password` | | |
| 92 | +| `websocket/users/account/email-change/finish` | `POST /api/users/me/email-change/confirm` | | |
| 93 | +| `websocket/users/account/rotate-keys` | — | **removed** | |
| 94 | + |
| 95 | +## Webhooks (not tRPC) |
| 96 | + |
| 97 | +| Legacy | New | |
| 98 | +|--------|-----| |
| 99 | +| Stripe webhook (Fastify) | `POST /api/webhooks/stripe` | |
| 100 | +| RevenueCat webhook | **not implemented** | |
| 101 | + |
| 102 | +Reference routers: `apps/app-server/src/trpc/router.ts`, `apps/app-server/src/trpc/api/**`, `apps/app-server/src/websocket/**`. |
0 commit comments