This document provides information about the MoodPlay API endpoints, their functionality, and how to use them.
- Production:
https://moodplay.vercel.app/api - Development:
http://localhost:3000/api
The API uses JWT (JSON Web Token) for authentication.
POST /auth/login
Request Body:
{
"username": "your_username",
"password": "your_password"
}Response:
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"username": "your_username",
"role": "admin"
}
}Include the token in the Authorization header for all protected endpoints:
Authorization: Bearer your_token_here
GET /games
Response:
[
{
"id": "1",
"name": "Game Name",
"mood": "Calm",
"description": "Game description",
"image": "image_url",
"steamUrl": "steam_url",
"popularity": 10,
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-01-01T00:00:00Z"
},
...
]GET /games/{id}
Response:
{
"id": "1",
"name": "Game Name",
"mood": "Calm",
"description": "Game description",
"image": "image_url",
"steamUrl": "steam_url",
"popularity": 10,
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-01-01T00:00:00Z"
}POST /games
Request Body:
{
"name": "New Game",
"mood": "Calm",
"description": "Game description",
"image": "image_url",
"steamUrl": "steam_url",
"popularity": 10
}Response:
{
"id": "1",
"name": "New Game",
"mood": "Calm",
"description": "Game description",
"image": "image_url",
"steamUrl": "steam_url",
"popularity": 10,
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-01-01T00:00:00Z"
}PATCH /games/{id}
Request Body:
{
"description": "Updated description",
"mood": "Happy"
}Response:
{
"id": "1",
"name": "Game Name",
"mood": "Happy",
"description": "Updated description",
"image": "image_url",
"steamUrl": "steam_url",
"popularity": 10,
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-01-01T00:00:00Z"
}DELETE /games/{id}
Response:
{
"success": true
}GET /moods
Response:
[
{
"id": "1",
"mood": "Calm",
"tags": [
{
"id": "1",
"value": "Relaxing",
"moodId": "1"
},
{
"id": "2",
"value": "Peaceful",
"moodId": "1"
}
]
},
...
]POST /moods
Request Body:
{
"mood": "New Mood"
}Response:
{
"id": "3",
"mood": "New Mood",
"tags": []
}PATCH /moods/{id}
Request Body:
{
"mood": "Updated Mood"
}Response:
{
"id": "3",
"mood": "Updated Mood",
"tags": []
}DELETE /moods/{id}
Response:
{
"success": true
}POST /tags
Request Body:
{
"value": "New Tag",
"moodId": "1"
}Response:
{
"id": "3",
"value": "New Tag",
"moodId": "1"
}PATCH /tags/{id}
Request Body:
{
"value": "Updated Tag"
}Response:
{
"id": "3",
"value": "Updated Tag",
"moodId": "1"
}DELETE /tags/{id}
Response:
{
"success": true
}GET /blog-posts
Response:
[
{
"id": "1",
"title": "Blog Post Title",
"content": "Blog post content",
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-01-01T00:00:00Z"
},
...
]GET /suggested-games
Response:
[
{
"id": "1",
"name": "Suggested Game",
"mood": "Calm",
"reason": "Reason for suggestion",
"createdAt": "2023-01-01T00:00:00Z"
},
...
]POST /suggested-games
Request Body:
{
"name": "New Suggested Game",
"mood": "Happy",
"reason": "This is a great game"
}Response:
{
"id": "2",
"name": "New Suggested Game",
"mood": "Happy",
"reason": "This is a great game",
"createdAt": "2023-01-01T00:00:00Z"
}DELETE /suggested-games/{id}
Response:
{
"success": true
}GET /feedback
Response:
[
{
"id": "1",
"name": "User Name",
"email": "user@example.com",
"message": "Feedback message",
"createdAt": "2023-01-01T00:00:00Z"
},
...
]POST /feedback
Request Body:
{
"name": "User Name",
"email": "user@example.com",
"message": "New feedback message"
}Response:
{
"id": "2",
"name": "User Name",
"email": "user@example.com",
"message": "New feedback message",
"createdAt": "2023-01-01T00:00:00Z"
}DELETE /feedback/{id}
Response:
{
"success": true
}All endpoints return error responses in the following format:
{
"success": false,
"error": "Error message"
}Common HTTP status codes:
- 200: Success
- 201: Created
- 400: Bad Request
- 401: Unauthorized
- 404: Not Found
- 500: Server Error