Legend
✅ = endpoint exists in backend (controllers or dynamic routes)
⚠️ = exists but path differs or only partial implementation
❌ = completely missing
🔍 1. Authentication & User Management
| Method | Endpoint | Frontend Usage | Status | Notes |
|---|---|---|---|---|
| POST | /api/login |
useAuth |
✅ | AuthRoutes |
| POST | /api/login/2fa |
useAuth (2FA step) |
✅ | AuthRoutes |
| POST | /api/logout |
useAuth |
✅ | AuthRoutes |
| POST | /api/register |
useRegister |
✅ | AuthRoutes |
| POST | /api/token/refresh |
useAuth (token refresh) |
✅ | AuthRoutes |
| GET | /api/users/me |
useAuth, useDashboard, useProfile |
✅ | UserRoutes |
| PUT | /api/users/me |
useProfile, useSecuritySettings |
✅ | UserRoutes |
| PUT | /api/users/me/email |
useProfile |
✅ | UserRoutes |
| PUT | /api/users/me/password |
useSecuritySettings |
✅ | UserRoutes |
| DELETE | /api/users/me |
useProfile (deactivate) |
✅ | UserRoutes |
| POST | /api/users/me/avatar |
useProfile, useDashboard |
✅ | UserRoutes |
| GET | /api/users/{username} |
usePublicProfile, useProfile |
✅ | UserRoutes |
| GET | /api/search/users |
useSearchUsers, useContacts |
✅ | UserRoutes |
| GET | /api/users/me/security-question |
useSecuritySettings |
✅ | UserRoutes |
| PUT | /api/users/me/security-question |
useSecuritySettings |
✅ | UserRoutes |
| GET | /api/users/me/2fa/status |
useSecuritySettings |
✅ | UserRoutes |
| POST | /api/users/me/2fa/enable |
useSecuritySettings |
✅ | AuthRoutes |
| POST | /api/users/me/2fa/verify |
useSecuritySettings |
✅ | AuthRoutes |
| POST | /api/users/me/2fa/disable |
useSecuritySettings |
✅ | AuthRoutes |
| GET | /api/users/me/2fa/backup-codes |
useSecuritySettings |
✅ | AuthRoutes |
| POST | /api/users/me/2fa/backup-codes/regenerate |
useSecuritySettings |
✅ | AuthRoutes |
| POST | /api/forgot-password |
usePasswordReset |
✅ | AuthRoutes |
| POST | /api/reset-password |
usePasswordReset |
✅ | AuthRoutes |
All user/auth endpoints present. ✅
🔍 2. Follow System
| Method | Endpoint | Frontend Usage | Status |
|---|---|---|---|
| POST | /api/users/{username}/follow |
useFollow, useArticle |
✅ |
| DELETE | /api/users/{username}/follow |
useFollow |
✅ |
| GET | /api/users/{username}/followers |
usePublicProfile |
✅ |
| GET | /api/users/{username}/following |
usePublicProfile, useArticle |
✅ |
| GET | /api/users/me/contacts |
useContacts |
✅ |
All follow endpoints present. ✅
🔍 3. Articles
| Method | Endpoint | Frontend Usage | Status |
|---|---|---|---|
| GET | /api/articles |
useArticles, ArticlesPage |
✅ |
| GET | /api/articles/{id} |
useArticle |
✅ |
| POST | /api/articles |
useCreateArticle |
✅ |
| PUT | /api/articles/{id} |
useArticle, useCreateArticle |
✅ |
| DELETE | /api/articles/{id} |
useArticle, useDashboard |
✅ |
| GET | /api/articles/search |
useSearch, ArticlesPage |
✅ |
| GET | /api/users/me/articles |
useDashboard |
✅ |
| POST | /api/articles/{id}/like |
useArticle |
✅ |
| GET | /api/articles/{id}/like |
useArticle |
✅ |
| GET | /api/articles/{id}/comments |
useArticle |
✅ |
| POST | /api/articles/{id}/comments |
useArticle |
✅ |
| DELETE | /api/comments/{commentId} |
useArticle |
✅ |
| GET | /api/articles/{id}/citation |
useArticle |
✅ |
| GET | /api/users/me/analytics |
useDashboard, useAnalytics |
✅ |
| POST | /api/articles/{id}/publish |
useCreateArticle |
✅ |
| GET | /api/articles/trending |
useRecommendations |
✅ |
| GET | /api/articles/featured |
useRecommendations |
✅ |
| GET | /api/articles/{id}/graph-recommendations |
useRecommendations (graph) |
✅ |
| POST | /api/articles/{id}/view |
useArticle (view count) |
✅ |
| GET | /api/articles/{id}/analytics |
usePaperAnalytics |
✅ |
| GET | /api/users/me/liked-articles |
LikedArticlesPage |
❌ Missing (backend has /users/{username}/liked-articles only) |
Missing: GET /api/users/me/liked-articles – frontend uses this (see LikedArticlesPage). Backend has only public version for a given username. Add an alias to the same logic.
🔍 4. Messaging (Private & Group)
| Method | Endpoint | Frontend Usage | Status | Notes |
|---|---|---|---|---|
| GET | /api/conversations |
useMessaging |
✅ | |
| DELETE | /api/conversations/{username} |
useMessaging |
✅ | |
| GET | /api/conversations/{username}/messages |
useMessaging |
✅ | |
| POST | /api/conversations/{username}/messages |
useMessaging |
✅ | |
| PUT | /api/conversations/{username}/messages/{messageId} |
useMessaging |
✅ | |
| DELETE | /api/conversations/{username}/messages/{messageId} |
useMessaging |
✅ | |
| POST | /api/conversations/{username}/messages/{messageId}/reactions |
useMessaging |
✅ | |
| POST | /api/conversations/{username}/typing |
useMessaging |
✅ | |
| GET | /api/conversations/{username}/typing |
useMessaging |
✅ | |
| POST | /api/conversations/{username}/read |
useMessaging |
✅ | |
| GET | /api/conversations/{username}/read-status |
useMessaging |
✅ | |
| GET | /api/conversations/{username}/last-read |
useMessaging |
❌ | Missing – backend has /read-status but frontend calls /last-read separately. Add alias. |
| POST | /api/conversations/{username}/archive |
useMessaging |
✅ | |
| DELETE | /api/conversations/{username}/archive |
useMessaging |
✅ | |
| GET | /api/users/me/archived-conversations |
useMessaging |
✅ | |
| GET | /api/messages/{messageId}/edits |
useEditHistory |
✅ | |
| GET | /api/messages/{messageId}/thread |
useMessaging (threads) |
✅ | |
| POST | /api/messages/{messageId}/reply |
useMessaging |
✅ | |
| POST | /api/messages/{messageId}/forward |
useMessaging |
✅ | |
| POST | /api/groups/messages/{messageId}/forward-to-group |
useMessaging |
✅ | |
| POST | /api/conversations/{username}/schedule |
useMessaging |
✅ | |
| POST | /api/conversations/{username}/ephemeral |
useMessaging |
✅ | |
| GET | /api/messages/scheduled |
useMessaging |
✅ | |
| DELETE | /api/messages/scheduled/{messageId} |
useMessaging |
✅ | |
| POST | /api/media/upload |
ChatArea |
✅ | |
| GET | /api/media/{mediaId} |
ChatArea |
✅ | |
| DELETE | /api/media/{mediaId} |
useMessaging |
✅ |
Groups:
| Method | Endpoint | Frontend Usage | Status |
|---|---|---|---|
| GET | /api/groups |
useMessaging |
✅ |
| POST | /api/groups |
useMessaging |
✅ |
| GET | /api/groups/{groupId} |
useMessaging |
✅ |
| PUT | /api/groups/{groupId} |
useMessaging |
✅ |
| DELETE | /api/groups/{groupId} |
useMessaging |
✅ |
| GET | /api/groups/{groupId}/members |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/members |
useMessaging |
✅ |
| DELETE | /api/groups/{groupId}/members/{memberId} |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/admins/{memberId} |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/members/{memberId}/demote |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/leave |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/invite |
useMessaging |
✅ |
| GET | /api/join/{token} |
useMessaging |
✅ |
| GET | /api/groups/{groupId}/messages |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/messages |
useMessaging |
✅ |
| PUT | /api/groups/{groupId}/messages/{messageId} |
useMessaging |
✅ |
| DELETE | /api/groups/{groupId}/messages/{messageId} |
useMessaging |
✅ |
| GET | /api/groups/{groupId}/messages/since |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/read |
useMessaging |
✅ |
| GET | /api/groups/{groupId}/read-status |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/mute |
useMessaging |
✅ |
| DELETE | /api/groups/{groupId}/mute |
useMessaging |
✅ |
| GET | /api/groups/{groupId}/pins |
useMessaging (pinned list) |
✅ (backend uses /pins) |
| GET | /api/groups/{groupId}/pinned |
useMessaging (frontend uses /pinned) |
❌ Missing – add alias to /pins. |
| POST | /api/groups/{groupId}/pin/{messageId} |
useMessaging |
✅ |
| DELETE | /api/groups/{groupId}/pin/{messageId} |
useMessaging |
✅ |
| POST | /api/groups/{groupId}/transfer/{newOwnerId} |
useMessaging |
✅ |
| GET | /api/groups/{groupId}/meta |
useMessaging |
✅ |
Secret Chats (E2EE):
| Method | Endpoint | Frontend Usage | Status |
|---|---|---|---|
| POST | /api/secret/prekeys |
useSecretChat |
✅ |
| GET | /api/secret/prekeys/{username} |
useSecretChat |
✅ |
| POST | /api/secret/prekeys/refresh |
useSecretChat |
✅ |
| POST | /api/conversations/{username}/start-secret |
useSecretChat |
✅ |
| POST | /api/conversations/{username}/accept-secret |
useSecretChat (maybe not) |
✅ (in SecretConversationRoutes) |
| GET | /api/conversations/{username}/keys |
useSecretChat |
❌ Missing – needed to fetch peer’s public keys. |
| POST | /api/secret/send |
useSecretChat |
✅ |
| GET | /api/secret/messages/{conversationKey} |
useSecretChat |
✅ |
| POST | /api/secret/ratchet |
useSecretChat |
✅ |
🔍 5. Notifications
| Method | Endpoint | Frontend Usage | Status |
|---|---|---|---|
| GET | /api/notifications |
useDashboard, useNotifications |
✅ |
| GET | /api/notifications/unread-count |
useNotifications |
✅ |
| POST | /api/notifications/{id}/read |
useDashboard |
✅ |
| POST | /api/notifications/read-all |
useNotifications |
✅ |
| POST | /api/notifications/read-multiple |
useNotifications |
✅ |
| DELETE | /api/notifications/{id} |
useNotifications |
✅ |
| DELETE | /api/notifications |
useNotifications |
✅ |
All present. ✅
🔍 6. Recommendations & Discovery
| Method | Endpoint | Frontend Usage | Status | Notes |
|---|---|---|---|---|
| GET | /api/recommendations/feed |
useRecommendations, useRecommendationFeed |
✅ | |
| GET | /api/recommendations/trending |
useRecommendations |
✅ | |
| GET | /api/recommendations/users |
useRecommendations |
✅ | |
| GET | /api/discovery/digest |
useRecommendationFeed |
❌ | Missing (only POST exists) |
| POST | /api/discovery/digest |
useRecommendationFeed |
✅ | |
| GET | /api/discovery/recommendations |
useRecommendationFeed |
❌ | Missing – frontend calls this; use /recommendations/feed instead. |
Missing: GET /api/discovery/digest and GET /api/discovery/recommendations.
🔍 7. RAG Assistant (Research Assistant)
| Method | Endpoint | Frontend Usage | Status |
|---|---|---|---|
| POST | /api/ai/rag-chat |
useRagSystem |
✅ |
| POST | /api/ai/chat |
useRagSystem |
✅ |
| POST | /api/ai/command-palette/predict |
usePredictiveActions |
✅ |
| GET | /api/documents/rag-list |
useRagSystem |
✅ |
| DELETE | /api/documents/{docId}/rag-delete |
useRagSystem |
✅ |
| POST | /api/documents/{docId}/rag-index |
useRagSystem |
✅ |
| GET | /api/documents/{docId}/rag-status |
useRagSystem |
✅ |
| GET | /api/ai/conversation |
useRagSystem |
✅ |
| DELETE | /api/ai/conversation |
useRagSystem |
✅ |
All present. ✅
🔍 8. Lab Inventory
All endpoints under /api/inventory/ (chemicals, alerts, scan, compatibility, stats) are fully present in LabInventoryRoutes. ✅
🔍 9. Peer Review
All endpoints under /api/peer-review/ and /api/admin/peer-review/ are present. ✅
🔍 10. Gap Analysis
All endpoints under /api/gap-analysis/ are present. ✅
🔍 11. Projects & Tasks
All endpoints under /api/projects/ (CRUD, members, tasks, outputs) are present. ✅
🔍 12. Data Hub (Research Objects, Protocols, Preregistrations)
All endpoints under /api/repository/, /api/protocols/, /api/preregistrations/ are present in DataHubRoutes. ✅
🔍 13. Events
All endpoints under /api/events/ are present in EventRoutes. ✅
🔍 14. Workspace (SmartGlass)
All endpoints under /api/workspace/ are present in WorkspaceRoutes. ✅
Missing alias: GET /api/groups/{groupId}/pinned (frontend uses /pinned, backend has /pins). Not critical but add for consistency.
🔍 15. Voice Settings
All endpoints under /api/users/me/voice-settings, /api/voice/ are present. ✅
🔍 16. Admin
All admin endpoints (/api/admin/*) are present (stats, users, articles, activity, search, rag, etc.). ✅
🔍 17. Collections (Paper Collections) – COMPLETELY MISSING
The frontend usePaperCollections calls:
| Method | Endpoint | Status |
|---|---|---|
| GET | /api/collections |
❌ |
| POST | /api/collections |
❌ |
| DELETE | /api/collections/{id} |
❌ |
| POST | /api/collections/{id}/papers |
❌ |
| DELETE | /api/collections/{id}/papers/{paperId} |
❌ |
No backend implementation. You need to add these.
🔍 18. References / Bibliography Manager – MISSING
useReferenceManager calls:
| Method | Endpoint | Status |
|---|---|---|
| GET | /api/documents/{docId}/references |
❌ |
| POST | /api/documents/{docId}/references |
❌ |
| PUT | /api/documents/{docId}/references/{refId} |
❌ |
| DELETE | /api/documents/{docId}/references/{refId} |
❌ |
| POST | /api/references/connect-zotero |
❌ |
| POST | /api/references/connect-mendeley |
❌ |
No backend implementation. Add these.
🔍 19. Preprint Submission – MISSING
| Method | Endpoint | Status |
|---|---|---|
| POST | /api/preprints/screen |
❌ |
| POST | /api/preprints/submit |
❌ |
No backend implementation.
🔍 20. Provenance / Trust – MISSING
| Method | Endpoint | Status |
|---|---|---|
| GET | /api/provenance/{entityType}/{entityId} |
❌ |
| POST | /api/provenance/{entityType}/{entityId}/verify |
❌ |
No backend implementation.
🔍 21. Unified Inbox – MISSING
| Method | Endpoint | Status |
|---|---|---|
| GET | /api/unified-inbox |
❌ |
Frontend uses useUnifiedInbox to fetch aggregated messages. Not present.
🔍 22. Recent Items (Command Palette) – MISSING
| Method | Endpoint | Status |
|---|---|---|
| GET | /api/recent-items |
❌ |
App.tsx fetches recent papers and contacts. Add this endpoint.
🔍 23. Export (Documents / Articles) – MISSING
| Method | Endpoint | Status |
|---|---|---|
| POST | /api/ai/export |
❌ |
| POST | /api/documents/{docId}/export |
❌ |
useSubmissionExport and useCollaborativeEditor call these to export PDF, DOCX, LaTeX, etc. Not present.
🔍 24. Miscellaneous – MISSING / PARTIAL
GET /api/health– ✅ present.GET /api/me– ✅ present.GET /api/popular-tags– ✅ present (inAnalyticsRoutes).GET /api/trending– ✅ present.POST /api/callback(inline keyboard) – ✅ present inMessagingRoutes.
📋 Final Missing Endpoints Summary
| # | Endpoint | Frontend Feature | Urgency |
|---|---|---|---|
| 1 | GET /api/recent-items |
Command palette | High |
| 2 | GET /api/unified-inbox |
Unified Inbox | High |
| 3 | POST /api/preprints/screen |
Preprint screening | Medium |
| 4 | POST /api/preprints/submit |
Preprint submission | Medium |
| 5 | GET /api/discovery/digest |
Discovery digest preference | Low |
| 6 | GET /api/discovery/recommendations |
Discovery feed | Low (can alias to /recommendations/feed) |
| 7-11 | All /api/collections/* |
Paper collections | High |
| 12-17 | All /api/documents/{docId}/references/* & /api/references/* |
Reference manager | High |
| 18 | POST /api/ai/export |
Document export | High |
| 19 | POST /api/documents/{docId}/export |
Export (alternative) | High |
| 20-21 | /api/provenance/* |
Trust / provenance | Low |
| 22 | GET /api/users/me/liked-articles |
User liked articles | Medium (can be aliased) |
| 23 | GET /api/conversations/{username}/last-read |
Messaging | Low (use /read-status) |
| 24 | GET /api/conversations/{username}/keys |
Secret chat | High |
| 25 | GET /api/groups/{groupId}/pinned |
Group pinned messages | Low (alias for /pins) |
Total missing endpoints: 25 distinct URLs (some are groups).
✅ Recommended Next Steps
Implement the “high” urgency endpoints first:
GET /api/recent-itemsGET /api/unified-inbox- Collections CRUD
- Reference manager endpoints
- Export endpoints
- Secret chat key retrieval
For low urgency, add simple aliases or use existing endpoints:
/groups/{groupId}/pinned→ forward to/groups/{groupId}/pins/conversations/{username}/last-read→ forward to/read-statusand extract the field
For missing discovery endpoints, you can either implement them or modify the frontend to use existing
/recommendations/feedand/recommendations/trending.
Xet Storage Details
- Size:
- 17.8 kB
- Xet hash:
- ad88b78e70cc24a9ff1841f914daa72ce732f7b5c5022004e6b58ff614668952
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.