/
/Main Frontend API
ChangesDocsSign in
Sign in
  • APIs5
  • Docs
  • History
  • Schema
certificates6
chapters6
chatbot-models2
chatbots5
code_giveaways7
course_auditing2
course_modules7
course-credit-registrations11
course-instances15
course-plans15
course-stats28
course-students9
courses66
  • post/api/v0/main-frontend/courses POST `/api/v0/main-frontend/courses` - Create a new course. # Example Request: ```http POST /api/v0/main-frontend/courses HTTP/1.1 Content-Type: application/json { "name": "Introduction to introduction", "slug": "introduction-to-introduction", "organization_id": "1b89e57e-8b57-42f2-9fed-c7a6736e3eec" } ```
  • get/api/v0/main-frontend/courses/ GET `/api/v0/main-frontend/courses` - Get all courses Returns all courses.
  • get/api/v0/main-frontend/courses/join/{join_code} GET /courses/join/:join_code - Gets the course related to join code
  • get/api/v0/main-frontend/courses/{course_id} GET `/api/v0/main-frontend/courses/:course_id` - Get course.
  • put/api/v0/main-frontend/courses/{course_id} POST `/api/v0/main-frontend/courses/:course_id` - Update course. # Example Request: ```http PUT /api/v0/main-frontend/courses/ab4541d8-6db4-4561-bdb2-45f35b2544a1 HTTP/1.1 Content-Type: application/json { "name": "Introduction to Introduction" } ```
  • delete/api/v0/main-frontend/courses/{course_id} DELETE `/api/v0/main-frontend/courses/:course_id` - Delete a course.
  • get/api/v0/main-frontend/courses/{course_id}/breadcrumb-info GET `/api/v0/main-frontend/courses/:course_id/breadcrumb-info` - Get information to display breadcrumbs on the manage course pages.
  • get/api/v0/main-frontend/courses/{course_id}/chatbotsGET `/api/v0/main-frontend/courses/{course_id}/chatbots`
  • post/api/v0/main-frontend/courses/{course_id}/chatbots/{chatbot_configuration_id}/set-as-defaultPOST `/api/v0/main-frontend/courses/{course_id}/chatbots/{chatbot_configuration_id}/set-as-default`
  • post/api/v0/main-frontend/courses/{course_id}/chatbots/{chatbot_configuration_id}/set-as-non-defaultPOST `/api/v0/main-frontend/courses/{course_id}/chatbots/{chatbot_configuration_id}/set-as-non-default`
  • get/api/v0/main-frontend/courses/{course_id}/course-instances GET `/api/v0/main-frontend/courses/:id/course-instances` - Returns all course instances for given course id.
  • get/api/v0/main-frontend/courses/{course_id}/course-module-completions/{user_id} GET `/api/v0/main-frontend/courses/:course_id/course-module-completions/:user_id` - Returns all course module completions for a given user for this course.
  • post/api/v0/main-frontend/courses/{course_id}/course-modules
  • get/api/v0/main-frontend/courses/{course_id}/course-users-counts-by-exercise GET `/api/v0/main-frontend/courses/:id/course-users-counts-by-exercise` - Returns the amount of users for each exercise.
  • post/api/v0/main-frontend/courses/{course_id}/create-copy POST `/api/v0/main-frontend/courses/:id/create-copy` - Create a copy of a course with specified mode. Different copy modes: - `duplicate`: Creates a completely separate copy with new language group - `same_language_group`: Creates a new language version within the same language group - `existing_language_group`: Creates a new language version in the specified language group - `new_language_group`: Creates a new language version in a new language group # Example Request: ```http POST /api/v0/main-frontend/courses/fd484707-25b6-4c51-a4ff-32d8259e3e47/create-copy HTTP/1.1 Content-Type: application/json { "name": "Johdatus kaikkeen", "slug": "johdatus-kaikkeen", "organization_id": "1b89e57e-8b57-42f2-9fed-c7a6736e3eec", "language_code": "fi-FI", "mode": "duplicate" } ``` Or with an existing language group: ```http POST /api/v0/main-frontend/courses/fd484707-25b6-4c51-a4ff-32d8259e3e47/create-copy HTTP/1.1 Content-Type: application/json { "name": "Johdatus kaikkeen", "slug": "johdatus-kaikkeen", "organization_id": "1b89e57e-8b57-42f2-9fed-c7a6736e3eec", "language_code": "fi-FI", "mode": { "existing_language_group": { "target_course_id": "1b89e57e-8b57-42f2-9fed-c7a6736e3eec" } } } ```
  • get/api/v0/main-frontend/courses/{course_id}/daily-submission-counts GET `/api/v0/main-frontend/courses/:id/daily-submission-counts` - Returns submission counts grouped by day.
  • get/api/v0/main-frontend/courses/{course_id}/daily-users-who-have-submitted-something GET `/api/v0/main-frontend/courses/:id/daily-users-who-have-submitted-something` - Returns a count of users who have submitted something grouped by day.
  • get/api/v0/main-frontend/courses/{course_id}/default-peer-review
  • get/api/v0/main-frontend/courses/{course_id}/exercises GET `/api/v0/main-frontend/courses/:id/exercises` - Returns all exercises for the course.
  • get/api/v0/main-frontend/courses/{course_id}/exercises-and-count-of-answers-requiring-attention GET `/api/v0/main-frontend/courses/:id/exercises-and-count-of-answers-requiring-attention` - Returns all exercises for the course and count of answers requiring attention in them.
  • get/api/v0/main-frontend/courses/{course_id}/export-course-instances GET `/api/v0/main-frontend/courses/${course.id}/export-course-instances` gets SCV course instances for course
  • get/api/v0/main-frontend/courses/{course_id}/export-course-user-consents GET `/api/v0/main-frontend/courses/${course.id}/export-course-user-consents` gets SCV course specific research form questions and user answers for course
  • get/api/v0/main-frontend/courses/{course_id}/export-exercise-tasks GET `/api/v0/main-frontend/courses/${course.id}/export-exercise-tasks` gets SCV all exercise-tasks' private specs in course
  • get/api/v0/main-frontend/courses/{course_id}/export-submissions GET `/api/v0/main-frontend/courses/${courseId}/export-submissions` gets SCV of course exercise submissions
  • get/api/v0/main-frontend/courses/{course_id}/export-user-details GET `/api/v0/main-frontend/courses/${course.id}/export-user-details` gets SCV of user details for all users having submitted an exercise in the course
  • get/api/v0/main-frontend/courses/{course_id}/export-user-exercise-states GET `/api/v0/main-frontend/courses/${course.id}/export-user-exercise-states` gets CSV for course specific user exercise states
  • get/api/v0/main-frontend/courses/{course_id}/feedback GET `/api/v0/main-frontend/courses/:id/feedback?read=true` - Returns feedback for the given course.
  • get/api/v0/main-frontend/courses/{course_id}/feedback-count GET `/api/v0/main-frontend/courses/:id/feedback-count` - Returns the amount of feedback for the given course.
  • get/api/v0/main-frontend/courses/{course_id}/get-course-audiences get `/api/v0/main-frontend/courses/:course_id/get-course-audiences` - Get course audiences.
  • get/api/v0/main-frontend/courses/{course_id}/get-course-metadata get `/api/v0/main-frontend/courses/:course_id/get-course-metadata` - Get course metadata.
  • get/api/v0/main-frontend/courses/{course_id}/get-course-prerequisites get `/api/v0/main-frontend/courses/:course_id/get-course-prerequisites` - Get course prerequisites.
  • post/api/v0/main-frontend/courses/{course_id}/join-course-with-join-code POST /courses/:course_id/join-course-with-join-code - Adds the user to join_code_uses so the user gets access to the course
  • get/api/v0/main-frontend/courses/{course_id}/language-versions GET `/api/v0/main-frontend/courses/:id/language-versions` - Returns all language versions of the same course. # Example Request: ```http GET /api/v0/main-frontend/courses/fd484707-25b6-4c51-a4ff-32d8259e3e47/language-versions HTTP/1.1 Content-Type: application/json ```
  • post/api/v0/main-frontend/courses/{course_id}/new-chapter-ordering POST `/api/v0/main-frontend/courses/:id/new-chapter-ordering` - Reorders chapters based on modified chapter number.# Creates redirects if url_path changes.
  • post/api/v0/main-frontend/courses/{course_id}/new-course-instance POST `/api/v0/main-frontend/courses/:id/new-course-instance`
  • post/api/v0/main-frontend/courses/{course_id}/new-page-ordering POST `/api/v0/main-frontend/courses/:id/new-page-ordering` - Reorders pages to the given order numbers and given chapters. Note that the page objects posted here might have the content omitted because it is not needed here and the content makes the request body to be very large. Creates redirects if url_path changes.
  • get/api/v0/main-frontend/courses/{course_id}/page-visit-datum-summary GET `/api/v0/main-frontend/courses/${course.id}/page-visit-datum-summary` - Gets aggregated statistics for page visits for the course.
  • get/api/v0/main-frontend/courses/{course_id}/page-visit-datum-summary-by-countries GET `/api/v0/main-frontend/courses/${course.id}/page-visit-datum-summary-by-countries` - Gets aggregated statistics for page visits for the course.
  • get/api/v0/main-frontend/courses/{course_id}/page-visit-datum-summary-by-device-types GET `/api/v0/main-frontend/courses/${course.id}/page-visit-datum-summary-by-device-types` - Gets aggregated statistics for page visits for the course.
  • get/api/v0/main-frontend/courses/{course_id}/page-visit-datum-summary-by-pages GET `/api/v0/main-frontend/courses/${course.id}/page-visit-datum-summary-by-pages` - Gets aggregated statistics for page visits for the course.
  • get/api/v0/main-frontend/courses/{course_id}/partners-block GET /courses/:course_id/partners_blocks - Gets a partners block related to a course
  • post/api/v0/main-frontend/courses/{course_id}/partners-block POST /api/v0/main-frontend/courses/:course_id/partners_block - Create or updates a partners block for a course
  • delete/api/v0/main-frontend/courses/{course_id}/partners-block DELETE `/api/v0/main-frontend/courses/:course_id` - Delete a partners block in a course.
  • get/api/v0/main-frontend/courses/{course_id}/progress/{user_id} GET `/api/v0/main-frontend/courses/:course_id/progress/:user_id` - Returns user progress for the course.
  • get/api/v0/main-frontend/courses/{course_id}/references
  • post/api/v0/main-frontend/courses/{course_id}/references
  • post/api/v0/main-frontend/courses/{course_id}/references/{reference_id}
  • delete/api/v0/main-frontend/courses/{course_id}/references/{reference_id}
  • post/api/v0/main-frontend/courses/{course_id}/reprocess-completions POST `/api/v0/main-frontend/courses/{course_id}/reprocess-completions` Reprocesses all module completions for the given course instance. Only available to admins.
  • post/api/v0/main-frontend/courses/{course_id}/set-join-code POST /api/v0/main-frontend/courses/:course_id/generate-join-code - Generates a code that is used as a part of URL to join course
  • get/api/v0/main-frontend/courses/{course_id}/sisu-course-llm-descriptions GET `/api/v0/main-frontend/courses/:course_id/sisu-course-llm-descriptions` - Get Sisu descriptions summarised by LLM Returns LLM generated descriptions for a course based on information from Sisu API.
  • get/api/v0/main-frontend/courses/{course_id}/status-for-all-exercises/{user_id} GET `/api/v0/main-frontend/courses/:course_id/status-for-all-exercises/:user_id` - Returns status for all exercises in the course for a given user.
  • get/api/v0/main-frontend/courses/{course_id}/structure GET `/api/v0/main-frontend/courses/:course_id/structure` - Returns the structure of a course. # Example ```json { "course": { "id": "d86cf910-4d26-40e9-8c9c-1cc35294fdbb", "slug": "introduction-to-everything", "created_at": "2021-04-28T10:40:54.503917", "updated_at": "2021-04-28T10:40:54.503917", "name": "Introduction to everything", "organization_id": "1b89e57e-8b57-42f2-9fed-c7a6736e3eec", "deleted_at": null, "language_code": "en-US", "copied_from": null, "language_version_of_course_id": null }, "pages": [ { "id": "f3b0d699-c9be-4d56-bd0a-9d40e5547e4d", "created_at": "2021-04-28T13:51:51.024118", "updated_at": "2021-04-28T14:36:18.179490", "course_id": "d86cf910-4d26-40e9-8c9c-1cc35294fdbb", "content": [], "url_path": "/", "title": "Welcome to Introduction to Everything", "deleted_at": null, "chapter_id": "d332f3d9-39a5-4a18-80f4-251727693c37" } ], "chapters": [ { "id": "d332f3d9-39a5-4a18-80f4-251727693c37", "created_at": "2021-04-28T16:11:47.477850", "updated_at": "2021-04-28T16:11:47.477850", "name": "The Basics", "course_id": "d86cf910-4d26-40e9-8c9c-1cc35294fdbb", "deleted_at": null, "chapter_image_url": "http://project-331.local/api/v0/files/uploads/organizations/1b89e57e-8b57-42f2-9fed-c7a6736e3eec/courses/d86cf910-4d26-40e9-8c9c-1cc35294fdbb/images/mbPQh8th96TdUwX96Y0ch1fjbJLRFr.png", "chapter_number": 1, "front_page_id": null } ] } ```
  • get/api/v0/main-frontend/courses/{course_id}/submission-counts-by-exercise GET `/api/v0/main-frontend/courses/:id/submission-counts-by-exercise` - Returns submission counts grouped by weekday and hour.
  • get/api/v0/main-frontend/courses/{course_id}/suspected-cheaters GET /api/v0/main-frontend/courses/${course.id}/suspected-cheaters?status=Flagged - returns the suspected cheaters in the given review state for a course.
  • post/api/v0/main-frontend/courses/{course_id}/suspected-cheaters/confirm/{user_id} POST /api/v0/main-frontend/courses/${course.id}/suspected-cheaters/confirm/:user_id - confirms the student cheated (sets status to 'ConfirmedCheating') and fails the student.
  • post/api/v0/main-frontend/courses/{course_id}/suspected-cheaters/dismiss/{user_id} POST /api/v0/main-frontend/courses/${course.id}/suspected-cheaters/dismiss/:user_id - dismisses the suspicion as a false alarm (sets status to 'Dismissed').
  • get/api/v0/main-frontend/courses/{course_id}/suspected-cheaters/flagged-count GET /api/v0/main-frontend/courses/${course.id}/suspected-cheaters/flagged-count - number of suspected cheaters awaiting review (status flagged). Used to show a review notification to teachers.
  • delete/api/v0/main-frontend/courses/{course_id}/teacher-reset-course-progress-for-everyone DELETE `/api/v0/main-frontend/courses/${course.id}/teacher-reset-course-progress-for-everyone` - Can be used by teachers to reset the course progress for all students. Only works when the course is a draft and not published to students. Cannot be used to delete a course that some students have taken. Deletes submissions, user exercise states, and peer reviews etc. for all the course instances of this course.
  • delete/api/v0/main-frontend/courses/{course_id}/teacher-reset-course-progress-for-themselves DELETE `/api/v0/main-frontend/courses/${course.id}/teacher-reset-course-progress-for-themselves` - Allows a teacher to reset the course progress for themselves. Cannot be used to reset the course for others. Deletes submissions, user exercise states, and peer reviews etc. for all the course instances of this course.
  • get/api/v0/main-frontend/courses/{course_id}/thresholds GET /api/v0/main-frontend/courses/${course.id}/thresholds - get all thresholds for all modules in a course.
  • post/api/v0/main-frontend/courses/{course_id}/update-metadata POST `/api/v0/main-frontend/courses/:course_id/update-metadata` - Update metadata.
  • post/api/v0/main-frontend/courses/{course_id}/update-peer-review-queue-reviews-received POST `/api/v0/main-frontend/courses/${course_id}/update-peer-review-queue-reviews-received` Updates reviews received for all the students in the peer review queue for a specific course. Updates only entries that have not received enough peer reviews in the table. Only available to admins.
  • post/api/v0/main-frontend/courses/{course_id}/upload POST `/api/v0/main-frontend/courses/:course_id/upload` - Uploads a media (image, audio, file) for the course from Gutenberg page edit. Put the the contents of the media in a form and add a content type header multipart/form-data. # Example Request: ```http POST /api/v0/main-frontend/pages/d86cf910-4d26-40e9-8c9c-1cc35294fdbb/upload HTTP/1.1 Content-Type: multipart/form-data BINARY_DATA ```
  • get/api/v0/main-frontend/courses/{course_id}/user-settings/{user_id} GET `/api/v0/main-frontend/courses/:course_id/user-settings/:user_id` - Get current course settings for a specific user.
  • get/api/v0/main-frontend/courses/{course_id}/weekday-hour-submission-counts GET `/api/v0/main-frontend/courses/:id/weekday-hour-submission-counts` - Returns submission counts grouped by weekday and hour.
credit-registration-admin34
credit-registrations16
email_templates3
email-verification4
exams11
exercise_repositories5
exercise_services5
exercise_slide_submissions3
exercises11
feedback1
files2
global-stats7
glossary4
oauth17
org1
organizations16
page_audio3
pages8
playground-examples4
playground-views2
proposed_edits3
regradings4
roles4
shared_submissions4
status11
teacher_grading_decisions1
time1
user-details10
users18