API and API Documentation - bounswe/bounswe2024group6 GitHub Wiki
This document outlines the acceptance criteria and provides examples for API endpoints, expected inputs, outputs, and associated documentation to ensure clear and comprehensive evaluation.
-
Functionality:
- The API must fulfill its intended purpose and perform the required operations without errors.
- All endpoints should adhere to RESTful principles (if applicable).
-
Error Handling:
- Clear and descriptive error messages must be returned for all invalid requests.
- Standardized error codes should be used (such as HTTP status codes).
-
Security:
- All sensitive data must be transmitted over HTTPS.
- API keys or Bearer tokens must be used for authentication.
-
Documentation:
- API documentation must include clear descriptions of each endpoint, required inputs, outputs, and examples.
- Documentation must be easily accessible and regularly updated.
URL: /quiz/create/
Method: POST
Headers:
{
"Content-Type": "application/json",
"Authorization": "Bearer <JWT_TOKEN>"
}
Request Body:
{
"quiz": {
"title": "Learn Common English Phrases",
"level": "A1",
"description": "A quiz designed to help Turkish learners master essential English phrases.",
"tags": ["phrases", "A1"]
},
"questions": [
{
"question_text": "What does 'How are you?' mean in Turkish?",
"choice1": "Merhaba",
"choice2": "Nasılsınız?",
"choice3": "Hoşçakal",
"choice4": "Teşekkürler",
"correct_choice": 2
},
{
"question_text": "Which word means 'thank you' in English?",
"choice1": "Lütfen",
"choice2": "Güle güle",
"choice3": "Teşekkürler",
"choice4": "Thank you",
"correct_choice": 4
}
]
}
Response (Success - 201):
{
"id": 1,
"title": "Learn Common English Phrases",
"level": "A1",
"description": "A quiz designed to help Turkish learners master essential English phrases.",
"tags": ["phrases", "A1"],
"question_count": 2,
"author": "user123"
}
Response (Error - 400):
{
"error": "quiz and questions must be provided"
}
URL: /feed/quiz/
Method: GET
Headers:
{
"Authorization": "Bearer <JWT_TOKEN>"
}
Response (Success - 200):
[
{
"id": 1,
"title": "Learn Common English Phrases",
"level": "A1",
"description": "A quiz designed to help Turkish learners master essential English phrases.",
"tags": ["phrases", "A1"],
"question_count": 2
},
{
"id": 2,
"title": "Intermediate English Vocabulary",
"level": "intermediate",
"description": "A quiz for expanding your English vocabulary.",
"tags": ["vocabulary", "intermediate"],
"question_count": 10
}
]
Response (Error - 401):
{
"error": "Authentication credentials were not provided."
}
URL: /quiz/submit/
Method: POST
Headers:
{
"Content-Type": "application/json",
"Authorization": "Bearer <JWT_TOKEN>"
}
Request Body:
{
"quiz_progress_id": 1
}
Response (Success - 200):
{
"result_url": "/quiz/result/5"
}
Response (Error - 400):
{
"error": "Please answer all questions"
}
URL: /quiz/start/
Method: POST
Headers:
{
"Content-Type": "application/json",
"Authorization": "Bearer <JWT_TOKEN>"
}
Request Body:
{
"quiz_id": 1
}
Response (Success - 200):
{
"quiz_progress_id": 3,
"quiz_title": "Learn Common English Phrases",
"question_count": 2,
"questions": [
{
"question_number": 1,
"question": "What does 'How are you?' mean in Turkish?",
"choices": ["Merhaba", "Nasılsınız?", "Hoşçakal", "Teşekkürler"],
"previous_answer": null
},
{
"question_number": 2,
"question": "Which word means 'thank you' in English?",
"choices": ["Lütfen", "Güle güle", "Teşekkürler", "Thank you"],
"previous_answer": null
}
]
}
Response (Error - 400):
{
"error": "Multiple quiz progresses found"
}
We can consider the backend team as the main contributors to the following work (Aras, Kaan, Oktay, Halil). Here are some of the PRs regarding API development:
Title | PR | Description |
---|---|---|
BACKEND-530: Modify docker-compose for database volume and create separate yml for BACKEND-DEV | #533 | Improved docker-compose setup by adding separate YML for development. |
feat(backend): quiz recommendation | #659 | Added functionality for quiz recommendations. |
fix(backend): fix quiz feed endpoint data structure | #393 | Fixed data structure issues in the quiz feed endpoint. |
BACKEND-519: Preliminary quiz endpoints | #573 | Introduced preliminary endpoints for quizzes. |
feat(backend): improve quiz result endpoint and add quiz review endpoint | #628 | Enhanced quiz result endpoint and added support for reviews. |
Backend like unlike post | #481 | Implemented functionality for liking and unliking posts. |
Here's the Milestone 2 Report commit in which we listed the complete documentation of our API up to Milestone 2.
Here are some of the issues regarding API development:
Title | Issue | Description |
---|---|---|
Backend: Get latest quiz review endpoint | #666 | The system shall provide an endpoint to fetch the latest quiz review. |
Backend: Implement Quiz Recommendation Endpoint | #657 | The system shall implement functionality to provide quiz recommendations. |
Backend: Implement Quiz Progress Functionality | #520 | The system shall enable functionality to track and manage quiz progress. |
Create, Delete, Get Posts Endpoints Coding | #518 | The system shall support endpoints for creating, deleting, and fetching posts. |
Activity Streams Addition to All Views | #517 | The system shall integrate activity streams into all relevant views. |
[Backend]: Comments Coding | #473 | The system shall provide robust functionality for handling comments. |
[Backend]: Post Like/Unlike Functionality Coding | #471 | The system shall allow users to like and unlike posts. |