Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/RigbySawGame/ieeEdu_Wen/llms.txt

Use this file to discover all available pages before exploring further.

IEE Edu courses are the core content unit of the platform. The admin panel provides a full course editor that covers the entire lifecycle — from creating a draft and structuring the curriculum with modules, lessons, and materials, to attaching a quiz, generating certificates, and finally publishing the course to students. Courses can also be duplicated as templates to accelerate catalog growth.

Course Lifecycle

Every course begins as a BORRADOR (draft) when first created. Admins explicitly publish or hide courses using dedicated endpoints — the status field cannot be changed directly through the update form.
BORRADOR  →  PUBLICADO  →  BORRADOR (hidden)
StatusDescription
BORRADORDraft — not visible to students
PUBLICADOLive — visible and enrollable by students
Use PATCH /admin/courses/{course}/publish to make a course live and PATCH /admin/courses/{course}/hide to pull it back to draft without deleting any content.

Course Fields Reference

All fields below come from the Course model’s $fillable array:
FieldTypeNotes
titlestringCourse title
slugstringAuto-generated URL-safe identifier
descriptionstringFull course description
pricefloatBase price in PEN
sale_pricefloatComputed from price and discount on the backend
discountfloatDiscount percentage; triggers sale_price calculation
duration_weeksintegerEstimated course duration in weeks
class_hoursintegerTotal contact/class hours
is_featuredbooleanPin to featured sections on the homepage
certificate_enabledbooleanWhether completing the course generates a certificate
typeenumgrabado (recorded), en_vivo (live), or evento/masterclass
statusenumBORRADOR or PUBLICADO — managed via publish/hide endpoints
category_idintegerForeign key to categories table
instructor_idintegerOptional foreign key to instructors table
docente_idintegerOptional foreign key to users (teacher) table
instructor_namestringInstructor display name
instructor_titlestringInstructor professional title
instructor_biostringShort instructor biography
instructor_imagestringPath to instructor photo
imagestringCourse cover image path
start_datedateSession start date (live/event courses)
start_timetimeSession start time
objectivestextLearning objectives
requirementstextPrerequisites
whatsapp_linkstringDirect WhatsApp enrollment link
When type is set to masterclass in the request body, the backend automatically maps it to evento to match the database enum. Treat masterclass and evento as equivalent. Masterclass/evento courses retain permanent student access even after a subscription expires.

Course CRUD

1

List courses

GET /admin/courses
Supports status, type, search, and per_page query parameters. Returns paginated courses alongside all categories.
2

Create a course

POST /admin/courses
New courses are always created with status = BORRADOR. Upload a cover image with the image_file field (multipart) and an instructor photo with instructor_image_file.
3

Edit a course

GET /admin/courses/{course}/edit
Returns the full Inertia CourseEditor view with all related modules, lessons, quizzes, certificates, and enrollments loaded.
4

Update a course

PATCH /admin/courses/{course}
Accepts the same fields as the store request. The status field is stripped — use the publish/hide endpoints instead.
5

Delete a course

DELETE /admin/courses/{course}
Permanently deletes the course record. Ensure no active enrollments exist before deleting.

Publish and Hide

# Make a course live
PATCH /admin/courses/{course}/publish

# Return a course to draft
PATCH /admin/courses/{course}/hide

Duplicate a Course

Create an exact copy of a course — including its modules, lessons, materials, and quiz — as a new BORRADOR. The new course receives a unique slug and a fresh ID.
POST /admin/courses/{course}/duplicate
Use duplication to build course templates. Create a well-structured “skeleton” course with your standard module layout and lesson placeholders, then duplicate it each time you launch a new program. This eliminates repetitive setup and keeps your curriculum structure consistent.

Modules

Modules group lessons into thematic sections within a course. They support drag-and-drop reordering via the reorder endpoint.
MethodEndpointAction
GET/admin/courses/{course}/modulesList all modules
POST/admin/courses/{course}/modulesCreate a module (title, optional description)
PUT/admin/modules/{module}Update a module
DELETE/admin/modules/{module}Delete a module
PATCH/admin/courses/{course}/modules/reorderReorder — body: { "order": [id1, id2, ...] }

Lessons

Lessons belong directly to a course and can be nested inside a module. Each lesson holds the video/content and is the anchor point for attached materials.
MethodEndpointAction
GET/admin/courses/{course}/lessonsList all lessons
POST/admin/courses/{course}/lessonsCreate a lesson
PUT/admin/lessons/{lesson}Update a lesson
DELETE/admin/lessons/{lesson}Delete a lesson
PATCH/admin/courses/{course}/lessons/reorderReorder — body: { "order": [id1, id2, ...] }

Materials

Downloadable resources attached to individual lessons. Materials can be uploaded files (PDF, Excel, ZIP) or external URLs.
MethodEndpointAction
GET/admin/lessons/{lesson}/materialsList materials for a lesson
POST/admin/lessons/{lesson}/materialsUpload or link a material. Use file (multipart) for uploaded files or external_url for link-type materials.
PUT/admin/materials/{material}Update material metadata
DELETE/admin/materials/{material}Delete a material
The kind field is inferred from the file extension: pdf, excel, or other. For external links, set kind = url.

Quizzes

Each course can have one or more quizzes. Questions and their answers are managed through the questions endpoints.
MethodEndpointAction
GET/admin/courses/{course}/quizzesList quizzes with questions and answers
POST/admin/courses/{course}/quizzesCreate a quiz
PUT/admin/quizzes/{quiz}Update a quiz
DELETE/admin/quizzes/{quiz}Delete a quiz
POST/admin/questionsAdd a question to a quiz
PUT/admin/questions/{question}Update a question
DELETE/admin/questions/{question}Delete a question

Certificate Template

Each course with certificate_enabled = true can have a custom certificate template. The template is edited and saved per-course.
# Load the certificate template editor
GET  /admin/courses/{course}/certificate-template

# Save / update the template
POST /admin/courses/{course}/certificate-template

Categories

Categories are shared across all courses and managed independently.
MethodEndpointAction
GET/admin/categoriesList all categories
POST/admin/categoriesCreate a category
PATCH/admin/categories/{category}Update a category
DELETE/admin/categories/{category}Delete a category

Build docs developers (and LLMs) love