Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.rmz.gg/llms.txt

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

The sdk.courses namespace provides access to digital courses purchased by the customer. All methods require authentication (Bearer token set via sdk.setAuthToken()).

Methods

courses.getAll(params?)

Get a paginated list of courses available to the customer.
const { data: courses, pagination } = await sdk.courses.getAll({
  page: 1,
  per_page: 10
});
Parameters:
FieldTypeDefaultDescription
pagenumber1Page number
per_pagenumber10Courses per page
Returns: { data: Course[]; pagination?: Pagination }

courses.getById(id)

Get details for a specific course, including its modules.
const course = await sdk.courses.getById(15);
console.log(course.title);
console.log(course.modules); // CourseModule[]
Returns: Course

courses.getProgress(courseId)

Get the customer’s progress for a specific course.
const progress = await sdk.courses.getProgress(15);
console.log(`${progress.progress_percentage}% complete`);
console.log(`${progress.completed_modules} of ${progress.total_modules} modules`);
Returns: CourseProgress

courses.getModule(courseId, moduleId)

Get the content of a specific module within a course.
const module = await sdk.courses.getModule(15, 3);
console.log(module.title);
console.log(module.content);
Returns: CourseModule

courses.completeModule(courseId, moduleId)

Mark a module as completed.
const result = await sdk.courses.completeModule(15, 3);
if (result.success) {
  console.log('Module completed!');
}
Returns: { success: boolean }

Legacy Customer Endpoints

For backward compatibility, the SDK also provides these legacy methods that use the /customer/courses endpoints:
// Get all customer courses
const courses = await sdk.courses.getCustomerCourses();

// Get a specific customer course
const course = await sdk.courses.getCustomerCourse(15);

// Get a module via the customer endpoint
const module = await sdk.courses.getCustomerCourseModule(15, 3);

Types

interface Course {
  id: number;
  title: string;
  description: string;
  modules: CourseModule[];
  progress?: CourseProgress;
}

interface CourseModule {
  id: number;
  title: string;
  content: string;
  order: number;
  is_completed?: boolean;
}

interface CourseProgress {
  course_id: number;
  completed_modules: number;
  total_modules: number;
  progress_percentage: number;
}

Example: Course Player

async function loadCoursePlayer(courseId: number) {
  const [course, progress] = await Promise.all([
    sdk.courses.getById(courseId),
    sdk.courses.getProgress(courseId),
  ]);

  // Find the next uncompleted module
  const nextModule = course.modules.find(m => !m.is_completed);

  return { course, progress, nextModule };
}

async function completeAndAdvance(courseId: number, moduleId: number) {
  await sdk.courses.completeModule(courseId, moduleId);
  const progress = await sdk.courses.getProgress(courseId);
  return progress;
}