
Product
Announcing Bun and vlt Support in Socket
Bringing supply chain security to the next generation of JavaScript package managers
@memberjunction/actions-bizapps-lms
Advanced tools
Learning Management System (LMS) integration actions for MemberJunction. This package provides a standardized way to interact with various LMS platforms through MemberJunction's action framework.
This package implements actions for common LMS operations across multiple learning platforms:
BaseLMSAction: Abstract base class providing common functionality for all LMS actions
Provider-Specific Base Classes (e.g., LearnWorldsBaseAction):
The package uses MemberJunction's CompanyIntegration entity to store credentials:
Retrieves users (students, instructors, admins) from LearnWorlds with comprehensive filtering.
Parameters:
CompanyID (required): MemberJunction Company IDSearchText: Search by name, email, or usernameRole: Filter by user role (student, instructor, admin)Status: Filter by status (active, inactive, suspended)Tags: Filter by user tags (comma-separated)CreatedAfter/CreatedBefore: Date range filtersSortBy: Sort field (created, name, email, last_login)SortOrder: asc or descIncludeCourseStats: Include enrollment statisticsMaxResults: Limit results (default: 100)Output:
Users: Array of user objects with profile and statisticsTotalCount: Total number of users foundSummary: Statistical summary including role distributionRetrieves comprehensive details about a specific user including enrollments and achievements.
Parameters:
CompanyID (required): MemberJunction Company IDUserID (required): LearnWorlds user IDIncludeEnrollments: Include course enrollments (default: true)IncludeStats: Include additional statistics (default: true)Output:
UserDetails: Complete user profile with learning dataSummary: User engagement and achievement summaryRetrieves detailed learning progress for a user across all courses or specific course.
Parameters:
CompanyID (required): MemberJunction Company IDUserID (required): LearnWorlds user IDCourseID: Optional specific course IDIncludeUnitDetails: Include module/unit breakdownIncludeLessonDetails: Include individual lesson progressOutput:
UserProgress: Comprehensive progress dataSummary: Progress overview with key metricsRetrieves the course catalog with advanced filtering and search capabilities.
Parameters:
CompanyID (required): MemberJunction Company IDSearchText: Search in title and descriptionStatus: Filter by status (published, draft, coming_soon)CategoryID: Filter by categoryLevel: Filter by difficulty (beginner, intermediate, advanced)Language: Filter by course languageOnlyFree: Show only free coursesMinPrice/MaxPrice: Price range filterTags: Filter by course tagsInstructorID: Filter by instructorCreatedAfter/CreatedBefore: Date range filtersSortBy: Sort field (created, title, price, enrollments)SortOrder: asc or descIncludeEnrollmentStats: Include enrollment dataMaxResults: Limit results (default: 100)Output:
Courses: Array of course objects with detailsTotalCount: Total number of courses foundSummary: Catalog statistics including pricing and enrollment dataINSERT INTO Integration (Name, Description, NavigationBaseURL, ClassName)
VALUES ('LearnWorlds', 'LearnWorlds LMS Integration',
'https://api.learnworlds.com', 'LearnWorldsIntegration');
INSERT INTO CompanyIntegration (CompanyID, IntegrationID, ExternalSystemID, IsActive)
VALUES (@CompanyID, @LearnWorldsIntegrationID, @SchoolDomain, 1);
-- ExternalSystemID: Your LearnWorlds school domain (e.g., 'myschool.learnworlds.com')
# LearnWorlds API credentials
BIZAPPS_LEARNWORLDS_[COMPANY_ID]_API_KEY=your_api_key
BIZAPPS_LEARNWORLDS_[COMPANY_ID]_SCHOOL_DOMAIN=myschool.learnworlds.com
# Example for company ID "12345"
BIZAPPS_LEARNWORLDS_12345_API_KEY=lw_api_xxxxxxxxxxxxx
BIZAPPS_LEARNWORLDS_12345_SCHOOL_DOMAIN=myschool.learnworlds.com
import { GetLearnWorldsUsersAction } from '@memberjunction/actions-bizapps-lms';
const action = new GetLearnWorldsUsersAction();
const result = await action.RunAction({
Params: [
{ Name: 'CompanyID', Value: 'company-123' },
{ Name: 'Role', Value: 'student' },
{ Name: 'Status', Value: 'active' },
{ Name: 'IncludeCourseStats', Value: true },
{ Name: 'SortBy', Value: 'last_login' },
{ Name: 'SortOrder', Value: 'desc' }
],
ContextUser: currentUser
});
if (result.Success) {
const users = result.Params.find(p => p.Name === 'Users')?.Value;
const summary = result.Params.find(p => p.Name === 'Summary')?.Value;
console.log(`Found ${users.length} active students`);
console.log(`Average courses per student: ${summary.averageCoursesPerUser}`);
}
import { GetLearnWorldsUserProgressAction } from '@memberjunction/actions-bizapps-lms';
const action = new GetLearnWorldsUserProgressAction();
const result = await action.RunAction({
Params: [
{ Name: 'CompanyID', Value: 'company-123' },
{ Name: 'UserID', Value: 'user-456' },
{ Name: 'IncludeUnitDetails', Value: true }
],
ContextUser: currentUser
});
if (result.Success) {
const progress = result.Params.find(p => p.Name === 'UserProgress')?.Value;
console.log(`User has completed ${progress.coursesCompleted} of ${progress.totalCourses} courses`);
console.log(`Overall progress: ${progress.overallProgressPercentage}%`);
}
import { GetLearnWorldsCoursesAction } from '@memberjunction/actions-bizapps-lms';
const action = new GetLearnWorldsCoursesAction();
const result = await action.RunAction({
Params: [
{ Name: 'CompanyID', Value: 'company-123' },
{ Name: 'SearchText', Value: 'JavaScript' },
{ Name: 'Status', Value: 'published' },
{ Name: 'Level', Value: 'beginner' },
{ Name: 'MaxPrice', Value: 100 }
],
ContextUser: currentUser
});
if (result.Success) {
const courses = result.Params.find(p => p.Name === 'Courses')?.Value;
courses.forEach(course => {
console.log(`${course.title} - $${course.price} (${course.totalEnrollments} students)`);
});
}
interface LMSUser {
id: string;
email: string;
username: string;
firstName?: string;
lastName?: string;
status: 'active' | 'inactive' | 'suspended';
role: string;
createdAt: Date;
lastLoginAt?: Date;
totalCourses?: number;
completedCourses?: number;
totalTimeSpent?: number;
}
interface CourseProgress {
courseId: string;
courseTitle: string;
enrolledAt: Date;
progressPercentage: number;
completedUnits: number;
totalUnits: number;
totalTimeSpent: number;
status: 'not_started' | 'in_progress' | 'completed' | 'expired';
certificateEarned: boolean;
}
interface LMSCourse {
id: string;
title: string;
description?: string;
status: 'published' | 'draft' | 'coming_soon';
price?: number;
currency?: string;
level?: 'beginner' | 'intermediate' | 'advanced' | 'all';
duration?: number;
totalEnrollments: number;
averageRating?: number;
instructorName?: string;
}
src/providers/[provider-name]/BaseLMSAction with provider-specific base class# Run tests
npm test
# Build package
npm run build
# Watch mode
npm run watch
ISC
FAQs
LMS system integration actions for MemberJunction
We found that @memberjunction/actions-bizapps-lms demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Bringing supply chain security to the next generation of JavaScript package managers

Product
A safer, faster way to eliminate vulnerabilities without updating dependencies

Product
Reachability analysis for Ruby is now in beta, helping teams identify which vulnerabilities are truly exploitable in their applications.