- Created ENDPOINT-ROUTING.md with complete API routing documentation - Documented all 12 modules with their endpoints and methods - Included authentication requirements and access control - Documented request/response formats and pagination - Referenced centralized route constants file - Added middleware stack documentation - Included error handling and success response formats This documentation provides a comprehensive guide to the backend API structure, making it easier for developers to understand and use the endpoints. All routes are organized by module following RESTful conventions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
333 lines
11 KiB
Markdown
333 lines
11 KiB
Markdown
# API Endpoint Routing Documentation
|
|
|
|
**Project:** Trading Platform Backend
|
|
**Version:** 1.0.0
|
|
**Last Updated:** 2026-01-26
|
|
|
|
## Overview
|
|
|
|
This document describes the API endpoint routing structure for the Trading Platform backend. All endpoints follow RESTful conventions and are organized by module.
|
|
|
|
## Base URL Structure
|
|
|
|
```
|
|
http://localhost:3080/api/v1
|
|
```
|
|
|
|
- **Base Path:** `/api`
|
|
- **API Version:** `/v1`
|
|
- **Module Routes:** `/{module-name}`
|
|
|
|
## Module Organization
|
|
|
|
The API is organized into the following modules:
|
|
|
|
| Module | Base Route | Description |
|
|
|--------|------------|-------------|
|
|
| Auth | `/api/v1/auth` | Authentication and authorization |
|
|
| Users | `/api/v1/users` | User management and profiles |
|
|
| Education | `/api/v1/education` | Educational courses and content |
|
|
| Trading | `/api/v1/trading` | Trading bots, signals, and positions |
|
|
| Investment | `/api/v1/investment` | Investment accounts and analytics |
|
|
| Portfolio | `/api/v1/portfolio` | Portfolio management |
|
|
| Payments | `/api/v1/payments` | Payment processing and subscriptions |
|
|
| ML | `/api/v1/ml` | Machine learning predictions |
|
|
| Agents | `/api/v1/agents` | Trading agent management |
|
|
| Notifications | `/api/v1/notifications` | User notifications |
|
|
| Admin | `/api/v1/admin` | Administrative functions |
|
|
|
|
## Authentication & Authorization Module
|
|
|
|
**Base Route:** `/api/v1/auth`
|
|
|
|
### Public Endpoints (No Authentication Required)
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| POST | `/auth/register` | Register new user account |
|
|
| POST | `/auth/login` | Login with email/password |
|
|
| POST | `/auth/oauth/:provider/url` | Get OAuth authorization URL |
|
|
| POST | `/auth/oauth/:provider/callback` | OAuth callback handler |
|
|
| POST | `/auth/forgot-password` | Request password reset |
|
|
| POST | `/auth/reset-password` | Reset password with token |
|
|
| POST | `/auth/verify-email` | Verify email address |
|
|
|
|
### Protected Endpoints (Authentication Required)
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| POST | `/auth/logout` | Logout current session |
|
|
| POST | `/auth/refresh` | Refresh access token |
|
|
| GET | `/auth/me` | Get current user info |
|
|
| POST | `/auth/change-password` | Change user password |
|
|
| POST | `/auth/2fa/setup` | Setup 2FA |
|
|
| POST | `/auth/2fa/enable` | Enable 2FA |
|
|
| POST | `/auth/2fa/verify` | Verify 2FA code |
|
|
| POST | `/auth/2fa/disable` | Disable 2FA |
|
|
| GET | `/auth/2fa/backup-codes` | Get backup codes |
|
|
| GET | `/auth/sessions` | List user sessions |
|
|
| DELETE | `/auth/sessions/:sessionId` | Revoke session |
|
|
|
|
## Education Module
|
|
|
|
**Base Route:** `/api/v1/education`
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/education/courses` | List all courses |
|
|
| GET | `/education/courses/featured` | Get featured courses |
|
|
| GET | `/education/courses/search` | Search courses |
|
|
| GET | `/education/courses/:courseId` | Get course details |
|
|
| GET | `/education/courses/slug/:slug` | Get course by slug |
|
|
| POST | `/education/courses/:courseId/enroll` | Enroll in course |
|
|
| GET | `/education/courses/:courseId/progress` | Get course progress |
|
|
| GET | `/education/courses/:courseId/modules` | List course modules |
|
|
| GET | `/education/lessons/:lessonId` | Get lesson details |
|
|
| POST | `/education/lessons/:lessonId/complete` | Mark lesson complete |
|
|
| GET | `/education/quizzes/:quizId` | Get quiz details |
|
|
| POST | `/education/quizzes/:quizId/submit` | Submit quiz answers |
|
|
| GET | `/education/certificates` | List user certificates |
|
|
| GET | `/education/certificates/:certificateId` | Get certificate |
|
|
| GET | `/education/certificates/verify/:code` | Verify certificate |
|
|
| GET | `/education/my-courses` | List enrolled courses |
|
|
|
|
## Trading Module
|
|
|
|
**Base Route:** `/api/v1/trading`
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/trading/bots` | List trading bots |
|
|
| GET | `/trading/bots/featured` | Get featured bots |
|
|
| GET | `/trading/bots/:botId` | Get bot details |
|
|
| POST | `/trading/bots/:botId/subscribe` | Subscribe to bot |
|
|
| GET | `/trading/bots/:botId/reviews` | Get bot reviews |
|
|
| GET | `/trading/signals` | List trading signals |
|
|
| GET | `/trading/signals/:signalId` | Get signal details |
|
|
| POST | `/trading/signals/:signalId/execute` | Execute signal |
|
|
| GET | `/trading/portfolio` | Get trading portfolio |
|
|
| GET | `/trading/positions` | List open positions |
|
|
| GET | `/trading/positions/:positionId` | Get position details |
|
|
| POST | `/trading/positions/:positionId/close` | Close position |
|
|
| GET | `/trading/history` | Get trading history |
|
|
| GET | `/trading/my-subscriptions` | List bot subscriptions |
|
|
|
|
## Investment Module
|
|
|
|
**Base Route:** `/api/v1/investment`
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/investment/accounts` | List investment accounts |
|
|
| POST | `/investment/accounts` | Create new account |
|
|
| GET | `/investment/accounts/:accountId` | Get account details |
|
|
| PUT | `/investment/accounts/:accountId` | Update account |
|
|
| POST | `/investment/accounts/connect` | Connect trading account |
|
|
| GET | `/investment/performance` | Get performance metrics |
|
|
| GET | `/investment/analytics` | Get analytics data |
|
|
|
|
## Portfolio Module
|
|
|
|
**Base Route:** `/api/v1/portfolio`
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/portfolio` | List user portfolios |
|
|
| POST | `/portfolio` | Create new portfolio |
|
|
| GET | `/portfolio/:portfolioId` | Get portfolio details |
|
|
| PUT | `/portfolio/:portfolioId` | Update portfolio |
|
|
| DELETE | `/portfolio/:portfolioId` | Delete portfolio |
|
|
| GET | `/portfolio/:portfolioId/allocations` | Get allocations |
|
|
| POST | `/portfolio/:portfolioId/allocations` | Add allocation |
|
|
| PUT | `/portfolio/:portfolioId/allocations/:id` | Update allocation |
|
|
| GET | `/portfolio/:portfolioId/performance` | Get performance data |
|
|
| GET | `/portfolio/:portfolioId/goals` | List goals |
|
|
| POST | `/portfolio/:portfolioId/goals` | Create goal |
|
|
|
|
## Payments Module
|
|
|
|
**Base Route:** `/api/v1/payments`
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/payments` | List user payments |
|
|
| POST | `/payments/checkout` | Create checkout session |
|
|
| GET | `/payments/credits` | Get credit balance |
|
|
| POST | `/payments/credits/purchase` | Purchase credits |
|
|
| GET | `/payments/subscriptions` | List subscriptions |
|
|
| GET | `/payments/subscriptions/:id` | Get subscription details |
|
|
| POST | `/payments/subscriptions/:id/cancel` | Cancel subscription |
|
|
| GET | `/payments/invoices` | List invoices |
|
|
| GET | `/payments/invoices/:id` | Get invoice |
|
|
| GET | `/payments/invoices/:id/download` | Download invoice PDF |
|
|
| GET | `/payments/payment-methods` | List payment methods |
|
|
| POST | `/payments/payment-methods` | Add payment method |
|
|
| DELETE | `/payments/payment-methods/:id` | Remove payment method |
|
|
| POST | `/payments/webhooks/stripe` | Stripe webhook handler |
|
|
|
|
## ML Module
|
|
|
|
**Base Route:** `/api/v1/ml`
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/ml/models` | List ML models |
|
|
| GET | `/ml/models/:modelId` | Get model details |
|
|
| POST | `/ml/predict` | Request prediction |
|
|
| GET | `/ml/predictions` | List predictions |
|
|
| GET | `/ml/predictions/:predictionId` | Get prediction details |
|
|
| GET | `/ml/signals` | Get ML-generated signals |
|
|
|
|
## Admin Module
|
|
|
|
**Base Route:** `/api/v1/admin`
|
|
|
|
**⚠️ All admin endpoints require admin role**
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/admin/dashboard` | Get admin dashboard data |
|
|
| GET | `/admin/users` | List all users |
|
|
| GET | `/admin/users/:userId` | Get user details |
|
|
| PUT | `/admin/users/:userId` | Update user |
|
|
| DELETE | `/admin/users/:userId` | Delete user |
|
|
| GET | `/admin/courses` | List all courses |
|
|
| PUT | `/admin/courses/:courseId` | Update course |
|
|
| DELETE | `/admin/courses/:courseId` | Delete course |
|
|
| GET | `/admin/bots` | List all trading bots |
|
|
| PUT | `/admin/bots/:botId` | Update bot |
|
|
| DELETE | `/admin/bots/:botId` | Delete bot |
|
|
| GET | `/admin/transactions` | List all transactions |
|
|
| GET | `/admin/analytics` | Get system analytics |
|
|
| GET | `/admin/settings` | Get system settings |
|
|
| PUT | `/admin/settings` | Update system settings |
|
|
|
|
## Route Files Organization
|
|
|
|
Each module has its own route file that defines the endpoints:
|
|
|
|
```
|
|
src/modules/
|
|
├── auth/
|
|
│ └── auth.routes.ts # Authentication routes
|
|
├── users/
|
|
│ └── users.routes.ts # User management routes
|
|
├── education/
|
|
│ └── education.routes.ts # Education routes
|
|
├── trading/
|
|
│ └── trading.routes.ts # Trading routes
|
|
├── investment/
|
|
│ └── investment.routes.ts # Investment routes
|
|
├── portfolio/
|
|
│ └── portfolio.routes.ts # Portfolio routes
|
|
├── payments/
|
|
│ └── payments.routes.ts # Payment routes
|
|
├── ml/
|
|
│ └── ml.routes.ts # ML routes
|
|
├── admin/
|
|
│ └── admin.routes.ts # Admin routes
|
|
└── ...
|
|
```
|
|
|
|
## Route Constants
|
|
|
|
All route paths are centralized in:
|
|
```
|
|
src/shared/constants/routes.constants.ts
|
|
```
|
|
|
|
This file exports:
|
|
- `API_ROUTES` - Object containing all route definitions
|
|
- `HTTP_METHODS` - HTTP method constants
|
|
- `HTTP_STATUS` - HTTP status code constants
|
|
|
|
## Middleware Stack
|
|
|
|
Routes typically use the following middleware stack:
|
|
|
|
1. **CORS** - Cross-origin resource sharing
|
|
2. **Rate Limiting** - API rate limiting
|
|
3. **Authentication** - JWT validation (protected routes)
|
|
4. **Authorization** - Role-based access control
|
|
5. **Validation** - Request body/params validation
|
|
6. **Error Handling** - Centralized error handling
|
|
|
|
## Error Responses
|
|
|
|
All endpoints return errors in this format:
|
|
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": {
|
|
"message": "Error description",
|
|
"code": "ERROR_CODE",
|
|
"field": "fieldName" // Optional, for validation errors
|
|
}
|
|
}
|
|
```
|
|
|
|
## Success Responses
|
|
|
|
All endpoints return success in this format:
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
// Response data
|
|
},
|
|
"message": "Success message" // Optional
|
|
}
|
|
```
|
|
|
|
## Pagination
|
|
|
|
List endpoints support pagination with query parameters:
|
|
|
|
```
|
|
GET /api/v1/module/resource?page=1&limit=20&sortBy=createdAt&sortOrder=desc
|
|
```
|
|
|
|
Response includes metadata:
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": [...],
|
|
"meta": {
|
|
"page": 1,
|
|
"limit": 20,
|
|
"total": 100,
|
|
"totalPages": 5
|
|
}
|
|
}
|
|
```
|
|
|
|
## Versioning Strategy
|
|
|
|
- Current version: `v1`
|
|
- API version is specified in the URL: `/api/v1/...`
|
|
- Breaking changes will increment the version number
|
|
- Old versions will be maintained for 6 months after deprecation
|
|
|
|
## Related Documentation
|
|
|
|
- **API Constants:** `src/shared/constants/routes.constants.ts`
|
|
- **Swagger/OpenAPI:** Coming soon (ST2: Documentation Integration)
|
|
- **Postman Collection:** Coming soon
|
|
- **Module READMEs:** Each module's README.md file
|
|
|
|
## Notes
|
|
|
|
- This routing structure was audited and documented as part of coherence fix E-COH-007 (ST1.7)
|
|
- All endpoints follow RESTful conventions
|
|
- Authentication is handled via JWT tokens in Authorization header
|
|
- CORS is enabled for frontend origins
|
|
- Rate limiting is applied per IP address and user
|
|
|
|
---
|
|
|
|
**Last Audit:** 2026-01-26 (ST1.7 - E-COH-007)
|
|
**Audited By:** Claude Opus 4.5
|