Academy
Manage courses, enrollments, and training programs. Create learning content, enroll employees or external users, and track completion progress.
GET/v1/academy/courses
List courses
Retrieve a paginated list of all courses.
Optional parameters
- Name
status- Type
- string
- Description
Filter by status:
draft,published,archived.
- Name
category- Type
- string
- Description
Filter by course category.
- Name
limit- Type
- integer
- Description
Maximum number of records to return.
Request
GET
/v1/academy/coursescurl https://api.umbraerp.com/v1/academy/courses \
-H "Authorization: Bearer <your_access_token>"
Response
{
"result": "success",
"courses": [
{
"id": "course_001",
"title": "Onboarding Essentials",
"description": "[PLACEHOLDER: course description]",
"status": "published",
"category": "Onboarding",
"duration_hours": 4,
"enrollment_count": 25,
"created_at": "2026-01-10T08:00:00Z"
}
],
"total_count": 1
}
POST/v1/academy/courses
Create course
Create a new course in the academy.
Required attributes
- Name
title- Type
- string
- Description
Course title.
- Name
description- Type
- string
- Description
Course description.
Optional attributes
- Name
category- Type
- string
- Description
Course category.
- Name
duration_hours- Type
- number
- Description
Estimated duration in hours.
- Name
status- Type
- string
- Description
Initial status:
draftorpublished(default:draft).
Request
POST
/v1/academy/coursescurl -X POST https://api.umbraerp.com/v1/academy/courses \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"title": "Onboarding Essentials",
"description": "Introduction to company policies and tools",
"category": "Onboarding",
"duration_hours": 4,
"status": "published"
}'
Response
{
"result": "success",
"course_id": "course_001",
"message": "Course created successfully."
}
GET/v1/academy/courses/:id
Get course
Retrieve details of a specific course, including modules and enrollment stats.
Request
GET
/v1/academy/courses/course_001curl https://api.umbraerp.com/v1/academy/courses/course_001 \
-H "Authorization: Bearer <your_access_token>"
POST/v1/academy/courses/:id/enroll
Enroll user
Enroll a user in a course.
Required attributes
- Name
user_id- Type
- string
- Description
The user ID to enroll.
Request
POST
/v1/academy/courses/course_001/enrollcurl -X POST https://api.umbraerp.com/v1/academy/courses/course_001/enroll \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"user_id": "emp_001"
}'
Response
{
"result": "success",
"enrollment_id": "enr_001",
"message": "User enrolled successfully."
}
GET/v1/academy/enrollments
List enrollments
Retrieve all enrollments, optionally filtered by course or user.
Optional parameters
- Name
course_id- Type
- string
- Description
Filter by course ID.
- Name
user_id- Type
- string
- Description
Filter by user ID.
- Name
status- Type
- string
- Description
Filter by status:
enrolled,in_progress,completed.
Request
GET
/v1/academy/enrollmentscurl https://api.umbraerp.com/v1/academy/enrollments \
-H "Authorization: Bearer <your_access_token>"
Response
{
"result": "success",
"enrollments": [
{
"id": "enr_001",
"course_id": "course_001",
"user_id": "emp_001",
"status": "in_progress",
"progress": 60,
"enrolled_at": "2026-02-01T09:00:00Z"
}
]
}

