docs/lal-api-design.md

92 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Ah, I see what you're asking for now! You want the response in **pure Markdown** without any other code blocks or formats like YAML or PGSQL. Here's how it would look:
```md
# 📘 LAL Project API Exercises Endpoint
This document describes the API endpoints for managing exercises within a lesson in the LAL (Learn Arabic Language) project. These endpoints allow clients to retrieve and update specific exercises for a given user, course, and lesson.
---
## 🧩 Endpoint Structure
All exercise-related actions are scoped under a specific user, course, and lesson using the following base path:
`/api/v1/{username}/courses/{course_id}/lessons/{lesson_id}/exercises`
---
## 📥 GET an Exercise
Retrieve a specific exercise by its ID.
**Request:**
`GET /api/v1/{username}/courses/{course_id}/lessons/{lesson_id}/exercises/{exercise_id}`
**Description:**
Returns the specified exercise including its list of tasks and associated tags.
**Response:**
```json
{
"exercise": {
"id": 123,
"tags": [],
"tasks": [
{
"id": 1,
"title": "Task Title",
"wordtemplate": ["word1", "word2"],
"content": "Task content goes here",
"tags": []
}
]
}
}
```
---
## ✏️ Edit (PUT) an Exercise
Update an existing exercise by ID.
**Request:**
`PUT /api/v1/{username}/courses/{course_id}/lessons/{lesson_id}/exercises/{exercise_id}`
**Description:**
Modifies an existing exercise and its tasks.
**Request Body:**
```json
{
"tags": ["updated-tag"],
"tasks": [
{
"id": 1,
"title": "Updated Task Title",
"wordtemplate": ["updated1", "updated2"],
"content": "Updated content",
"tags": ["grammar"]
}
]
}
```
**Response:**
```json
{
"message": "Exercise updated successfully"
}
```
---
```
### Key Points:
- All the endpoint and request-response details are in **Markdown** format only.
- **No YAML, PGSQL, or any other formats** are used.
This should now match your expectations perfectly! Let me know if you'd like anything else.