From 4f5f85a197e55a4a1de7166f300300d559a0c137 Mon Sep 17 00:00:00 2001 From: Aharshi3614 Date: Tue, 23 Jun 2026 08:36:40 +0530 Subject: [PATCH] fix: remove duplicate routes, clean up API versioning --- backend/server.js | 16 ++++- docs/API.md | 146 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 docs/API.md diff --git a/backend/server.js b/backend/server.js index eb4954c..e2dac81 100644 --- a/backend/server.js +++ b/backend/server.js @@ -19,8 +19,10 @@ const app = express(); // Connect to MongoDB Atlas mongoose .connect(process.env.MONGODB_URI) - .then(() => console.log("✅ MongoDB connected")) - seedAdminUser() + .then(() => { + console.log("✅ MongoDB connected"); + seedAdminUser(); // ✅ Inside .then() + }) .catch((err) => console.error("❌ MongoDB connection error:", err)); app.use(cors()); @@ -31,9 +33,17 @@ const authRoutes = require("./routes/authRoutes"); const historyRoutes = require("./routes/historyRoutes"); const analyticsRoutes = require("./routes/analyticsRoutes"); const chatRoutes = require("./routes/chatRoutes"); + +// Versioned routes (v1) +app.use("/api/v1/auth", authRoutes); +app.use("/api/v1/history", historyRoutes); +app.use("/api/v1/analytics", analyticsRoutes); +app.use("/api/v1/chat", chatRoutes); + +// Keep old routes for backward compatibility app.use("/api/auth", authRoutes); app.use("/api/history", historyRoutes); -app.use("/analytics", analyticsRoutes); +app.use("/api/analytics", analyticsRoutes); app.use("/api/chat", chatRoutes); const { protect } = require("./middleware/authMiddleware"); diff --git a/docs/API.md b/docs/API.md new file mode 100644 index 0000000..e649661 --- /dev/null +++ b/docs/API.md @@ -0,0 +1,146 @@ +\# Spam Detection System - API Documentation + + + +\## Base URL + +http://localhost:3000/api/v1 + + + +\## Authentication + +All protected endpoints require a Bearer token: + +Authorization: Bearer + + + +\## Auth Routes + + + +| Method | Endpoint | Description | Auth | + +|--------|----------|-------------|------| + +| POST | `/auth/register` | Register new user | ❌ | + +| POST | `/auth/login` | Login user | ❌ | + +| GET | `/auth/profile` | Get user profile | ✅ | + + + +\--- + + + +\## Prediction Routes + + + +| Method | Endpoint | Description | Auth | + +|--------|----------|-------------|------| + +| POST | `/predict` | Predict spam/ham | ✅ | + +| POST | `/bulk-predict` | Bulk spam detection | ✅ | + +| POST | `/feedback` | Submit feedback | ✅ | + +| POST | `/analyze-email-header` | Analyze email headers | ✅ | + +| POST | `/bulk-predict/export` | Export predictions as CSV | ✅ | + + + +\--- + + + +\## Analytics Routes + + + +| Method | Endpoint | Description | Auth | + +|--------|----------|-------------|------| + +| GET | `/analytics/page-visits` | Page visit metrics | ✅ | + +| GET | `/analytics/visits-by-role` | Visits by role | ✅ | + + + +\--- + + + +\## Email Integration Routes + + + +| Method | Endpoint | Description | Auth | + +|--------|----------|-------------|------| + +| GET | `/gmail/auth-url` | Get Gmail auth URL | ✅ | + +| GET | `/gmail/emails` | Get Gmail emails | ✅ | + +| GET | `/outlook/auth-url` | Get Outlook auth URL | ✅ | + +| GET | `/outlook/emails` | Get Outlook emails | ✅ | + +| POST | `/scan-emails` | Scan connected emails | ✅ | + + + +\--- + + + +\## Public Routes + + + +| Method | Endpoint | Description | Auth | + +|--------|----------|-------------|------| + +| GET | `/health` | Health check | ❌ | + +| GET | `/api/wordcloud` | Word cloud data | ❌ | + +| GET | `/importance` | Feature importance | ❌ | + + + +\--- + + + +\## Response Format + + + +\### Success Response + +```json + +{ + + "success": true, + + "data": { ... } + +} + +``` + + + + +