http://localhost:3000/api
All responses follow the JSend specification:
{
"status": "success",
"data": { /* Application data */ }
}{
"status": "fail|error",
"data": { /* Error details */ },
"message": "Error description"
}- Endpoint:
POST /auth/register - Description: Create a new user account
- Auth Required: No
Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "MyPassword123!",
"age": 25
}Success Response (201):
{
"status": "success",
"data": {
"user": {
"id": "64abc123...",
"name": "John Doe",
"email": "john@example.com",
"role": "user"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}- Endpoint:
POST /auth/login - Description: Authenticate existing user
- Auth Required: No
Request Body:
{
"email": "john@example.com",
"password": "MyPassword123!"
}Success Response (200):
{
"status": "success",
"data": {
"user": {
"id": "64abc123...",
"name": "John Doe",
"email": "john@example.com",
"role": "user"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}- Endpoint:
POST /auth/logout - Description: Logout user (client-side token removal)
- Auth Required: No
Success Response (200):
{
"status": "success",
"data": {
"message": "Logged out successfully"
}
}- Endpoint:
GET /profile/me - Description: Get current user's profile
- Auth Required: Yes
Headers:
Authorization: Bearer <jwt_token>
Success Response (200):
{
"status": "success",
"data": {
"user": {
"_id": "64abc123...",
"name": "John Doe",
"email": "john@example.com",
"role": "user",
"age": 25,
"enrolledCourses": [],
"createdAt": "2025-09-26T..."
}
}
}- Endpoint:
PATCH /profile/me - Description: Update current user's profile
- Auth Required: Yes
Headers:
Authorization: Bearer <jwt_token>
Request Body:
{
"name": "Updated Name",
"email": "newemail@example.com"
}Success Response (200):
{
"status": "success",
"data": {
"user": {
"_id": "64abc123...",
"name": "Updated Name",
"email": "newemail@example.com",
"role": "user",
"age": 25
}
}
}- Endpoint:
DELETE /profile/me - Description: Delete current user's account
- Auth Required: Yes
Headers:
Authorization: Bearer <jwt_token>
Request Body (Optional):
{
"password": "MyPassword123!"
}Success Response (200):
{
"status": "success",
"data": {
"message": "Account deleted successfully"
}
}- Endpoint:
GET /courses - Description: Get paginated list of courses
- Auth Required: No
Query Parameters:
page(optional): Page number (default: 1)limit(optional): Items per page (default: 10)
Success Response (200):
{
"status": "success",
"data": {
"courses": [
{
"_id": "64def456...",
"title": "Node.js Fundamentals",
"price": 99,
"instructor": "Jane Smith",
"level": "beginner",
"duration": 20
}
],
"pagination": {
"currentPage": 1,
"totalPages": 5,
"totalItems": 50
}
}
}- Endpoint:
GET /courses/:courseId - Description: Get specific course details
- Auth Required: No
Success Response (200):
{
"status": "success",
"data": {
"course": {
"_id": "64def456...",
"title": "Node.js Fundamentals",
"price": 99,
"description": "Learn Node.js from scratch",
"instructor": "Jane Smith",
"level": "beginner",
"duration": 20,
"createdAt": "2025-09-26T..."
}
}
}- Endpoint:
POST /courses - Description: Create a new course
- Auth Required: Yes
Headers:
Authorization: Bearer <jwt_token>
Request Body:
{
"title": "Advanced JavaScript",
"price": 149,
"description": "Master advanced JavaScript concepts",
"instructor": "John Developer",
"level": "advanced",
"duration": 30
}Success Response (201):
{
"status": "success",
"data": {
"course": {
"_id": "64def789...",
"title": "Advanced JavaScript",
"price": 149,
"description": "Master advanced JavaScript concepts",
"instructor": "John Developer",
"level": "advanced",
"duration": 30,
"createdAt": "2025-09-26T..."
}
}
}- Endpoint:
PATCH /courses/:courseId - Description: Update existing course
- Auth Required: Yes
Headers:
Authorization: Bearer <jwt_token>
Request Body:
{
"title": "Updated Course Title",
"price": 199
}- Endpoint:
DELETE /courses/:courseId - Description: Delete a course
- Auth Required: Yes
Headers:
Authorization: Bearer <jwt_token>
Success Response (200):
{
"status": "success",
"data": {
"course": {
"_id": "64def456...",
"title": "Deleted Course"
}
}
}{
"status": "fail",
"data": {
"validation": [
{
"field": "email",
"message": "Please provide a valid email"
}
]
}
}{
"status": "fail",
"data": {
"auth": "Access token required"
}
}{
"status": "fail",
"data": {
"message": "Route /api/invalid-route not found"
}
}{
"status": "error",
"message": "Internal server error",
"stack": "Error details..."
}