Lesson Plans API
GET /api/lesson-plans
List all lesson plans for the authenticated client.
Query Parameters
clientId: string (required) — The client identifier. Requests without this parameter will return a400error.tags: string (optional, comma-separated) — Filter lesson plans by tags.
Headers:
Authorization: Bearer <JWT>
Response
200 OK:{ data: Array<LessonPlan> }400 Bad Request:{ error: 'clientId is required.' }401 Unauthorized:{ error: string }500 Internal Server Error:{ error: string }
Each LessonPlan object includes:
Sample LessonPlan Object
{
"id": "plan123",
"clientId": "gofa",
"planName": "Obsolete Name",
"title": {
"en": "Strength Plan",
"zh-Hant": "力量計劃",
"zh-Hans": "力量计划"
},
"planDescription": "Obsolete Description",
"description": {
"en": "A plan for building strength.",
"zh-Hant": "增強力量的計劃。",
"zh-Hans": "增强力量的计划。"
},
"planImage": "https://example.com/image.png",
"lessons": ["lesson1", "lesson2"],
"lessonsData": [
{
"id": "lesson1",
"title": { "en": "Lesson 1" },
"duration": 30,
"sessions": []
},
{
"id": "lesson2",
"title": { "en": "Lesson 2" },
"duration": 25,
"sessions": []
}
],
"tags": ["strength", "beginner"],
"targetAreas": ["arms", "legs"],
"totalViews": 100,
"totalPlays": 50,
"totalCompletions": 20,
"lastViewed": "2024-05-24T10:00:00.000Z",
"lastPlayed": "2024-05-24T10:00:00.000Z",
"lastCompleted": "2024-05-24T10:00:00.000Z",
"currentPlanPlayId": "play789",
"completedLessons": ["lesson1"],
"modifyDatetime": { "_seconds": 1716544800, "_nanoseconds": 0 },
"createDatetime": { "_seconds": 1716541200, "_nanoseconds": 0 },
"duration": 14,
"expiryReminder": 2
}
Localizable Example
{
"en": "Strength Plan",
"zh-Hant": "力量計劃",
"zh-Hans": "力量计划"
}
GET /api/lesson-plans/[id]
Fetch a lesson plan by its ID.
Headers:
Authorization: Bearer <JWT>
Path Parameters:
id: string (required) — The lesson plan's unique identifier
Response:
200 OK:{ lessonPlan: LessonPlan }404 Not Found:{ error: string }401 Unauthorized:{ error: string }500 Internal Server Error:{ error: string }
note
The actual schema may include additional fields. For the most up-to-date schema, refer to the lesson plan and lesson config interfaces in your codebase.
All fields may not be present on every lesson plan. Optional and nullable fields are indicated above.
lessonsData contains lesson config objects; see the LessonConfig schema for details.
Localizable fields support English (en), Traditional Chinese (zh-Hant), and Simplified Chinese (zh-Hans).