Practical skills. Meaningful progress.Make your next chapter a learning chapter.

EduNova API v1

Laravel Sanctum authentication · Role and course permissions · JSON responses

Download OpenAPI JSON

Authentication

Send a POST request to /api/v1/auth/login with email, password, and device_name. Use the returned token in Authorization: Bearer TOKEN. All request bodies use JSON. Validation failures return status 422 with an errors object.

For enrollment, payments, exam submissions, and offline sync, send an Idempotency-Key header containing a unique UUID. A retry with the same key and request returns the saved response. A changed request with that key returns 409.

This is a live route reference. Request fields, examples, and integration notes are included in the project documentation.

SLMethodEndpointAction
1GET/api/v1/healthapi.health
2GET/api/v1/docsapi.docs
3GET/api/v1/openapi.jsonapi.openapi
4GET/api/v1/categoriesapi.categories
5GET/api/v1/coursesapi.courses.index
6GET/api/v1/courses/{course}api.courses.show
7GET/api/v1/courses/{course}/sectionsapi.curriculum
8GET/api/v1/mobile/configapi.config
9GET/api/v1/mobile/minimum-versionapi.version
10POST/api/v1/auth/loginapi.login
11POST/api/v1/auth/registerapi.register
12POST/api/v1/auth/password/emailapi.password.email
13POST/api/v1/auth/password/resetapi.password.reset
14POST/api/v1/admissionsapi.admissions
15POST/api/v1/contactapi.contact
16POST/api/v1/certificates/verifyapi.certificates.verify
17POST/api/v1/webhooks/paymentsapi.webhooks.payments
18POST/api/v1/auth/logoutapi.logout
19GET/api/v1/profileapi.profile
20PUT/api/v1/profileapi.profile.update
21DELETE/api/v1/accountapi.deactivate
22POST/api/v1/privacy/requestsapi.privacy
23GET/api/v1/auth/sessionsapi.sessions
24GET/api/v1/notificationsapi.notifications
25PUT/api/v1/notification-preferencesapi.preferences
26POST/api/v1/notifications/{notification}/readapi.notification.read
27POST/api/v1/devicesapi.devices.store
28DELETE/api/v1/devices/{device}/sessionapi.devices.revoke
29POST/api/v1/devices/{device}/syncapi.sync
30POST/api/v1/enrollmentsapi.enrollments.store
31POST/api/v1/courses/{course}/enrollmentsapi.enroll
32GET/api/v1/courses/{course}/classesapi.classes
33GET/api/v1/courses/{course}/completionapi.completion
34GET/api/v1/lessons/{lesson}api.lesson.show
35PUT/api/v1/lessons/{lesson}/progressapi.progress
36POST/api/v1/lessons/{lesson}/notesapi.notes
37POST/api/v1/lessons/{lesson}/bookmarksapi.bookmarks
38GET/api/v1/resources/{resource}/signed-downloadapi.resource.signed-download
39GET/api/v1/resources/{resource}/downloadapi.resource.download
40GET/api/v1/resources/{resource}/signed-urlapi.resource.signed
41GET/api/v1/downloads/manifestapi.download.manifest
42POST/api/v1/assignments/{assignment}/submissionsapi.assignment.submit
43PUT/api/v1/submissions/{submission}/gradeapi.submission.grade
44GET/api/v1/submissions/files/{file}api.submission.file
45GET/api/v1/assessments/{assessment}/eligibilityapi.eligibility
46POST/api/v1/assessments/{assessment}/attemptsapi.attempt.start
47GET/api/v1/attempts/{attempt}api.attempt.show
48PUT/api/v1/attempts/{attempt}/answersapi.attempt.answer
49POST/api/v1/attempts/{attempt}/submitapi.attempt.submit
50GET/api/v1/attempts/{attempt}/resultsapi.attempt.results
51PUT/api/v1/attempts/{attempt}/gradeapi.attempt.grade
52POST/api/v1/attempts/{attempt}/publishapi.attempt.publish
53GET/api/v1/invoices/{invoice}api.invoice
54POST/api/v1/invoices/{invoice}/paymentsapi.payment.record
55POST/api/v1/payments/{payment}/refundsapi.refund
56POST/api/v1/refunds/{refund}/approveapi.refund.approve
57POST/api/v1/enrollments/{enrollment}/certificateapi.certificate.issue
58GET/api/v1/classes/{session}/recordingapi.class.recording
59GET/api/v1/availabilityapi.availability.index
60POST/api/v1/availabilityapi.availability.store
61DELETE/api/v1/availability/{availability}api.availability.destroy
62POST/api/v1/classes/{session}/attendanceapi.attendance
63POST/api/v1/classes/{session}/qrapi.attendance.qr
64POST/api/v1/classes/{session}/check-inapi.check-in
65POST/api/v1/classes/{session}/joinapi.class.join
66POST/api/v1/messagesapi.messages.send
67POST/api/v1/discussions/{discussion}/repliesapi.discussion.reply
68POST/api/v1/support/ticketsapi.ticket.store
69POST/api/v1/support/tickets/{ticket}/repliesapi.ticket.reply
70GET/api/v1/admin/metricsapi.metrics
71GET/api/v1/reports/{kind}/{format}api.export
72GET/api/v1/manage/{resource}api.resources.index
73POST/api/v1/manage/{resource}api.resources.store
74GET/api/v1/manage/{resource}/{record}api.resources.show
75PUT/api/v1/manage/{resource}/{record}api.resources.update
76PATCH/api/v1/manage/{resource}/{record}api.resources.update
77DELETE/api/v1/manage/{resource}/{record}api.resources.destroy