306 lines
11 KiB
Markdown
306 lines
11 KiB
Markdown
---
|
|
name: courses-routes
|
|
description: Handle 28 OpenAPI operation(s) under /api/v1/courses for the courses route group.
|
|
---
|
|
|
|
# courses API Routes
|
|
|
|
Handle 28 OpenAPI operation(s) under /api/v1/courses for the courses route group.
|
|
|
|
Use the generated operation tools to make real API calls. Do not invent API responses.
|
|
If a tool reports missing setup, return the exact setup field name to the caller.
|
|
For write, update, or delete operations, state the intended action before calling the tool.
|
|
|
|
Deployment context for this LearnHouse instance:
|
|
|
|
- It runs single-organization tenancy.
|
|
- Existing organization: A2A Cloud Academy
|
|
- Default `org_slug`: `default`
|
|
- Default `org_id`: `1`
|
|
- When listing courses and the user does not provide pagination, use `page=1` and `limit=50`.
|
|
- When creating a course, use query parameter `org_id=1` unless the user explicitly provides another org ID.
|
|
- Course creation must send multipart form fields `name`, `description`, `public`, and `about`. If the user only gives a title, use it as `name`, provide short `description` and `about` values, and set `public=false` unless the user asks for a public course.
|
|
- When the user asks for a course with lessons, modules, or activities, do not stop after creating the course and chapters. Create at least one activity per chapter, using each chapter's own returned `chapter_id`.
|
|
- Do not attach all generated activities to the first chapter. Verify the resulting course metadata shows activities distributed under the intended chapters.
|
|
- For smoke/status checks, use course count or course list with default `org_slug=default`; do not call `GET /api/v1/health` as a preflight.
|
|
- Course creation and course management require `LEARNHOUSE_AUTH` consumer setup.
|
|
|
|
## Operations
|
|
|
|
### api_create_course_api_v1_courses_post
|
|
|
|
- Operation ID: `api_create_course_api_v1_courses_post`
|
|
- Route: `POST /api/v1/courses/`
|
|
- Mode: WRITE
|
|
- Summary: Create course
|
|
- Parameters:
|
|
- `org_id` in `query` required
|
|
- Body: multipart form fields `name`, `description`, `public`, and `about`.
|
|
|
|
### api_export_courses_batch_api_v1_courses_export_batch_post
|
|
|
|
- Operation ID: `api_export_courses_batch_api_v1_courses_export_batch_post`
|
|
- Route: `POST /api/v1/courses/export/batch`
|
|
- Mode: WRITE
|
|
- Summary: Export multiple courses as ZIP
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_get_course_by_id_api_v1_courses_id_course_id_get
|
|
|
|
- Operation ID: `api_get_course_by_id_api_v1_courses_id_course_id_get`
|
|
- Route: `GET /api/v1/courses/id/{course_id}`
|
|
- Mode: READ
|
|
- Summary: Get course by ID
|
|
- Parameters:
|
|
- `course_id` in `path` required
|
|
|
|
### api_import_courses_api_v1_courses_import_post
|
|
|
|
- Operation ID: `api_import_courses_api_v1_courses_import_post`
|
|
- Route: `POST /api/v1/courses/import`
|
|
- Mode: WRITE
|
|
- Summary: Import courses from an analyzed package
|
|
- Parameters:
|
|
- `org_id` in `query` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_analyze_import_package_api_v1_courses_import_analyze_post
|
|
|
|
- Operation ID: `api_analyze_import_package_api_v1_courses_import_analyze_post`
|
|
- Route: `POST /api/v1/courses/import/analyze`
|
|
- Mode: WRITE
|
|
- Summary: Analyze a course import package
|
|
- Parameters:
|
|
- `org_id` in `query` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_create_from_migration_api_v1_courses_migrate_create_post
|
|
|
|
- Operation ID: `api_create_from_migration_api_v1_courses_migrate_create_post`
|
|
- Route: `POST /api/v1/courses/migrate/create`
|
|
- Mode: WRITE
|
|
- Summary: Create course from migration
|
|
- Parameters:
|
|
- `org_id` in `query` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_suggest_structure_api_v1_courses_migrate_suggest_post
|
|
|
|
- Operation ID: `api_suggest_structure_api_v1_courses_migrate_suggest_post`
|
|
- Route: `POST /api/v1/courses/migrate/suggest`
|
|
- Mode: WRITE
|
|
- Summary: Suggest migration structure
|
|
- Parameters:
|
|
- `org_id` in `query` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_upload_migration_files_api_v1_courses_migrate_upload_post
|
|
|
|
- Operation ID: `api_upload_migration_files_api_v1_courses_migrate_upload_post`
|
|
- Route: `POST /api/v1/courses/migrate/upload`
|
|
- Mode: WRITE
|
|
- Summary: Upload migration files
|
|
- Parameters:
|
|
- `org_id` in `query` required
|
|
- `temp_id` in `query`
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_get_courses_count_api_v1_courses_org_slug_org_slug_count_get
|
|
|
|
- Operation ID: `api_get_courses_count_api_v1_courses_org_slug_org_slug_count_get`
|
|
- Route: `GET /api/v1/courses/org_slug/{org_slug}/count`
|
|
- Mode: READ
|
|
- Summary: Count courses in an organization
|
|
- Parameters:
|
|
- `org_slug` in `path` required
|
|
|
|
### api_get_course_by_orgslug_api_v1_courses_org_slug_org_2dfd4569fc
|
|
|
|
- Operation ID: `api_get_course_by_orgslug_api_v1_courses_org_slug_org_slug_page_page_limit_limit`
|
|
- Route: `GET /api/v1/courses/org_slug/{org_slug}/page/{page}/limit/{limit}`
|
|
- Mode: READ
|
|
- Summary: List courses for an organization
|
|
- Parameters:
|
|
- `page` in `path` required
|
|
- `limit` in `path` required
|
|
- `org_slug` in `path` required
|
|
- `include_unpublished` in `query`
|
|
|
|
### api_search_courses_api_v1_courses_org_slug_org_slug_search_get
|
|
|
|
- Operation ID: `api_search_courses_api_v1_courses_org_slug_org_slug_search_get`
|
|
- Route: `GET /api/v1/courses/org_slug/{org_slug}/search`
|
|
- Mode: READ
|
|
- Summary: Search courses
|
|
- Parameters:
|
|
- `org_slug` in `path` required
|
|
- `query` in `query` required
|
|
- `page` in `query`
|
|
- `limit` in `query`
|
|
|
|
### api_delete_course_api_v1_courses_course_uuid_delete
|
|
|
|
- Operation ID: `api_delete_course_api_v1_courses_course_uuid_delete`
|
|
- Route: `DELETE /api/v1/courses/{course_uuid}`
|
|
- Mode: WRITE
|
|
- Summary: Delete course
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_get_course_api_v1_courses_course_uuid_get
|
|
|
|
- Operation ID: `api_get_course_api_v1_courses_course_uuid_get`
|
|
- Route: `GET /api/v1/courses/{course_uuid}`
|
|
- Mode: READ
|
|
- Summary: Get course by UUID
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_update_course_api_v1_courses_course_uuid_put
|
|
|
|
- Operation ID: `api_update_course_api_v1_courses_course_uuid_put`
|
|
- Route: `PUT /api/v1/courses/{course_uuid}`
|
|
- Mode: WRITE
|
|
- Summary: Update course
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_apply_course_contributor_api_v1_courses_course_uu_a35b28139c
|
|
|
|
- Operation ID: `api_apply_course_contributor_api_v1_courses_course_uuid_apply_contributor_post`
|
|
- Route: `POST /api/v1/courses/{course_uuid}/apply-contributor`
|
|
- Mode: WRITE
|
|
- Summary: Apply as course contributor
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_add_bulk_course_contributors_api_v1_courses_cours_3da08940ff
|
|
|
|
- Operation ID: `api_add_bulk_course_contributors_api_v1_courses_course_uuid_bulk_add_contributor`
|
|
- Route: `POST /api/v1/courses/{course_uuid}/bulk-add-contributors`
|
|
- Mode: WRITE
|
|
- Summary: Bulk add course contributors
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_remove_bulk_course_contributors_api_v1_courses_co_3117ba4aab
|
|
|
|
- Operation ID: `api_remove_bulk_course_contributors_api_v1_courses_course_uuid_bulk_remove_contr`
|
|
- Route: `PUT /api/v1/courses/{course_uuid}/bulk-remove-contributors`
|
|
- Mode: WRITE
|
|
- Summary: Bulk remove course contributors
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_clone_course_api_v1_courses_course_uuid_clone_post
|
|
|
|
- Operation ID: `api_clone_course_api_v1_courses_course_uuid_clone_post`
|
|
- Route: `POST /api/v1/courses/{course_uuid}/clone`
|
|
- Mode: WRITE
|
|
- Summary: Clone course
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_get_course_contributors_api_v1_courses_course_uui_f1e2d0838a
|
|
|
|
- Operation ID: `api_get_course_contributors_api_v1_courses_course_uuid_contributors_get`
|
|
- Route: `GET /api/v1/courses/{course_uuid}/contributors`
|
|
- Mode: READ
|
|
- Summary: List course contributors
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_update_course_contributor_api_v1_courses_course_u_803ac35801
|
|
|
|
- Operation ID: `api_update_course_contributor_api_v1_courses_course_uuid_contributors_contributo`
|
|
- Route: `PUT /api/v1/courses/{course_uuid}/contributors/{contributor_user_id}`
|
|
- Mode: WRITE
|
|
- Summary: Update course contributor
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- `contributor_user_id` in `path` required
|
|
- `authorship` in `query` required
|
|
- `authorship_status` in `query` required
|
|
|
|
### api_export_course_api_v1_courses_course_uuid_export_get
|
|
|
|
- Operation ID: `api_export_course_api_v1_courses_course_uuid_export_get`
|
|
- Route: `GET /api/v1/courses/{course_uuid}/export`
|
|
- Mode: READ
|
|
- Summary: Export course as ZIP
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_get_course_meta_api_v1_courses_course_uuid_meta_get
|
|
|
|
- Operation ID: `api_get_course_meta_api_v1_courses_course_uuid_meta_get`
|
|
- Route: `GET /api/v1/courses/{course_uuid}/meta`
|
|
- Mode: READ
|
|
- Summary: Get course metadata
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- `with_unpublished_activities` in `query`
|
|
- `slim` in `query`
|
|
|
|
### api_get_course_user_rights_api_v1_courses_course_uuid_rights_get
|
|
|
|
- Operation ID: `api_get_course_user_rights_api_v1_courses_course_uuid_rights_get`
|
|
- Route: `GET /api/v1/courses/{course_uuid}/rights`
|
|
- Mode: READ
|
|
- Summary: Get course user rights
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_create_course_thumbnail_api_v1_courses_course_uui_dc5e5c11d8
|
|
|
|
- Operation ID: `api_create_course_thumbnail_api_v1_courses_course_uuid_thumbnail_put`
|
|
- Route: `PUT /api/v1/courses/{course_uuid}/thumbnail`
|
|
- Mode: WRITE
|
|
- Summary: Update course thumbnail
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_delete_course_update_api_v1_courses_course_uuid_u_686f93b204
|
|
|
|
- Operation ID: `api_delete_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_del`
|
|
- Route: `DELETE /api/v1/courses/{course_uuid}/update/{courseupdate_uuid}`
|
|
- Mode: WRITE
|
|
- Summary: Delete course update
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- `courseupdate_uuid` in `path` required
|
|
|
|
### api_update_course_update_api_v1_courses_course_uuid_u_01971e1e0f
|
|
|
|
- Operation ID: `api_update_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_put`
|
|
- Route: `PUT /api/v1/courses/{course_uuid}/update/{courseupdate_uuid}`
|
|
- Mode: WRITE
|
|
- Summary: Update course update
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- `courseupdate_uuid` in `path` required
|
|
- Body: JSON request body accepted.
|
|
|
|
### api_get_course_updates_api_v1_courses_course_uuid_updates_get
|
|
|
|
- Operation ID: `api_get_course_updates_api_v1_courses_course_uuid_updates_get`
|
|
- Route: `GET /api/v1/courses/{course_uuid}/updates`
|
|
- Mode: READ
|
|
- Summary: List course updates
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
|
|
### api_create_course_update_api_v1_courses_course_uuid_updates_post
|
|
|
|
- Operation ID: `api_create_course_update_api_v1_courses_course_uuid_updates_post`
|
|
- Route: `POST /api/v1/courses/{course_uuid}/updates`
|
|
- Mode: WRITE
|
|
- Summary: Create course update
|
|
- Parameters:
|
|
- `course_uuid` in `path` required
|
|
- Body: JSON request body accepted.
|