Validate Accredible API Key
Validates the API Key provided with the request
Request Body schema: application/jsonrequired
key required | string The API key that needs to be validated |
Responses
Request samples
- Payload
{- "key": "sunt"
}
Response samples
- 200
{- "message": "Success",
- "status": "success"
}
Accredible Groups Lookup
Retrieves all the accredible groups. Helps while showing group names in dropdown elements.
Responses
Response samples
- 200
{- "isEnabled": true,
- "data": [
- {
- "id": 353767,
- "name": "group_aom_course"
}, - {
- "id": 353282,
- "name": "intro-ce"
}, - {
- "id": 352594,
- "name": "aom"
}
]
}
The Announcements module allows you to manage announcement-related operations within the system.
Create an Announcement
Updates an existing announcement with new content, expiry, and sending rules. Also updates the recipient list depending on the sending rules.
path Parameters
id required | integer Example: 45 The ID of the announcement to update. |
Request Body schema: application/jsonrequired
id required | integer The ID of the announcement (used for permission check). |
expiry | string nullable The expiration date of the announcement. |
heading required | string The title or heading of the announcement. |
content required | string The message content of the announcement. |
sending_rules required | string Must be one of: all, specific_users, specific_course_users, specific_class_users, specific_portals. |
course_ids | Array of strings required_if:sending_rules,specific_course_users The list of course IDs if targeting specific course users. |
portal_ids | Array of strings required_if:sending_rules,specific_portals The list of portal IDs if targeting specific portals. |
user_ids | Array of strings required_if:sending_rules,specific_users The list of user IDs if targeting specific users. |
portalId | integer optional The portal ID for ownership context (nullable if -1). |
Responses
Request samples
- Payload
{- "id": 45,
- "expiry": "2025-12-31 23:59:59",
- "heading": "System Maintenance",
- "content": "The system will be down for maintenance tonight.",
- "sending_rules": "specific_users",
- "course_ids": [
- 101,
- 102
], - "portal_ids": [
- 201,
- 202
], - "user_ids": [
- 1,
- 2,
- 3
], - "portalId": 5
}
Response samples
- 201
{- "id": 45,
- "message": "Announcement Updated Successfully"
}
Announcement Tabular List
Returns all the announcements in a tabular list format in paginated mode. You can apply filter using search_param via heading(announcement heading).
query Parameters
portalId | integer Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"heading":""} For searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "heading": "Test Announcement",
- "author": "John Doe",
- "created_at": "2020-08-26 09:08",
- "content": "This is a test announcement",
- "rules": "all"
}
]
}
Update an announcement.
Request Body schema: application/jsonrequired
id required | integer ID of the announcement to be updated. |
expiry | string optional Date of expiration of announcement in Y-m-d format. |
heading required | string The title of the announcement. |
content required | string The message content of the announcement. |
sending_rules required | string Must be one of: all, specific_users, specific_course_users, specific_class_users, specific_portals. |
course_ids | Array of strings required_if:sending_rules,specific_course_users The list of course IDs if targeting specific course users. |
portal_ids | Array of strings required_if:sending_rules,specific_portals The list of portal IDs if targeting specific portals. |
user_ids | Array of strings required_if:sending_rules,specific_users The list of user IDs if targeting specific users. |
portalId | integer optional The portal ID for ownership context (nullable if -1). |
Responses
Request samples
- Payload
{- "id": 12,
- "expiry": "2020-08-05",
- "heading": "New Announcement",
- "content": "The system will be down for maintenance tonight.",
- "sending_rules": "specific_users",
- "course_ids": [
- 101,
- 102
], - "portal_ids": [
- 201,
- 202
], - "user_ids": [
- 1,
- 2,
- 3
], - "portalId": 5
}
Response samples
- 201
{- "id": 45,
- "message": "Announcement Updated Successfully"
}
Retrieve Announcement
Retrieves the details of the specified announcement. Helps in fetching announcement using its ID. (See Parameters)
Responses
Response samples
- 200
{- "id": 1,
- "heading": "New Announcement",
- "content": "This is for test purpose",
- "sending_rules": "all",
- "expiry": "2020-08-05"
}
Delete Announcement
To delete an announcement, you need to use this request. Returns number of announcement deleted. (See Response)
Request Body schema: application/jsonrequired
delete_ids required | Array of strings All announcement IDs which needs to be deleted. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "3 announcement(s) deleted "
}
Learner Announcement List
Returns all the announcement in list format in paginated mode. You can apply filter using search_param via heading of the announcements. These annoucement list will appear in learner panel(dashboard) not admin panel.
query Parameters
portalId required | integer Example: portalId=1 Portal ID. |
page_size required | integer Example: page_size=5 Records per page. |
page_number required | integer Example: page_number=1 Page number. |
order_by required | object Example: colName=created_at&direction=desc Order_by object. |
search_param required | object Example: heading= Search param object. |
viewType required | string Example: viewType=self View type. |
Responses
Response samples
- 200
{- "recordsTotal": 100,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "heading": "Announcement 1",
- "author": "John Doe",
- "content": "<p>This is an example of announcement content</p>",
- "created_at": "21st Jan, 2020 12:00 PM"
}, - {
- "id": 2,
- "heading": "Announcement 2",
- "author": "John Doe",
- "content": "<p>This is an example of announcement content</p>",
- "created_at": "21st Jan, 2020 12:00 PM"
}
]
}
An Assignment Module is a lesson module used as course content. Helps to perform CRUD operation to and for Assignments modules.
Assignment Modules Tabular List
Returns all the assignment modules in a tabular list format in paginated mode. You can apply filter using search_param via associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"associatedCourse":"","moduleName":""} For searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "Assignment-1",
- "slug": "assignment-1",
- "type": "assignment",
- "submissionType": "file",
- "display_type": "File",
- "totalPoints": 20,
- "icon": "<i class=\"el-icon-document\"></i>",
- "author": "Aom Staff",
- "created_at": "Aug 03, 2020 09:56 AM",
- "showMappedCourses": false,
- "course_count": 1
}
]
}
Create Assignment Module
Handles the creation of an assignment module as part of course content. Validates the request and saves a new module with the given parameters.
Request Body schema: application/jsonrequired
name required | string Name of the assignment module. |
content required | string Content for the assignment module. |
totalPoints | integer Points awarded for completing the assignment. |
submission_type required | string Type of submission (text or file). |
allowed_filetypes | string Required if submission type is file. |
isLocked | boolean Indicates if the module is locked. |
estimatedCompletion | nullable Estimated time to complete the module. |
estimationCompletedUnit | nullable Unit of time estimation (e.g., minutes, hours). |
Responses
Request samples
- Payload
{- "name": "Essay on LMS",
- "content": "An introduction to LMS.",
- "totalPoints": 30,
- "submission_type": "file",
- "allowed_filetypes": "[\"pdf\", \"docx\"]",
- "isLocked": true,
- "estimatedCompletion": "90",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "id": 5,
- "message": "Module saved successfully"
}
Update Assignment Module
Updates the details of a specified assignment module. (See parameters) Assignment modules can be used in the course as course content.
path Parameters
id required | string Example: 6 ID of the assignment module. |
Request Body schema: application/jsonrequired
name required | string Name of the assignment module. |
content | string Content for the assignment modules that students will see. |
totalPoints | integer Total points a student can get by completing this assignment. |
submission_type required | string Type for the assignment module(file based or text based). Submission type options: text or file. |
allowed_filetypes required | Array of strings Allowed file types that will be submitted by the students when the submission_type is file. |
isLocked required | boolean If true, the assignment is locked and students cannot submit it. |
estimatedCompletion | nullable Estimated time to complete the module. |
estimationCompletedUnit | nullable Unit of time estimation (e.g., minutes, hours). |
Responses
Request samples
- Payload
{- "name": "Getting Started",
- "content": "<p>This is the updated short content here</p>",
- "totalPoints": 20,
- "submission_type": "file",
- "allowed_filetypes": [
- "pdf",
- "docx"
], - "isLocked": true,
- "estimatedCompletion": "90",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "message": "Module updated successfully"
}
Retrieve Assignment Module
Retrieves the details of the specified assignment module using its ID. This includes the module's ID, name, slug, content, total points, submission type, allowed file types, estimated completion, and associated courses. If the module's details exist, it fetches additional information such as total points, submission type, lock status, and allowed file types.
path Parameters
id required | string Example: 6 ID of the assignment module. |
Request Body schema: application/jsonoptional
id | required The ID of the assignment module to fetch details for. |
Responses
Request samples
- Payload
{- "id": "qui"
}
Retrieve Detailed Assignment Module Info
Retrieves detailed information of an assignment module including course details, module details, and previous submissions. This function also checks if the module can be launched based on the current registration and updates the module's status if accessed.
query Parameters
portalId | integer Example: portalId=1 ID of the portal for which the assignment is being submitted. |
registrationId required | string Example: registrationId=1 ID of the course registration to which the module is attached. |
moduleId required | string Example: moduleId=4 ID of the assignment module. |
Responses
Response samples
- 200
{- "name": "Assignment 1",
- "slug": "assignment-1",
- "content": "<p>Example content</p>",
- "courseName": "Course 1",
- "min_time_spent": 120,
- "totalPoints": 100,
- "submissionType": "file",
- "maxUploadSize": 50,
- "allowedFileTypes": ".pdf,.docx",
- "otherModules": [
- {
- "module_id": 1,
- "name": "test",
- "slug": "test",
- "type": "text",
- "icon": "<i class=\"el-icon-tickets\"></i>",
- "is_locked": false,
- "lock_reason": "",
- "is_dripped": false,
- "drip_message": "",
- "is_current": false,
- "status_row_id": 1,
- "status": "Completed",
- "started_on": "2020-08-03T10:02:33.000000Z",
- "completed_on": "2020-08-03T10:02:41.000000Z",
- "last_accessed_on": "8 hours ago",
- "total_time_spent": {
- "hours": 0,
- "minutes": 0,
- "seconds": 6,
- "totalSeconds": 6
}, - "completion_percentage": 100,
- "no_of_times_accessed": 3
}, - {
- "module_id": 4,
- "name": "assign",
- "slug": "assign",
- "type": "assignment",
- "icon": "<i class=\"el-icon-edit-outline\"></i>",
- "is_locked": false,
- "lock_reason": "",
- "is_dripped": false,
- "drip_message": "",
- "is_current": true,
- "status_row_id": -1,
- "status": "Not Started",
- "started_on": "",
- "completed_on": "",
- "last_accessed_on": "Never",
- "total_time_spent": "",
- "points_awarded": "",
- "completion_percentage": 0,
- "no_of_times_accessed": 0
}, - {
- "module_id": 7,
- "name": "First-quiz",
- "slug": "first-quiz",
- "type": "quiz",
- "icon": "<i class=\"el-icon-discover\"></i>",
- "is_locked": false,
- "lock_reason": "",
- "is_dripped": false,
- "drip_message": "",
- "is_current": false,
- "status_row_id": -1,
- "status": "Not Started",
- "started_on": "",
- "completed_on": "",
- "last_accessed_on": "Never",
- "total_time_spent": "",
- "points_awarded": "",
- "completion_percentage": 0,
- "no_of_times_accessed": 0
}, - {
- "module_id": 9,
- "name": "My-video-lesson",
- "slug": "my-video-lesson",
- "type": "video",
- "icon": "<i class=\"el-icon-video-play\"></i>",
- "is_locked": false,
- "lock_reason": "",
- "is_dripped": false,
- "drip_message": "",
- "is_current": false,
- "status_row_id": 4,
- "status": "In Progress",
- "started_on": "2020-08-10T20:04:14.000000Z",
- "completed_on": null,
- "last_accessed_on": "6 hours ago",
- "total_time_spent": {
- "hours": 0,
- "minutes": 0,
- "seconds": 0,
- "totalSeconds": null
}, - "completion_percentage": 0,
- "no_of_times_accessed": 1
}, - {
- "module_id": 10,
- "name": "Essay on LMS",
- "slug": "essay-on-lms",
- "type": "assignment",
- "icon": "<i class=\"el-icon-edit-outline\"></i>",
- "is_locked": false,
- "lock_reason": "",
- "is_dripped": false,
- "drip_message": "",
- "is_current": false,
- "status_row_id": 5,
- "status": "Completed",
- "started_on": "2020-08-11T02:47:32.000000Z",
- "completed_on": "2020-08-11T02:47:32.000000Z",
- "last_accessed_on": "46 seconds ago",
- "total_time_spent": {
- "hours": 0,
- "minutes": 0,
- "seconds": 0,
- "totalSeconds": null
}, - "completion_percentage": 100,
- "no_of_times_accessed": 1
}
], - "launchCheck": {
- "canbeLaunched": true,
- "errTitle": "",
- "errDesc": ""
}, - "prevSlug": "previous-assignment",
- "nextSlug": "next-assignment",
- "status": "In Progress",
- "display_status": "In Progress",
- "statusRowId": 5,
- "timeSpent": 30,
- "prevSubmission": [ ],
- "timeToBeSpent": 2
}
Retrieve Assignment Submission Details
Retrieves the submission details of the assigment the student have given. Helps in grading a student. (See Response)
query Parameters
statusRowId required | string Example: statusRowId=1 ID of the Module status of the current assignment. |
Responses
Response samples
- 200
{- "courseId": 1,
- "courseName": "course 1",
- "assignmentName": "assign",
- "status": "In Progress",
- "content": "Desc",
- "totalPoints": 50,
- "userFullName": "Aom Staff",
- "submissions": [
- {
- "id": 1,
- "file_path": [
- "aom-uploads-test.s3.us-west-2.amazonaws.com/assignments/aom-sample-bulkupload_1597042007.csv"
], - "student_message": null,
- "instructor_message": null,
- "points_awarded": null,
- "evaluated_by": "",
- "submitted_on": "Aug 10, 2020 11:33 AM",
- "evaluated_on": ""
}
]
}
Submit Assignment
Submits the assignment after attempting all the aspects of the assignment.Updates the status of assignment to submitted if student is finished the assignment and submits. (See Parameters)
Request Body schema: application/jsonoptional
portalId | integer ID of the portal for which the assignment is being submitted. |
statusRowId | required ID of the Module status of the current assignment. |
submissions | required Submission data(file or text). |
studentMessage | required Student message to instructor. |
Responses
Request samples
- Payload
{- "portalId": 1,
- "statusRowId": "7",
- "submissions": "[1,2,3]",
- "studentMessage": "\"This is my assignment submission\""
}
Response samples
- 200
{- "message": "Assignment submitted successfully"
}
Upload Assignment File
Handles the upload of an assignment file by students. You can use File form to upload a file to the system.
Request Body schema: application/jsonrequired
file required | string File to be uploaded for current assignment. |
Responses
Request samples
- Payload
{- "file": "aliquam"
}
Response samples
- 200
{
}
Evaluate Assignment
Evaluates the assignment from Instructor side.Updates the status of assignment to completed if Instructor thinks student's submission is upto the marks. (See Parameters)
Request Body schema: application/jsonoptional
portalId | integer ID of the portal for which the assignment is being submitted. |
statusRowId | required ID of the Module status of the current assignment. |
evaluation | required Evaluation data by the Instructor(Completed or not). |
Responses
Request samples
- Payload
{- "portalId": 1,
- "statusRowId": "7",
- "evaluation": "{instructorMessage : 'You comments look good', pointsAwarded: '50', isAccepted : true }"
}
Response samples
- 200
{- "message": "Assignment evaluated successfully"
}
Get Audit Activities
Fetches and paginates a list of audit log activities for the selected portal and date range. Supports filtering by user, activity type, date range, and model (performedOn). Also allows sorting.
query Parameters
portalId | integer Example: portalId=5 optional Filter activities based on a specific portal and its sub-portals. |
page_size required | integer Example: page_size=10 Number of records per page. |
page_number required | integer Example: page_number=1 The current page number. |
order_by | object Example: colName=created_at&direction=desc optional Sorting details as a JSON object with |
search_param | string Example: search_param={"user_id":3,"activityName":"created","dates":["2024-12-01","2024-12-31"],"performedOn":"Course"} optional JSON-encoded object containing search filters (user_id, activityName, dates, performedOn). |
context | string Example: context=admin optional Custom context passed from frontend (not used internally). |
selectedMonth required | string Example: selectedMonth=03-2024 The selected month (in m-Y format) used to determine the date range for filtering. |
Responses
Response samples
- 200
{- "recordsTotal": 135,
- "recordsFiltered": 23,
- "records": [
- {
- "performed_by": "Jane Doe",
- "effect_on": "Course",
- "subject": "Course: Laravel Basics",
- "action": "CREATED",
- "created_at": "13 Apr 2025 02:45 PM",
- "details": {
- "attributes": {
- "name": "Laravel Basics",
- "status": "active"
}
}
}
], - "performedOnList": [
- "Course",
- "Module",
- "User"
]
}
Audit Activity Lookup
Retrieves all the activities performed by the user. This is a lookup request that helps in showing options in dropdowns elements.
Responses
Response samples
- 200
[- {
- "db_value": "login",
- "display_value": "LOGIN"
}, - {
- "db_value": "created",
- "display_value": "CREATED"
}, - {
- "db_value": "updated",
- "display_value": "UPDATED"
}, - {
- "db_value": "deleted",
- "display_value": "DELETED"
}
]
Get a tabular list of badges, with pagination and search
query Parameters
page_size | integer Example: page_size=50 Number of records to return per page. |
page_number | integer Example: page_number=1 Page number to return. |
order_by | object Example: Sort the results by the given column and direction. e.g. {colName: 'title', direction: 'asc'} |
search_param | object Example: Search for records with the given parameters. e.g. {title: 'test'} |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
]
}
Create a new badge
Request Body schema: application/jsonoptional
title | required string The title of the badge. |
points | required numeric The number of points the badge is worth. |
badgeIconUrl | required string The URL of the icon for the badge. |
defaultIconUrl | nullable string The default icon URL to use if the badgeIconUrl is not available. |
organizationId | nullable string The ID of the organization the badge belongs to. |
Responses
Request samples
- Payload
{- "title": "Gold",
- "points": "1",
- "badgeIconUrl": "/images/badges/Badge_1.png",
- "defaultIconUrl": "/images/default-badge.png",
- "organizationId": "97852067"
}
Response samples
- 200
{- "id": 3,
- "message": "Badge created successfully"
}
Update an existing badge by its ID.
path Parameters
id required | string Example: 1 ID of the badge needs to be retrieved. |
Request Body schema: application/jsonoptional
title | required string The title of the badge. |
points | nullable numeric The number of points the badge is worth. |
badgeIconUrl | required string The URL of the icon for the badge. |
defaultIconUrl | nullable string The default icon URL to use if the badgeIconUrl is not available. |
organizationId | nullable string The ID of the organization the badge belongs to. |
Responses
Request samples
- Payload
{- "title": "Gold",
- "points": "1",
- "badgeIconUrl": "/images/badges/Badge_1.png",
- "defaultIconUrl": "/images/default-badge.png",
- "organizationId": "97852067"
}
Response samples
- 200
{- "id": 1,
- "message": "Badge updated successfully"
}
Delete specified badges.
Deletes badges that are not assigned to any users and not used in gamification events. Logs an activity for each deleted badge.
Request Body schema: application/jsonrequired
delete_ids required | Array of strings An array of badge IDs to be deleted. The IDs must have permission to be deleted. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "message": "1 badge(s) deleted. 0 badge(s) not deleted as they are assigned to users. 0 badge(s) not deleted as they are used in gamification events."
}
Categories represents Course category, Product category, Question category. Helps performimg operations in all these models.
Course Category Lookup
Retrieves all categories of the courses. If courseIds is provided, it will filter the categories for those courses. If categoryIds is provided, it will filter the categories with those IDs. Returns name and id of the category.
query Parameters
array | string Example: array=[1,2] categoryIds The IDs of the categories to filter. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Category 1"
}
Question Category Lookup
Retrieves all the categories of the questions user has ever created. This request helps in showing all question categories in form elements like dropdown, etc. Returns ID and name of the question category.
Responses
Response samples
- 200
[- {
- "id": 4,
- "name": "Question-cat"
}
]
User Category Lookup
Retrieves all the categories of the users user has ever created. This request helps in showing all user categories in form elements like dropdown, etc. Returns ID and name of the user category.
query Parameters
search_term | string Example: search_term=numquam optional The name or substring of the user category name to search for that user category. example: user |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "User Category 1"
}
]
Learning Path Category Lookup
Retrieves all the categories of the learning paths user has ever created. This request helps in showing all learning path categories in form elements like dropdown, etc. Returns ID and name of the learning path category.
query Parameters
search_term | string Example: search_term=sed optional The name or substring of the learning path category name to search for that learning path category. example: learning |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Learning Path Category 1"
}
]
Course Category Tabular List
Returns all the course categories in a tabular list format in paginated mode. You can apply filter using search_param via categoryName.
query Parameters
page_size required | string Example: page_size=9 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"categoryName":""} For searching items based on category name. |
Responses
Response samples
- 200
{- "recordsTotal": 4,
- "recordsFiltered": 3,
- "records": [
- {
- "id": 3,
- "name": "superman_postman",
- "author": "Client Admin",
- "count": 0,
- "created_at": "Aug 10, 2020 12:43 PM"
}, - {
- "id": 2,
- "name": "category-new",
- "author": "Aom Staff",
- "count": 0,
- "created_at": "Aug 10, 2020 12:37 PM"
}, - {
- "id": 1,
- "name": "Category-1",
- "author": "Aom Staff",
- "count": 1,
- "created_at": "Aug 09, 2020 06:20 PM"
}
]
}
Module Category Tabular List
Returns all the module categories in a tabular list format in paginated mode. You can apply a filter using search_param via categoryName.
query Parameters
page_size required | string Example: page_size=9 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"categoryName":""} For searching items based on category name. |
Responses
Response samples
- 200
{- "recordsTotal": 4,
- "recordsFiltered": 2,
- "records": [
- {
- "id": 1,
- "name": "module-category-1",
- "author": "Aom Staff",
- "count": 3,
- "created_at": "Aug 10, 2020 12:43 PM"
}, - {
- "id": 2,
- "name": "module-category-2",
- "author": "Client Admin",
- "count": 1,
- "created_at": "Aug 09, 2020 06:20 PM"
}
]
}
Product Category Tabular List
Returns all the product categories in a tabular list format in paginated mode. You can apply a filter using search_param via categoryName.
query Parameters
page_size required | string Example: page_size=9 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"categoryName":""} For searching items based on category name. |
Responses
Response samples
- 200
{- "recordsTotal": 2,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 2,
- "name": "product memberships",
- "author": "Aom Staff",
- "count": 1,
- "created_at": "May 10, 2022 03:39 AM"
}
]
}
Question Category Tabular List
Returns all the question categories in a tabular list format in paginated mode. You can apply filter using search_param via categoryName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"categoryName":""} For searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 3,
- "recordsFiltered": 3,
- "records": [
- {
- "id": 1,
- "name": "Question Category-1",
- "author": "Aom Staff",
- "count": 4,
- "created_at": "Aug 10, 2020 12:43 PM"
}, - {
- "id": 2,
- "name": "Question Category-2",
- "author": "Client Admin",
- "count": 2,
- "created_at": "Aug 09, 2020 06:20 PM"
}, - {
- "id": 3,
- "name": "Question Category-3",
- "author": "Aom Staff",
- "count": 1,
- "created_at": "Aug 10, 2020 06:34 PM"
}
]
}
Create Category
Creates a new category using parameters mentioned. (See parameters) Creates the course/question/product category details using category name and category type.
Request Body schema: application/jsonrequired
category_name required | string Name of the category. |
categoryType required | string Type of the category to be created. |
Responses
Request samples
- Payload
{- "category_name": "category-new",
- "categoryType": "course"
}
Response samples
- 200
{- "message": "Category Created Successfully"
}
Update Category
Updates a category using parameters mentioned. (See parameters) Updates the course/question/product category details using category name and category type.
path Parameters
id required | string Example: 3 ID of the category. |
Request Body schema: application/jsonrequired
category_name required | string Name of the category. |
categoryType required | string Type of the category to be updated. |
Responses
Request samples
- Payload
{- "category_name": "category-new",
- "categoryType": "course"
}
Response samples
- 200
{- "message": "Category Updated Successfully"
}
Get Category
Retrieves a category by its ID.
path Parameters
id required | string Example: 3 ID of the category. |
Responses
Response samples
- 200
{- "id": 3,
- "name": "superman_postman",
- "type": "course",
- "created_by": 2,
- "updated_by": null,
- "deleted_by": null,
- "created_at": "2020-08-10 12:43:12",
- "updated_at": "2020-08-10 12:56:37",
- "deleted_at": null
}
Delete categories of given type
Request Body schema: application/jsonoptional
type | required Type of category to be deleted. |
delete_ids | required Ids of categories to be deleted. |
categoryName | required Name of category to be deleted. |
Responses
Request samples
- Payload
{- "type": "question",
- "delete_ids": "[1,2,3]",
- "categoryName": "Question Category-1"
}
Response samples
- 200
{- "message": "3 category(s) deleted. 2 category(s) not deleted as it is used in dynamic quiz(s). Please remove the category from the quiz and try again.",
- "deletedCategories": [
- 4
], - "notDeletedCategories": [
- 1,
- 2
], - "usedInPlaces": [
- {
- "Question Category-1": [
- {
- "id": 1,
- "name": "Quiz Name 1"
}, - {
- "id": 2,
- "name": "Quiz Name 2"
}
]
}, - {
- "Question Category-2": [
- {
- "id": 3,
- "name": "Quiz Name 3"
}
]
}
]
}
Learning Path Category Tabular List
Returns all the learning path categories in a tabular list format in paginated mode. You can apply a filter using search_param via categoryName.
query Parameters
page_size required | string Example: page_size=9 The number of the item you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"categoryName":""} For searching items based on category name. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "learning path category 1",
- "author": "Aom Staff",
- "count": 1,
- "created_at": "May 16, 2022 07:00 AM"
}
]
}
A Certificate template is used to provide to learners. learners can achieve this award by completing the course. Helps in performing CRUD operations for and to certificates
Certificate Template Tabular List
Returns all the certificate templates in a tabular list format in paginated mode. You can apply filter using search_param via templateName(certificate template name) and courseId(course Id).
query Parameters
page_size required | string Example: page_size=50 The number of the item you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"templateName":"abc","courseId":"1"} For searching items based on Course category ids, course name. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "cert 1",
- "slug": "cert-1",
- "status": "publish",
- "categories": "",
- "author": "Aom Staff",
- "created_at": "03 Aug 2020 09:08 AM"
}
]
}
Quick Edit Certificate Templates
Updates the instructor/author for the selected certificate templates.
Request Body schema: application/jsonoptional
template_ids | required array The list of ids of the certificate templates you want to perform the action on. |
author_id | required integer The ID of the new instructor/author. |
Responses
Request samples
- Payload
{- "template_ids": "explicabo",
- "author_id": "commodi"
}
Response samples
- 200
{- "message": "Certificate Templates updated Successfully"
}
Field Keys Lookup
Retrieves all the fields that can be available on the certificate template. Helps while showing fields in form elements like dropdown while creating certificate template. Returns a list of all fields that can be used on the certificate template. (See Response)
Responses
Response samples
- 200
[- {
- "db_value": "student_first_name",
- "display_value": "Student First Name"
}, - {
- "db_value": "student_last_name",
- "display_value": "Student Last Name"
}, - {
- "db_value": "student_full_name",
- "display_value": "Student Full Name"
}, - {
- "db_value": "course_name",
- "display_value": "Course Name"
}, - {
- "db_value": "issue_date",
- "display_value": "Date of Issue"
}, - {
- "db_value": "expiry_date",
- "display_value": "Date of Expiry"
}, - {
- "db_value": "instructor_name",
- "display_value": "Instructor Name"
}, - {
- "db_value": "certificate_code",
- "display_value": "Certificate Code"
}, - {
- "db_value": "course_credit",
- "display_value": "Course Credit"
}, - {
- "db_value": "learning_path_name",
- "display_value": "Learning Path Name"
}, - {
- "db_value": "learning_path_credit",
- "display_value": "Learning Path Credit"
}, - {
- "db_value": "custom_text",
- "display_value": "Custom Text"
}
]
Font Families Lookup
Retrieves all the font families that can be used on the certificate template. Helps while showing font families in form elements like dropdown while creating certificate template. Returns a list of all font families that can be used on the certificate template. (See Response)
Responses
Response samples
- 200
[- {
- "db_value": "Lato",
- "display_value": "Arial",
- "is_selected": "true"
}, - {
- "db_value": "Courier",
- "display_value": "Courier"
}, - {
- "db_value": "Source Sans Pro",
- "display_value": "Helvetica"
}, - {
- "db_value": "Montserrat",
- "display_value": "Montserrat"
}, - {
- "db_value": "Roboto Condensed",
- "display_value": "Roboto"
}, - {
- "db_value": "Space Mono",
- "display_value": "Space Mono"
}, - {
- "db_value": "Roboto Slab",
- "display_value": "Roboto Slab"
}
]
Create Certificate Template
Creates a new certificate template and stores it in the database. The template can be used to assign to students upon course completion.
Request Body schema: application/jsonrequired
name required | string The name of the certificate template. |
organization_id | integer optional The ID of the organization associated with the certificate template. |
bg_url | string optional The URL of the background image for the certificate template. |
height required | integer The height of the certificate template. |
width required | integer The width of the certificate template. |
fields required | Array of strings The array of fields to be included in the certificate. Each field contains its properties like key, font size, font family, etc. |
Responses
Request samples
- Payload
{- "name": "Completion-Certificate",
- "organization_id": 12,
- "height": 680,
- "width": 1075,
- "fields": [
- "est"
]
}
Response samples
- 200
{- "id": 2,
- "message": "Certificate Template created successfully"
}
Retrieves a single certificate template.
Returns a single certificate template based on the id provided. (See Response)
path Parameters
id required | string Example: facilis The ID of the certificate template. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Completion-Certificate",
- "organization_id": 1,
- "height": 680,
- "width": 1075,
- "fields": [
- {
- "key": "course_name",
- "value": "Course Name",
- "font_size": 20,
- "font_family": "Arial",
- "font_color": "#222",
- "top": 432,
- "left": 469,
- "align_center": false,
- "width": 200,
- "height": 40
}
]
}
Update Certificate Template
Updates the details of a specified certificate template.
path Parameters
id required | string Example: facilis The ID of the certificate template. |
Request Body schema: application/jsonrequired
name required | string The name of the certificate template. |
organization_id | integer optional The ID of the organization associated with the certificate template. |
bg_url | string optional The URL of the background image for the certificate template. |
height required | integer The height of the certificate template. |
width required | integer The width of the certificate template. |
fields required | Array of strings The array of fields to be included in the certificate. Each field contains its properties like key, font size, font family, etc. |
Responses
Request samples
- Payload
{- "name": "Completion-Certificate",
- "organization_id": 19,
- "height": 680,
- "width": 1075,
- "fields": [
- "praesentium"
]
}
Response samples
- 200
{- "message": "Certificate Template updated successfully"
}
Clone Certificate Template
Clones the selected certificate template to create a new one with same settings. The new template name is set as "
Request Body schema: application/jsonoptional
templateId | required integer The ID of the certificate template you want to clone. |
Responses
Request samples
- Payload
{- "templateId": "porro"
}
Response samples
- 200
{- "message": "Certificate Template Cloned Successfully"
}
Load Course Rating Details
Retrieves the course ratings with details. The response includes course name, course ID, rating, reviews, user ID, user display name, user avatar, and submission date.
query Parameters
page_size required | string Example: page_size=10 Number of records to return per page. |
page_number required | string Example: page_number=1 Current page number. |
courseIds required | string Example: courseIds=[1,2,3] An array of course IDs to filter the ratings by. |
Responses
Response samples
- 200
{- "ratings": [
- {
- "id": 1,
- "courseName": "Course 1",
- "courseId": 1,
- "rating": 4.5,
- "userId": 1,
- "reviews": "This is a sample review",
- "userDisplayName": "John Doe",
- "avatar": "<svg...>",
- "submissionDate": "Feb 2020"
}
], - "total": 20,
- "recordsFiltered": 10
}
Retrieve course curriculum details
Retrieves the course curriculum details given a set of course IDs. The response includes course name, modules, and sections.
query Parameters
courseIds required | string Example: courseIds=placeat An array of course IDs to retrieve their curriculum details. example: [1,2,3] |
Responses
Response samples
- 200
[- {
- "name": "Course 1",
- "modules": [
- {
- "module_id": 1,
- "name": "Test Module 1",
- "type": "text",
- "display_type": "Text",
- "icon": "el-icon-tickets"
}, - {
- "section_name": "Section 1",
- "modules": [
- {
- "module_id": 2,
- "name": "Test Module 2",
- "type": "video",
- "display_type": "Video",
- "icon": "el-icon-video-camera"
}
]
}
]
}
]
Tabular List
Retrieves all the courses in a tabular list format with pagination mode. You can apply filter using search_param via courseName, courseCategoryIds and status.
query Parameters
page_size required | string Example: page_size=10 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"courseCategoryIds": [1,2], "courseName": "", "status": "DRAFT"} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "Test Course",
- "slug": "test-course",
- "status": "DRAFT",
- "display_status": "Draft",
- "categories": "Category 1, Category 2",
- "author": "John Doe",
- "created_at": "Aug 26, 2020 12:00 AM",
- "certificate_template_id": 1,
- "accredible_group_id": [ ]
}
]
}
Dropdown List
Retrieves all the courses in a dropdown format in paginated mode. You can apply filter using portal_id via query param.
query Parameters
portalId | integer Example: portalId=5 The portal ID used for additional filtering. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Course 1"
}, - {
- "id": 2,
- "name": "Course 2"
}
]
Enrolled Learners
Retrieves all enrolled students for a course.
query Parameters
course_id required | string Example: course_id=1 The ID of course. |
portalId required | string Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
page_size required | string Example: page_size=10 Number of the results you want in each page. |
page_number required | string Example: page_number=1 Current Page number. |
order_by | string Example: order_by=registered_on Returns details in some order. |
search_param | string Example: search_param={"status":["Not Started","In Progress"],"nameOrEmail":"John Doe"} Search parameters related to course. |
Responses
Response samples
- 200
{- "courseName": "course 1",
- "recordsTotal": 12,
- "totalNotStarted": 3,
- "totalInProgress": 4,
- "totalCompleted": 5,
- "recordsFiltered": 12,
- "records": [
- {
- "id": 1,
- "user_id": 2,
- "first_name": "John",
- "last_name": "Doe",
- "status": "Not Started",
- "display_status": "Not Started",
- "percentComplete": 0,
- "access_status": "Allowed",
- "registered_on": "Aug 09, 2020",
- "started_on": "",
- "completed_on": "",
- "expire_on": "Never",
- "last_accessed_on": "Never",
- "certificate_count": 0,
- "user_type": "Learner",
- "raw_user_type": "learner"
}
]
}
Retrieve the list of webinars for a given course
This API retrieves the list of webinars for a given course ID. The response includes the webinar name, start date, end date, duration, location, instructor, and other relevant information.
path Parameters
course_id required | string Example: 1 The ID of the course to retrieve webinars for. |
query Parameters
search_param | string Example: search_param={"dates": ["2020-07-01", "2020-07-31"]} JSON object containing search parameters. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Webinar 1",
- "startDate": "2020-07-01",
- "endDate": "2020-07-01",
- "duration": "1 hour",
- "location": "New York",
- "instructor": "John Doe"
}, - {
- "id": 2,
- "name": "Webinar 2",
- "startDate": "2020-07-01",
- "endDate": "2020-07-01",
- "duration": "1 hour",
- "location": "New York",
- "instructor": "Jane Doe"
}
]
Retrieve the list of learning resources for a given course
This API retrieves the list of learning resources for a given course ID. The response includes the learning resource name, type, file name, file type, status, s3_url, mux_url, mux_id, bunny_video_id, bunny_video_url, mime_type, created at.
path Parameters
course_id required | string Example: 1 The ID of the course to retrieve learning resources for. |
query Parameters
search_param | string Example: search_param={} JSON object containing search parameters. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Learning Resource 1",
- "type": "video",
- "file_name": "LR1.mp4",
- "file_type": "mp4",
- "status": "active",
- "mux_id": "mux-id-1",
- "bunny_video_id": "bunny-video-id-1",
- "mime_type": "video/mp4",
- "created_at": "2020-07-01 10:00:00"
}, - {
- "id": 2,
- "name": "Learning Resource 2",
- "type": "document",
- "file_name": "LR2.pdf",
- "file_type": "pdf",
- "status": "active",
- "mux_id": "mux-id-2",
- "bunny_video_id": "bunny-video-id-2",
- "mime_type": "application/pdf",
- "created_at": "2020-07-01 10:00:00"
}
]
Retrieves all the submissions for all the courses a user is enrolled in, for a given portal
query Parameters
page_size required | integer Example: page_size=10 Number of results per page. |
page_number required | integer Example: page_number=1 The current page number. |
order_by | object Example: column=name&direction=asc JSON object specifying the column and direction to sort by. |
search_param | object Example: name=John Doe&type=assignment&status=Submitted JSON object containing search criteria. |
portalId required | integer Example: portalId=5 ID of the portal to filter results. |
Responses
Response samples
- 200
{- "courseName": "course name",
- "totalPending": 5,
- "recordsTotal": 12,
- "recordsFiltered": 12,
- "records": [
- {
- "status_row_id": 1,
- "module_id": 1,
- "module_name": "Assignment 1",
- "module_type": "assignment",
- "module_status": "Submitted",
- "first_name": "John",
- "last_name": "Doe",
- "submission_id": 1,
- "submitted_on": "2020-01-01"
}, - {
- "status_row_id": 2,
- "module_id": 2,
- "module_name": "Discussion 1",
- "module_type": "discussion",
- "module_status": "Submitted",
- "first_name": "Jane",
- "last_name": "Doe",
- "submission_id": 2,
- "submitted_on": "2020-01-01"
}
]
}
Retrieves all the submissions for all the courses a user is enrolled in, for a given portal
query Parameters
page_size required | integer Example: page_size=10 Number of results per page. |
page_number required | integer Example: page_number=1 The current page number. |
order_by | object Example: column=name&direction=asc JSON object specifying the column and direction to sort by. |
search_param | object Example: name=Course Name JSON object containing search criteria. |
portalId required | integer Example: portalId=5 ID of the portal to filter results. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "totalPending": 5,
- "records": [
- {
- "course_name": "Course 1",
- "status_row_id": 1,
- "module_id": 1,
- "module_name": "Assignment 1",
- "module_type": "assignment",
- "module_status": "Submitted",
- "first_name": "John",
- "last_name": "Doe",
- "submission_id": 1,
- "submitted_on": "2020-01-01"
}, - {
- "course_name": "Course 2",
- "status_row_id": 2,
- "module_id": 2,
- "module_name": "Discussion 1",
- "module_type": "discussion",
- "module_status": "Submitted",
- "first_name": "Jane",
- "last_name": "Doe",
- "submission_id": 2,
- "submitted_on": "2020-01-01"
}
]
}
API to fetch LMS Overview Report
Request Body schema: application/jsonrequired
searchPortalIds required | Array of strings Portal Ids |
Responses
Request samples
- Payload
{- "searchPortalIds": [
- "est"
]
}
Response samples
- 200
{- "labels": [ ],
- "totalNotStarted": [ ],
- "totalInProgress": [ ],
- "totalCompleted": [ ],
- "percentageCompleted": [ ],
- "sumNotStarted": 0,
- "sumInProgress": 0,
- "sumCompleted": 0,
- "sumPercentageCompleted": 0
}
API to get Course Detail Report
Request Body schema: application/jsonrequired
course_ids required | Array of strings The course ids to filter the report |
page_size required | integer The number of records per page |
page_number required | integer The page number to request |
order_by required | object The column name and direction to order the report by |
search_param required | object The search parameters to filter the report by |
userCategoryId required | integer The user category id to filter the report by |
registered_between required | Array of strings The date range to filter the report by |
searchPortalIds required | Array of strings The portal ids to filter the report by |
Responses
Request samples
- Payload
{- "course_ids": [
- "qui"
], - "page_size": 12,
- "page_number": 12,
- "order_by": [ ],
- "search_param": [ ],
- "userCategoryId": 18,
- "registered_between": [
- "mollitia"
], - "searchPortalIds": [
- "sapiente"
]
}
Response samples
- 200
{- "recordsTotal": 0,
- "totalNotStarted": 0,
- "totalInProgress": 0,
- "totalCompleted": 0,
- "recordsFiltered": 0,
- "records": [
- {
- "user_id": 0,
- "course_id": 0,
- "first_name": "",
- "last_name": "",
- "email": "",
- "course_name": "",
- "portal_name": "",
- "status": "",
- "display_status": "",
- "percent_complete": 0,
- "access_status": "",
- "registered_on": "",
- "started_on": "",
- "completed_on": "",
- "expire_on": "",
- "last_accessed_on": "",
- "percent_achieved": 0,
- "total_time_spent": "",
- "certifcate_issued": "",
- "certifcate_count": "",
- "certifcate_issued_date": "",
- "certificate_expire": ""
}
]
}
Retrieve Course Details
Fetches detailed information for a specific course, including metadata, modules, categories, learning paths, and associated resources.
path Parameters
id required | string Example: 1 The ID of the course to retrieve. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Course Name",
- "slug": "course-name",
- "instructions": "Course instructions",
- "credits": 3,
- "estimatedCompletion": 10,
- "estimationCompletedUnit": "hours",
- "minPassingPercentage": 70,
- "gradingRule": "average",
- "durationRule": "fixed",
- "durationSpecificDate": "2025-06-01",
- "durationDays": 30,
- "selectedBadgeId": 1,
- "isBadgeSelected": "badge",
- "points": 100,
- "status": "published",
- "certificateTemplates": [
- 1,
- 2
], - "associatedProduct": [ ],
- "shopifyProducts": [
- 101,
- 102
], - "certificateExpiresAfter": 365,
- "certificateExpiresAfterGracePeriod": 30,
- "accredibleGroupId": [
- 5,
- 6
], - "enableCourseRating": true,
- "completionCriteria": "all_modules",
- "hasAssociatedProduct": false,
- "modules": [
- {
- "module_id": 1,
- "display_order": 1,
- "name": "Module Name",
- "type": "text",
- "icon": "<i class=\"el-icon-tickets\"></i>",
- "is_locked": false,
- "drip_rules": "immediately",
- "drip_fixed_date": null,
- "drip_interval": null,
- "drip_interval_unit": "day",
- "drip_calculation_reference": "registration_date",
- "selectedModuleBadgeId": 1,
- "modulePoints": 10,
- "isModuleBadgeSelected": "badge",
- "minSpentHour": 0,
- "minSpentMinutes": 0
}
], - "categories": [
- 1,
- 2
], - "gradeModules": [
- 1,
- 2
], - "selectedModules": [
- 1,
- -999
], - "learningPaths": [
- {
- "learning_path_id": 1,
- "learning_path_name": "Learning Path Name"
}
], - "learningResources": [ ],
- "webinarList": [ ],
- "selectedWebinars": [
- -999
]
}
Update Course Details
Use this endpoint to update a course's settings, including curriculum, certification, grading, duration, and other metadata.
path Parameters
id required | string Example: 1 The ID of the course to retrieve. |
Request Body schema: application/jsonoptional
name | string The course title. |
status | string The course status (e.g., draft, published). |
featuredImageUrl | string URL of the course's featured image. |
instructions | string Additional instructions for the course. |
credits | integer Number of credits assigned to the course. |
estimatedCompletion | integer Estimated time to complete the course. |
estimationCompletedUnit | string Unit for estimated completion (e.g., hours, days). |
minPassingPercentage | numeric Minimum passing score percentage. |
gradingRule | Array of strings Rules for course grading. |
durationRule | string Type of duration rule. |
durationSpecificDate | date The specific date when course access ends (if applicable). |
durationDays | integer Number of days the course is accessible. |
points | integer Points rewarded upon completion. |
certificateTemplates | integer ID of the certificate template. |
certificateExpiresAfter | integer Certificate validity period in days. |
certificateExpiresAfterGracePeriod | integer Grace period after expiry in days. |
completionRedirectionUrl | string URL to redirect upon course completion. |
enableCourseRating | boolean Whether course rating is enabled. |
completionCriteria | string Criteria for course completion. |
selectedModules | Array of strings Selected module IDs. |
selectedWebinars | Array of strings Selected webinar IDs. |
shopifyProducts | Array of strings Shopify product IDs linked to the course. |
learningResources | Array of strings Associated learning resource IDs. |
accredibleGroupId | integer Accredible group ID for certification. |
isBadgeSelected | string Indicates if badge is selected. Should be 'badge' to use selectedBadgeId. |
selectedBadgeId | integer ID of the badge to be assigned if isBadgeSelected is 'badge'. |
modules | Array of strings The list of modules added to the course with section and drip settings. Each module object can contain the following:
|
Responses
Request samples
- Payload
{- "name": "\"Professional Development and Training\"",
- "status": "\"published\"",
- "featuredImageUrl": "\"https://example.com/image.jpg\"",
- "instructions": "\"Complete all modules.\"",
- "credits": 3,
- "estimatedCompletion": 10,
- "estimationCompletedUnit": "\"hours\"",
- "minPassingPercentage": "70",
- "gradingRule": [
- {
- "type": "average",
- "weight": 50
}
], - "durationRule": "\"fixed\"",
- "durationSpecificDate": "\"2025-06-01\"",
- "durationDays": 30,
- "points": 100,
- "certificateTemplates": 2,
- "certificateExpiresAfter": 365,
- "certificateExpiresAfterGracePeriod": 30,
- "completionRedirectionUrl": "\"https://example.com/congrats\"",
- "enableCourseRating": true,
- "completionCriteria": "\"all_modules\"",
- "selectedModules": [
- 1,
- 3,
- 5
], - "selectedWebinars": [
- 10,
- 11
], - "shopifyProducts": [
- 101,
- 102
], - "learningResources": [
- 201,
- 202
], - "accredibleGroupId": 55,
- "isBadgeSelected": "\"badge\"",
- "selectedBadgeId": 7,
- "modules": "registration_date"
}
Response samples
- 200
{- "message": "Course updated successfully"
}
Save Course
Creates or updates a course with associated modules, categories, certificates, webinars, and settings. This endpoint handles both draft and publish modes. It validates different fields based on the mode. In draft mode, only the course name is required. In publish mode, full validation is enforced including modules, certificates, completion criteria, badges, and grading settings.
It also links categories (creating new ones if needed), associates selected certificate templates, handles Shopify product mappings, and processes webinar integrations.
path Parameters
id required | string Example: 1 The ID of the course to be updated. |
Request Body schema: application/jsonoptional
name | string The course title. |
status | string The course status (e.g., draft, published). |
featuredImageUrl | string URL of the course's featured image. |
instructions | string Additional instructions for the course. |
credits | integer Number of credits assigned to the course. |
estimatedCompletion | integer Estimated time to complete the course. |
estimationCompletedUnit | string Unit for estimated completion (e.g., hours, days). |
minPassingPercentage | numeric Minimum passing score percentage. |
gradingRule | Array of strings Rules for course grading. |
durationRule | string Type of duration rule. |
durationSpecificDate | date The specific date when course access ends (if applicable). |
durationDays | integer Number of days the course is accessible. |
points | integer Points rewarded upon completion. |
certificateTemplates | integer ID of the certificate template. |
certificateExpiresAfter | integer Certificate validity period in days. |
certificateExpiresAfterGracePeriod | integer Grace period after expiry in days. |
completionRedirectionUrl | string URL to redirect upon course completion. |
enableCourseRating | boolean Whether course rating is enabled. |
completionCriteria | string Criteria for course completion. |
selectedModules | Array of strings Selected module IDs. |
selectedWebinars | Array of strings Selected webinar IDs. |
shopifyProducts | Array of strings Shopify product IDs linked to the course. |
learningResources | Array of strings Associated learning resource IDs. |
accredibleGroupId | integer Accredible group ID for certification. |
isBadgeSelected | string Indicates if badge is selected. Should be 'badge' to use selectedBadgeId. |
selectedBadgeId | integer ID of the badge to be assigned if isBadgeSelected is 'badge'. |
modules | Array of strings The list of modules added to the course with section and drip settings. Each module object can contain the following:
|
Request samples
- Payload
{- "name": "\"Professional Development and Training\"",
- "status": "\"published\"",
- "featuredImageUrl": "\"https://example.com/image.jpg\"",
- "instructions": "\"Complete all modules.\"",
- "credits": 3,
- "estimatedCompletion": 10,
- "estimationCompletedUnit": "\"hours\"",
- "minPassingPercentage": "70",
- "gradingRule": [
- {
- "type": "average",
- "weight": 50
}
], - "durationRule": "\"fixed\"",
- "durationSpecificDate": "\"2025-06-01\"",
- "durationDays": 30,
- "points": 100,
- "certificateTemplates": 2,
- "certificateExpiresAfter": 365,
- "certificateExpiresAfterGracePeriod": 30,
- "completionRedirectionUrl": "\"https://example.com/congrats\"",
- "enableCourseRating": true,
- "completionCriteria": "\"all_modules\"",
- "selectedModules": [
- 1,
- 3,
- 5
], - "selectedWebinars": [
- 10,
- 11
], - "shopifyProducts": [
- 101,
- 102
], - "learningResources": [
- 201,
- 202
], - "accredibleGroupId": 55,
- "isBadgeSelected": "\"badge\"",
- "selectedBadgeId": 7,
- "modules": [
- "consequatur"
]
}
Course Lookup
Retrieves the courses matching the search term provided in the request. If the portalId is provided, it will fetch courses which are attached to the portal. If the type is report, it will fetch all the courses attached to the membership and the courses attached to the learning path attached to the portal as well.
query Parameters
search_term required | string Example: search_term=course 1 The search term to search for courses. |
portalId required | string Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
type | string Example: type=report optional The type of the call. |
Responses
Response samples
- 200
[- {
- "value": 1,
- "label": "course 1"
}, - {
- "value": 2,
- "label": "course 2"
}
]
Deletes courses
Request Body schema: application/jsonrequired
delete_ids required | Array of strings The course IDs to delete. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "message": "3 course(s) deleted, 2 course(s) not deleted as it has enrollments. Please remove the students from the course and try again.",
- "deletedCourses": [
- 1,
- 2
], - "notDeletedCourses": [
- 3,
- 4
], - "enrolledCourses": [
- {
- "id": 3,
- "name": "Course 3"
}, - {
- "id": 4,
- "name": "Course 4"
}
], - "notDeletedProductCourses": [
- 1,
- 3
], - "productCourses": {
- "Course 1": [
- {
- "id": 1,
- "title": "Product 1"
}
], - "Course 3": [
- {
- "id": 2,
- "title": "Product 2"
}
]
}, - "notDeletedAutoEnrolledCourses": [
- 2
], - "autoEnrolledCourses": [
- {
- "courseId": 2,
- "courseName": "Course 2"
}
], - "notDeletedLearningPathCourses": [
- 4
], - "learningPathCourses": {
- "Course 4": [
- {
- "id": 1,
- "title": "Learning Path 1"
}
]
}, - "notDeletedPortalCourses": [
- 1
], - "portalCourses": {
- "Course 1": [
- {
- "id": 1,
- "name": "Portal 1"
}
]
}
}
Quick Edit
Updates the details of specified courses in bulk. The parameters to be updated are provided in the request.
Request Body schema: application/jsonrequired
course_ids required | Array of strings IDs of the courses to be updated. |
author_id | integer ID of the new instructor/author for the specified courses. |
categories_id | Array of strings IDs of the categories to update the specified courses with. |
Responses
Request samples
- Payload
{- "course_ids": [
- 1,
- 2
], - "author_id": 1,
- "categories_id": [
- 3,
- 4
]
}
Response samples
- 200
{- "message": "Courses updated Successfully"
}
Drip Option Lookup
Retrieves all the options for the drip feature that the platform offers like Immediately, On a Fixed Date, At Fixed Intervals. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "options": [
- {
- "db_value": "immediately",
- "display_value": "Immediately"
}, - {
- "db_value": "fixed_date",
- "display_value": "On a Fixed Date"
}, - {
- "db_value": "specific_interval",
- "display_value": "At Fixed Intervals"
}
], - "intervals": [
- {
- "db_value": "day",
- "display_value": "Day(s)"
}, - {
- "db_value": "week",
- "display_value": "Week(s)"
}, - {
- "db_value": "month",
- "display_value": "Month(s)"
}
], - "calculation_ref": [
- {
- "db_value": "registration_date",
- "display_value": "Enrollment Date"
}, - {
- "db_value": "started_date",
- "display_value": "Course Start Date"
}
]
}
]
Course Status Lookup
Retrieves all the statuses for a course the platform offers like Not Started, In Progress, Completed. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "Not Started",
- "display_value": "Not Started"
}, - {
- "db_value": "In Progress",
- "display_value": "In Progress"
}, - {
- "db_value": "Completed",
- "display_value": "Completed"
}
]
Grading Rules Lookup
Retrieves all the grading rules available for course creation. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "no_grading",
- "display_value": "No Grading"
}, - {
- "db_value": "avg_all_modules",
- "display_value": "Average of all Quiz/Assignment/Discussions/Scorm"
}, - {
- "db_value": "avg_specific_modules",
- "display_value": "Average of specific Quiz/Assignment/Discussions/Scorm"
}
]
Duration Rules Lookup
Retrieves all the duration rules for the courses. Helps showing options in dropdowns elements
Responses
Response samples
- 200
[- {
- "db_value": "unlimited",
- "display_value": "Unlimited"
}, - {
- "db_value": "on_specific_date",
- "display_value": "Till Specific Date"
}, - {
- "db_value": "x_days_after_start",
- "display_value": "Till X day(s) after a student starts the course"
}, - {
- "db_value": "x_days_after_enrollment",
- "display_value": "Till X day(s) after a student registers in the course"
}
]
Retrieve Course Activities
Retrieves paginated activities for a specified course based on various parameters.
query Parameters
course_id required | string Example: course_id=1 The ID of the course. |
page_size required | string Example: page_size=10 The number of activities you want in each page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction":"asc"} JSON object to order the activities. |
search_param | string Example: search_param={"nameOrEmail":"John Doe"} JSON object for searching activities by specific criteria. |
context | string Example: context="overview" Context in which activities are retrieved. |
portalId | string Example: portalId=5 The portal ID to filter activities by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
{- "courseName": "course 1",
- "featuredImage": null,
- "recordsTotal": 40,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 10,
- "verb": "ACCESSED",
- "created_at": "Aug 03, 2020 10:07 AM",
- "message": "Demo Student has accessed course 1",
- "student": "Demo Student"
}, - {
- "id": 9,
- "verb": "ACHIEVED CERTIFICATE",
- "created_at": "Aug 03, 2020 10:02 AM",
- "message": "Demo Student has achieved certificate for course 1",
- "student": "Demo Student"
}, - {
- "id": 8,
- "verb": "COMPLETED",
- "created_at": "Aug 03, 2020 10:02 AM",
- "message": "course 1 was completed",
- "student": "Demo Student"
}, - {
- "id": 7,
- "verb": "COMPLETED",
- "created_at": "Aug 03, 2020 10:02 AM",
- "message": "course 1 was completed",
- "student": "Demo Student"
}, - {
- "id": 6,
- "verb": "ACHIEVED CERTIFICATE",
- "created_at": "Aug 03, 2020 10:02 AM",
- "message": "Demo Student has achieved certificate for course 1",
- "student": "Demo Student"
}, - {
- "id": 5,
- "verb": "COMPLETED",
- "created_at": "Aug 03, 2020 10:02 AM",
- "message": "course 1 was completed",
- "student": "Demo Student"
}, - {
- "id": 4,
- "verb": "COMPLETED",
- "created_at": "Aug 03, 2020 10:02 AM",
- "message": "course 1 was completed",
- "student": "Demo Student"
}, - {
- "id": 3,
- "verb": "STARTED",
- "created_at": "Aug 03, 2020 10:02 AM",
- "message": "Demo Student has started test",
- "student": "Demo Student"
}, - {
- "id": 2,
- "verb": "STARTED",
- "created_at": "Aug 03, 2020 10:01 AM",
- "message": "Demo Student has started course 1",
- "student": "Demo Student"
}, - {
- "id": 1,
- "verb": "ENROLLED",
- "created_at": "Aug 03, 2020 10:00 AM",
- "message": "Demo Student is enrolled to course 1",
- "student": "Demo Student"
}
]
}
Retrieves the course details for given course ID and user ID
path Parameters
id required | string Example: 1 Course registration ID for the student of the course you want to see progress. |
query Parameters
userId required | string Example: userId=3 ID of the user. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "course 1",
- "course_id": 1,
- "userId": 3,
- "userName": "John Doe",
- "featuredImageUrl": null,
- "status": "Not Started",
- "completionPercentage": 0,
- "enrollmentDate": "2020-08-03T10:00:00.000000Z",
- "expiryDate": "2020-08-04T10:00:00.000000Z",
- "completionDate": null,
- "startDate": null,
- "lastAccessed": null,
- "modules": [
- {
- "module_id": 1,
- "name": "test",
- "slug": "test",
- "type": "text",
- "icon": "<i class=\"el-icon-tickets\"></i>",
- "status_row_id": -1,
- "status": "Not Started",
- "started_on": null,
- "completed_on": null,
- "last_accessed_on": null,
- "total_time_spent": null,
- "completion_percentage": 0,
- "no_of_times_accessed": 0,
- "totalMarks": null,
- "obtainedMarks": null
}, - {
- "module_id": 4,
- "name": "assign",
- "slug": "assign",
- "type": "assignment",
- "icon": "<i class=\"el-icon-edit-outline\"></i>",
- "status_row_id": -1,
- "status": "Not Started",
- "started_on": null,
- "completed_on": null,
- "last_accessed_on": null,
- "total_time_spent": null,
- "completion_percentage": 0,
- "no_of_times_accessed": 0,
- "totalMarks": 50,
- "obtainedMarks": null
}
], - "hasSection": false
}
Update Course Progress
Updates the course progress for given course.
path Parameters
id required | string Examples:
Optional parameter. The The ID of the course. |
query Parameters
userId | string Example: userId=3 The ID of the user. |
enrollmentDate | string Example: enrollmentDate=2020-01-01 00:00:00 The enrollment date for the course. Format Y-m-d H:i:s. |
expiryDate | string Example: expiryDate=2020-01-01 00:00:00 The expiry date for the course. Format Y-m-d H:i:s. |
startDate | string Example: startDate=2020-01-01 00:00:00 The start date for the course. Format Y-m-d H:i:s. |
completionDate | string Example: completionDate=2020-01-01 00:00:00 The completion date for the course. Format Y-m-d H:i:s. |
lastAccessed | string Example: lastAccessed=2020-01-01 00:00:00 The last accessed date for the course. Format Y-m-d H:i:s. |
status | string Example: status=Completed The status of the course. |
modules | string Example: modules=[{"module_id": 16, "status": "Not Started"}] The modules status for the course. |
Responses
Response samples
- 200
{- "message": "Course updated Successfully"
}
Enroll learners
To enroll users in a course, you need to use this request.
path Parameters
id required | string Example: 1 ID of the course. |
Request Body schema: application/jsonrequired
studentIds required | Array of strings User IDs needs to be enrolled in this course. |
portalId | integer optional The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Request samples
- Payload
{- "studentIds": [
- 2,
- 3
], - "portalId": 5
}
Response samples
- 200
{- "message": "2 student(s) enrolled successfully",
- "enrolledUsersCount": 2,
- "notEnrolledUsers": 0
}
Remove Learners
To remove users from a course, you need to use this request.
path Parameters
id required | string Example: 1 ID of the course. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Enrollment IDs needs to be removed from this course. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- 2,
- 3
]
}
Response samples
- 200
{- "message": "2 student(s) removed successfully"
}
Reset Progress
To reset the progress of students for course, you need to use this request.
path Parameters
id required | string Example: 1 ID of the course. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Enrollment IDs needs to be reset from this course. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- 2,
- 3
]
}
Response samples
- 200
{- "message": "2 student(s) progress is reset successfully"
}
Revoke Access
To revoke the access of course from students, you need to use this request.
path Parameters
id required | string Example: 1 ID of the course. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Course Registration/Enrollment IDs whose access needs to be revoked. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- 8,
- 7
]
}
Response samples
- 200
{- "message": "2 learner(s) access has been revoked successfully"
}
Grant Access
To grant the access of course to students, you need to use this request.
path Parameters
id required | string Example: 1 ID of the course. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Course Registration/Enrollment IDs needs access to be granted from this course. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- 9,
- 6
]
}
Response samples
- 200
{- "message": "2 learner(s) access has been granted successfully"
}
Set Expiry
To update the expiry date for the learners of a course, you need to use this request.
path Parameters
id required | string Example: 1 ID of the course. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Course Registration/Enrollment IDs needs setting expiry date for course. |
expiryDate | required Date on which the course is going to be expired. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- "fugiat"
], - "expiryDate": "porro"
}
Response samples
- 200
{- "message": "Expiration date is successfully updated for 2 student(s)"
}
Assign Certificate
To assign certificate to the user for the course, you need to use this request.
path Parameters
id required | string Example: 1 ID of the course. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Course Registration/Enrollment IDs needs certificate to be assigned for this course. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- "qui"
]
}
Response samples
- 200
{- "message": "Certificate is successfully assigned to 2 student(s)"
}
Course Activity Lookup
Retrieves all the activities performed in a course. Helps showing options in dropdowns elements
Responses
Response samples
- 200
[- {
- "db_value": "ENROLLED",
- "display_value": "ENROLLED"
}, - {
- "db_value": "STARTED",
- "display_value": "STARTED"
}, - {
- "db_value": "ACCESSED",
- "display_value": "ACCESSED"
}, - {
- "db_value": "COMPLETED",
- "display_value": "COMPLETED"
}, - {
- "db_value": "SUBMITTED",
- "display_value": "SUBMITTED"
}, - {
- "db_value": "EVALUATED",
- "display_value": "EVALUATED"
}, - {
- "db_value": "REJECTED",
- "display_value": "REJECTED"
}, - {
- "db_value": "RETAKE",
- "display_value": "RETAKEN"
}, - {
- "db_value": "ACHIEVED CERTIFICATE",
- "display_value": "ACHIEVED CERTIFICATE"
}, - {
- "db_value": "RESET",
- "display_value": "RESET"
}, - {
- "db_value": "REMOVED",
- "display_value": "REMOVED"
}, - {
- "db_value": "REVOKED",
- "display_value": "REVOKED"
}, - {
- "db_value": "GRANTED",
- "display_value": "GRANTED"
}, - {
- "db_value": "UPDATED EXPIRY DATE",
- "display_value": "UPDATED EXPIRY DATE"
}, - {
- "db_value": "FAILED",
- "display_value": "FAILED"
}, - {
- "db_value": "MANUALLY UPDATED",
- "display_value": "MANUALLY UPDATED"
}, - {
- "db_value": "REGISTERED",
- "display_value": "REGISTERED"
}, - {
- "db_value": "ATTENDED",
- "display_value": "ATTENDED"
}, - {
- "db_value": "NO SHOW",
- "display_value": "NO SHOW"
}, - {
- "db_value": "CANCELLED",
- "display_value": "CANCELLED"
}, - {
- "db_value": "ACHIEVED BADGE",
- "display_value": "ACHIEVED BADGE"
}
]
Gradebook Data
Retrieves all the progress achieved by a learner on the course. Details will be returned in paginated mode. You can use the userId parameter to get details for different Learners.
path Parameters
id required | string Example: 1 Course registration ID for the Learner of the course you want to see progress. |
query Parameters
userId required | string Example: userId=3 ID of the user. |
Responses
Response samples
- 200
{- "name": "course 1",
- "modules": [
- {
- "module_id": 1,
- "name": "test",
- "slug": "test",
- "type": "text",
- "icon": "<i class=\"el-icon-tickets\"></i>",
- "status_row_id": 1,
- "status": "Completed",
- "started_on": "2020-08-03T10:02:33.000000Z",
- "completed_on": "2020-08-03T10:02:41.000000Z",
- "last_accessed_on": "6 days ago",
- "total_time_spent": {
- "hours": 0,
- "minutes": 0,
- "seconds": 6,
- "totalSeconds": 6
}, - "completion_percentage": 100,
- "no_of_times_accessed": 1,
- "totalMarks": null,
- "obtainedMarks": null
}, - {
- "module_id": 4,
- "name": "assign",
- "slug": "assign",
- "type": "assignment",
- "icon": "<i class=\"el-icon-edit-outline\"></i>",
- "status_row_id": -1,
- "status": "Not Started",
- "started_on": "",
- "completed_on": "",
- "last_accessed_on": "Never",
- "total_time_spent": "",
- "points_awarded": "",
- "completion_percentage": 0,
- "no_of_times_accessed": 0,
- "totalMarks": 50,
- "obtainedMarks": null
}
], - "id": 1,
- "userId": 3,
- "featuredImageUrl": null,
- "instructions": null,
- "accessStatus": "Allowed",
- "status": "Completed",
- "completionPercentage": 50,
- "timeSpent": {
- "hours": 0,
- "minutes": 0,
- "seconds": 6,
- "totalSeconds": 6
}, - "enrollmentDate": "03 Aug 2020",
- "isExpired": false,
- "daysToExpire": "Unlimited days",
- "lastAccessed": "6 days ago",
- "isCertificateAvailable": true,
- "totalMarks": 50,
- "obtainedMarks": 0,
- "percentage": 0
}
Enrolled User Lookup
Retrieves a list of users enrolled in a specified course, optionally filtered by portal ID and search term. The search term can match first name, last name, email, or full name.
query Parameters
search_term required | string Example: search_term="John Doe" The search term to search for users. |
id required | integer Example: id=1 The ID of the course to filter users by. |
portalId | integer Example: portalId=5 optional The ID of the portal to filter users by. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
[
]
Clone a course.
This function clones a course and its associated categories and modules. It allows for a deep copy, which clones all course content, including modules and their details. The cloned course will have a new name suffixed with "_copy" and the requesting user will be recorded as the creator and updater.
Request Body schema: application/jsonrequired
course_id required | integer The ID of the course to clone. |
isDeepCopy required | boolean If true, all content will be deeply copied. |
Responses
Request samples
- Payload
{- "course_id": 1,
- "isDeepCopy": true
}
Response samples
- 200
{- "message": "Course Cloned Successfully"
}
Update the list of courses which are auto-enrolled for free to users after registration.
Request Body schema: application/jsonrequired
courses required | Array of strings The list of course IDs to auto enroll. |
Responses
Request samples
- Payload
{- "courses": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "message": "Course Updated Successfully",
- "type": "success",
- "title": "Success"
}
Retrieve the list of students enrolled in a given webinar
This API retrieves the list of students enrolled in a given webinar ID and portal ID. The response includes the student name, email, avatar, status, registered on, last accessed on, attendance recording type, notes.
path Parameters
course_id required | string Example: 1 The ID of the course to retrieve enrollments for. |
webinar_id required | string Example: 1 The ID of the webinar to retrieve enrollments for. |
portal_id required | string Example: 1 The ID of the portal for which the course is being accessed. |
query Parameters
page_size required | string Example: page_size=10 The number of records to return per page. |
page_number required | string Example: page_number=1 The page number. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} Order by column and direction. |
search_param | string Example: search_param={} JSON object containing search parameters. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "user_id": 1,
- "first_name": "John",
- "last_name": "Doe",
- "status": "active",
- "registered_on": "2020-07-01 10:00:00",
- "last_accessed_on": "2020-07-01 11:00:00",
- "attendance_recording_type": "video",
- "notes": "Some notes"
}, - {
- "id": 2,
- "user_id": 2,
- "first_name": "Jane",
- "last_name": "Smith",
- "status": "inactive",
- "registered_on": "2020-07-01 10:00:00",
- "last_accessed_on": "2020-07-01 11:00:00",
- "attendance_recording_type": "audio",
- "notes": "Some notes"
}
]
Save Course Rating
Saves the course rating given by user and fires an event to send notification to the course creator.
Request Body schema: application/jsonoptional
user_id | required The ID of the user who is submitting the review. |
course_id | required The ID of the course for which the review is being submitted. |
reviews | string The reviews given by the user. |
rating | integer The rating given by the user. |
display_name | string The display name of the user. |
portal_id | required The ID of the portal for which the course is being accessed. |
Responses
Request samples
- Payload
{- "user_id": "1",
- "course_id": "1",
- "reviews": "\"This course is awesome\"",
- "rating": 5,
- "display_name": "\"John Doe\"",
- "portal_id": "1"
}
Retrieves all the course ratings in a tabular list format in paginated mode.
You can apply filter using search_param via associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"associatedCourse":"","moduleName":""} for searching items based on field names. |
Responses
Response samples
- 200
{- "total": 1,
- "recordsFiltered": 1,
- "ratings": [
- {
- "id": 1,
- "courseName": "Course Name",
- "courseId": 1,
- "rating": 5,
- "userId": 1,
- "reviews": "My first comment",
- "userdisplayName": "John Doe",
- "submissionDate": "Aug 11, 2020 05:56 AM"
}
]
}
Delete Course Rating
Deletes the specified course rating and updates the average rating of the course.
Request Body schema: application/jsonoptional
id | required The ID of the course rating to delete. |
Responses
Request samples
- Payload
{- "id": "1"
}
Response samples
- 200
{- "status": "success",
- "message": "Course Rating deleted successfully!"
}
Launch
This API is used to launch a course and get the modules associated with the course.
path Parameters
registrationId required | string Example: 2 Registration ID of the course. |
query Parameters
info | string Example: info=info=true optional If the API is called with info parameter, the API will not start the course, but will return the information of the course. |
portalId required | string Example: portalId=1 Portal ID of the user. |
moduleIds | Array of strings Example: moduleIds=1&moduleIds=2 optional If you want to get the status of specific modules, you can pass the module IDs. |
Responses
Response samples
- 200
{- "name": "Course Name",
- "id": 2,
- "instructions": "Course Instructions",
- "rating": 4.5,
- "enableCourseRating": true,
- "accessStatus": "Allowed",
- "status": "Not Started",
- "display_status": "Not Started",
- "completionPercentage": 0,
- "timeSpent": "00:00:00",
- "enrollmentDate": "22-02-2022",
- "isExpired": false,
- "lastAccessed": "Never",
- "estimatedCompletionTime": "2 hours",
- "expireOn": "22-02-2022",
- "modules": [ ],
- "daysToExpire": 10
}
Retrieve course information (name, modules, webinars, etc.)
This API retrieves course information for a given course ID, portal ID, and user ID. The response includes the course name, modules, webinars, learning resources, and other relevant information.
query Parameters
courseId required | string Example: courseId=1 ID of the course. |
portalId required | string Example: portalId=1 ID of the portal for which the course is being accessed. |
userId required | string Example: userId=1 ID of the user accessing the course. |
Responses
Response samples
- 200
{- "name": "Course 1",
- "modules": [
- {
- "module_id": 1,
- "name": "Test Module 1",
- "slug": "test-module-1",
- "type": "text",
- "icon": "el-icon-tickets",
- "display_type": "Text",
- "last_accessed_on": "Never",
- "status": "Not Enrolled",
- "display_status": "Not Enrolled",
- "completion_percentage": 0,
- "estimatedCompletion_time": "1 hour"
}
], - "webinarList": [
- {
- "id": 1,
- "name": "Test Webinar 1",
- "start_date": "2020-08-03T10:02:33.000000Z",
- "end_date": "2020-08-03T10:02:33.000000Z",
- "description": "Test webinar description",
- "duration": "1 hour",
- "is_registered": false
}
], - "learningResources": [
- {
- "id": 1,
- "name": "Test Resource 1",
- "description": "Test resource description"
}
]
}
A Coupon is used by the learners to reduce ther price by some discount, provided by the Instructor. It helps for adding/updating/editing discount coupons applied on products.
Coupons Tabular List
Returns all the coupons in a tabular list format with pagination. Allows filtering using the search_param via code (coupon code).
query Parameters
page_size required | string Example: page_size=50 The number of items you want per page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction":"desc"} optional JSON object for ordering items based on columns. |
search_param | integer Example: search_param=0 optional JSON object for searching items based on coupon code. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "code": "code75",
- "type": "percent_amount",
- "value": 1500,
- "total_limit": 12,
- "expired_at": "Aug 26, 2020"
}
]
}
Coupon Lookup
Retrieves all coupons whose code matches the search term provided. This is useful for displaying coupons in form elements like dropdowns.
query Parameters
search_term required | string Example: search_term="SUMMER" The term to search for in coupon codes. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "code": "code75"
}
]
Create Coupon
Creates a coupon based on the request data. Coupons can be used by the students to get some discount while purchasing the course.
Request Body schema: application/jsonrequired
code required | string code for the coupon. |
value required | numeric Value of the coupon(discount price or percentage). |
type required | string Types of the coupon. Type options: fixed_amount or percent_amount. |
expiry | date On this date, this coupon will get expired. |
allowed_emails | string All allowed email comma seprated. |
usage_limit | integer How many times this coupon can be used?. |
notes | string Notes for the coupon. |
allowed_products | Array of strings allowed products. |
allowed_product_categories | Array of strings allowed product categories. |
Responses
Request samples
- Payload
{- "code": "code75",
- "value": "1500",
- "type": "percent_amount",
- "expiry": "2020-08-26",
- "allowed_emails": "null",
- "usage_limit": 2000,
- "notes": "Discount upto 75%",
- "allowed_products": [
- 1,
- 2,
- 3
], - "allowed_product_categories": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "id": 1,
- "message": "Coupon created successfully"
}
Get Coupon
Retrieves a coupon based on its ID. Useful for displaying a coupon's details.
query Parameters
id required | string Example: id=1 The ID of the coupon. |
Responses
Response samples
- 200
{- "id": 1,
- "code": "code75",
- "type": "percent_amount",
- "value": 1500,
- "usage_limit": 12,
- "expiry": "2020-08-26",
- "allowed_emails": null,
- "note_privacy": null,
- "notes": "Discount upto 75%",
- "allowed_products": [ ],
- "excluded_products": [ ],
- "allowed_product_categories": [ ]
}
Update Coupon
Updates a coupon based on the id provided as parameter.
Request Body schema: application/jsonoptional
id | required The ID of the coupon. |
code | required Code for the coupon. |
value | required Value of the coupon(discount price or percentage). |
type | required Types of the coupon. Type options: fixed_amount or percent_amount. |
expiry | date On this date, this coupon will get expired. |
allowed_emails | string All allowed email comma seprated. |
usage_limit | integer How many times this coupon can be used?. |
notes | string Notes for the coupon. |
allowed_products | Array of strings allowed products. |
allowed_product_categories | Array of strings allowed product categories. |
Responses
Request samples
- Payload
{- "id": "1",
- "code": "code75",
- "value": "1500",
- "type": "percent_amount",
- "expiry": "2020-08-26",
- "allowed_emails": "null",
- "usage_limit": 2000,
- "notes": "Discount upto 75%",
- "allowed_products": [
- 1,
- 2,
- 3
], - "allowed_product_categories": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "id": 1,
- "message": "Coupon updated successfully"
}
Delete Coupon
Deletes a coupon based on the id provided as parameter.
Request Body schema: application/jsonoptional
delete_ids | required The ID of the coupon. |
Responses
Request samples
- Payload
{- "delete_ids": "[1,2,3]"
}
Response samples
- 200
- 500
{- "message": "1 coupon(s) deleted. 1 coupon(s) not deleted as they are associated with orders"
}
A Discussion module is used as course content and a platform where learners can have discussions. Helps to perform CRUD operation to and for discussion modules.
Discussion Modules Tabular List
Returns all discussion modules in a tabular list format with pagination. Filters can be applied using search parameters for associated courses and module names.
query Parameters
page_size required | string Example: page_size=50 The number of items per page. |
page_number required | string Example: page_number=1 Current page number for pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} Optional JSON for sorting items by column. |
search_param | string Example: search_param={"associatedCourse": "", "moduleName": ""} Optional JSON for searching by associatedCourse and moduleName. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 5,
- "records": [
- {
- "id": 1,
- "name": "Discussion 1",
- "slug": "discussion-1",
- "type": "discussion",
- "totalPoints": 100,
- "icon": "<i class=\"el-icon-chat\"></i>",
- "author": "John Doe",
- "showMappedCourses": false,
- "created_at": "Aug 03, 2020 09:56 AM",
- "course_count": 2
}
]
}
Create Discussion Module
To create a discussion module, you need to use this request. (See parameters) Created discussion modules can be used in the course as course content/lesson.
Returns : id of the discussion created and successfull message
Request Body schema: application/jsonrequired
name required | string Name of the discussion module. |
content required | string Content for the discussion modules that learners will see. |
should_be_evaluated required | boolean If true, the discussion will be graded on course evaluation. |
totalPoints | integer Total points a student can get by completing this discussion. |
minComments | integer At least these many comments should be provided by the student to pass the discussion(required if should_be_evaluated is true). |
estimatedCompletion | nullable Estimated time to complete the module. |
estimationCompletedUnit | nullable Unit of time estimation (e.g., minutes, hours). |
Responses
Request samples
- Payload
{- "name": "First-discussion",
- "content": "A brief description",
- "should_be_evaluated": true,
- "totalPoints": 20,
- "minComments": 5,
- "estimatedCompletion": "90",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "id": 8,
- "message": "Module saved successfully"
}
Update Discussion Module
Updates the details of a specified discussion module. Validates the request and updates the module with the given parameters if it exists.
path Parameters
id required | string Example: 1 ID of the discussion module. |
Request Body schema: application/jsonrequired
name required | string Name of the discussion module. |
content required | string Content for the discussion module. |
should_be_evaluated required | boolean If true, the discussion will be graded on course evaluation. |
totalPoints | integer optional Total points a student can get by completing this discussion. |
minComments | integer At least these many comments should be provided by the student to pass the discussion. Required if should_be_evaluated is true. |
estimatedCompletion | nullable Estimated time to complete the module. |
estimationCompletedUnit | nullable Unit of time estimation (e.g., minutes, hours). |
Responses
Request samples
- Payload
{- "name": "First Discussion",
- "content": "An updated brief description",
- "should_be_evaluated": true,
- "totalPoints": 20,
- "minComments": 5,
- "estimatedCompletion": "90",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "message": "Module updated successfully"
}
Get Discussion Module
Returns a discussion module based on its ID.
path Parameters
id required | string Example: 1 ID of the discussion module. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Discussion 1",
- "slug": "discussion-1",
- "content": "A brief description",
- "totalPoints": 100,
- "should_be_evaluated": true,
- "minComments": 2,
- "estimatedCompletion": 2,
- "estimationCompletedUnit": "hours",
- "courses": [
- {
- "course_id": 1,
- "course_name": "Course 1"
}
]
}
Get Discussion Module Details
To get the details of a discussion module, you need to use this request. (See parameters)
path Parameters
registrationId required | string Example: 1 ID of the course registration. |
moduleId required | string Example: 2 ID of the discussion module. |
portalId required | integer Examples:
Optional parameter. The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Retrieve Comments
Returns all the discussion comments in a tabular list format in paginated mode. You can apply filter using search_param via associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"associatedCourse":"","moduleName":""} for searching items based on field names. |
moduleId required | string Example: moduleId=2 ID of the discussion module. |
registrationId required | string Example: registrationId=1 ID of the course registration. |
Responses
Post Comment for Discussion Module
Post a comment for the discussion module. The comment is for the given module under the given course registration. If the comment meets the submission conditions, then the module status is updated to 'Submitted' and an entry is made in discussion evaluation table and an email is sent to the instructor.
Request Body schema: application/jsonoptional
statusRowId | required ID of the Module status of the current discussion submission. |
currentUserId | required ID of the user who commented. |
comment | required Comment posted by the user for current discussion. |
parentId | optional Parent ID of the discussion. |
portalId | integer The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Request samples
- Payload
{- "statusRowId": "7",
- "currentUserId": "1",
- "comment": "This is my first comment.",
- "parentId": "1",
- "portalId": 5
}
Response samples
- 200
{- "status": "Submitted",
- "message": "Comment Posted"
}
Retrieve Discussion Submission Details
Retrieves the submission details of the discussion the student have given. Helps in grading a student. (See Response)
query Parameters
statusRowId required | string Example: statusRowId=delectus ID of the Module status of the current discussion submission. example: 1 |
Responses
Response samples
- 200
{- "courseId": 1,
- "courseName": "course 1",
- "discussionName": "assign",
- "status": "In Progress",
- "content": "Desc",
- "totalPoints": 50,
- "shouldBeEvaluated": true,
- "userAvatar": "avatar.jpg",
- "userFullName": "Aom Staff",
- "comments": [
- {
- "id": 1,
- "comment": "This is my first comment.",
- "date": "Aug 10, 2020 11:33 AM"
}
], - "replies": [
- {
- "id": 1,
- "comment": "This is my first reply.",
- "date": "Aug 10, 2020 11:33 AM"
}
]
}
Evaluate Discussion
Evaluates the discussion from Instructor side.Updates the status of discussion to completed if Instructor thinks student's submission is upto the marks. (See Parameters)
Request Body schema: application/jsonoptional
portalId | integer ID of the portal for which the assignment is being submitted. |
statusRowId | required ID of the Module status of the current assignment. |
evaluation | required Evaluation data by the Instructor(Completed or not). |
Responses
Request samples
- Payload
{- "portalId": 1,
- "statusRowId": "7",
- "evaluation": "{instructorMessage : 'You comments look good', pointsAwarded: '50' }"
}
Response samples
- 200
{- "message": "Discussion evaluated successfully"
}
Retrieve Discussion Comments
Retrieves all the discussion comments in a nested tree format in paginated mode. You can apply filter using search_param via associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"associatedCourse":"","moduleName":""} for searching items based on field names. |
moduleId required | string Example: moduleId=2 ID of the discussion module. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "comment": "My first comment",
- "courseName": "course 1",
- "userAvatar": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\"><circle cx=\"20\" cy=\"20\" r=\"20\" stroke=\"background\" stroke-width=\"0\" fill=\"#00BCD4\" /><text x=\"20\" y=\"20\" font-size=\"14\" fill=\"#FFFFFF\" alignment-baseline=\"middle\" text-anchor=\"middle\" dominant-baseline=\"central\">AS</text></svg>",
- "userFullName": "Aom Staff",
- "date": "Aug 11, 2020 05:56 AM",
- "replies": [
- {
- "id": 1,
- "comment": "My first reply",
- "userAvatar": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\"><circle cx=\"20\" cy=\"20\" r=\"20\" stroke=\"background\" stroke-width=\"0\" fill=\"#00BCD4\" /><text x=\"20\" y=\"20\" font-size=\"14\" fill=\"#FFFFFF\" alignment-baseline=\"middle\" text-anchor=\"middle\" dominant-baseline=\"central\">AS</text></svg>",
- "userFullName": "Aom Staff",
- "date": "Aug 11, 2020 05:56 AM",
- "replies": [
- {
- "id": 1,
- "comment": "My second reply",
- "userAvatar": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\"><circle cx=\"20\" cy=\"20\" r=\"20\" stroke=\"background\" stroke-width=\"0\" fill=\"#00BCD4\" /><text x=\"20\" y=\"20\" font-size=\"14\" fill=\"#FFFFFF\" alignment-baseline=\"middle\" text-anchor=\"middle\" dominant-baseline=\"central\">AS</text></svg>",
- "userFullName": "Aom Staff",
- "date": "Aug 11, 2020 05:56 AM",
- "replies": [ ]
}
]
}
]
}
]
}
Delete Discussion Comments
Deletes the given comments and its children too.
Request Body schema: application/jsonoptional
delete_ids | required An array of IDs of comments to be deleted. |
Responses
Request samples
- Payload
{- "delete_ids": "[1,2,3]"
}
Response samples
- 200
{- "message": "Comment(s) deleted successfully"
}
Endpoints for managing ecommerce settings. Getting and setting items status and values for the platform and the products.
Retrieves the global ecommerce product settings.
Fetches the settings of global products, including the color of product price and call to action names for free, simple and subscription products.
Responses
Response samples
- 200
{- "product_price_color": {
- "content": {
- "backgroundColor": "#fff"
}
}, - "free_product_cta": "Enroll Now",
- "simple_product_cta": "Add to Cart",
- "subscription_product_cta": "Subscribe"
}
Set Global Ecommerce Product Settings
Updates the settings of global products, including the color of product price and call to action names for free, simple and subscription products.
Request Body schema: application/jsonrequired
freeProductCta required | string Call to action name for free products. |
simpleProductCta required | string Call to action name for simple products. |
subscriptionProductCta required | string Call to action name for subscription products. |
productPriceColor required | object Object containing a single key "content" with a single key "backgroundColor" which is the color of the product price. |
Responses
Request samples
- Payload
{- "freeProductCta": "Enroll Now",
- "simpleProductCta": "Add to Cart",
- "subscriptionProductCta": "Subscribe",
- "productPriceColor": {
- "content": {
- "backgroundColor": "#fff"
}
}
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieve Ecommerce Cart Abandonment Settings
Fetches the settings related to cart abandonment tracking, including whether tracking is enabled and the UTM parameters used for tracking.
Responses
Response samples
- 200
{- "enable_cart_abandoned_tracking": true,
- "enable_tracking_staff": false,
- "utm_parameters": "utm_source=google&utm_medium=cpc"
}
Set Ecommerce Cart Abandonment Setting
Updates the ecommerce settings related to cart abandonment tracking. Allows enabling/disabling of cart abandonment tracking and tracking by staff. Also updates UTM parameters used for tracking.
Request Body schema: application/jsonrequired
enableTracking required | boolean Enable or disable cart abandonment tracking. |
enableTrackingStaff required | boolean Enable or disable tracking by staff. |
utmParameters | string UTM parameters for cart abandonment tracking. |
Responses
Request samples
- Payload
{- "enableTracking": true,
- "enableTrackingStaff": false,
- "utmParameters": "utm_source=google&utm_medium=cpc"
}
Response samples
- 200
{- "message": "Cart Settings Updated Successfully"
}
Country Lookup
Retrieves all the countries in list format. Helps while showing countries in form elements like dropdown.
Responses
Response samples
- 200
{- "AF": "Afghanistan",
- "AX": "Aland Islands",
- "AL": "Albania",
- "DZ": "Algeria",
- "AS": "American Samoa",
- "AD": "Andorra",
- "AO": "Angola",
- "AI": "Anguilla",
- "AQ": "Antarctica",
- "AG": "Antigua and Barbuda",
- "AR": "Argentina",
- "AM": "Armenia",
- "AW": "Aruba",
- "AU": "Australia",
- "AT": "Austria",
- "AZ": "Azerbaijan",
- "BS": "Bahamas",
- "BH": "Bahrain",
- "BD": "Bangladesh",
- "BB": "Barbados",
- "BY": "Belarus",
- "BE": "Belgium",
- "BZ": "Belize",
- "BJ": "Benin",
- "BM": "Bermuda",
- "BT": "Bhutan",
- "BO": "Bolivia",
- "BA": "Bosnia and Herzegovina",
- "BW": "Botswana",
- "BV": "Bouvet Island",
- "BR": "Brazil",
- "VG": "Virgin Islands, British",
- "BN": "Brunei",
- "BG": "Bulgaria",
- "BF": "Burkina Faso",
- "BI": "Burundi",
- "KH": "Cambodia",
- "CM": "Cameroon",
- "CA": "Canada",
- "CV": "Cape Verde",
- "KY": "Cayman Islands",
- "CF": "Central African Republic",
- "TD": "Chad",
- "CL": "Chile",
- "CN": "China",
- "CX": "Christmas Island",
- "CC": "Cocos (Keeling) Islands",
- "CO": "Colombia",
- "KM": "Comoros",
- "CG": "Congo",
- "CD": "Congo, The Democratic Republic of the",
- "CK": "Cook Islands",
- "CR": "Costa Rica",
- "CI": "Cote d'Ivoire",
- "HR": "Croatia",
- "CU": "Cuba",
- "CW": "Curacao",
- "CY": "Cyprus",
- "CZ": "Czech Republic",
- "DK": "Denmark",
- "DJ": "Djibouti",
- "DM": "Dominica",
- "DO": "Dominican Republic",
- "EC": "Ecuador",
- "EG": "Egypt",
- "SV": "El Salvador",
- "GQ": "Equatorial Guinea",
- "ER": "Eritrea",
- "EE": "Estonia",
- "ET": "Ethiopia",
- "FK": "Falkland Islands (Malvinas)",
- "FO": "Faroe Islands",
- "FJ": "Fiji",
- "FI": "Finland",
- "FR": "France",
- "GF": "French Guiana",
- "PF": "French Polynesia",
- "TF": "French Southern Territories",
- "GA": "Gabon",
- "GM": "Gambia",
- "GE": "Georgia",
- "DE": "Germany",
- "GH": "Ghana",
- "GI": "Gibraltar",
- "GR": "Greece",
- "GL": "Greenland",
- "GD": "Grenada",
- "GP": "Guadeloupe",
- "GU": "Guam",
- "GT": "Guatemala",
- "GG": "Guernsey",
- "GN": "Guinea",
- "GW": "Guinea-Bissau",
- "GY": "Guyana",
- "HT": "Haiti",
- "HM": "Heard Island and McDonald Islands",
- "VA": "Holy See (Vatican City)",
- "HN": "Honduras",
- "HK": "Hong Kong",
- "HU": "Hungary",
- "IS": "Iceland",
- "IN": "India",
- "ID": "Indonesia",
- "IR": "Iran, Islamic Republic of",
- "IQ": "Iraq",
- "IE": "Ireland",
- "IM": "Isle of Man",
- "IL": "Israel",
- "IT": "Italy",
- "JM": "Jamaica",
- "JP": "Japan",
- "JE": "Jersey",
- "JO": "Jordan",
- "KZ": "Kazakhstan",
- "KE": "Kenya",
- "KI": "Kiribati",
- "KP": "Korea, Democratic People's Republic of",
- "KR": "Korea, Republic of",
- "KW": "Kuwait",
- "KG": "Kyrgyzstan",
- "LA": "Lao People's Democratic Republic",
- "LV": "Latvia",
- "LB": "Lebanon",
- "LS": "Lesotho",
- "LR": "Liberia",
- "LY": "Libyan Arab Jamahiriya",
- "LT": "Lithuania",
- "LU": "Luxembourg",
- "MO": "Macao",
- "MK": "Macedonia, The Former Yugoslav Republic of",
- "MG": "Madagascar",
- "MW": "Malawi",
- "MY": "Malaysia",
- "MV": "Maldives",
- "ML": "Mali",
- "MT": "Malta",
- "MH": "Marshall Islands",
- "MQ": "Martinique",
- "MR": "Mauritania",
- "MU": "Mauritius",
- "YT": "Mayotte",
- "MX": "Mexico",
- "FM": "Micronesia, Federated States of",
- "MD": "Moldova, Republic of",
- "MC": "Monaco",
- "MN": "Mongolia",
- "ME": "Montenegro",
- "MS": "Montserrat",
- "MA": "Morocco",
- "MZ": "Mozambique",
- "MM": "Myanmar",
- "NA": "Namibia",
- "NR": "Nauru",
- "NP": "Nepal",
- "NL": "Netherlands",
- "NC": "New Caledonia",
- "NZ": "New Zealand",
- "NI": "Nicaragua",
- "NE": "Niger",
- "NG": "Nigeria",
- "NU": "Niue",
- "NF": "Norfolk Island",
- "MP": "Northern Mariana Islands",
- "NO": "Norway",
- "OM": "Oman",
- "PK": "Pakistan",
- "PW": "Palau",
- "PS": "Palestinian Territory, Occupied",
- "PA": "Panama",
- "PG": "Papua New Guinea",
- "PY": "Paraguay",
- "PE": "Peru",
- "PH": "Philippines",
- "PN": "Pitcairn",
- "PL": "Poland",
- "PT": "Portugal",
- "PR": "Puerto Rico",
- "QA": "Qatar",
- "RE": "Reunion",
- "RO": "Romania",
- "RU": "Russian Federation",
- "RW": "Rwanda",
- "BL": "Saint Barthelemy",
- "SH": "Saint Helena, Ascension and Tristan da Cunha",
- "KN": "Saint Kitts and Nevis",
- "LC": "Saint Lucia",
- "MF": "Saint Martin (French part)",
- "PM": "Saint Pierre and Miquelon",
- "VC": "Saint Vincent and the Grenadines",
- "WS": "Samoa",
- "SM": "San Marino",
- "ST": "Sao Tome and Principe",
- "SA": "Saudi Arabia",
- "SN": "Senegal",
- "RS": "Serbia",
- "SC": "Seychelles",
- "SL": "Sierra Leone",
- "SG": "Singapore",
- "SX": "Sint Maarten (Dutch part)",
- "SK": "Slovakia",
- "SI": "Slovenia",
- "SB": "Solomon Islands",
- "SO": "Somalia",
- "ZA": "South Africa",
- "GS": "South Georgia and the South Sandwich Islands",
- "SS": "South Sudan",
- "ES": "Spain",
- "LK": "Sri Lanka",
- "SD": "Sudan",
- "SR": "Suriname",
- "SJ": "Svalbard and Jan Mayen",
- "SZ": "Swaziland",
- "SE": "Sweden",
- "CH": "Switzerland",
- "SY": "Syrian Arab Republic",
- "TW": "Taiwan, Province of China",
- "TJ": "Tajikistan",
- "TZ": "Tanzania, United Republic of",
- "TH": "Thailand",
- "TL": "Timor-Leste",
- "TG": "Togo",
- "TK": "Tokelau",
- "TO": "Tonga",
- "TT": "Trinidad and Tobago",
- "TN": "Tunisia",
- "TR": "Turkey",
- "TM": "Turkmenistan",
- "TC": "Turks and Caicos Islands",
- "TV": "Tuvalu",
- "UG": "Uganda",
- "UA": "Ukraine",
- "AE": "United Arab Emirates",
- "GB": "United Kingdom",
- "US": "United States",
- "UM": "United States Minor Outlying Islands",
- "UY": "Uruguay",
- "UZ": "Uzbekistan",
- "VU": "Vanuatu",
- "VE": "Venezuela, Bolivarian Republic of",
- "VN": "Viet Nam",
- "VI": "Virgin Islands, U.S.",
- "WF": "Wallis and Futuna",
- "EH": "Western Sahara",
- "YE": "Yemen",
- "ZM": "Zambia",
- "ZW": "Zimbabwe"
}
Set General Ecommerce Settings
To save the general ecommerce settings with updated values, you need to use this request. (See parameters)
Request Body schema: application/jsonrequired
addressLine1 required | string Address Line 1 of shop. |
addressLine2 required | string Address Line 2 of shop. |
city required | string City of shop. |
state required | string State of shop. |
country required | string Country of shop. |
zipcode required | string Zipcode of shop. |
enableCoupons required | boolean If true, coupons are enabled. |
currency required | string Currency of shop. |
Responses
Request samples
- Payload
{- "addressLine1": "1234 Lorem Ipsum Drive",
- "addressLine2": "omnis",
- "city": "New Jersey",
- "state": "vel",
- "country": "country",
- "zipcode": "08053",
- "enableCoupons": true,
- "currency": "USD"
}
Response samples
- 200
{- "message": "Settings Updated"
}
Set Invoice Settings
Updates the settings for Invoice. Setting needs to be updated is mentioned in parameter. (See Parameter)
Request Body schema: application/jsonrequired
invoiceBusinessName required | string Whether to use default business name or a custom business name. |
businessName | string required_if:invoiceBusinessName,customBusinessName Business name to be used in the invoice. |
taxSettings | string Tax settings of the invoice. |
Responses
Request samples
- Payload
{- "invoiceBusinessName": "customBusinessName",
- "businessName": "Business Name",
- "taxSettings": "inclusive"
}
Response samples
- 200
{- "message": "Order Invoice Settings Updated Successfully"
}
Retrieve Cart Abandonment Details
Fetches the cart abandonment details, including the cart total, status, abandoned at date, completed at date and products in the cart.
Request Body schema: application/jsonrequired
required | object The search parameters, including the abandoned at date range, status and name or email. | ||||||
|
Responses
Request samples
- Payload
{- "search_param": [ ]
}
Response samples
- 200
{- "recoverableOrders": 0,
- "recoveredOrders": 0,
- "recoverableRevenue": "0.00",
- "recoveredRevenue": "0.00",
- "currency": "USD",
- "enableTracking": true,
- "records": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "cartTotal": "100.00",
- "cartTotalNumber": 100,
- "status": "Abandoned",
- "abandonedAt": "2022-01-01 12:00:00",
- "completedAt": null,
- "orderId": null,
- "products": [
- "Product 1",
- "Product 2"
]
}
]
}
Response samples
- 200
[- {
- "id": 1,
- "name": "Standard",
- "description": "Default tax class for general products",
- "showDetails": true,
- "taxRates": [
- {
- "taxClassId": 1,
- "rate_id": 101,
- "name": "US Standard Rate",
- "country": "US",
- "state": [
- "CA",
- "NY"
], - "zipCode": [
- "90001",
- "10001"
], - "rate": 7.25
}, - {
- "taxClassId": 1,
- "rate_id": 102,
- "name": "US Reduced Rate",
- "country": "US",
- "state": [
- "TX"
], - "zipCode": [
- "73301"
], - "rate": 6.5
}
]
}
]
Creates a sales tax configuration.
Request Body schema: application/jsonrequired
pricesIncludeTax required | boolean Whether prices include tax. |
taxCalculationBasedOn required | string Whether to calculate tax based on shipping or billing. |
shippingTaxClass required | integer The tax class for shipping. |
taxDisplaySuffix required | string The suffix to display after tax. |
displayTaxTotals required | boolean Whether to display tax totals. |
Responses
Request samples
- Payload
{- "pricesIncludeTax": true,
- "taxCalculationBasedOn": "\"shipping\"",
- "shippingTaxClass": 1,
- "taxDisplaySuffix": "\"Incl. Tax\"",
- "displayTaxTotals": true
}
Deletes a tax class and its associated tax rates.
If a tax class is associated with a product, it will not be deleted.
If a tax class is associated with an order, it will not be deleted.
If a tax class is associated with an order item, it will not be deleted.
Request Body schema: application/jsonoptional
delete_ids | Array of strings of integers required The ids of the tax classes to delete. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "deletedTaxClasses": [
- 1,
- 3
], - "notDeletedTaxClasses": [
- {
- "order_id": 5001,
- "tax_rate_id": 102,
- "tax_rate_name": "US Reduced Rate"
}, - {
- "order_id": 5002,
- "tax_rate_id": 201,
- "tax_rate_name": "EU Reduced Rate"
}
], - "notDeletedTaxClassesProduct": [
- {
- "product_id": 3001,
- "product_name": "Wireless Mouse",
- "tax_class_id": 2
}, - {
- "product_id": 3002,
- "product_name": "E-book Subscription",
- "tax_class_id": 2
}
]
}
Update a tax rate.
Request Body schema: application/jsonrequired
tax_class_id | integer optional The id of the tax class the tax rate belongs to. |
name required | string The name of the tax rate. |
country required | string The country of the tax rate. |
state | string optional The state of the tax rate. |
zipCode | Array of strings of strings optional The zip codes of the tax rate. |
rate | number optional The rate of the tax rate. |
appliedRateOn | string optional The rate on which the tax rate is applied. |
Responses
Request samples
- Payload
{- "tax_class_id": 1,
- "name": "\"Sales Tax\"",
- "country": "\"United States\"",
- "state": "\"California\"",
- "zipCode": [
- "10001",
- "10002",
- "10003"
], - "rate": 0.2,
- "appliedRateOn": "\"all_states\""
}
Updates the sales tax setting.
Request Body schema: application/jsonrequired
enableSalesTaxes required | boolean Whether to enable sales tax. |
Responses
Request samples
- Payload
{- "enableSalesTaxes": true
}
Response samples
- 200
{- "message": "Settings Updated",
- "type": "success",
- "title": "Success"
}
Creates a new tax class and associated tax rates.
Request Body schema: application/jsonrequired
name required | string The name of the tax class. |
description | string optional The description of the tax class. |
taxRates | Array of strings of objects required The tax rates associated with the tax class. |
Responses
Request samples
- Payload
{- "name": "\"Sales Tax\"",
- "description": "\"Sales tax\"",
- "taxRates": [
- {
- "name": "Sales Tax",
- "country": "United States",
- "state": "California",
- "zipCode": [
- "10001",
- "10002",
- "10003"
], - "rate": 0.2,
- "appliedRateON": "specific_states"
}
]
}
Response samples
- 200
{- "success": true,
- "message": "Tax Class and Rates created successfully.",
- "tax_class_id": 1
}
Delete a tax rate.
If a tax rate is associated with any order, it will not be deleted and the API will return a list of orders which use the tax rate.
Request Body schema: application/jsonrequired
delete_id required | integer The ID of the tax rate to delete. |
Responses
Request samples
- Payload
{- "delete_id": 1
}
Response samples
- 200
{- "status": "failed",
- "message": "Tax rate could not be deleted as it is associated with existing orders.",
- "notDeletedTaxRates": [
- {
- "order_id": 4501,
- "tax_rate_id": 1,
- "tax_rate_name": "US Standard Rate"
}, - {
- "order_id": 4502,
- "tax_rate_id": 1,
- "tax_rate_name": "US Standard Rate"
}
]
}
Loads a tax class by its ID.
Request Body schema: application/jsonrequired
id required | integer The ID of the tax class. |
Responses
Request samples
- Payload
{- "id": 1
}
Response samples
- 200
{- "name": "Standard",
- "description": "Default tax class for general products",
- "taxRates": [
- {
- "id": 101,
- "name": "US Standard Rate",
- "country": "US",
- "state": [
- "CA",
- "NY"
], - "zipCode": [
- "90001",
- "10001"
], - "rate": 7.25,
- "appliedRateON": "2025-01-01T00:00:00Z"
}, - {
- "id": 102,
- "name": "US Reduced Rate",
- "country": "US",
- "state": [
- "TX"
], - "zipCode": [
- "73301"
], - "rate": 6.5,
- "appliedRateON": "2025-03-15T00:00:00Z"
}
]
}
Add a tax rate.
Request Body schema: application/jsonrequired
tax_class_id required | integer The ID of the tax class. |
name required | string The name of the tax rate. |
country required | string The country of the tax rate. |
state | Array of strings of strings optional The state of the tax rate. |
zipCode | Array of strings of strings optional The zip codes of the tax rate. |
rate required | number The rate of the tax rate. |
appliedRateOn required | string The rate on which the tax rate is applied. |
Responses
Request samples
- Payload
{- "tax_class_id": 1,
- "name": "\"Sales Tax\"",
- "country": "\"United States\"",
- "state": [
- "California"
], - "zipCode": [
- "10001",
- "10002",
- "10003"
], - "rate": 0.2,
- "appliedRateOn": "\"all_states\""
}
Toggle Shipping Settings
Updates the shipping settings to enable or disable shipping based on the provided request parameter.
Request Body schema: application/jsonrequired
enableShipping required | boolean Whether to enable or disable shipping. |
Responses
Request samples
- Payload
{- "enableShipping": true
}
Response samples
- 200
{- "message": "Settings Updated",
- "type": "success",
- "title": "Success"
}
Set Shipping Setting
Updates the settings for shipping. Setting needs to be updated is mentioned in parameter. (See Parameter)
Request Body schema: application/jsonrequired
shippingDestination required | string Shipping destination of order. |
Responses
Request samples
- Payload
{- "shippingDestination": "billing_address"
}
Response samples
- 200
{- "message": "Sales Tax Updated Successfully"
}
Retrieves the shipping settings.
Helps in fetching items of the shipping settings, like shipping destination and whether shipping is enabled or disabled.
Responses
Response samples
- 200
{- "shippingDestination": "123 Main Street, Springfield, IL 62704, USA",
- "enableShipping": true
}
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "Shipping Zone 1",
- "country": "India",
- "state": [
- "Delhi",
- "Punjab"
], - "zip_code": [
- "110000",
- "110001"
], - "shippingMethods": "Flat Rate, Free Shipping",
- "shippingMethod": {
- "Flat Rate": {
- "cost": 0,
- "minAmountRequired": 0,
- "taxStatus": "Taxable"
}, - "Free Shipping": {
- "cost": 0,
- "minAmountRequired": 0,
- "taxStatus": "Taxable"
}
}
}
], - "currency": "INR"
}
Retrieve Shipping Zone Methods
Fetches details of a specific shipping zone, including its name, country, state, zip code, applied zone criteria, and associated shipping methods.
query Parameters
id required | integer Example: id=1 The ID of the shipping zone to retrieve. |
Responses
Response samples
- 200
{- "name": "California",
- "country": "US",
- "state": [
- "CA"
], - "zip_code": [
- "94000",
- "95000"
], - "appliedZoneOn": "specific_states",
- "shippingMethods": [
- {
- "id": 1,
- "name": "Flat Rate Shipping",
- "isEnabled": true,
- "shippingMethod": "flat_rate",
- "taxStatus": "taxable",
- "cost": "10.00",
- "minAmountRequired": true,
- "minimumOrderAmount": 50
}
]
}
Creates a new shipping zone.
Request Body schema: application/jsonrequired
name required | string The name of the shipping zone. |
country required | string The country to associate the shipping zone with. |
appliedZoneOn required | string The type of shipping zone. |
zip_code required | string The zip code(s) to associate with the shipping zone. |
state required | Array of strings The state(s) to associate with the shipping zone. |
shippingMethod required | Array of strings The shipping method details. |
Responses
Request samples
- Payload
{- "name": "USA",
- "country": "US",
- "appliedZoneOn": "specific_states",
- "zip_code": "5600556, 5658666, 8474841",
- "state": [
- "AL",
- "AK",
- "AZ",
- "AR",
- "CA"
], - "shippingMethod": [
- {
- "name": "Flat Rate",
- "isEnabled": true,
- "shippingMethod": "flat_rate",
- "taxStatus": "taxable",
- "cost": 10.99,
- "minAmountRequired": 100,
- "minimumOrderAmount": 150
}
]
}
Response samples
- 200
{- "success": true,
- "message": "Shipping Zone Created Successfully",
- "shippingZoneId": 1
}
Updates a shipping zone.
Request Body schema: application/jsonrequired
id required | integer The ID of the shipping zone. |
name required | string The name of the shipping zone. |
country required | string The country of the shipping zone. |
appliedZoneOn required | string The application scope of the zone, either 'zip_code', 'specific_states', or 'all_states'. |
zip_code | string optional Comma-separated zip codes if the zone applies to zip codes. |
state | Array of strings optional States if the zone applies to specific states. |
Responses
Request samples
- Payload
{- "id": 1,
- "name": "US East Zone",
- "country": "US",
- "appliedZoneOn": "zip_code",
- "zip_code": "12345,67890",
- "state": [
- "NY",
- "NJ"
]
}
Response samples
- 200
{- "message": "Shipping Zone Updated Successfully"
}
Delete a shipping zone.
If the shipping zone is associated with one or more shipping methods, the method is not deleted and the response contains a list of orders that prevents the deletion.
Request Body schema: application/jsonrequired
id required | integer The ID of the shipping method to delete. |
Responses
Request samples
- Payload
{- "id": 1
}
Response samples
- 200
{- "status": true,
- "message": "Shipping Zone deleted successfully",
- "notDeletedShippingZone": [ ]
}
Delete a shipping method.
If the shipping method is associated with one or more orders, the method is not deleted and the response contains a list of orders that prevents the deletion.
Request Body schema: application/jsonrequired
id required | integer The ID of the shipping method to delete. |
Responses
Request samples
- Payload
{- "id": 1
}
Response samples
- 200
{- "success": true,
- "message": "Shipping method deleted successfully",
- "notDeletedShippingMethod": [ ]
}
Creates a new shipping method.
Request Body schema: application/jsonrequired
name required | string The title of the shipping method. |
shippingZoneId required | integer The ID of the shipping zone to associate the method with. |
taxStatus required | string The tax status of the shipping method. |
cost required | number The cost of the shipping method. |
isEnabled required | boolean Whether the shipping method should be enabled. |
shippingMethod required | string The type of shipping method. |
minAmountRequired required | number The minimum amount required for free shipping. |
minimumOrderAmount required | number The minimum amount required for free shipping. |
Responses
Request samples
- Payload
{- "name": "Flat Rate",
- "shippingZoneId": 1,
- "taxStatus": "taxable",
- "cost": 10.99,
- "isEnabled": true,
- "shippingMethod": "Flat Rate",
- "minAmountRequired": 100,
- "minimumOrderAmount": 100
}
Response samples
- 200
{- "message": "Shipping method added successfully!"
}
Updates a shipping method.
Request Body schema: application/jsonrequired
name required | string The title of the shipping method. |
shippingZoneId required | integer The ID of the shipping zone to associate the method with. |
taxStatus required | string The tax status of the shipping method. |
cost required | number The cost of the shipping method. |
isEnabled required | boolean Whether the shipping method should be enabled. |
shippingMethod required | string The type of shipping method. |
minAmountRequired required | number The minimum amount required for free shipping. |
minimumOrderAmount required | number The minimum amount required for free shipping. |
Responses
Request samples
- Payload
{- "name": "Flat Rate",
- "shippingZoneId": 1,
- "taxStatus": "taxable",
- "cost": 10.99,
- "isEnabled": true,
- "shippingMethod": "Flat Rate",
- "minAmountRequired": 100,
- "minimumOrderAmount": 100
}
Response samples
- 200
{- "message": "Shipping method updated successfully!"
}
Update the status of a shipping method.
Request Body schema: application/jsonrequired
id required | integer The ID of the shipping method to update. |
isEnabled required | boolean Whether the shipping method should be enabled. |
Responses
Request samples
- Payload
{- "id": 1,
- "isEnabled": true
}
Response samples
- 200
{- "message": "Shipping method status updated successfully"
}
An ECommerce Order is made by the learners when they purchase a product hence course. It helps in managing orders and performing CRUD operation on orders.
Tabular List
Retrieves all the orders in a tabular list format with pagination mode. You can apply filter using search_param via status(order status), user(user email or id), dateRange(date range).
query Parameters
page_size required | string Example: page_size=10 The number of the orders you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"status":["pending"],"user":["1"],"dateRange":["2020-01-01","2020-01-31"]} For searching items based on status, user, date range. |
portalId | integer Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "status": "pending",
- "display_status": "Pending",
- "total": "100.00",
- "isTestOrder": false,
- "customer": "John Doe",
- "created_at": "Jan 01, 2020 12:00 AM",
- "isPortalOrder": false
}
]
}
Download the PDF invoice for a specific order.
This endpoint allows authorized users to download a PDF invoice for a given order.
- General users can download only their own orders.
- Admins, owners, and staff can download any order.
The invoice includes billing/shipping information, tax breakdowns, product details, and more.
query Parameters
orderId required | integer Example: orderId=1023 The ID of the order to download the invoice for. |
Responses
Response samples
- 200
{- "message": "Invoice downloaded successfully.",
- "file": "/downloads/order.pdf"
}
Export Orders
Exports the order details based on the provided filters to an Excel file. The filters can include various criteria such as date range, user, product, etc. The generated file is downloaded as 'orders-test.xlsx'.
query Parameters
filters required | string Example: filters={"dateRange":["2020-07-31","2020-08-30"],"users":[3],"products":[1]} JSON encoded filters to apply for exporting order details. |
Responses
Retrieve Yearly Sales
Retrieves the details of yearly based order sales made from students and returns in tabular form. You can use the response for plotting graphs
query Parameters
year required | string Example: year=2020 Year for which you need sales information. |
Responses
Response samples
- 200
{- "labels": [
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Oct",
- "Nov",
- "Dec"
], - "totalIncome": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "totalOrders": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "currency": {
- "display_name": "United States (US) dollar",
- "symbol": "$"
}, - "sumIncome": 0,
- "sumTotalOrder": 0
}
Retrieves the details of order sales for this month made from students and returns in tabular form.
You can use the response for plotting graphs
query Parameters
selectedMonth required | string Example: selectedMonth=1-2020 Month for which you need sales information(month_number-year). |
Responses
Response samples
- 200
{- "labels": [
- "Jan-01",
- "Jan-02",
- "Jan-03",
- "Jan-04",
- "Jan-05",
- "Jan-06",
- "Jan-07",
- "Jan-08",
- "Jan-09",
- "Jan-10",
- "Jan-11",
- "Jan-12"
], - "totalIncome": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "totalOrders": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "currency": {
- "display_name": "United States (US) dollar",
- "symbol": "$"
}, - "sumIncome": 0,
- "sumTotalOrder": 0
}
Retrieve Product Breakdown Sales
Retrieves the details of product break-down based order sales for a given date range made from students and returns in tabular form. You can use the response for plotting graphs
query Parameters
selectedDateRange required | string Example: selectedDateRange=2020-01-01-2020-01-31 Date range for which you need sales information (start_date-end_date). |
Responses
Response samples
- 200
{- "labels": [
- "Product-1",
- "Product-2"
], - "totalIncome": [
- 0,
- 0
], - "totalOrders": [
- 0,
- 0
], - "currency": {
- "display_name": "United States (US) dollar",
- "symbol": "$"
}, - "sumIncome": 0,
- "sumTotalOrder": 0
}
Order Status Lookup
Retrieves all the possible statuses for an order, such as pending payment, completed, cancelled, refunded, failed, awaiting shipping, and shipped. This is useful for showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "PENDING_PAYMENT",
- "display_value": "Payment Pending"
}, - {
- "db_value": "COMPLETED",
- "display_value": "Completed"
}, - {
- "db_value": "CANCELLED",
- "display_value": "Cancelled"
}, - {
- "db_value": "REFUNDED",
- "display_value": "Refunded"
}, - {
- "db_value": "FAILED",
- "display_value": "Failed"
}, - {
- "db_value": "AWAITING_SHIPPING",
- "display_value": "Awaiting Shipping"
}, - {
- "db_value": "SHIPPED",
- "display_value": "Shipped"
}
]
Delete Order
Deletes one or more orders based on the ids provided in the request.
Request Body schema: application/jsonoptional
delete_ids | required The IDs of the orders to delete. |
Responses
Request samples
- Payload
{- "delete_ids": "[1,2,3]"
}
Response samples
- 200
- 500
{- "message": "1 order(s) deleted."
}
Create Order
Creates a new order. (See parameters) Orders can be used as purchasing products by students.
Request Body schema: application/jsonrequired
orderDate required | date Ordering date. |
status required | string Different status for the orders like pending, completed, failed, etc. Status options: PENDING_PAYMENT, COMPLETED, CANCELLED, REFUNDED or FAILED. |
customerId required | integer Ordered by this user Id. |
billingAddressId | integer Billing address Id. |
shippingAddressId | integer Shipping address Id. |
orderItems required | Array of strings All added item for this order purchased together. |
orderNotes | Array of strings Notes either public or private while creating course(to remeber something, like normal note). |
taxAmount | numeric Tax amount. |
otherFee | numeric Other extra fees. |
Responses
Request samples
- Payload
{- "orderDate": "2020-08-25 0:00:00",
- "status": "COMPLETED",
- "customerId": 3,
- "billingAddressId": 3500,
- "shippingAddressId": 3500,
- "orderItems": [
- "qui"
], - "orderNotes": [
- "eum"
], - "taxAmount": "null",
- "otherFee": "null"
}
Response samples
- 200
{- "id": 1,
- "message": "Order created successfully"
}
Retrieves the details of a specified order.
Helps in fetching order using its ID.
query Parameters
id required | string Example: id=1 Order Id. |
Responses
Response samples
- 200
{- "id": 1,
- "orderDate": "2022-11-16 14:19:45",
- "status": "PENDING_PAYMENT",
- "display_status": "Pending Payment",
- "customerId": 1,
- "billingAddressId": 1,
- "shippingAddressId": 1,
- "taxAmount": 0,
- "otherFee": 0,
- "isTestOrder": false,
- "total": "10.00",
- "sub_total": "10.00",
- "currency": "USD",
- "shopAddress": "123 Main St, Anytown, CA 12345, USA",
- "billingAddress": {
- "id": 1,
- "first_name": "John",
- "last_name": "Doe",
- "company_name": "Company Name",
- "street_address": "123 Main St",
- "apartment_suite_number": "Apt 101",
- "city": "Anytown",
- "state": "CA",
- "zip": "12345",
- "country": "US"
}, - "shippingAddress": {
- "id": 1,
- "first_name": "John",
- "last_name": "Doe",
- "company_name": "Company Name",
- "street_address": "123 Main St",
- "apartment_suite_number": "Apt 101",
- "city": "Anytown",
- "state": "CA",
- "zip": "12345",
- "country": "US"
}, - "coupon_used": null,
- "paymentGatewayId": 1,
- "paymentGatewayEnabled": true,
- "companyName": null,
- "isShippingRequired": false,
- "thankYouUrl": "/thank-you",
- "shippingMethodId": 1,
- "shippingTax": 0,
- "shippingTaxRateId": null,
- "orderNotes": [ ],
- "orderItems": [
- {
- "product_id": 1,
- "product_title": "Product Title",
- "price": "10.00",
- "quantity": 1,
- "total": "10.00",
- "initialProductPrice": "10.00",
- "taxRateId": null,
- "tax": 0,
- "isShippingRequired": false,
- "saleTax": 0
}
], - "taxSettings": {
- "enable_tax": true,
- "tax_base": "base_price",
- "tax_rate": 0
}, - "taxRates": [
- {
- "taxRateId": 1,
- "taxRateName": "Tax Rate Name",
- "totalTax": "0.00"
}
], - "totalTax": "0.00"
}
Update an order's details.
Request Body schema: application/jsonoptional
id | required integer The ID of the order to update. |
orderDate | required date The date of the order. |
status | required string The status of the order. One of [PENDING_PAYMENT, COMPLETED, CANCELLED, REFUNDED, FAILED, AWAITING_SHIPPING, SHIPPED]. |
customerId | required integer The ID of the customer who placed the order. |
billingAddressId | integer The ID of the billing address for the order. |
shippingAddressId | integer The ID of the shipping address for the order. |
orderItems | Array of strings The items in the order. |
taxAmount | string The tax amount for the order. |
otherFee | string The other fee for the order. |
Responses
Request samples
- Payload
{- "id": "dicta",
- "orderDate": "maxime",
- "status": "rerum",
- "customerId": "nemo",
- "billingAddressId": 1,
- "shippingAddressId": 2,
- "orderItems": [
- "asperiores"
], - "taxAmount": "et",
- "otherFee": "mollitia"
}
Response samples
- 200
{- "message": "Order updated successfully"
}
Update Order Status
To update the status of an existing order
path Parameters
id required | string Example: 3 Order ID. |
Request Body schema: application/jsonoptional
status | required New status of the order. Status options: PENDING_PAYMENT, COMPLETED, CANCELLED, REFUNDED, FAILED |
Responses
Request samples
- Payload
{- "status": "sequi"
}
Response samples
- 200
{- "message": "Order updated successfully"
}
Create Order Note
To create a order note, you need to use this request. Returns all order notes left after this note gets created. (See Response)
path Parameters
orderId required | string Example: 3 Order ID. |
Request Body schema: application/jsonoptional
data | required Note content. |
type | required Note type. |
Responses
Request samples
- Payload
{- "data": "New notes",
- "type": "PRIVATE"
}
Response samples
- 200
[- {
- "id": 1,
- "data": "note-1",
- "type": "PRIVATE",
- "created_on": "Aug 11, 2020 05:36 PM"
}
]
Delete Order Note
Deletes an order note specified by its ID. After deletion, returns all remaining order notes for the associated order.
path Parameters
id required | string Example: 2 The ID of the order note to be deleted. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "data": "note-1",
- "type": "PRIVATE",
- "created_on": "Aug 11, 2020 05:36 PM"
}
]
Refund Options Lookup
Provides the available refund options for an order, such as full refund or partial refund. This is useful for displaying choices in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "FULL_REFUND",
- "display_value": "Refund 100%"
}, - {
- "db_value": "PARTIAL_REFUND",
- "display_value": "Refund Partially"
}
]
Order Note Type Lookup
Provides the available note types for an order, such as private or public. This is useful for displaying choices in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "PRIVATE",
- "display_value": "Don’t show to Customer"
}, - {
- "db_value": "PUBLIC",
- "display_value": "Show to customer"
}
]
Refund Types Lookup
Provides the available refund types for an order, such as stripe, braintree, authorize.net and manual. This is useful for displaying choices in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "STRIPE_PAYMENT_GATEWAY",
- "display_value": "Stripe Payment Gateway"
}, - {
- "db_value": "BRAINTREE_PAYMENT_GATEWAY",
- "display_value": "Braintree Payment Gateway"
}, - {
- "db_value": "AUTHORIZENET_PAYMENT_GATEWAY",
- "display_value": "AuthorizeNet Payment Gateway"
}, - {
- "db_value": "MANUALLY",
- "display_value": "Manually"
}
]
Refund an order
This function will allow you to process a refund of an order. The refund amount, refund reason, and refund type must be provided. The refund type can be either FULL_REFUND or PARTIAL_REFUND. The refund amount is required if the refund type is PARTIAL_REFUND, and the refund amount must be greater than 0.
Request Body schema: application/jsonrequired
id required | integer The ID of the order to be refunded. |
refundedVia required | string The method used to process the refund. Options: MANUALLY, STRIPE. |
refundType required | string The type of refund being issued. Options: FULL_REFUND, PARTIAL_REFUND. |
refundAmount required | numeric The amount to refund. This parameter is required only if refundType is PARTIAL_REFUND. |
refundReason required | string The reason for issuing the refund. |
Responses
Request samples
- Payload
{- "id": 123,
- "refundedVia": "MANUALLY",
- "refundType": "FULL_REFUND",
- "refundAmount": "50.00",
- "refundReason": "\"Product not as described\""
}
Response samples
- 200
{- "success": true,
- "message": "Order Refunded Successfully."
}
Get all the refund orders for the given order id
path Parameters
id required | string Example: harum The ID of the order |
Responses
Response samples
- 200
{- "refundedVia": "MANUALLY",
- "displayRefundedVia": "Manually",
- "refundAmount": 100,
- "refundReason": "Product not delivered",
- "refundStatus": "COMPLETED",
- "refundType": "FULL_REFUND",
- "refundDatePaid": "2020-01-01"
}
Endpoints for managing ecommerce Payment Gateways. Payment gateways will be used when your users are purchasing products.
Response samples
- 200
{- "records": [
- {
- "id": 1,
- "name": "Stripe",
- "is_enabled": true,
- "support_recurring_payments": true
}
]
}
Update Status of Payment Gateway
Updates the status of the specified payment gateway.
Request Body schema: application/jsonrequired
id required | integer The id of the payment gateway to be updated. |
status required | boolean The status of the payment gateway. |
Responses
Request samples
- Payload
{- "id": 1,
- "status": true
}
Response samples
- 200
{- "message": "Settings Updated"
}
Update Stripe Settings
Updates the settings for Stripe payment gateway. Setting needs to be updated is mentioned in parameter. (See Parameter)
Request Body schema: application/jsonrequired
gatewayEnabled required | boolean Enable status of stripe gateway. |
paymentTitle | string Payment title for the payments. |
publishableKey | string Publishable key value. Example: |
secretKey | string Secret key value. Example: |
Responses
Request samples
- Payload
{- "gatewayEnabled": true,
- "paymentTitle": "Pay by Credit or Debit Card",
- "publishableKey": "expedita",
- "secretKey": "maiores"
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieve Stripe Settings
Retrieves all the settings for Stripe payment gateway. Helps in maintaining the data and enable status of the Stripe settings.
Responses
Response samples
- 200
{- "gatewayEnabled": false,
- "paymentTitle": "Pay by Credit or Debit Card",
- "publishableKey": "",
- "secretKey": "",
- "production_mode": "no"
}
Update AuthorizeNet Settings
Updates the settings for AuthorizeNet payment gateway. Setting needs to be updated is mentioned in parameter. (See Parameter)
Request Body schema: application/jsonrequired
gatewayEnabled required | boolean Enable status of AuthorizeNet gateway. |
paymentTitle | string Payment title for the payments. |
loginId | string Login Id from AuthorizeNet. Example: |
transactionKey | string Transaction key value. Example: |
clientId | string Client Id from AuthorizeNet. Example: |
Responses
Request samples
- Payload
{- "gatewayEnabled": true,
- "paymentTitle": "Pay via Authorize.NET",
- "loginId": "quasi",
- "transactionKey": "adipisci",
- "clientId": "assumenda"
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieve AuthorizeNet Settings
Retrieves all the settings for AuthorizeNet payment gateway. Helps in mainting the data and enable status of the AuthorizeNet settings.
Responses
Response samples
- 200
{- "gatewayEnabled": false,
- "paymentTitle": "Pay via Authorize.NET",
- "loginId": "commodi",
- "transactionKey": "nihil",
- "clientId": "commodi",
- "production_mode": "yes"
}
Update Braintree Settings
Updates the settings for Braintree payment gateway based on the provided request parameters. The settings include enabling the gateway, setting the payment title, and updating merchant credentials for either live or test mode depending on the production mode status.
Request Body schema: application/jsonrequired
gatewayEnabled required | boolean Enable status of Braintree gateway. |
paymentTitle | string Payment title for the payments. |
merchantId | string Merchant Id value. |
publicKey | string Public Key value. |
privateKey | string Private key value. |
authorizationKey | string Authorization key value. |
Responses
Request samples
- Payload
{- "gatewayEnabled": true,
- "paymentTitle": "Pay by Credit or Debit Card",
- "merchantId": "your_merchant_id",
- "publicKey": "your_public_key",
- "privateKey": "your_private_key",
- "authorizationKey": "your_authorization_key"
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieves all the settings for Braintree payment gateway. Helps in mainting the data and enable status of the Braintree settings.
Responses
Response samples
- 200
{- "gatewayEnabled": false,
- "paymentTitle": "Pay by Credit or Debit Card",
- "merchantId": "",
- "publicKey": "",
- "privateKey": "",
- "authorizationKey": "",
- "production_mode": "yes"
}
Update Paypal Settings
Updates the settings for Paypal payment gateway based on the provided request parameters. The settings include enabling the gateway, setting the payment title, and updating client credentials for either live or test mode depending on the production mode status.
Request Body schema: application/jsonrequired
gatewayEnabled required | boolean Enable status of Braintree gateway. |
paymentTitle | string Payment title for the payments. |
clientId | string Client Id value. |
secretKey | string Secret key value. |
Responses
Request samples
- Payload
{- "gatewayEnabled": true,
- "paymentTitle": "Pay by Credit or Debit Card",
- "clientId": "your_client_id",
- "secretKey": "your_secret_key"
}
Response samples
- 200
{- "message": "Settings Updated"
}
Update Invoice Settings
Updates the settings for Invoice payment gateway. Setting needs to be updated is mentioned in parameter. (See Parameter)
Request Body schema: application/jsonrequired
gatewayEnabled required | boolean Enable status of Invoice gateway. |
paymentTitle | string Payment title for the payments. |
paymentInstructions | string Payment instructions for the payments. |
Responses
Request samples
- Payload
{- "gatewayEnabled": true,
- "paymentTitle": "Pay by Invoice",
- "paymentInstructions": "Instructions for payment"
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieve Invoice Settings
Retrieves all the settings for the Invoice payment gateway. This includes the enable status, payment title, and payment instructions. Useful for maintaining and displaying the current configuration of the Invoice gateway.
Responses
Response samples
- 200
{- "gatewayEnabled": false,
- "paymentTitle": "Pay by Invoice",
- "paymentInstructions": "Instructions for payment"
}
Update Cashnet Settings
Updates the settings for Cashnet payment gateway. Setting needs to be updated is mentioned in parameter. (See Parameter)
Request Body schema: application/jsonrequired
gatewayEnabled required | boolean Enable status of Cashnet gateway. |
paymentTitle | string Payment title for the payments. |
merchantId | string Merchant Id value. Example: |
apiKey | string API Key value. Example: |
apiEnvUrl | string API Environment URL value. |
Responses
Request samples
- Payload
{- "gatewayEnabled": true,
- "paymentTitle": "Pay by Credit or Debit Card",
- "merchantId": "explicabo",
- "apiKey": "quo",
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieve Cashnet Settings
Retrieves all the settings for Cashnet payment gateway. This includes the enable status, payment title, merchant id, api key, api environment url and production mode status. Useful for maintaining and displaying the current configuration of the Cashnet gateway.
Responses
Response samples
- 200
{- "gatewayEnabled": false,
- "paymentTitle": "Pay by Credit or Debit Card",
- "merchantId": "your_merchant_code",
- "apiKey": "your_api_key",
- "production_mode": "yes"
}
A Product will be reached to your learners. Course has to be attached to products so that learners can purchase your courses. Helps in performing CRUD operations for and to products.
Retrieve Product Catalog
Retrieves the details for the product catalogs in paginated form to show this to students as course catalog so that they can purchase the product hence course.
query Parameters
page_size required | string Example: page_size=50 The amount of records to return per page. |
page_number required | string Example: page_number=1 The page number of the records to return. |
order_by required | string Example: order_by={"colName":"created_at", "direction": "desc"} The order by parameters. |
search_param required | string Example: search_param={"title":"", "ids":"", "selectedPrice":["Paid", "Free"], "selectedProductCategories":[], "selectedCourseType":[]} The search parameters. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "title": "Product-1",
- "slug": "product-1",
- "displayPrice": 3000,
- "status": "IN-STOCK",
- "label": "SIMPLE",
- "display_label": "Simple",
- "canBePurchased": true,
- "seo_description": "This is the description of product 1.",
- "price": 3000,
- "type": "SIMPLE",
- "price_frequency": "MONTHLY",
- "webinarsCount": 1,
- "modulesCount": 2,
- "averageRating": 4.5
}
]
}
Retrieves the product details.
Fetches the product details, including the title, slug, description, featured image url, regular price, sale price, status, expiry date, dynamic pricing, SEO title, SEO description, display price, can be purchased, label, display label, subscription price, price frequency, free trial value, free trial frequency, subscription expire after, membership id, content access type, catalog rank, global product setting color, sale tax, tax class id, average rating, min purchase quantity, webinars count, modules count, dynamic prices, categories, related products, courses, course categories, instructor led course, learning paths, learning path categories, category courses and category learning paths.
query Parameters
id required | string Example: id=provident The ID of the product to retrieve. |
Responses
Response samples
- 200
{- "id": 1,
- "title": "Product-1",
- "slug": "product-1",
- "description": "This is the description of product 1.",
- "regular_price": 3500,
- "type": "SIMPLE",
- "sale_price": 3000,
- "saleStartDate": "2021-01-01 12:00:00",
- "saleEndDate": "2021-01-15 12:00:00",
- "status": "IN-STOCK",
- "expiry_date": "2021-01-31 12:00:00",
- "dynamic_pricing": true,
- "seo_title": "Product-1",
- "seo_description": "This is the description of product 1.",
- "displayPrice": 3000,
- "canBePurchased": true,
- "label": "SIMPLE",
- "display_label": "Simple",
- "subscription_price": 3000,
- "price_frequency": "MONTHLY",
- "free_trial_value": 1,
- "free_trial_frequency": "MONTHLY",
- "subscription_expire_after": "2021-01-31 12:00:00",
- "membership_id": 1,
- "contentAccessType": "PHYSICAL",
- "catalog_rank": 1,
- "globalProductSettingColor": {
- "product_price_color": {
- "backgroundColor": "#fff"
}
}, - "saleTax": 0,
- "taxClassId": 1,
- "averageRating": 4.5,
- "minPurchaseQuantity": 1,
- "webinarsCount": 1,
- "modulesCount": 2,
- "dynamicPrices": [
- {
- "minQty": 1,
- "maxQty": 10,
- "perPrice": 3000
}
], - "categories": [
- 1,
- 2
], - "relatedProducts": [
- 1,
- 2
], - "courses": [
- {
- "value": 1,
- "label": "Course-1"
}, - {
- "value": 2,
- "label": "Course-2"
}
], - "courseCategories": [
- 1,
- 2
], - "instructorLedCourse": [
- {
- "value": 1,
- "label": "Instructor Led Course-1"
}
], - "learningPaths": [
- {
- "value": 1,
- "label": "Learning Path-1",
- "learningPathCourses": [
- {
- "id": 1,
- "name": "Course-1"
}, - {
- "id": 2,
- "name": "Course-2"
}
]
}
], - "categoryCourses": [
- {
- "value": 3,
- "label": "Course-3"
}
], - "categoryLearningPaths": [
- {
- "value": 2,
- "label": "Learning Path-2",
- "learningPathCourses": [
- {
- "id": 3,
- "name": "Course-3"
}, - {
- "id": 4,
- "name": "Course-4"
}
]
}
]
}
Update an existing product.
This endpoint allows updating a product's details, including its pricing, categories, related products, courses, and other properties. It supports dynamic pricing and validation for product data such as description, sale prices, SEO, and tax settings.
Request Body schema: application/jsonrequired
id required | integer The ID of the product to be updated. |
title required | string The title of the product. |
description required | string The description of the product. |
featuredImageUrl | string The URL for the product's featured image. |
regular_price | numeric The regular price of the product. |
sale_price | numeric The sale price of the product. |
saleStartDate | string The start date of the sale in |
saleEndDate | string The end date of the sale in |
status required | string The status of the product. Options: "COMING-SOON", "IN-STOCK", "OUT-OF-STOCK". |
type required | string The type of the product. Options: "SIMPLE", "DOWNLOADABLE", "SUBSCRIPTION". |
categories | Array of strings The IDs of the categories associated with the product. |
courses | Array of strings The courses associated with the product. |
relatedProducts | Array of strings The related product IDs. |
dynamic_pricing | boolean Whether dynamic pricing is enabled for the product. |
dynamicPrices | Array of strings An array of dynamic pricing rules. |
seo_title | string The SEO title for the product. |
seo_description | string The SEO description for the product. |
membership_id | integer The ID of the membership associated with the product. |
subscription_price | numeric The subscription price for subscription products. |
price_frequency | string The frequency of subscription payments. Options: "DAILY", "WEEKLY", "MONTHLY", "YEARLY". |
free_trial_value | numeric The free trial value for subscription products. |
free_trial_frequency | string The frequency of the free trial. Options: "DAYS", "WEEKS", "MONTHS", "YEARS". |
minPurchaseQuantity | numeric The minimum purchase quantity for the product. |
saleTax | string The tax rate for the sale. |
taxClassId | integer The ID of the tax class associated with the product. |
Responses
Request samples
- Payload
{- "id": 1,
- "title": "\"New Course Title\"",
- "description": "\"A detailed description of the course.\"",
- "featuredImageUrl": "\"https://example.com/image.jpg\"",
- "regular_price": "100.00",
- "sale_price": "80.00",
- "saleStartDate": "\"2025-04-01 00:00:00\"",
- "saleEndDate": "\"2025-04-10 00:00:00\"",
- "status": "\"IN-STOCK\"",
- "type": "\"SIMPLE\"",
- "categories": [
- 1,
- 2,
- 3
], - "courses": [
- {
- "value": 1
}, - {
- "value": 2
}
], - "relatedProducts": [
- 101,
- 102
], - "dynamic_pricing": true,
- "dynamicPrices": [
- {
- "minQty": 1,
- "perPrice": 90
}
], - "seo_title": "\"Product SEO Title\"",
- "seo_description": "\"This is a detailed product description for SEO.\"",
- "membership_id": 10,
- "subscription_price": "20.00",
- "price_frequency": "\"MONTHLY\"",
- "free_trial_value": "7",
- "free_trial_frequency": "\"DAYS\"",
- "minPurchaseQuantity": "1",
- "saleTax": "\"10%\"",
- "taxClassId": 1
}
Response samples
- 200
- 400
- 404
{- "message": "Product updated successfully"
}
Get webinars for a product
Returns all webinars associated with the courses related to the product with the given ID. Optionally accepts a search parameter which can be used to filter the results by date range and location.
query Parameters
product_id required | string Example: product_id=reprehenderit The ID of the product. |
search_param | string Example: search_param=cum optional A JSON object with two properties: 'dates' and 'location'. 'dates' should be an array of two dates in the format 'Y-m-d'. 'location' should be the ID of a location. |
Responses
Response samples
- 200
{- "Course Name 1": [
- {
- "id": 1,
- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "startTime": "09:00:00",
- "endTime": "17:00:00",
- "location_id": 1,
- "location": "Location 1"
}, - {
- "id": 2,
- "startDate": "2020-01-15",
- "endDate": "2020-01-15",
- "startTime": "09:00:00",
- "endTime": "17:00:00",
- "location_id": 2,
- "location": "Location 2"
}
], - "Course Name 2": [ ]
}
Search Products
Retrieves the products with the search_term in the product name or in the name of the courses or learning paths associated with the product. Returns the products in a select list format. Helps while showing products names in form elements like dropdown. You can apply filters using search_term parameter. (See Response)
query Parameters
search_term required | string Example: search_term=totam The name or substring of the product name to search for that product. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Product-1",
- "value": "/product/product-1"
}, - {
- "id": 2,
- "name": "Product-2",
- "value": "/product/product-2"
}
]
Product Type Lookup
Retrieves the types of the product that the platform offers. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "SIMPLE",
- "display_value": "Simple"
}, - {
- "db_value": "SUBSCRIPTION",
- "display_value": "Subscription"
}
]
Update Slug
Updates the slug of the product identified by 'id' with the new slug provided. The new slug is checked for uniqueness and if it already exists, a new slug is generated by appending a counter to the slug. The updated slug is then saved to the product. Returns the updated slug.
path Parameters
id required | string Example: 3 ID of the product to be updated. |
query Parameters
slug required | string Example: slug="about-us" The new slug of the product. |
Responses
Response samples
- 200
"about-us-1"
Product Status Lookup
Retrieves the statuses for a product the platform offers. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "COMING-SOON",
- "display_value": "Coming Soon"
}, - {
- "db_value": "IN-STOCK",
- "display_value": "In Stock"
}, - {
- "db_value": "OUT-OF-STOCK",
- "display_value": "Out of Stock"
}
]
Tabular List
Retrieves all the products in a tabular list format in paginated mode. You can apply filter using search_param via title, productStatus(in-stock, out-of-stock, etc) and productCategoryIds.
query Parameters
page_size required | string Example: page_size=10 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"title": "", "productStatus": ["IN-STOCK"], "productCategoryIds": []} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "title": "Product 1",
- "regular_price": 3500,
- "type": "SIMPLE",
- "status": "IN-STOCK",
- "created_at": "2021-01-01 12:00:00",
- "catalog_rank": 1
}
]
}
Product Lookup
Retrieves all the products in a select list format. Helps while showing products names in form elements like dropdown. You can apply filters using search_term parameter. (See Response)
query Parameters
search_term required | string Example: search_term=molestiae The name or substring of the product name to search for that product. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "title": "Product-1",
- "isShippingRequired": true
}, - {
- "id": 2,
- "title": "Product-2",
- "isShippingRequired": false
}
]
Create a new product.
Request Body schema: application/jsonrequired
title | required The title of the product. |
description | required The description of the product. |
featuredImageUrl | string The featured image of the product. |
regular_price required | numeric The regular price of the product. |
type required | string The type of the product. Type options: SIMPLE, DOWNLOADABLE or SUBSCRIPTION. |
sale_price | numeric The sale price of the product. |
saleStartDate | date The sale start date of the product. |
saleEndDate | date The sale end date of the product. |
status required | string The status of the product. Status options: COMING-SOON, IN-STOCK or OUT-OF-STOCK. |
expiry | date The expiry date of the product. |
categories | Array of strings The categories of the product. |
courses | Array of strings The courses of the product. |
courseCategories | Array of strings The course categories of the product. |
learningPaths | Array of strings The learning paths of the product. |
learningPathCategories | Array of strings The learning path categories of the product. |
membership_id | integer The membership id of the product. |
seo_title | string The seo title of the product. |
seo_description | string The seo description of the product. |
subscription_price required | numeric The subscription price of the product for the product type Subscription. |
price_frequency required | string The price frequency to be charged for Subscription product. Price Frequency Options: DAILY, WEEKLY, MONTHLY or YEARLY. |
free_trial_value | numeric The free trail for the Subscription product. |
free_trial_frequency | string The free trail frequency for the subscription product in which the product will be available for free. Free Trail Frequency Options: DAYS, WEEKS, MONTHS, YEARS. |
subscription_expire_after | numeric The subscription expire after for the Subscription product. |
dynamic_pricing | boolean The dynamic pricing for the product. |
taxClassId | integer The tax class id of the product. |
minPurchaseQuantity | numeric The minimum purchase quantity of the product. |
catalog_rank | numeric The catalog rank of the product. |
saleTax | string The sale tax of the product. |
shippingClass | integer The shipping class of the product. |
Responses
Request samples
- Payload
{- "title": "Product-1",
- "description": "Course 1 product",
- "regular_price": "3500",
- "type": "SIMPLE",
- "sale_price": "3001",
- "saleStartDate": "2020-12-01 0:00:00",
- "saleEndDate": "2020-12-31 0:00:00",
- "status": "IN-STOCK",
- "expiry": "2020-10-29 0:00:00",
- "categories": [ ],
- "courses": [
- "aspernatur"
], - "courseCategories": [ ],
- "learningPaths": [
- "omnis"
], - "learningPathCategories": [ ],
- "membership_id": 1,
- "seo_title": "awesome-product",
- "seo_description": "includes many good courses",
- "subscription_price": "3500",
- "price_frequency": "WEEKLY",
- "free_trial_value": "5",
- "free_trial_frequency": "aut",
- "subscription_expire_after": "5",
- "dynamic_pricing": true,
- "taxClassId": 1,
- "minPurchaseQuantity": "2",
- "catalog_rank": "1",
- "saleTax": "taxable",
- "shippingClass": 1
}
Response samples
- 201
{- "id": 1,
- "message": "Product created successfully"
}
Delete product
To delete a product, you need to use this request. Returns number of product deleted(if multiple selected) and also not deleted. (See Response)
Request Body schema: application/jsonrequired
delete_ids required | Array of strings All product IDs which needs to be deleted. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "2 product(s) deleted 1 product(s) not deleted as it has active subscription. Please remove the subscription and try again.",
- "deletedProductsCount": 2,
- "unDeletedProductsCount": 1,
- "unDeletedProducts": [
- {
- "id": 5,
- "name": "Product-5"
}
]
}
Quick Edit
Updates the details in bulk for a specified product. Parameters is provided which needs to be updated. (See Parameters)
Request Body schema: application/jsonrequired
product_ids required | Array of strings All product IDs which needs to be updated. |
outofstock required | boolean Whether product is out of stock. |
Responses
Request samples
- Payload
{- "product_ids": [
- 3,
- 2
], - "outofstock": true
}
Response samples
- 200
{- "message": "Products updated Successfully"
}
Product Free Trial Interval Lookup For Products
Retrieves how often the amount will be deducted in subscription of the product, the platform offers. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "DAYS",
- "display_value": "Days"
}, - {
- "db_value": "WEEKS",
- "display_value": "Weeks"
}, - {
- "db_value": "MONTHS",
- "display_value": "Months"
}, - {
- "db_value": "YEARS",
- "display_value": "Years"
}
]
Subscription Price Frequency Lookup For Products
Retrieves how often the amount will be deducted in subscription of the product, the platform offers. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "DAILY",
- "display_value": "Per day"
}, - {
- "db_value": "WEEKLY",
- "display_value": "Per week"
}, - {
- "db_value": "MONTHLY",
- "display_value": "Per month"
}, - {
- "db_value": "YEARLY",
- "display_value": "Per year"
}
]
Clone Product
Clone the product with the given ID and copies all the related mappings with the product
Request Body schema: application/jsonoptional
productId | required The id of the product to be cloned. |
Responses
Request samples
- Payload
{- "productId": "autem"
}
Response samples
- 200
{- "message": "Product Cloned Successfully"
}
A Flash Cards Module is a lesson module used as course content. Helps to perform CRUD operation to and for Flash Cards modules.
Flash Cards Modules Tabular List
Returns all the flash cards modules in a tabular list format in paginated mode. You can apply filter using search_param via moduleTypes(module type), associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"moduleTypes": ["flashcards"],associatedCourse":"","moduleName":""} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 14,
- "recordsFiltered": 3,
- "records": [
- {
- "id": 14,
- "name": "Lesson-1",
- "slug": "lesson-1",
- "type": "flashcards",
- "icon": "<i class=\"el-icon-collection\"></i>",
- "author": "Aom Staff",
- "created_at": "Aug 11, 2020 06:45 AM"
}, - {
- "id": 5,
- "name": "The Fundamentals of LMS",
- "slug": "the-fundamentals-of-lms",
- "type": "flashcards",
- "icon": "<i class=\"el-icon-collection\"></i>",
- "author": "Aom Staff",
- "created_at": "Aug 10, 2020 04:59 PM"
}, - {
- "id": 1,
- "name": "test",
- "slug": "test",
- "type": "flashcards",
- "icon": "<i class=\"el-icon-collection\"></i>",
- "author": "Aom Staff",
- "created_at": "Aug 03, 2020 09:56 AM"
}
]
}
Create FlashCard Module
To create a flashcard module, you need to use this request. (See parameters) Created flashcard modules can be used in the course as course content/lesson.
Returns : id of the flashcard module created and successfull message
Request Body schema: application/jsonrequired
name required | string Name of the flashcard module. |
content required | string Content for the flashcard modules that students will see. |
orientation required | string Orientation of the flashcard module. |
trackCompletion required | boolean If true, the module is being tracked(whether its finished or not) in course player. |
categories | Array of strings The module category to which the flashcard belong to. |
estimatedCompletion | integer The estimated completion time for the flashcard module. |
estimationCompletedUnit | string The unit of the estimated completion time. |
Responses
Request samples
- Payload
{- "name": "The Fundamentals of LMS",
- "content": "<p>This is the short content here</p>",
- "orientation": "portrait",
- "trackCompletion": true,
- "categories": [
- 1,
- 2,
- 3
], - "estimatedCompletion": 2,
- "estimationCompletedUnit": "minute"
}
Response samples
- 200
{- "id": 9,
- "message": "Module saved successfully"
}
Retrieve Detailed Flashcard Module Info
Retrieves details of flashcard module in depth. Returns related fields value. (See Response)
query Parameters
id required | string Example: id=6 ID of the flashcard module. |
Responses
Response samples
- 200
{- "id": 6,
- "name": "Introduction to Web Development",
- "slug": "intro-to-web-development",
- "content": "<p>This course covers the basics of HTML, CSS, and JavaScript for building modern websites.</p>",
- "trackCompletion": true,
- "estimatedCompletion": "30",
- "estimationCompletedUnit": "hours",
- "orientation": "Online",
- "categories": [ ],
- "courses": [ ]
}
Update Flash Card Module
Updates the details of the specified flash card module. (See parameters) Flash card modules can be used in the course as course content/lesson.
Request Body schema: application/jsonrequired
name required | string Name of the flash card module. |
content | Array of strings Content for the flash card module. |
orientation required | string Orientation of the flash card module. |
trackCompletion | boolean If true, the module is being tracked (whether it's finished or not) in course player. |
categories | Array of strings Categories to which the flash card module belongs. |
estimatedCompletion | nullable Estimated time to complete the module. |
estimationCompletedUnit | nullable Unit of the estimated completion time. |
Responses
Request samples
- Payload
{- "name": "Basic Concepts",
- "content": [
- "Flashcard content"
], - "orientation": "horizontal",
- "trackCompletion": true,
- "categories": [
- 1,
- 2,
- 3
], - "estimatedCompletion": "30",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "message": "Module updated successfully"
}
Retrieve Detailed Flashcard Module Info
Retrieves details of flashcard module in depth as well as different modules details that are being used as course content for the same course the current flashcard module is attached to. Returns related fields value. (See Response)
query Parameters
registrationId required | string Example: registrationId=1 ID of the course Registration for which this module is attached to. |
moduleId required | string Example: moduleId=6 ID of the flashcard module. |
Responses
Response samples
- 200
{- "name": "Web Development Basics",
- "slug": "web-development-basics",
- "content": "<p>This module introduces the core concepts of modern web development, including HTML, CSS, and responsive design.</p>",
- "courseName": "Full Stack Web Development",
- "trackCompletion": true,
- "min_time_spent": 0,
- "otherModules": [
- {
- "module_id": 1,
- "name": "Introduction to HTML",
- "slug": "introduction-to-html",
- "type": "text",
- "icon": "<i class=\"el-icon-tickets\"></i>",
- "is_locked": false,
- "lock_reason": "",
- "is_dripped": false,
- "drip_message": "",
- "is_current": false,
- "status_row_id": 1,
- "status": "Completed",
- "started_on": "2020-08-03T10:02:33.000000Z",
- "completed_on": "2020-08-03T10:02:41.000000Z",
- "last_accessed_on": "1 week ago",
- "total_time_spent": {
- "hours": 0,
- "minutes": 0,
- "seconds": 6,
- "totalSeconds": 6
}, - "completion_percentage": 100,
- "no_of_times_accessed": 1
}, - {
- "module_id": 4,
- "name": "CSS Assignment",
- "slug": "css-assignment",
- "type": "assignment",
- "icon": "<i class=\"el-icon-edit-outline\"></i>",
- "is_locked": false,
- "lock_reason": "",
- "is_dripped": false,
- "drip_message": "",
- "is_current": true,
- "status_row_id": -1,
- "status": "Not Started",
- "started_on": "",
- "completed_on": "",
- "last_accessed_on": "Never",
- "total_time_spent": "",
- "points_awarded": "",
- "completion_percentage": 0,
- "no_of_times_accessed": 0
}
], - "launchCheck": {
- "canbeLaunched": true,
- "errTitle": "",
- "errDesc": ""
}, - "prevSlug": "",
- "nextSlug": "css-assignment",
- "status": "Completed",
- "timeSpent": 6,
- "statusRowId": 1
}
Update the progress of a flashcard module.
query Parameters
portalId required | string Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
statusRowId required | string Example: statusRowId=6 ID of the ModuleStatus Row belongs to current flashcard module. |
cardIndex required | string Example: cardIndex=1 The current index of the card being accessed. |
totalCards required | string Example: totalCards=10 The total number of cards in the current module. |
Responses
Response samples
- 200
{- "status": "Completed",
- "message": "Module completed successfully",
- "course_newly_completed": false
}
Retrieve Detailed Flashcard Module Info as Membership content
Retrieves details of flashcard module in depth for the same membership the current flashcard module is attached to. Returns related fields value. (See Response)
query Parameters
moduleId required | string Example: moduleId=6 ID of the flashcard module. |
Responses
Response samples
- 200
{- "name": "JavaScript Flashcards",
- "slug": "javascript-flashcards",
- "content": "<p>Practice key JavaScript concepts through interactive flashcards.</p>",
- "orientation": "landscape",
- "trackCompletion": true,
- "timeSpent": null
}
Endpoints for Front end Marketing Pages. Send automated notifications to external system when some action happens.
Webhook Event Lookup
Retrieves all the events for the webhook actions. Helps showing options in dropdowns elements
Responses
Response samples
- 200
[- {
- "db_value": "new_account_created",
- "display_value": "New Account Created"
}, - {
- "db_value": "course_enrolled",
- "display_value": "Enrolled in a course"
}, - {
- "db_value": "quiz_submission",
- "display_value": "Submitted a Quiz"
}, - {
- "db_value": "assigment_submission",
- "display_value": "Submitted an assignment"
}, - {
- "db_value": "assigment_evaluation",
- "display_value": "Evaluated an assignment"
}, - {
- "db_value": "assigment_rejection",
- "display_value": "Rejected an assignment"
}, - {
- "db_value": "discussion_submission",
- "display_value": "Submitted a discussion"
}, - {
- "db_value": "new_order",
- "display_value": "New Order Placed"
}, - {
- "db_value": "failed_order",
- "display_value": "Order Failed"
}, - {
- "db_value": "refunded_order",
- "display_value": "Order Refunded"
}, - {
- "db_value": "pending_payment",
- "display_value": "Payment Pending"
}, - {
- "db_value": "new_announcement",
- "display_value": "New Announcement"
}, - {
- "db_value": "course_completed",
- "display_value": "Course Completed"
}
]
Create Webhook
Creates a webhook using parameters mentioned. (See parameters) Creates the webhook details using webhook ID.
path Parameters
id required | string Example: 3 ID of the webhook. |
Request Body schema: application/jsonrequired
url required | string Endpoint to send the data. |
description | string Description of the event that is being created. |
eventList required | string Event from the option list. Event options: new_account_created, course_enrolled, quiz_submission, assigment_submission, assigment_evaluation, assigment_rejection, discussion_submission, new_order, failed_order, refunded_order, pending_payment, new_announcement or course_completed. |
Responses
Request samples
- Payload
{- "description": "It will use to collect new user data.",
- "eventList": "New Account Created"
}
Response samples
- 200
{- "id": "4",
- "message": "Webhook saved successfully"
}
Webhook Actions Tabular List
Returns all the Webhook created in a tabular list format. You can apply filter using search_param.
query Parameters
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | integer Example: search_param=0 For searching items based on Events. |
Responses
Response samples
- 200
{- "recordsTotal": 4,
- "recordsFiltered": 3,
- "records": [
- {
- "id": 3,
- "events": "New Account Created",
- "author": "Client Admin",
- "created_at": "Aug 10, 2020 12:43 PM"
}, - {
- "id": 4,
- "events": "Enrolled in a course",
- "author": "Client Admin",
- "created_at": "Aug 10, 2020 12:43 PM"
}
]
}
Update the specified webhook in storage.
path Parameters
id required | string Example: 3 ID of the webhook. |
Request Body schema: application/jsonrequired
url required | string Endpoint to send the data. |
description | string Description of the event that is being created. |
eventList required | string Event from the option list. Event options: new_account_created, course_enrolled, quiz_submission, assigment_submission, assigment_evaluation, assigment_rejection, discussion_submission, new_order, failed_order, refunded_order, pending_payment, new_announcement or course_completed. |
Responses
Request samples
- Payload
{- "description": "It will use to collect new user data.",
- "eventList": "New Account Created"
}
Response samples
- 200
{- "id": "4",
- "message": "Webhook updated successfully"
}
Webhook Log Tabular List
Returns all the webhook log in a tabular list format in paginated mode.
path Parameters
id required | string Example: 3 ID of the webhook. |
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | integer Example: search_param=0 For searching items based on columns provided in JSON format. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "event": "new_account_created",
- "data": [ ],
- "status": "success",
- "errorMessage": "",
- "created_at": "Aug 03, 2020 09:56 AM",
- "showData": false
}
]
}
Response samples
- 200
{- "lists": [
- {
- "id": "a1b2c3d4e5",
- "name": "Weekly Newsletter",
- "contact": {
- "company": "Acme Corp",
- "address1": "123 Main Street",
- "address2": "Suite 400",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "country": "US",
- "phone": "+1-555-123-4567"
}, - "permission_reminder": "You are receiving this email because you signed up on our website.",
- "use_archive_bar": true,
- "campaign_defaults": {
- "from_name": "Marketing Team",
- "subject": "Your Weekly Update from Acme Corp",
- "language": "en"
}, - "email_type_option": true,
- "visibility": "pub",
- "double_optin": true,
- "marketing_permissions": true,
- "modules": [
- "ecommerce",
- "social_media"
], - "stats": {
- "member_count": 2500,
- "unsubscribe_count": 45,
- "cleaned_count": 12,
- "member_count_since_send": 30,
- "unsubscribe_count_since_send": 3,
- "cleaned_count_since_send": 1,
- "campaign_count": 52,
- "campaign_last_sent": "2024-04-10T10:00:00+00:00",
- "merge_field_count": 5,
- "avg_sub_rate": 2.5,
- "avg_unsub_rate": 0.3,
- "target_sub_rate": 3,
- "open_rate": 36.5,
- "click_rate": 8.7
}, - "date_created": "2023-01-15T09:30:00+00:00"
}
]
}
Mailchimp Actions Tabular List
Returns all the Mailchimp Actions created in a tabular list format. You can apply filter using search_param.
query Parameters
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
Responses
Response samples
- 200
{- "recordsTotal": 4,
- "recordsFiltered": 3,
- "records": [
- {
- "id": 3,
- "list_name": "AOM",
- "event": "New Account Created",
- "author": "Client Admin",
- "created_at": "Aug 10, 2020 12:43 PM"
}, - {
- "id": 4,
- "list_name": "AOM",
- "event": "Enrolled in a course",
- "author": "Client Admin",
- "created_at": "Aug 10, 2020 12:43 PM"
}
]
}
Mailchimp Log Tabular List
Returns all the Mailchimp log in a tabular list format in paginated mode.
path Parameters
id required | string Example: 50 ID of the Mailchimp action. |
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"name":""} For searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "event": "new_account_created",
- "data": [ ],
- "status": "success",
- "errorMessage": "",
- "created_at": "Aug 03, 2020 09:56 AM",
- "showData": false
}
]
}
Response samples
- 200
{- "recordsTotal": 10,
- "records": [
- {
- "id": 1,
- "name": "Test Gamification Event",
- "triggerValue": 100,
- "badgeTitle": "Test Badge",
- "type": "total_money_spent",
- "display_type": "Total money spent"
}
]
}
Create a new gamification event.
Creates a new gamification event with the given name, type, selected badge ID, and trigger value.
Request Body schema: application/jsonoptional
name | required string The name of the new event. |
eventType | required string The type of the new event. |
selectedBadgeId | required The ID of the selected badge. |
triggerValue | required integer The trigger value for the new event. |
Responses
Request samples
- Payload
{- "name": "\"New Event\"",
- "eventType": "\"total_money_spent\"",
- "selectedBadgeId": "123",
- "triggerValue": "5.6"
}
Response samples
- 200
{- "id": 4,
- "message": "Event created successfully"
}
Retrieve a specific gamification event.
Fetches the details of a gamification event by its ID, including the event name, type, selected badge ID, and trigger value.
query Parameters
id required | string Example: id=1 integer The ID of the event to be retrieved. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Event 1",
- "eventType": "total_module_completed",
- "selectedBadgeId": 123,
- "triggerValue": 5.6
}
Update a specific gamification event.
Updates the details of a gamification event by its ID, including the event name, type, selected badge ID, and trigger value.
query Parameters
name required | string Example: name="Event 1" string The name of the Event. |
eventType required | string Example: eventType="total_module_completed" string The type of the Event. |
selectedBadgeId required | string Example: selectedBadgeId=123 The ID of the selected badge. |
triggerValue required | string Example: triggerValue=5.6 interger The trigger value for the event. |
Responses
Response samples
- 200
{- "id": 1,
- "message": "Event updated successfully"
}
Delete a specific gamification event.
Deletes a gamification event by its ID, but only if no badge has been assigned to a user for that event. If a badge has been assigned, the event cannot be deleted.
path Parameters
id required | string Example: 1 integer The ID of the event to be deleted. |
Responses
Response samples
- 200
{- "message": "Event cannot be deleted as a badge has been assigned to user for this event"
}
General Settings helps in managing general platform settings like site name, timezone, emails etc
Get General Email Settings
Retrieves the details of the general email settings.
query Parameters
portalId required | integer Example: portalId=1 Portal ID. |
Responses
Response samples
- 200
{- "fromName": "Academy of Mine",
- "templateDesign": "default",
- "headerLogo": "Default",
- "customHeaderLogoURL": null,
- "headerBgColor": "#6b15b6",
- "bgColor": "#ffffff",
- "bodyBgColor": "#f6f9fc",
- "bodyTextColor": "#1b1e24"
}
Update General Email Settings
To update the general email settings with updated values, you need to use this request. (See parameters)
Request Body schema: application/jsonrequired
fromName required | string From name for the email. |
fromEmail required | string From email address for the email. |
replyToEmail required | string Reply to email address for the email. |
templateDesign required | string Template design for the email. |
headerLogo required | string Header logo for the email. |
customHeaderLogoURL required | string Custom header logo URL for the email. |
headerBgColor required | string Header background color for the email. |
bgColor required | string Background color for the email. |
bodyBgColor required | string Body background color for the email. |
bodyTextColor required | string Body text color for the email. |
footerText required | string Footer text for the email. |
logoBgColor required | string Logo background color for the email. |
Responses
Request samples
- Payload
{- "fromName": "Academy of Mine",
- "templateDesign": "default",
- "headerLogo": "Default",
- "customHeaderLogoURL": "null",
- "headerBgColor": "#6b15b6",
- "bgColor": "#ffffff",
- "bodyBgColor": "#f6f9fc",
- "bodyTextColor": "#1b1e24",
- "footerText": "Copyright © Your Company Name - All rights reserved.",
- "logoBgColor": "#1b1e24"
}
Response samples
- 200
{- "message": "Settings Updated"
}
Update email format for given type
This api is used to update the email format of given type
Request Body schema: application/jsonrequired
type required | string Type of email. |
portalId required | integer Portal ID |
area required | string Area of email. |
subject required | string Subject of email. |
recipients required | string Recipients of email. |
heading required | string Heading of email. |
content required | string Content of email. |
enabled required | integer Is email enabled? |
admin_enabled required | integer Is email enabled for admin? |
hours required | integer Number of hours. |
days required | integer Number of days. |
interval required | string Interval of reminder. |
frequency required | string Frequency of reminder. |
enable_coupon required | integer Is coupon enabled? |
coupon required | integer Coupon ID. |
Responses
Request samples
- Payload
{- "type": "upcoming_webinar",
- "portalId": 11,
- "area": "Course, Class",
- "subject": "Your Upcoming Webinar",
- "recipients": "User",
- "heading": "Upcoming Webinar",
- "content": "This is a test email",
- "enabled": 1,
- "admin_enabled": 1,
- "hours": 24,
- "days": 7,
- "interval": "days",
- "frequency": "1",
- "enable_coupon": 1,
- "coupon": 1
}
Response samples
- 200
{- "message": "Template Updated Successfully"
}
Response samples
- 200
{- "siteTitle": "Academy of mine",
- "siteLanguage": "en",
- "timeZone": "null",
- "dateFormat": "M d, Y",
- "timeFormat": "h:i A",
- "privateSite": "no",
- "customTimeZone": "tempora",
- "homePage": "1",
- "productCatalogPage": 2,
- "cartPage": 5,
- "checkoutPage": "4",
- "termConditionPage": 3,
- "termConditionText": "I have read and agree to the website term.",
- "privacyPolicyPage": 2,
- "privacyPolicyText": "Your personal data will be used to process your order, support your experience throughout this website, and for other purposes described in our privacy policy."
}
Update General Settings
Update the general settings of the site with provided values in the request.
Request Body schema: application/jsonrequired
siteTitle required | string Site title of the website. |
adminEmail required | string Admin email of the website. |
siteLanguage required | string Language of the site. |
timeZone required | string Timezone of the site. |
dateFormat required | string Date format of the site. |
timeFormat required | string Time format of the site. |
privateSite required | string Is the site private or not. |
customTimeZone required | string Custom timezone for site. |
homePage required | integer Homepage for site(page Id). |
cartPage required | integer Cart page for site(page Id). |
checkoutPage required | integer Checkout page for site(page Id). |
termConditionPage required | integer Term and Condition page for the site(page Id). |
termConditionText required | string Term and Condition Text of the site. |
privacyPolicyPage required | integer Privacy Policy page for the site(page Id). |
privacyPolicyText required | string Privacy Policy Text of the site. |
cookieTitle required | string Cookie Title of the site. |
cookieAccept required | string Cookie Accept Button of the site. |
cookieReject required | string Cookie Reject Button of the site. |
cookieMessage required | string Cookie Message of the site. |
thankyouPage required | integer Thank you page for the site(page Id). |
cookieEnable required | integer Is the cookie enable or not. |
googleRecaptchaEnable required | integer Is the google recaptcha enable or not. |
googleRecaptchaSiteKey required | string Google recaptcha site key. |
googleRecaptchaSecretKey required | string Google recaptcha secret key. |
blockedEmailsDomains required | string Blocked emails domains. |
anyOneCanRegister required | integer Is the anyone can register or not. |
learnerDashboard required | string Learner dashboard page/menu id. |
customCatalogPageurl required | string Custom catalog page url. |
Responses
Request samples
- Payload
{- "siteTitle": "totam",
- "siteLanguage": "facilis",
- "timeZone": "Asia/Tashkent",
- "dateFormat": "ullam",
- "timeFormat": "soluta",
- "privateSite": "consequatur",
- "customTimeZone": "\"America/New_York\"",
- "homePage": 1,
- "cartPage": 1,
- "checkoutPage": 6,
- "termConditionPage": 11,
- "termConditionText": "voluptas",
- "privacyPolicyPage": 7,
- "privacyPolicyText": "mollitia",
- "cookieTitle": "rem",
- "cookieAccept": "sapiente",
- "cookieReject": "reiciendis",
- "cookieMessage": "pariatur",
- "thankyouPage": 5,
- "cookieEnable": 10,
- "googleRecaptchaEnable": 14,
- "googleRecaptchaSiteKey": "odit",
- "googleRecaptchaSecretKey": "commodi",
- "blockedEmailsDomains": "quia",
- "anyOneCanRegister": 8,
- "learnerDashboard": "aspernatur",
}
Response samples
- 200
{- "message": "Settings Updated",
- "type": "success",
- "title": "Success"
}
Get a list of custom timezones.
Returns all available PHP timezones except a predefined custom list. Useful for showing only non-default timezones to users or filtering out common ones.
Responses
Response samples
- 200
[- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Bamako"
]
Retrieve branding settings
Retrieves the details of the brand settings. Helps in fetching items of the brand settings, items like primary color, body color, logo footer text(See Response)
Responses
Response samples
- 200
{- "brandColors": {
- "primaryColor": "#6b15b6",
- "bodyBgColor": "#f6f9fc",
- "bodyColor": "#1b1e24"
}, - "logo": "",
- "logoMini": "",
- "topBarPhone": "+1-202-555-0189",
- "footerText": "Copyright © Your Company Name - All rights reserved.",
- "headerBgColor": "#6b15b6",
- "menuTextColor": "#6b15b6",
- "favicon": "favicon.ico",
- "robotsTxt": "User-agent: *",
- "hideSearchEngineVisibility": "no",
- "learnerDashboard": "dashboard"
}
Set branding settings
Set the branding settings of the site.
Request Body schema: application/jsonrequired
brandColors required | object Brand colors object. |
logo required | string Logo of the site. |
logoMini required | string Mini logo of the site. |
topBarEmail required | string Top bar email of the site. |
topBarPhone required | string Top bar phone of the site. |
menuTextColor required | string Menu text color of the site. |
footerText required | string Footer text of the site. |
headerBgColor required | string Header background color of the site. |
favicon required | string Favicon of the site. |
robotsTxt required | string Robots.txt of the site. |
hideSearchEngineVisibility required | string Hide search engine visibility of the site. |
shouldCompileTheme required | string Should compile theme of the site. |
Responses
Request samples
- Payload
{- "brandColors": [ ],
- "logo": "\"logo.png\"",
- "logoMini": "\"mini-logo.png\"",
- "topBarPhone": "\"+1 123 456 7890\"",
- "menuTextColor": "\"#6b15b6\"",
- "footerText": "\"Copyright © Your Company Name - All rights reserved.\"",
- "headerBgColor": "\"#6b15b6\"",
- "favicon": "\"favicon.ico\"",
- "robotsTxt": "\"User-agent: *\"",
- "hideSearchEngineVisibility": "\"no\"",
- "shouldCompileTheme": "\"true\""
}
Response samples
- 200
{- "message": "Branding Settings Updated"
}
Set Custom Stylings
Updates the custom CSS added in the platform.
Request Body schema: application/jsonrequired
custom_css required | string The custom CSS to be added in the platform. |
Responses
Request samples
- Payload
{- "custom_css": ".aom-button {\n background-color: #fff;\n}"
}
Response samples
- 200
{- "message": "Custom Styling Saved Successfully"
}
Updates the status of the email if the selected area of the email format as enabled or not.
If disabled, the students will not get any email from this platform for selected email format area(account, lms, ecommerce, etc) and type (account creation, enrollments, etc)
Request Body schema: application/jsonrequired
area required | string The email format area. |
type required | string The email type. |
isEnabled required | boolean The status of the email. |
admin_enabled required | boolean The status of the email for admins. |
portalId required | integer The portal id. |
Responses
Request samples
- Payload
{- "area": "account, lms, ecommerce, etc",
- "type": "new_account_creation, course_enrolled, etc",
- "isEnabled": true,
- "admin_enabled": true,
- "portalId": 1
}
Response samples
- 200
{- "message": "Email State Updated Successfully"
}
Searches for courses, users, products, and modules by name or email in the whole platform or in a specific portal.
Request Body schema: application/jsonrequired
search_term required | string The keyword to search. |
portalId required | integer The portal ID to search in a specific portal. Use -1 to search in the whole platform. |
Responses
Request samples
- Payload
{- "search_term": "\"John Doe\"",
- "portalId": 5
}
Response samples
- 200
{- "courses": [
- {
- "label": "Course1",
- "value": "/dashboard/course/manage/1"
}, - {
- "label": "Course2",
- "value": "/dashboard/course/manage/2"
}
], - "users": [
], - "products": [
- {
- "label": "Product1",
- "value": "/dashboard/product/edit/1"
}, - {
- "label": "Product2",
- "value": "/dashboard/product/edit/2"
}
], - "modules": [
- {
- "label": "Module1",
- "value": "/dashboard/modules/edit/1"
}, - {
- "label": "Module2",
- "value": "/dashboard/modules/edit/2"
}
]
}
Update Gamification Settings
Updates the gamification settings based on the provided request parameters. Toggles the gamification feature on or off.
Request Body schema: application/jsonrequired
is_enabled required | boolean The status to enable or disable gamification. |
Responses
Request samples
- Payload
{- "is_enabled": true
}
Response samples
- 200
{- "message": "Settings Updated",
- "type": "success",
- "title": "Success"
}
It allows you to track learner activity and progress in the LMS, and trigger changes in HubSpot data accordingly.
Hubspot Event Lookup
Retrieves all the events for the hubspot actions. Helps showing options in dropdowns elements
Responses
Response samples
- 200
[- {
- "db_value": "new_account_created",
- "display_value": "New Account Created",
- "crud_op": "Create",
- "hubspot_crud": "[{'db_value' => 'hubspot_contact', 'display_value'=> 'Create New HubSpot Contact'}]"
}, - {
- "db_value": "Account Updated",
- "display_value": "Account Updated",
- "crud_op": "Update",
- "hubspot_crud": "[['db_value' => 'hubspot_contact', 'display_value'=> 'Update HubSpot Contact']]"
}, - {
- "db_value": "course_enrolled",
- "display_value": "Enrolled in a course",
- "crud_op": "Update",
- "hubspot_crud": "[['db_value' => 'hubspot_contact', 'display_value'=> 'Update Course Status in HubSpot Contact']]"
}, - {
- "db_value": "course_completed",
- "display_value": "Course Completed",
- "crud_op": "Update",
- "hubspot_crud": "[['db_value' => 'hubspot_contact', 'display_value'=> 'Update Course Status to complete in HubSpot Contact']]"
}, - {
- "db_value": "course_started",
- "display_value": "Course Started",
- "crud_op": "Update",
- "hubspot_crud": "[['db_value' => 'hubspot_contact', 'display_value'=> 'Update Course Status to in progress in HubSpot Contact']]"
}, - {
- "db_value": "course_progress",
- "display_value": "Course Progress Tracking",
- "crud_op": "Update",
- "hubspot_crud": "[['db_value' => 'hubspot_deal', 'display_value'=> 'Update Course Progress in HubSpot Deal']]"
}, - {
- "db_value": "course_expired",
- "display_value": "Course Expired",
- "crud_op": "Update",
- "hubspot_crud": "[['db_value' => 'hubspot_contact', 'display_value'=> 'HubSpot Contact']]"
}
]
Field Lookup
Retrieves all the fields for the hubspot. Helps showing options in dropdowns elements
Request Body schema: application/jsonrequired
type required | string Type to get the data, it can either be contact or deal. |
Responses
Request samples
- Payload
{- "type": "ut"
}
Response samples
- 200
[- {
- "lms_fields": [
- {
- "db_value": "email"
}, - {
- "db_value": "last_name"
}, - {
- "db_value": "first_name"
}, - {
- "db_value": "last_login_ip"
}, - {
- "db_value": "is_disabled"
}
]
}, - {
- "hubspot_fields": [
- {
- "db_value": "email"
}, - {
- "db_value": "lastname"
}, - {
- "db_value": "firstname"
}
]
}, - {
- "courses": [
- {
- "id": 1,
- "name": "Course 1"
}, - {
- "id": 2,
- "name": "Course 2"
}
]
}
]
Create Hubspot Action
Creates a Hubspot action based on the provided parameters.
path Parameters
event required | integer The event of the Hubspot action. |
action required | string Example: create The action of the Hubspot action. |
object required | string Example: Hubspot Contact The object of the Hubspot action. |
Responses
Response samples
- 200
{- "message": "Action created Successfully"
}
Save Hubspot Mapping
Saves the mapping of hubspot mapping. Helps in saving hubspot mapping using its type. (See Parameters)
Request Body schema: application/jsonrequired
type | required Type of the hupspot mapping you want to save the details of. |
dealIdentifierObjectAndProperties required | Array of strings Deal identifier object and properties. (See parameters) |
courseFieldProperties required | Array of strings Course field properties. (See parameters) |
userFieldProperties required | Array of strings User field properties. (See parameters) |
conditionMappingData required | Array of strings Array of condition mapping data. |
Responses
Request samples
- Payload
{- "type": "hubspot_contact",
- "dealIdentifierObjectAndProperties": [
- "blanditiis"
], - "courseFieldProperties": [
- "reiciendis"
], - "userFieldProperties": [
- "voluptatibus"
], - "conditionMappingData": [
- {
- "id": 1,
- "conditionOperator": "AND",
- "conditionValue": "hasdeal",
- "conditionType": "CONTACT",
- "conditionOperatorValue": "CONTAINS"
}, - {
- "id": 2,
- "conditionOperator": "OR",
- "conditionValue": "hasdeal",
- "conditionType": "CONTACT",
- "conditionOperatorValue": "CONTAINS"
}
]
}
Response samples
- 200
{- "is_success": true,
- "message": "Mapping saved Successfully"
}
Retrieve Hubspot Mapping
Retrieves the details of the hubspot mapping. Helps in fetching hubspot mapping using its type. (See Parameters)
Request Body schema: application/jsonoptional
type | required Type of the hupspot mapping you want to fetch the details of. |
Responses
Request samples
- Payload
{- "type": "hubspot_contact"
}
Response samples
- 200
{- "type": "hubspot_condition",
- "conditions": [ ]
}
Retrieves HubSpot integrations in a tabular format with pagination.
This function handles requests for retrieving a list of HubSpot integration events in a paginated tabular format. It allows filtering by events and ordering by specified columns. The results include detailed information about each event, such as the event and object display values, action, author, and timestamp.
query Parameters
order_by | string Example: order_by={"colName": "created_at", "direction": "desc"} JSON object for ordering items based on specified columns. |
search_param | integer Example: search_param=0 JSON object for filtering items by events. |
Responses
Response samples
- 200
{- "recordsTotal": 20,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "event": "course_enrolled",
- "event_display_value": "Enrolled in a Course",
- "object": "hubspot_contact",
- "object_display_value": "HubSpot Contact",
- "action": "created",
- "author": "John Doe",
- "created_at": "2021-01-01 12:00:00"
}
]
}
Update Hubspot Action
Updates a Hubspot action based on the provided ID.
path Parameters
id required | string Example: 1 The ID of the Hubspot action to be updated. |
Request Body schema: application/jsonoptional
event | required The event of the Hubspot action. |
action | required The action of the Hubspot action. |
object | required The object of the Hubspot action. |
Responses
Request samples
- Payload
{- "event": "New Account Created",
- "action": "create",
- "object": "Hubspot Deal"
}
Response samples
- 200
{- "id": 1,
- "message": "Hubspot updated successfully"
}
Hubspot Log Tabular List
Returns all the Hubspot log in a tabular list format in paginated mode.
path Parameters
id required | string Example: 50 ID of the Hubspot action. |
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "event": "New Account Created",
- "data": [ ],
- "status": "success",
- "errorMessage": "",
- "created_at": "Aug 03, 2020 09:56 AM",
- "showData": false
}
]
}
Conditions Lookup
Retrieves all the conditions for Hubspot. Helps showing options in dropdowns elements
Responses
Response samples
- 200
[- {
- "db_value": "equal_to",
- "display_value": "="
}, - {
- "db_value": "not_equal_to",
- "display_value": "!="
}, - {
- "db_value": "greater_than",
- "display_value": ">"
}, - {
- "db_value": "less_than",
- "display_value": "<"
}
]
Import users from HubSpot.
This endpoint is used to initiate a user import process from HubSpot. It saves the provided HubSpot conditions, updates the import identifier for tracking, logs the import event, and dispatches a job to process the import in the background.
Request Body schema: application/jsonrequired
hubspotConditions required | Array of strings The conditions used to filter HubSpot users before import. |
Responses
Request samples
- Payload
{- "hubspotConditions": [
- "totam"
]
}
Response samples
- 201
{- "success": true,
- "importId": 2,
- "message": "Hubspot import user sync executed and in running state. Refresh to know its status."
}
Get the status of the last HubSpot user import.
This endpoint is used to get the status of the last HubSpot user import. It returns the status of the import, which can be either 'success', 'failed', or 'queue'. If the import is still in queue, it means that the import has been initiated but has not completed yet. If the import has failed, it means that there was an error during the import process. If the import was successful, it means that the import has completed without any errors.
query Parameters
importId | string Example: importId=et The identifier of the import job. If not provided, it defaults to the latest import job. |
Responses
Response samples
- 200
{- "lastImportedDate": "22-Jan-2020 12:00 AM",
- "status": "success"
}
Get Import User Logs
Returns all the Hubspot import user log in a tabular list format in paginated mode.
path Parameters
id required | string Example: 50 ID of the Hubspot action. |
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "importIdentifier": 1,
- "event": "import_users",
- "importedData": "[]",
- "skippedData": "",
- "message": "Import completed successfully",
- "status": "success",
- "display_status": "Success",
- "errorMessage": "",
- "created_at": "Aug 03, 2020 09:56 AM",
- "showData": false,
- "queueStatus": "success"
}
]
}
An integration can be used by admins to integrate this platform to other platforms. Endpoints helps in performing CRUD operation for and to integration.
Get all integrations.
Returns a list of all available integrations with their details such as name, identifier, logo, and status. The timestamps are formatted based on the app's configured timezone, language, date, and time format.
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "HubSpot",
- "identifier": "hubspot",
- "description": "CRM Integration with HubSpot",
- "is_enabled": true,
- "implementer_class": "App\\Integrations\\Hubspot",
- "created_by": 1,
- "updated_by": 2,
- "created_at": "Apr 12, 2025 10:35 AM",
- "updated_at": "Apr 12, 2025 11:40 AM"
}
]
Update Integration Settings
Updates the integration settings for a specified integration. Setting needs to be updated is mentioned in parameter. (See Parameter)
path Parameters
id required | string Example: 1 ID of the integration. |
Request Body schema: application/jsonrequired
portalId | integer The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
is_enabled required | boolean Enable status of integration. |
settings required | Array of strings An associative array of settings to be updated. |
Responses
Request samples
- Payload
{- "portalId": 5,
- "is_enabled": true,
- "settings": [
- "laborum"
]
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieve Integration Settings
Retrieves all the integration settings for a specified integration. Helps in mainting the data and enable status of the integration.
path Parameters
id required | string Example: 1 ID of the integration. |
Responses
Response samples
- 200
{- "name": "Google Analytics",
- "identifier": "google-analytics",
- "is_enabled": false,
- "settings": {
- "ga_code": "<script type=\"text/javascript\">var a = 12;</script>"
}
}
Update the status of an integration
path Parameters
id required | string Example: 1 ID of the integration. |
Request Body schema: application/jsonrequired
status required | boolean Enable status of integration. |
Responses
Request samples
- Payload
{- "status": true
}
Response samples
- 200
{- "message": "Settings Updated"
}
Retrieve Shopify Product List
Return all the Shopify Product, you need to use this request.
Request Body schema: application/jsonrequired
search_term required | string Search term to search the product in Shopify. |
Responses
Request samples
- Payload
{- "search_term": "\"Introduction\"."
}
Leaderboard Tier Tabular List
Retrieves all the leaderboard tiers in a tabular list format.
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "records": [
- {
- "id": 1,
- "name": "Bronze",
- "lowerLimit": 0,
- "upperLimit": 100
}, - {
- "id": 2,
- "name": "Silver",
- "lowerLimit": 101,
- "upperLimit": 200
}, - {
- "id": 3,
- "name": "Gold",
- "lowerLimit": 201,
- "upperLimit": 300
}
]
}
Create a new Tier
Create a new Tier with name
, lowerLimit
and upperLimit
.
path Parameters
name required | string Example: Level 1 The name of the Tier. |
lowerLimit required | string Example: 1 The lower limit of the Tier. |
upperLimit required | string Example: 10 The upper limit of the Tier. |
Responses
Response samples
- 200
{- "id": 1,
- "message": "Tier created successfully"
}
Learning Path Tabular List
Retrieves all the learning paths in a tabular list format in paginated mode. You can apply filter using search_param via name(learning path name).
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"name":""} For searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "Test Learning Path",
- "status": "PUBLISHED",
- "display_status": "PUBLISHED",
- "created_at": "Aug 03, 2020 09:31 AM"
}
]
}
Create Learning Path
Creates a new learning path with courses, certificates, prerequisites and categories.
Request Body schema: application/jsonrequired
name required | string Name of the learning path. |
instructions | string Instruction for the learning path. |
featuredImageUrl | string Image for the learning path. |
credits | integer Credit after learning path completion, used in certificates. |
status required | string learning path is in Draft or Publish mode. Status options: draft or publish. |
certificates | Array of strings Certificates attached to this learning path. |
prerequisites | Array of strings Prerequisites courses of the learning path. |
courses required | Array of strings All courses you want to attach to this learning path. Minimum 2 courses are required |
categories | Array of strings Categories for this learning path. |
Responses
Request samples
- Payload
{- "name": "Learning Path 1",
- "instructions": "Some Instruction",
- "featuredImageUrl": "img_path",
- "credits": 70,
- "status": "publish",
- "certificates": [
- 1,
- 2
], - "prerequisites": [
- 1,
- 2
], - "courses": [
- 1,
- 2,
- 3
], - "categories": [
- 1,
- 2
]
}
Response samples
- 200
{- "id": 1,
- "message": "Learning Path was successfully created"
}
Get Learning Path Details
Retrieves all the details of the specified learning path.
query Parameters
id required | string Example: id=1 ID of the learning path. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Test Learning Path",
- "slug": "test-learning-path",
- "status": "DRAFT",
- "instructions": "Some Instruction",
- "featuredImageUrl": "img_path",
- "credits": 70,
- "certificates": [
- 1
], - "accredible_group_id": [
- 1
], - "courses": [
- {
- "label": "Course 1",
- "value": 1
}, - {
- "label": "Course 2",
- "value": 2
}
], - "prerequisites": {
- "1": true,
- "2": false
}, - "categories": [
- 1,
- 2
]
}
Update Learning Path
Updates an existing learning path with courses, certificates, prerequisites and categories.
Request Body schema: application/jsonrequired
id required | integer ID of the learning path. |
name required | string Name of the learning path. |
instructions | string Instruction for the learning path. |
featuredImageUrl | string Image for the learning path. |
credits | integer Credit after learning path completion, used in certificates. |
status required | string learning path is in Draft or Publish mode. Status options: draft or publish. |
certificates | Array of strings Certificates attached to this learning path. |
prerequisites | Array of strings Prerequisites courses of the learning path. |
courses required | Array of strings All courses you want to attach to this learning path. Minimum 2 courses are required |
categories | Array of strings Categories for this learning path. |
Responses
Request samples
- Payload
{- "id": 1,
- "name": "Learning Path 1",
- "instructions": "Some Instruction",
- "featuredImageUrl": "img_path",
- "credits": 70,
- "status": "publish",
- "certificates": [
- 1,
- 2
], - "prerequisites": [
- 1,
- 2
], - "courses": [
- 1,
- 2,
- 3
], - "categories": [
- 1,
- 2
]
}
Response samples
- 200
{- "id": 1,
- "message": "Learning Path was successfully updated"
}
Delete Learning Path
Deletes the learning paths and related mapping.
Request Body schema: application/jsonrequired
delete_ids required | Array of strings Array of learning path IDs to be deleted. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "message": "1 learning path(s) deleted, 1 learning path(s) not deleted as it has enrollments. Please remove the students from the learning path and try again.",
- "deletedLearningPaths": 1,
- "notDeletedLearningPaths": [
- 1
], - "enrolledLearningPaths": [
- {
- "id": 1,
- "name": "Learning path 1"
}
], - "notDeletedPortalLearningPaths": [
- 1
], - "portalLearningPaths": {
- "Learning path 1": [
- {
- "id": 1,
- "name": "Portal 1"
}
]
}, - "notDeletedProductLearningPath": [
- 1
], - "productLearningPaths": [
- {
- "id": 1,
- "title": "Product 1"
}
]
}
Learning Path Lookup
Retrieves Learning Path details based on the search query.
path Parameters
search_term required | string Example: "Learning Path" Search term for the learning paths. |
Responses
Response samples
- 200
{- "learning_paths": [
- {
- "value": 1,
- "label": "Learning Path 1"
}, - {
- "value": 2,
- "label": "Learning Path 2"
}
]
}
Enrolled Students
Retrieves all enrolled students for a learning path.
query Parameters
learning_path_id required | string Example: learning_path_id=1 The ID of learning path. |
portalId required | string Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
page_size required | string Example: page_size=10 Number of the results you want in each page. |
page_number required | string Example: page_number=1 Current Page number. |
order_by | string Example: order_by=registered_on Returns details in some order. |
search_param | string Example: search_param={"status":["Not Started","In Progress"],"nameOrEmail":"John Doe"} Search parameters related to course. |
Responses
Response samples
- 200
{- "learningPathName": "Learning Path 1",
- "recordsTotal": 12,
- "totalNotStarted": 3,
- "totalInProgress": 4,
- "totalCompleted": 5,
- "recordsFiltered": 12,
- "records": [
- {
- "id": 1,
- "user_id": 2,
- "first_name": "John",
- "last_name": "Doe",
- "status": "Not Started",
- "display_status": "Not Started",
- "percentComplete": 0,
- "access_status": "Allowed",
- "registered_on": "Aug 09, 2020",
- "started_on": "",
- "completed_on": "",
- "expire_on": "Never",
- "last_accessed_on": "Never",
- "certificate_count": 0,
- "user_type": "Learner",
- "raw_user_type": "learner"
}
]
}
Enroll Students
To enroll users in a learning path, you need to use this request.
path Parameters
id required | string Example: 1 ID of the learning path. |
Request Body schema: application/jsonrequired
studentIds required | Array of strings User IDs needs to be enrolled in this learning path. |
portalId | integer optional The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Request samples
- Payload
{- "studentIds": [
- 2,
- 3
], - "portalId": 5
}
Response samples
- 200
{- "message": "2 student(s) enrolled successfully",
- "enrolledUsersCount": 2,
- "notEnrolledUsers": 0
}
Remove Learners
To removes users from a learning path, you need to use this request.
path Parameters
id required | string Example: 1 ID of the learning path. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Enrollment IDs needs to be removed from this learning path. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- 2,
- 3
]
}
Response samples
- 200
{- "message": "2 student(s) removed successfully"
}
Assign Certificate
Assigns a certificate to the users enrolled in a learning path using their enrollment IDs. Checks if the learning path has a certificate template available before proceeding with the assignment.
path Parameters
id required | string Example: 1 ID of the learning path for which the certificate is being assigned. |
Request Body schema: application/jsonrequired
enrollmentIds required | Array of strings Enrollment IDs that need to be assigned a certificate. |
Responses
Request samples
- Payload
{- "enrollmentIds": [
- 2,
- 3
]
}
Response samples
- 200
{- "isSucess": true,
- "message": "Certificate assigned successfully to 2 student(s)"
}
Learning Path Launch
This API is used to launch learning path and get the courses associated with the learning path.
path Parameters
registrationId required | string Example: 2 Registration ID of the learning path. |
query Parameters
info | string Example: info=info=true optional If the API is called with info parameter, the API will not start the learning path, but will return the information of the learning path. |
portalId required | string Example: portalId=1 Portal ID of the user. |
Responses
Response samples
- 200
{- "name": "Learning Path Name",
- "instructions": "Learning Path Instructions",
- "learningPathStatus": "Active",
- "status": "Not Started",
- "display_status": "Not Started",
- "completionPercentage": 0,
- "enrollmentDate": "22-02-2022",
- "certificate": 0,
- "id": 2,
- "rating": 4.5,
- "totalEstimatedTime": "2 hours",
- "courseData": [
- {
- "name": "Course 1",
- "courseId": 3,
- "rating": 4.5,
- "status": "Not Started",
- "completion_percentage": 0,
- "display_status": "Not Started",
- "expire_on": "22-02-2022",
- "minimum_passing_percentage": 0,
- "certificate": 0,
- "certificate_expire_after": "Never",
- "isExpired": false,
- "isCurrent": true,
- "isLocked": false,
- "estimatedCompletionTime": "1 hour",
- "userReviewAvailable": true,
- "enableCourseRating": true
}
]
}
Learning Path Dropdown List
Returns a list of learning paths with their ID and Name based on the provided portal ID and search term. If a valid portal ID is provided, it filters learning paths associated with the portal. If no portal ID or an invalid one (e.g., -1) is given, it returns all learning paths.
query Parameters
portalId | integer Example: portalId=5 The portal ID to filter learning paths by portal. Use -1 to skip portal filtering. |
type | string Example: type=public The type of listing required (private/public). |
search_term | string Example: search_term="Advanced" The search term to filter learning paths by name. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Learning Path 1"
}, - {
- "id": 2,
- "name": "Learning Path 2"
}
]
Learning Path Detail Report
Retrieves learning path detail report based on the parameters provided.
path Parameters
searchPortalIds required | string Example: [1,2] Portal IDs to filter learning paths by portal. |
learning_path_ids required | string Example: [1,2] Learning Path IDs to filter learning paths by ID. |
query Parameters
page_size required | string Example: page_size=10 The number of results per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by={"colName": "registered_on", "direction": "desc"} optional The column to sort the results by. |
search_param | string Example: search_param={"status": ["registered", "started"], "registered_on": ["2021-01-01", "2021-01-31"], "completed_on": ["2021-01-01", "2021-01-31"], "nameOrEmail": "John Doe"} optional The search query parameters. |
Responses
Response samples
- 200
{- "recordsFiltered": 10,
- "records": [
- {
- "user_id": 1,
- "first_name": "John",
- "last_name": "Doe",
- "learning_path_name": "Learning Path 1",
- "status": "registered",
- "display_status": "Registered",
- "registered_on": "01-Jan-2021",
- "started_on": "05-Jan-2021",
- "completed_on": "10-Jan-2021",
- "last_accessed_on": "10-Jan-2021",
- "certifcate_issued": "Yes",
- "courseDetails": [ ],
- "total_time_spent": 10,
- "expire_on": "Never",
- "completed_lp_courses": 2,
- "total_lp_courses": 5,
- "portalName": "Portal 1"
}, - {
- "user_id": 2,
- "first_name": "Jane",
- "last_name": "Doe",
- "learning_path_name": "Learning Path 2",
- "status": "started",
- "display_status": "Started",
- "registered_on": "01-Jan-2021",
- "started_on": "05-Jan-2021",
- "completed_on": "10-Jan-2021",
- "last_accessed_on": "10-Jan-2021",
- "certifcate_issued": "No",
- "courseDetails": [ ],
- "total_time_spent": 10,
- "expire_on": "Never",
- "completed_lp_courses": 2,
- "total_lp_courses": 5,
- "portalName": "Portal 1"
}
]
}
Retrieves an overview report of learning paths, including the status of enrollments.
This function aggregates the enrollment statuses (Not Started, In Progress, Completed) for each learning path, and calculates the percentage of completed enrollments. It takes into account portal-specific filters if provided.
query Parameters
searchPortalIds | Array of strings Example: searchPortalIds=1&searchPortalIds=2 Optional array of portal IDs for filtering learning paths. |
Responses
Response samples
- 200
{- "labels": [
- "Learning Path 1",
- "Learning Path 2"
], - "totalNotStarted": [
- 5,
- 3
], - "totalInProgress": [
- 2,
- 4
], - "totalCompleted": [
- 3,
- 3
], - "percentageCompleted": [
- 30,
- 50
], - "sumNotStarted": 8,
- "sumInProgress": 6,
- "sumCompleted": 6,
- "sumPercentageCompleted": 37
}
Clone a learning path
This function clones a learning path and its associated courses and categories. It takes into account the user who initiated the request and records the user as the creator and updater of the cloned learning path.
query Parameters
learningPathId required | string Example: learningPathId=1 The ID of learning path to clone. |
isDeepCopy required | string Example: isDeepCopy=true Whether to clone the learning path with its courses and categories. |
Responses
Response samples
- 200
{- "message": "Learning Path Cloned Successfully"
}
Learning Path Activities
Retrieves all the activities for a learning path based on the context provided. Context can be either 'portal' or 'lp'. If context is 'portal', it will return all activities for the portal. If context is 'lp', it will return all activities for the learning path.
query Parameters
learning_path_id required | string Example: learning_path_id=1 The ID of learning path. |
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"name":""} For searching items based on field names. |
context required | string Example: context=portal or lp The context of the activities. |
portalId required | string Example: portalId=5 The portal ID to filter activities by portal. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "Test Activity",
- "status": "PUBLISHED",
- "created_at": "Aug 03, 2020 09:31 AM"
}
]
}
Learning Path Activities Lookup
Retrieves all the activities name performed by students in a learning path. Helps showing options in dropdowns elements
Responses
Response samples
- 200
[- {
- "db_value": "ENROLLED",
- "display_value": "ENROLLED"
}, - {
- "db_value": "STARTED",
- "display_value": "STARTED"
}, - {
- "db_value": "ACCESSED",
- "display_value": "ACCESSED"
}, - {
- "db_value": "COMPLETED",
- "display_value": "COMPLETED"
}, - {
- "db_value": "ACHIEVED CERTIFICATE",
- "display_value": "ACHIEVED CERTIFICATE"
}, - {
- "db_value": "REMOVED",
- "display_value": "REMOVED"
}
]
Create a new location.
Request Body schema: application/jsonoptional
location_name | required The name of the location. |
address | The address of the location. |
city | The city of the location. |
country | The country of the location. |
zipcode | The zipcode of the location. |
map_url | The map URL of the location. |
Responses
Request samples
- Payload
{- "location_name": "New York",
- "address": "New York, USA",
- "city": "New York",
- "country": "USA",
- "zipcode": "10001",
}
Response samples
- 200
{- "message": "Location Created Successfully"
}
Location Tabular List
Retrieves all the locations in a tabular list format with pagination mode. You can apply filter using search_param via locationName.
query Parameters
page_size required | string Example: page_size=50 The number of the locations you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"locationName":"New York"} for searching items based on location name. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "New York",
- "address": "New York, USA",
- "city": "New York",
- "country": "USA",
- "zipcode": "10001",
- "created_at": "Aug 11, 2020 02:12 PM"
}
]
}
Get Location
Retrieves an existing location by given ID.
path Parameters
id required | integer Example: 1 The ID of the location to be retrieved. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "New York",
- "address": "New York, USA",
- "city": "New York",
- "country": "USA",
- "zipcode": "10001",
- "created_by": 1,
- "created_at": "2020-08-11 02:12:00"
}
Update Location
Updates an existing location's details using the provided ID.
path Parameters
id required | integer Example: 1 The ID of the location to be retrieved. |
Request Body schema: application/jsonrequired
location_name required | string The name of the location. |
address | string The address of the location. |
city | string The city of the location. |
country | string The country of the location. |
zipcode | string The zipcode of the location. |
map_url | string The map URL of the location. |
Responses
Request samples
- Payload
{- "location_name": "New York",
- "address": "New York, USA",
- "city": "New York",
- "country": "USA",
- "zipcode": "10001",
}
Response samples
- 200
{- "message": "Location Updated Successfully"
}
Delete Location
To delete a location, you need to use this request. Returns number of location deleted(if multiple selected) and also not deleted. (See Response)
Request Body schema: application/jsonrequired
delete_ids required | Array of strings All location IDs which needs to be deleted. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "3 location(s) deleted 2 location(s) not deleted as it is used in class(s). Please remove the location from the class(s) and try again.",
- "deletedLocations": 3
}
Location Lookup
Returns array of location data, containing location id and name.
Request Body schema: application/jsonrequired
search_term required | string The search term for location name. |
Responses
Request samples
- Payload
{- "search_term": "\"New York\""
}
Response samples
- 200
[- {
- "value": 1,
- "label": "New York"
}, - {
- "value": 2,
- "label": "Los Angeles"
}
]
This controller handles all API interactions related to Learning Tools Interoperability (LTI) integration. It provides endpoints for managing LTI tool launches, handling authentication, and syncing data between the platform and external LTI-compliant systems such as learning management systems (LMS).
Endpoints in this controller facilitate the integration and communication between the platform and external educational tools or services via the LTI standard.
Add a new LTI platform
Add a new LTI platform and save its details in the database.
query Parameters
platformId required | string Example: platformId=https://canvas.instructure.com The platform ID. |
platformName required | string Example: platformName=Canvas The name of the platform. |
clientId required | string Example: clientId=1234567890 The client ID of the platform. |
jwksUrl required | string Example: jwksUrl=https://canvas.instructure.com/api/lti/security/jwks The JWKS URL of the platform. |
accessTokenUrl required | string Example: accessTokenUrl=https://canvas.instructure.com/login/oauth2/token The access token URL of the platform. |
authEndPoint required | string Example: authEndPoint=https://canvas.instructure.com/api/lti/authorize_redirect The authentication endpoint URL of the platform. |
roles required | string Example: roles=["Student", "Teacher"] The roles of the users. |
contentAccessible required | string Example: contentAccessible=true Whether the content is accessible or not. |
teacherProvisioningMode required | string Example: teacherProvisioningMode="New accounts only" The provisioning mode for the teacher. |
studentProvisioningMode required | string Example: studentProvisioningMode="New accounts only" The provisioning mode for the student. |
deploymentId required | string Example: deploymentId=1234567890 The deployment ID of the platform. |
courses required | string Example: courses=[{"id":1,"name":"Course 1","syncGrade":true},{"id":2,"name":"Course 2","syncGrade":false}] The courses associated with the platform. |
Responses
Response samples
- 200
{- "id": 4,
- "message": "Platform Added Successfully"
}
Update LtiPlatform
Updates the LtiPlatform along with its deployment and contents
Request Body schema: application/jsonoptional
id | required The ID of the LtiPlatform. |
platformId | required The ID of the platform. |
platformName | required The name of the platform. |
clientId | required The client ID of the platform. |
jwksUrl | required The JWKS url of the platform. |
accessTokenUrl | required The access token URL of the platform. |
authEndPoint | required The authorization endpoint of the platform. |
deploymentId | required The deployment ID of the platform. |
roles | required The roles of the platform. |
contentAccessible | required The content accessible of the platform. |
teacherProvisioningMode | required The teacher provisioning mode of the platform. |
studentProvisioningMode | required The student provisioning mode of the platform. |
courses | required The courses of the platform. |
Responses
Request samples
- Payload
{- "id": "1",
- "platformId": "example.com",
- "platformName": "Example",
- "clientId": "123456789",
- "deploymentId": "123456789",
- "roles": "[\"Instructor\", \"Student\"]",
- "contentAccessible": "All",
- "teacherProvisioningMode": "New accounts only",
- "studentProvisioningMode": "Existing and new accounts",
- "courses": "[{\"id\":1,\"syncGrade\":true}]"
}
Response samples
- 200
{- "message": "Platform Updated Successfully"
}
Get a LTI platform by id
This endpoint return a LTI platform by id with all its associated data.
path Parameters
id required | string Example: 1 The id of the LTI platform. |
Responses
Response samples
- 200
{- "platformName": "Test",
- "clientId": "1234567890",
- "deploymentId": "1234567890",
- "contentAccessible": 1,
- "teacherProvisioningMode": "new",
- "studentProvisioningMode": "new",
- "roles": [ ],
- "courses": [
- {
- "id": 1,
- "name": "Course 1",
- "syncGrade": true
}
], - "id": 1
}
Tabular List
Retrieves all the LtiPlatforms in a tabular list format with pagination mode. You can apply filter using search_param via courseCategoryIds(course category ID), courseName or roleNames(user role)
query Parameters
page_size required | string Example: page_size=10 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"courseCategoryIds":[],"courseName":"course 1"} for searching items based on Course category ids, course name. |
Responses
Response samples
- 200
{- "recordsTotal": 4,
- "recordsFiltered": 4,
- "records": [
- {
- "id": 4,
- "name": "superadmin",
- "displayName": "Super Admin",
- "createdAt": "Aug 06, 2020 07:20 AM",
- "lastLogin": "2 days ago"
}, - {
- "id": 2,
- "name": "admin",
- "displayName": "Admin",
- "createdAt": "Aug 03, 2020 09:31 AM",
- "lastLogin": "Never"
}, - {
- "id": 3,
- "name": "groupadmin",
- "displayName": "Group Admin",
- "createdAt": "Aug 03, 2020 09:31 AM",
- "lastLogin": "Never"
}, - {
- "id": 1,
- "name": "student",
- "displayName": "Student",
- "createdAt": "Aug 03, 2020 09:31 AM",
- "lastLogin": "Never"
}
]
}
Delete an LTI platform
Deletes the LTI platform along with its associated deployments and registrations from the database.
Request Body schema: application/jsonoptional
deleteId | required The ID of the LTI platform to be deleted. |
Responses
Request samples
- Payload
{- "deleteId": "1"
}
Response samples
- 200
{- "message": "Platform deleted Successfully"
}
Upload Media
Handles the media upload request via both chunked and non-chunked approach. The request is determined by the presence of file object in the request. If the request contains a file object, it is saved directly to s3-pending folder. If the request does not contain a file object, it is assumed to be a chunked upload request. The chunk is saved to local chunks folder and if it is the last chunk, it is combined and saved to s3-pending folder. The delete request is handled by deleting the chunks folder for the given deleteId.
query Parameters
patch | string Example: patch=ut The file handler ID that is used to identify the chunked upload request. |
deleteId | string Example: deleteId=nobis The file handler ID that is used to identify the chunked upload request to be deleted. |
Responses
Response samples
- 200
{- "is_success": true,
- "code": 200,
- "errorMessage": null,
- "uploadedMedia": {
- "id": 3,
- "file_name": "default-certificate-8741bc53eb39d4154c232925c0f13088.png",
- "file_type": "Images",
- "status": "Completed",
- "mux_url": null,
- "mime_type": "image/png",
- "created_at": "Aug 12, 2020 09:02 AM"
}
}
Upload Media
Handles the media upload request via both chunked and non-chunked approach. The request is determined by the presence of file object in the request. If the request contains a file object, it is saved directly to s3-pending folder. If the request does not contain a file object, it is assumed to be a chunked upload request. The chunk is saved to local chunks folder and if it is the last chunk, it is combined and saved to s3-pending folder. The delete request is handled by deleting the chunks folder for the given deleteId.
query Parameters
patch | string Example: patch=ullam The file handler ID that is used to identify the chunked upload request. |
deleteId | string Example: deleteId=sit The file handler ID that is used to identify the chunked upload request to be deleted. |
Responses
Response samples
- 200
{- "is_success": true,
- "code": 200,
- "errorMessage": null,
- "uploadedMedia": {
- "id": 3,
- "file_name": "default-certificate-8741bc53eb39d4154c232925c0f13088.png",
- "file_type": "Images",
- "status": "Completed",
- "mux_url": null,
- "mime_type": "image/png",
- "created_at": "Aug 12, 2020 09:02 AM"
}
}
Upload Media
Handles the media upload request via both chunked and non-chunked approach. The request is determined by the presence of file object in the request. If the request contains a file object, it is saved directly to s3-pending folder. If the request does not contain a file object, it is assumed to be a chunked upload request. The chunk is saved to local chunks folder and if it is the last chunk, it is combined and saved to s3-pending folder. The delete request is handled by deleting the chunks folder for the given deleteId.
query Parameters
patch | string Example: patch=quasi The file handler ID that is used to identify the chunked upload request. |
deleteId | string Example: deleteId=in The file handler ID that is used to identify the chunked upload request to be deleted. |
Responses
Response samples
- 200
{- "is_success": true,
- "code": 200,
- "errorMessage": null,
- "uploadedMedia": {
- "id": 3,
- "file_name": "default-certificate-8741bc53eb39d4154c232925c0f13088.png",
- "file_type": "Images",
- "status": "Completed",
- "mux_url": null,
- "mime_type": "image/png",
- "created_at": "Aug 12, 2020 09:02 AM"
}
}
Tabular List
Retrieves all the media in a tabular list format with pagination mode. You can apply filter using search_param via name(media name), file_type(file type).
query Parameters
page_size required | string Example: page_size=10 The number of the media you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"name":"media name","file_type":"Images"} for searching items based on media name, file type. |
Responses
Response samples
- 200
{- "recordsTotal": 4,
- "recordsFiltered": 4,
- "records": [
- {
- "id": 4,
- "file_name": "default-certificate-8741bc53eb39d4154c232925c0f13088.png",
- "file_type": "Images",
- "status": "Completed",
- "mux_url": null,
- "mime_type": "image/png",
- "created_at": "Aug 12, 2020 09:02 AM"
}
]
}
Delete Media
This API is used to delete the uploaded media from the storage. It will also delete the video files from MUX if the file type is Video.
query Parameters
delete_ids required | string Example: delete_ids=qui The array of media IDs which needs to be deleted. example: [1,2,3] |
Responses
Response samples
- 200
{- "message": "2 media(s) deleted",
- "errorMessage": "2 media(s) not deleted, Something went wrong! try again",
- "fileNotDeleted": 2
}
Download Mux Video
This API is used to download the uploaded video from MUX service. If the master access is not enabled as temporary, this API will enable it. If the master access is already enabled as temporary, this API will return the download URL directly.
query Parameters
mux_id required | string Example: mux_id=7K0103V01NFz01 The MUX ID of the video to download. |
Responses
Response samples
- 200
{- "status": "ready",
}
Save Video
This API is used to save the uploaded video media to the database. It takes videoGuid and fileName as input and returns the uploaded media.
query Parameters
videoGuid required | string Example: videoGuid=d2c0faa3-9d15-49c4-ae11-9b2c9a5c0a7c The videoGuid of the uploaded video. |
fileName required | string Example: fileName=test.mp4 The name of the uploaded video. |
mimeType required | string Example: mimeType=video/mp4 The mime type of the uploaded video. |
Responses
Response samples
- 200
{- "is_success": true,
- "code": 200,
- "errorMessage": "Unable to upload the media. Please contact admin",
- "uploadedMedia": {
- "id": 4,
- "file_name": "test.mp4",
- "mime_type": "video/mp4",
- "bunny_video_id": "d2c0faa3-9d15-49c4-ae11-9b2c9a5c0a7c",
- "file_type": "Videos",
- "status": "Processing",
- "created_at": "2021-08-05T06:44:12.000000Z",
- "updated_at": "2021-08-05T06:44:12.000000Z"
}
}
Get BunnyCDN Details
To get the BunnyCDN library id and api key, you need to use this request. It will return the BunnyCDN library id and api key based on the environment. If the request is from localhost, it will return the values from .env file. If the request is from production environment, it will return the values from database.
Responses
Response samples
- 200
{- "libraryId": "a1b2c3d4-library-7890",
- "apiKey": "9b7e4c08-3d2f-4a1c-86f2-1e4b2d8f1234"
}
Create Bunny Video Library
This function creates a new video library on Bunny.net. It sends a POST request to the Bunny API with the site title and replication regions. On successful creation, it updates the local configuration with the new library ID, API key, and pull zone ID. It also fetches the pull zone name and updates the meta information accordingly.
Responses
Response samples
- 201
- 500
{- "is_success": true,
- "bunny_library_id": "123456",
- "bunny_api_key": "9b7e4c08-3d2f-4a1c-86f2-1e4b2d8f1234"
}
Memberships are used to provide content access to users. Helps in providing course and standalone modules access to learners
Lookup memberships
Retrieves the memberships matching the search term provided in the request. If the portalId is provided, it will fetch memberships which are attached to the portal.
query Parameters
search_term required | string Example: search_term=membership 1 The search term to search for memberships. |
portalId required | string Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "membership 1"
}, - {
- "id": 2,
- "name": "membership 2"
}
]
Retrieve Memberships in a Tabular List
Returns a paginated list of memberships in a tabular format with optional filters and sorting.
query Parameters
page_size required | string Example: page_size=10 The number of memberships to display per page. |
page_number required | string Example: page_number=1 The current page number for pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} A JSON object specifying the column and direction for sorting. |
search_param | string Example: search_param={"name":"Basic Membership"} A JSON object for filtering memberships by name. |
Responses
Response samples
- 200
{- "recordsTotal": 100,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "Basic Membership",
- "expired_at": "2023-12-31 23:59:59",
- "author": "Admin",
- "created_at": "2023-01-01 00:00:00"
}
]
}
Get a membership by ID
path Parameters
id required | string Example: 1 The ID of the membership. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Gold-membership",
- "courseAccess": "all",
- "moduleAccess": "all",
- "expired_at": "2021-10-03 23:59:59",
- "courseAccessCategories": [
- 1,
- 2
], - "moduleAccessCategories": [
- 5,
- 19
]
}
Update Membership
Updates the details of a specified membership. (See Parameters) Membership is being used as to couple courses and standalone modules for students to launch and view.
path Parameters
id required | string Example: 1 The ID of the membership. |
Request Body schema: application/jsonoptional
name | required The name of the membership. |
courseAccess | required The type of course access. {all, no_access, specific} Only these values allowed. |
moduleAccess | required The type of module access. {all, no_access, specific} Only these values allowed. |
courseAccessCategories | Array of strings Any course category IDs if you have selected specific in courseAccess parameter. |
moduleAccessCategories | Array of strings Any module category IDs if you have selected specific in moduleAccess parameter. |
expired_at | string Expire date for the membership. |
Responses
Request samples
- Payload
{- "name": "Gold-membership",
- "courseAccess": "all",
- "moduleAccess": "all",
- "courseAccessCategories": [
- 1,
- 2
], - "moduleAccessCategories": [
- 5,
- 19
], - "expired_at": "'2021-10-03 23:59:59'"
}
Response samples
- 200
{- "id": 1,
- "message": "Membership created successfully"
}
Create a new membership
Creates a new membership with course and module access rules.
Request Body schema: application/jsonoptional
name | required The name of the membership. |
courseAccess | required The type of course access. {all, no_access, specific} Only these values allowed. |
moduleAccess | required The type of module access. {all, no_access, specific} Only these values allowed. |
courseAccessCategories | Array of strings Any course category IDs if you have selected specific in courseAccess parameter. |
moduleAccessCategories | Array of strings Any module category IDs if you have selected specific in moduleAccess parameter. |
expired_at | string Expire date for the membership. |
Responses
Request samples
- Payload
{- "name": "Gold-membership",
- "courseAccess": "all",
- "moduleAccess": "all",
- "courseAccessCategories": [
- 1,
- 2
], - "moduleAccessCategories": [
- 5,
- 19
], - "expired_at": "'2021-10-03 23:59:59'"
}
Response samples
- 200
{- "id": 1,
- "message": "Membership created successfully"
}
Quick Edit
Updates the details in bulk for a specified membership. Parameters is provided which needs to be updated.
Request Body schema: application/jsonrequired
membership_ids required | Array of strings All membership IDs which needs to be updated. |
expired_at required | string Expiry date for the selected memberships. |
Responses
Request samples
- Payload
{- "membership_ids": [
- 3,
- 2
], - "expired_at": "2021-01-11 23:45:00"
}
Response samples
- 200
{- "message": "Memberships updated Successfully"
}
Menus are used as front end module for this platform. Endpoints for managing menus on marketing front end pages
Response samples
- 200
[- {
- "id": 1,
- "name": "Main Menu",
- "items": [
- {
- "label": "Home",
- "type": "page",
- "custom_link": null,
- "page_id": 1,
- "display_order": 1,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
- "hyperlink": "/"
}, - {
- "label": "Courses",
- "type": "page",
- "custom_link": null,
- "page_id": 2,
- "display_order": 2,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}, - {
- "label": "Our Team",
- "type": "page",
- "custom_link": null,
- "page_id": 3,
- "display_order": 3,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}, - {
- "label": "Contact Us",
- "type": "page",
- "custom_link": null,
- "page_id": 6,
- "display_order": 4,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}
]
}, - {
- "id": 2,
- "name": "Top Bar Menu",
- "items": [
- {
- "label": "Dashboard",
- "type": "custom_link",
- "custom_link": "/dashboard",
- "page_id": null,
- "display_order": 1,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
- "hyperlink": "/dashboard"
}, - {
- "label": "Cart",
- "type": "page",
- "custom_link": null,
- "page_id": 5,
- "display_order": 2,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}
]
}, - {
- "id": 3,
- "name": "Footer Menu",
- "items": [ ]
}
]
Get all the items associated with this menu
path Parameters
id required | string Example: 5 The id of the menu to be retrieved. |
Responses
Response samples
- 200
[- {
- "label": "Home",
- "type": "page",
- "custom_link": null,
- "page_id": 1,
- "display_order": 1,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
- "hyperlink": "/"
}, - {
- "label": "Courses",
- "type": "page",
- "custom_link": null,
- "page_id": 2,
- "display_order": 2,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}
]
Save or update menu items.
This endpoint accepts a list of menus with their associated items, deletes existing items, and inserts the new items accordingly.
Request Body schema: application/jsonrequired
menuList required | Array of strings The list of menus with their items. |
Responses
Request samples
- Payload
{- "menuList": [
- {
- "id": 1,
- "items": [
- {
- "label": "Home",
- "icon": "home-icon",
- "type": "custom",
- "css_class": "nav-item",
- "restrictions": [ ],
- "open_in_new_tab": false,
- "level": 1,
- "custom_link": "/home"
}
]
}
]
}
Response samples
- 200
{- "message": "Menu updated successfully"
}
A module is a lesson that you add as course content. Modules could be Text, Video, PDF, SCORM, Quiz, Assignments or Survey. Helps in performing CRUD operation to and for modules.
Create Blank Module
Handles the creation of a blank module with the provided name and type. Validates the request data and saves a new module record in the database. Sets the created_by and updated_by fields to the ID of the authenticated user. Returns the ID and icon of the created module in JSON format.
Request Body schema: application/jsonrequired
name required | string The name of the module. |
type required | string The type of the module. |
Responses
Request samples
- Payload
{- "name": "Introduction",
- "type": "text"
}
Response samples
- 201
{- "id": 1,
- "icon": "<i class=\"el-icon-document\"></i>"
}
Modules Lookup
Retrieves all the modules. Helps while showing modules names in form elements like dropdown. You can apply filters using search_term parameter. (See Response)
query Parameters
search_term required | string Example: search_term=Introduction The name or substring of the module name to search for that module. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Introduction",
- "type": "text",
- "icon": "<i class=\"el-icon-document\"></i>",
- "value": 1,
- "label": "Introduction"
}
]
Get Pending Module Submissions
Returns the total number of pending module submissions (status = "Submitted") across all courses. Also returns a breakdown of pending submissions grouped by course.
Responses
Response samples
- 200
{- "totalPending": 25,
- "data": [
- {
- "id": 1,
- "name": "Leadership Training",
- "totalSubmission": 10
}, - {
- "id": 2,
- "name": "Compliance Basics",
- "totalSubmission": 15
}
]
}
Module Types Lookup
Retrieves all the types of modules supported by the platform. Useful for displaying options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "text",
- "display_value": "Text"
}, - {
- "db_value": "video",
- "display_value": "Video"
}, - {
- "db_value": "pdf",
- "display_value": "PDF"
}, - {
- "db_value": "powerpoint",
- "display_value": "Powerpoint"
}, - {
- "db_value": "flashcards",
- "display_value": "Flash Cards"
}, - {
- "db_value": "scorm",
- "display_value": "SCORM/xAPI"
}, - {
- "db_value": "quiz",
- "display_value": "Quiz"
}, - {
- "db_value": "assignment",
- "display_value": "Assignment"
}, - {
- "db_value": "discussion",
- "display_value": "Discussion"
}, - {
- "db_value": "survey",
- "display_value": "Survey"
}
]
Form Field Types Lookup
Retrieves all the types of form fields that are supported for surveys. Useful for displaying options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "text",
- "display_value": "Survey Text"
}, - {
- "db_value": "textarea",
- "display_value": "Text Area"
}, - {
- "db_value": "rating",
- "display_value": "Rating"
}, - {
- "db_value": "radio",
- "display_value": "Single Select"
}, - {
- "db_value": "checkbox",
- "display_value": "Multiple Select"
}, - {
- "db_value": "dropdown",
- "display_value": "Drop Down"
}
]
Modules Tabular List
Retrieves all the modules in a tabular list format in paginated mode. You can apply filter using search_param via associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=10 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"associatedCourse":"","moduleName":""} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "Home Page",
- "slug": "home-page",
- "type": "text",
- "icon": "<i class=\"el-icon-document\"></i>",
- "author": "John Doe",
- "created_at": "2021-01-01 12:00:00"
}
]
}
Quick Edit Modules
This endpoint allows bulk updating of modules and their related details based on the provided module type.
It updates fields like created_by
, updated_by
, no_of_retakes_allowed
, and minimum_percentage
for the selected modules.
Request Body schema: application/jsonrequired
module_ids required | Array of strings The IDs of the modules to update. |
type required | string The type of module (used to determine the model class). |
author_id | integer The new author ID to assign as |
noOfRetakesAllowed | integer The number of allowed retakes for the module. |
minimumPassingMarks | integer The minimum passing percentage. |
Responses
Request samples
- Payload
{- "module_ids": [
- 1,
- 2,
- 3
], - "type": "quiz",
- "author_id": 5,
- "noOfRetakesAllowed": 3,
- "minimumPassingMarks": 60
}
Response samples
- 200
- 422
{- "message": "Modules updated Successfully"
}
Deletes the specified modules.
This function is responsible for deleting the selected modules. The request should contain the IDs of the modules to be deleted.
Request Body schema: application/jsonrequired
delete_ids required | Array of strings The IDs of all the modules which needs to be deleted. |
type required | string The type of module (used to determine the model class). |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 2
], - "type": "quiz"
}
Clone a module.
Clones the module with its corresponding details and mappings. The newly generated cloned module will help to let you change the content of the module with or without letting affect the real module.
Request Body schema: application/jsonrequired
moduleId required | integer ID of the module to be cloned. |
isDeepCopy required | boolean If true, content will be affected in real module if changes made in cloned module. |
Responses
Request samples
- Payload
{- "moduleId": 1,
- "isDeepCopy": false
}
Response samples
- 200
{- "message": "Module Cloned Successfully"
}
Quiz Lookup
Retrieves all the quiz modules. Helps while showing quiz names in form elements like dropdown. You can apply filters using search_term parameter. (See Response)
query Parameters
search_term required | string Example: search_term=Final quiz The name or substring of the quiz name to search for that module. |
Responses
Response samples
- 200
[- {
- "value": 1,
- "label": "First-quiz"
}, - {
- "value": 2,
- "label": "Quiz-2"
}
]
Pages are Front end Marketing visuals. Page can be viewed by the different users to interact with this platform. Endpoint helps in managing pages.
Retrieve Page Layouts
Retrieves all the available page layouts in list format. Returns the list in JSON format.
query Parameters
context required | string Example: context=sequi The context of the page layout. Possible values: page, section, row, or module. |
search required | object Example: The search criteria for filtering page layouts. |
search.title | string Example: search.title=My Layout optional The title of the page layout to search for. |
search.category | Array of strings Example: search.category=category 1&search.category=category 2 optional The categories to filter the page layouts by. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Layout 1",
- "type": "predefined",
- "category": "category 1",
- "data": "<div>Layout 1 HTML</div>",
- "portal_id": 1
}
Save Page Layout
Saves a new page layout. This endpoint is being used by users to save their created page layouts.
Request Body schema: application/jsonrequired
name required | string Name of the page layout. |
context required | string Context of the page layout. Context options: page, section, row or module. |
data required | string HTML content of the page layout. |
portalId required | integer Portal ID of the page layout. |
Responses
Request samples
- Payload
{- "name": "ea",
- "context": "earum",
- "data": "consequatur",
- "portalId": 8
}
Response samples
- 200
{- "id": 1,
- "message": "Layout saved successfully"
}
Retrieve Page Snippets
Retrieves all the available page snippets in list format. Returns the list in JSON format.
Responses
Response samples
- 200
{- "identifier1": {
- "name": "Snippet 1",
- "html": "<div>Snippet 1 HTML</div>"
}, - "identifier2": {
- "name": "Snippet 2",
- "html": "<div>Snippet 2 HTML</div>"
}
}
Get Page
Returns Page details
path Parameters
id required | integer Example: 3 The ID of the page that needs to be retrieved. |
Responses
Response samples
- 200
{- "id": 1,
- "title": "Home Page",
- "slug": "",
- "content": [ ],
- "layout": "full_width",
- "seo_title": "",
- "seo_description": "",
- "seo_thumbnail_url": "",
- "restrictedToLoginUser": false,
- "accessibleBy": "all",
- "metas": [ ],
- "userCategory": [ ],
- "userType": [ ]
}
Update Page
Updates the specified page with new data including title, content, layout, SEO information, and access restrictions. The function accepts the page ID and a request object containing the new data. Validates the request data before updating the page. If the page is restricted to logged-in users, it validates the access permissions and updates user categories or types accordingly.
path Parameters
id required | integer Example: 3 The ID of the page that needs to be retrieved. |
Request Body schema: application/jsonrequired
title | required The title of the page. |
content | optional The content of the page in JSON format. |
layout | required The layout type for the page. Layout options: full_width, no_header, fixed_width. |
seo_title | optional SEO title for the page. |
seo_description | optional SEO description for the page. |
seo_thumbnail_url | optional Thumbnail image for the page. |
restrictedToLoginUser | boolean Indicates if the page is restricted to logged-in users. |
accessibleBy required | string if restrictedToLoginUser is true. The access restriction type. Options: all, user_category, user_type. |
userCategory required | Array of strings if accessibleBy is user_category. Array of user categories. |
userType required | Array of strings if accessibleBy is user_type. Array of user types. |
Responses
Request samples
- Payload
{- "title": "Home Page",
- "content": "[{\"type\": \"text\", \"text\": \"<p>This is a sample page.</p>\"}]",
- "layout": "full_width",
- "seo_title": "null",
- "seo_description": "null",
- "seo_thumbnail_url": "null",
- "restrictedToLoginUser": true,
- "accessibleBy": "user_category",
- "userCategory": [
- "Student",
- "Teacher"
], - "userType": [
- "Student",
- "Teacher"
]
}
Response samples
- 200
{- "id": 1,
- "message": "Page updated successfully"
}
Save Contact form response
The request helps in sending contact form responses to the admins and instructors of the platform. Generally this form is filled and sent by the learners to enquire something regarding your product, course or the platform.
Request Body schema: application/jsonrequired
firstName required | string First Name of the user. |
lastName required | string Last Name of the user. |
email required | string Email of the user. |
phoneNo required | string Phone Number of the user. |
content required | string Message of the user. |
toEmail | string optional Email of the recipient. If not provided, email will be sent to the admin email. |
Responses
Request samples
- Payload
{- "firstName": "John",
- "lastName": "Doe",
- "phoneNo": "1234567890",
- "content": "Question about your course?",
- "toEmail": "[email protected]"
}
Response samples
- 200
{- "message": "Mail sent successfully"
}
Tabular List
Retrieves all the pages in a tabular list format in paginated mode. You can apply filter using search_param via pageName(page name).
query Parameters
page_size required | string Example: page_size=10 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} For ordering items based on columns provided in JSON format. |
search_param | integer Example: search_param=0 for searching items based on field names. |
type | integer Example: type=0 optional The type of pages to retrieve. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "title": "Home Page",
- "slug": "home-page",
- "author": "John Doe",
- "created_at": "2021-01-01 12:00:00"
}
]
}
Get the learner's dashboard menu and accessible pages.
This function retrieves the list of menu items for a general user and fetches pages that are accessible based on restrictions (either globally or for a specific user type).
Responses
Response samples
- 200
{- "pages": [
- {
- "id": 1,
- "title": "Home"
}, - {
- "id": 2,
- "title": "Profile"
}
], - "menus": [
- {
- "id": 1,
- "name": "Dashboard",
- "slug": "dashboard"
}
]
}
Layout Lookup
Retrieves a list of available page layouts in key-value pairs. The 'db_value' represents the layout identifier used in the database, and the 'display_value' provides the user-friendly name for each layout. Returns the list in JSON format.
Responses
Response samples
- 200
[- {
- "db_value": "full_width",
- "display_value": "Full Width"
}, - {
- "db_value": "fixed_width",
- "display_value": "Fixed width with left/right margin gaps"
}, - {
- "db_value": "no_header",
- "display_value": "No Header/Menus/Footer"
}
]
Page Restriction Lookup
Retrieves all the available page restrictions in key-value pairs. The 'db_value' represents the restriction identifier used in the database, and the 'display_value' provides the user-friendly name for each restriction. Returns the list in JSON format.
Responses
Response samples
- 200
[- {
- "db_value": "all",
- "display_value": "No Restriction"
}, - {
- "db_value": "user_category",
- "display_value": "Restrict by User Categories"
}, - {
- "db_value": "user_type",
- "display_value": "Restrict by User Types"
}
]
Page Category Lookup
Retrieves all the page categories. Helps showing options in dropdowns elements
Responses
Response samples
- 200
[- {
- "db_value": "call_to_action",
- "display_value": "Call to Action"
}, - {
- "db_value": "faq",
- "display_value": "FAQs"
}, - {
- "db_value": "features",
- "display_value": "Features"
}, - {
- "db_value": "pages",
- "display_value": "Pages "
}, - {
- "db_value": "products",
- "display_value": "Products "
}, - {
- "db_value": "team",
- "display_value": "Team"
}, - {
- "db_value": "testimonial",
- "display_value": "Testimonial"
}
]
Save a new Page
Creates a new page associated with given portal. Saves the page restrictions. Returns the ID of the newly created page.
Request Body schema: application/jsonrequired
title | required The title of the page. |
content | optional The content of the page in JSON format. |
layout | required The layout type for the page. Layout options: full_width, no_header, fixed_width. |
seo_title | optional SEO title for the page. |
seo_description | optional SEO description for the page. |
seo_thumbnail_url | optional Thumbnail image for the page. |
restrictedToLoginUser | boolean to check to allow the users to access the page. |
accessibleBy required | string if restrictedToLoginUser is true. Accessible by options: all, user_category, user_type. |
userCategory required | Array of strings if accessibleBy is user_category. Array of user categories. |
userType required | Array of strings if accessibleBy is user_type. Array of user types. |
Responses
Request samples
- Payload
{- "title": "Home Page",
- "content": "[{\"type\": \"text\", \"text\": \"<p>This is a sample page.</p>\"}]",
- "layout": "full_width",
- "seo_title": "null",
- "seo_description": "null",
- "seo_thumbnail_url": "null",
- "restrictedToLoginUser": true,
- "accessibleBy": "user_category",
- "userCategory": [
- "Student",
- "Teacher"
], - "userType": [
- "Student",
- "Teacher"
]
}
Response samples
- 200
{- "id": 1,
- "message": "Page saved successfully"
}
Soft Delete Page
To delete a page, you need to use this request. The pages will not be deleted permanently, it will be in draft mode. You can restore the page later. Returns page drafted(if multiple selected). (See Response)
Request Body schema: application/jsonrequired
page_ids required | Array of strings All page IDs which needs to be drafted. |
Responses
Request samples
- Payload
{- "page_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "Page moved to draft successfully"
}
Hard Delete Page
To delete a page, you need to use this request. The pages will be deleted permanently. In this case, you cannot restore the page after hard delete. Returns page deleted(if multiple selected). (See Response)
Request Body schema: application/jsonrequired
page_ids required | Array of strings All page IDs which needs to be deleted. |
Responses
Request samples
- Payload
{- "page_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "Pages deleted permanently"
}
Restore Page
To restore a page, you need to use this request. The pages will be restored from draft mode to published mode. Returns page restored(if multiple selected). (See Response)
Request Body schema: application/jsonrequired
page_ids required | Array of strings All page IDs which needs to be restored. |
Responses
Request samples
- Payload
{- "page_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "Page restored successfully"
}
Update Page Slug
Updates the slug of the page identified by 'id' with the new slug provided. The new slug is checked for uniqueness and if it already exists, a new slug is generated by appending a counter to the slug. The updated slug is then saved to the page. Returns the updated slug.
path Parameters
id required | integer Example: 3 ID of the page to be updated. |
query Parameters
slug required | string Example: slug="about-us" The new slug of the page. |
Responses
Response samples
- 200
"about-us-1"
A PDF Module is a lesson module used as course content. Helps to perform CRUD operation to and for PDF modules.
PDF Modules Tabular List
Returns all the PDF modules in a tabular list format in paginated mode. You can apply filter using search_param via moduleTypes(module type), associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"moduleTypes": ["pdf"],associatedCourse":"","moduleName":""} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "JavaScript Basics",
- "slug": "javascript-basics",
- "type": "pdf",
- "icon": "<i class=\"el-icon-document\"></i>",
- "author": "Aom Staff",
- "created_at": "Aug 03, 2020 09:56 AM",
- "course_count": 1
}
]
}
Create PDF Module
Creates a new pdf module. (See parameters)
Request Body schema: application/jsonrequired
name | required Name of the pdf module. |
content required | string Content for the text modules that students will see. |
url required | string URL or actual path of the pdf module that students will see. |
trackCompletion required | boolean If true, the module is being tracked(whether its finished or not) in course player. |
allowDownload required | boolean If true, the pdf can be downloaded(by the learners) otherwise not in course player. |
defaultZoom required | string The pdf will open with the set zoom percentage in course player. |
showSidebar | boolean If true, the pdf will open with a sidebar in course player. |
categories | Array of strings Categories to be added to the module. |
estimatedCompletion | string Estimated time to complete in course player. |
estimationCompletedUnit | string Unit of estimated time to complete in course player. |
Responses
Request samples
- Payload
{- "name": "Getting Started",
- "content": "<p>This is the updated short content here</p>",
- "trackCompletion": true,
- "allowDownload": true,
- "defaultZoom": "75%",
- "showSidebar": true,
- "categories": [
- 1,
- 2,
- 3
], - "estimatedCompletion": "00:30:00",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "id": 1,
- "message": "Module saved successfully"
}
Get PDF Module
Retrieves the details of the specified pdf module. Helps in fetching pdf module using module ID. (See Parameters) Returns : id, name, slug, content, url, allowDownload, trackCompletion, estimatedCompletion, estimationCompletedUnit, defaultZoom, showSidebar and categories of the pdf module created.
path Parameters
id required | string Example: 6 ID of the pdf module. |
Responses
Response samples
- 200
{- "id": 6,
- "name": "Getting Started",
- "slug": "getting-started",
- "content": " ",
- "allowDownload": true,
- "trackCompletion": true,
- "estimatedCompletion": null,
- "estimationCompletedUnit": null,
- "defaultZoom": "page_width",
- "showSidebar": true,
- "categories": [
- 1,
- 2,
- 3
]
}
Update PDF Module
Updates the details of a specified PDF module. (See parameters) PDF modules can be used in the course as course content/lesson.
path Parameters
id required | string Example: 6 ID of the pdf module. |
Request Body schema: application/jsonrequired
name required | string Name of the PDF module. |
content | string Content for the PDF module that students will see. |
url required | string URL or actual path of the PDF module that students will see. |
trackCompletion | boolean If true, the module is being tracked (whether it's finished or not) in course player. |
allowDownload | boolean If true, the PDF can be downloaded (by the students) otherwise not in course player. |
defaultZoom required | string The PDF will open with the set zoom percentage in course player. |
showSidebar | boolean If true, the PDF will open with a sidebar in course player. |
categories | Array of strings Categories to be added to the module. |
estimatedCompletion | string Estimated time to complete in course player. |
estimationCompletedUnit | string Unit of estimated time to complete in course player. |
Responses
Request samples
- Payload
{- "name": "Getting Started",
- "content": "<p>This is the updated short content here</p>",
- "trackCompletion": true,
- "allowDownload": true,
- "defaultZoom": "75%",
- "showSidebar": true,
- "categories": [
- 1,
- 2,
- 3
], - "estimatedCompletion": "00:30:00",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "message": "Module updated successfully"
}
Get PDF Module Details
To get the details of a pdf module, you need to use this request. (See parameters)
path Parameters
registrationId required | string Example: 1 ID of the course registration. |
moduleId required | string Example: 2 ID of the pdf module. |
portalId required | integer Examples:
Optional parameter. The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
{- "name": "First PDF",
- "slug": "first-pdf",
- "content": "A brief description",
- "courseName": "First Course",
- "totalPoints": 20,
- "shouldBeEvaluated": true,
- "min_time_spent": 90,
- "otherModules": [ ],
- "launchCheck": { },
- "prevSlug": "first-video",
- "nextSlug": "second-video",
- "currentUserId": 1,
- "currentUserName": "John Doe",
- "status": "In Progress",
- "statusRowId": 1,
- "timeSpent": 0,
- "course_newly_completed": false,
- "timeToBeSpent": 1,
- "instructorResponse": null
}
Retrieve Detailed PDF module Info for Membership content
Retrieves details of pdf module in depth for the same membership the current pdf module is attached to. Returns related fields value. (See Response)
query Parameters
moduleId required | string Example: moduleId=9 ID of the pdf module. |
Responses
Response samples
- 200
{- "name": "Getting Started",
- "slug": "getting-started",
- "content": " ",
- "canDownload": true,
- "trackCompletion": true,
- "defaultZoom": "page_width",
- "showSidebar": true,
- "timeSpent": null
}
The Portal API controller handles various operations related to the portal's functionality.
All endpoints within this controller are responsible for providing and managing data related to the portal's core operations.
Create a new portal.
Request Body schema: application/jsonoptional
portalName | required string The name of the portal. |
portalSlug | required string The slug of the portal. |
totalSeat | nullable|integer The total number of seats for the portal. |
expiryDate | nullable|date The date when the portal will expire. |
expiryMessage | nullable|string The message that will be displayed when the portal expires. |
accessPermission | nullable|string The permission for accessing the portal. |
seatAccess | nullable|string The type of seat access for the portal. |
logoImageUrl | nullable|string The URL of the logo for the portal. |
miniLogoImageUrl | nullable|string The URL of the mini logo for the portal. |
brandColor | required|string The brand color for the portal. |
bodyBackgroundColor | required|string The background color for the body of the portal. |
bodyTextColor | required|string The text color for the body of the portal. |
headerBackgroundColor | nullable|string The background color for the header of the portal. |
selectedPrimaryLanguage | required|string The primary language for the portal. |
isActive | nullable|boolean Whether the portal is active or not. |
selectedCourses | nullable|array The courses that should be selected for the portal. |
selectedMembership | nullable|integer The membership that should be selected for the portal. |
enrollMembershipId | nullable|integer The ID of the membership that should be enrolled in the portal. |
isPortalAdminLearner | nullable|boolean Whether the portal admin is also a learner or not. |
portalAdminType | nullable|string The type of portal admin. |
addExistingUser | nullable|array The existing users that should be added to the portal. |
selectedUsers | nullable|array The users that should be selected for the portal. |
selectedCategoriesIds | nullable|array The IDs of the categories that should be selected for the portal. |
enrollCoursesIds | nullable|array The IDs of the courses that should be enrolled in the portal. |
enrollLearningPathIds | nullable|array The IDs of the learning paths that should be enrolled in the portal. |
learnerDashboard | nullable|integer The ID of the page that should be used as the learner dashboard. |
customStyle | nullable|string The custom CSS for the portal. |
customFont | nullable|string The custom font for the portal. |
customCode | nullable|string The custom code for the portal. |
Responses
Request samples
- Payload
{- "portalName": "\"EduPortal\"",
- "portalSlug": "\"eduportal\"",
- "totalSeat": "100",
- "expiryDate": "\"2023-12-31\"",
- "expiryMessage": "\"This portal has expired.\"",
- "accessPermission": "\"all\"",
- "seatAccess": "\"first-come-first-served\"",
- "logoImageUrl": "\"https://example.com/logo.png\"",
- "miniLogoImageUrl": "\"https://example.com/mini-logo.png\"",
- "brandColor": "\"#3498db\"",
- "bodyBackgroundColor": "\"#ffffff\"",
- "bodyTextColor": "\"#333333\"",
- "headerBackgroundColor": "\"#2c3e50\"",
- "selectedPrimaryLanguage": "\"en\"",
- "isActive": "true",
- "selectedCourses": "[1, 2, 3]",
- "selectedMembership": "1",
- "enrollMembershipId": "2",
- "isPortalAdminLearner": "false",
- "portalAdminType": "\"super-admin\"",
- "addExistingUser": "[3, 4, 5]",
- "selectedUsers": "[1, 2]",
- "selectedCategoriesIds": "[10, 11]",
- "enrollCoursesIds": "[101, 102]",
- "enrollLearningPathIds": "[201, 202]",
- "learnerDashboard": "10",
- "customStyle": "\".portal-header { background-color: #333; }\"",
- "customFont": "\"Arial, sans-serif\"",
- "customCode": "\"<script>console.log('Hello World');</script>\""
}
Response samples
- 200
{- "message": "Portal created successfully"
}
Returns a list of courses for a given portal
query Parameters
portalId required | integer Example: portalId=1 The id of the portal |
page_size required | integer Example: page_size=10 Number of results per page. |
page_number required | integer Example: page_number=1 The current page number. |
order_by | object Example: column=name&direction=asc JSON object specifying the column and direction to sort by. |
search_param | object Example: name=John Doe&type=assignment&status=Submitted JSON object containing search criteria. |
Responses
Response samples
- 200
{- "portalName": "portal name",
- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "courseId": 1,
- "portalId": 1,
- "name": "course name",
- "last24hCount": 5,
- "stats": {
- "notStarted": 5,
- "inProgress": 0,
- "completed": 0,
- "total": 5
}
}, - {
- "id": 2,
- "courseId": 2,
- "portalId": 2,
- "name": "course name",
- "last24hCount": 0,
- "stats": {
- "notStarted": 0,
- "inProgress": 0,
- "completed": 0,
- "total": 0
}
}
]
}
Learning Path List
Retrieves learning paths associated with the portal.
path Parameters
portalId required | string Example: 1 Portal ID of the user. |
query Parameters
page_size required | string Example: page_size=10 The number of results per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by={"colName": "name", "direction": "desc"} optional The column to sort the results by. |
search_param | string Example: search_param={"learningPathName": "Learning Path 1"} optional The search query parameters. |
type required | string Example: type=all or active The type of learning paths to retrieve. |
Responses
Response samples
- 200
{- "portalName": "Portal 1",
- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "learningPathId": 1,
- "learningPathName": "Learning Path 1",
- "last24hCount": 5,
- "learningPathStatistics": {
- "notStarted": 3,
- "inProgress": 2,
- "completed": 5
}
}, - {
- "learningPathId": 2,
- "learningPathName": "Learning Path 2",
- "last24hCount": 2,
- "learningPathStatistics": {
- "notStarted": 1,
- "inProgress": 1,
- "completed": 0
}
}
]
}
Retrieves a paginated and filtered list of users for a given portal, including their enrollment statistics.
query Parameters
page_size required | integer Example: page_size=10 Number of results per page. |
page_number required | integer Example: page_number=1 The current page number. |
order_by | object Example: colName=firstName&direction=asc JSON object specifying the column and direction to sort by. |
search_param | object Example: nameOrEmail=John Doe JSON object containing search criteria. |
portalId required | integer Example: portalId=5 ID of the portal to filter users. |
userType | string Example: userType="portal_admin" Type of user to filter by (e.g., 'portal_admin'). |
isInPortal | boolean Example: isInPortal=true Filter users who are in the portal. |
Responses
Response samples
- 200
{- "portalName": "Portal Name",
- "recordsTotal": 100,
- "recordsFiltered": 10,
- "recordIdsFiltered": [
- 1,
- 2,
- 3
], - "records": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "userType": "learner",
- "stats": {
- "notStarted": 2,
- "inProgress": 3,
- "completed": 5,
- "total": 10
}, - "status": "active",
- "lastLogin": "2 days ago",
- "createdBy": "Admin User",
- "createdAt": "2023-10-01 12:00:00",
- "portals": "Portal 1, Portal 2",
- "portalNameForAdmins": "Main Portal",
- "portalUserType": "portal_admin",
- "is_learner": true,
- "userCategory": "Category1, Category2",
- "permissionsDisplayNames": "View, Edit",
- "permissionsNames": [
- "view",
- "edit"
]
}
]
}
Get courses for a given membership
path Parameters
id required | string Example: 1 The ID of the portal. |
query Parameters
page_size required | string Example: page_size=10 The number of records per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} optional The column to sort the results by. |
search_param | string Example: search_param={"courseName": "Course 1"} optional The search query parameters. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "Course 1",
- "slug": "course-1",
- "status": "active",
- "display_status": "Active",
- "categories": "Category 1",
- "author": "John Doe",
- "created_at": "05 Jun 2020 12:00 PM",
- "stats": {
- "total_enrolled": 5,
- "total_completed": 2
}, - "last24hCount": 2
}
]
}
Get modules for a given membership
path Parameters
id required | string Example: 1 The ID of the portal. |
query Parameters
page_size required | string Example: page_size=10 The number of records per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} optional The column to sort the results by. |
search_param | string Example: search_param={"moduleName": "Module 1"} optional The search query parameters. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "Module 1",
- "type": "assignment"
}
]
}
Retrieve Page
Retrieves the details of a specified portal page by its ID. Returns the page's id, title, slug, content, and layout if found, otherwise returns an empty response.
path Parameters
id required | integer Example: 3 The ID of the portal page to retrieve. |
Responses
Response samples
- 200
{- "id": 1,
- "title": "About Us",
- "slug": "about-us",
- "content": "<p>Welcome to our page</p>",
- "layout": "full_width"
}
Update Page
Updates an existing page associated with given portal.
path Parameters
id required | integer Example: 3 The ID of the portal page to retrieve. |
Request Body schema: application/jsonoptional
title | required The title of the page. |
content | optional The content of the page in JSON format. |
Responses
Request samples
- Payload
{- "title": "Home Page",
- "content": "[{\"type\": \"text\", \"text\": \"<p>This is a sample page.</p>\"}]"
}
Response samples
- 200
{- "id": 1,
- "message": "Page updated successfully"
}
Get pages for a given portal
path Parameters
portalId required | string Example: 1 The ID of the portal. |
query Parameters
page_size required | string Example: page_size=10 The number of records per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} optional The column to sort the results by. |
search_param | integer Example: search_param=0 optional The search query parameters. |
type | integer Example: type=0 optional The type of pages to retrieve. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "title": "Home Page",
- "slug": "home-page",
- "content": "This is the home page content",
- "author": "John Doe",
- "created_at": "2021-01-01 12:00:00"
}
]
}
Save a new Portal Page
Validates and saves a new portal page with the provided title, content, and portal ID. The page is associated with the user creating it. Returns the ID of the newly created portal page along with a success message.
Request Body schema: application/jsonrequired
title required | string The title of the portal page. |
content | Array of strings optional The content of the portal page, in JSON format. |
portalId required | integer The ID of the portal to associate the page with. |
Responses
Request samples
- Payload
{- "title": "\"Welcome Page\"",
- "content": [
- {
- "type": "text",
- "text": "<p>Welcome to our portal.</p>"
}
], - "portalId": 123
}
Response samples
- 200
{- "id": 1,
- "message": "Page saved successfully"
}
Soft Delete Page
To delete a page, you need to use this request. The pages will not be deleted permanently, it will be in draft mode. You can restore the page later. Returns page drafted(if multiple selected). (See Response)
Request Body schema: application/jsonrequired
page_ids required | Array of strings All page IDs which needs to be drafted. |
Responses
Request samples
- Payload
{- "page_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "Page moved to draft successfully"
}
Hard Delete Page
Permanently deletes pages specified by the provided page IDs. Once deleted, these pages cannot be restored. Logs the activity for each deleted page.
Request Body schema: application/jsonrequired
page_ids required | Array of strings List of page IDs to be deleted permanently. |
Responses
Request samples
- Payload
{- "page_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "Pages deleted permanently"
}
Restore Page
Restores the pages from draft mode to published mode. Logs the activity for each restored page.
Request Body schema: application/jsonrequired
page_ids required | Array of strings List of page IDs to be restored. |
Responses
Request samples
- Payload
{- "page_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "Page restored successfully"
}
Get Portal Course Catalog
Returns the list of available courses (and learning paths, if any) for a given portal and user. Allows optional filtering by course name and course category.
Request Body schema: application/jsonrequired
portalId required | integer The ID of the portal. |
userId required | integer The ID of the user. |
object Optional search filters. |
Responses
Request samples
- Payload
{- "portalId": 12,
- "userId": 45,
- "search": [ ]
}
Response samples
- 200
{- "courses": [
- {
- "courseId": 101,
- "contentName": "Effective Communication",
- "isEnrolled": true,
- "launchUrl": "yourportal/course/effective-communication/launch",
- "categoryIds": [
- 2,
- 3
]
}
], - "learningPaths": [ ],
- "categoryIds": [
- 2,
- 3
]
}
Retrieves the portal settings
query Parameters
domain required | string Example: domain='example.com' The domain of the portal |
Responses
Response samples
- 200
{- "portalCustomDomainEnabled": "yes|no",
- "verifiedDomain": "yes|no",
- "ipAddress": "127.0.0.1",
- "enabledCustomDomain": "yes|no"
}
Enable or disable custom domain for portals
Request Body schema: application/jsonrequired
isEnabled required | boolean Enable or disable custom domain for portals |
Responses
Request samples
- Payload
{- "isEnabled": true
}
Response samples
- 200
{- "message": "Portal Settings Updated Successfully."
}
Add Portal Admins
Adds new or existing users as portal admins to the specified portal. This method handles:
- Creating new users and assigning them admin roles.
- Assigning existing users as admins.
- Seat validation (restricted vs. unrestricted).
- Permission assignment for admins.
- Learner seat allocation sync with parent or current portal.
Request Body schema: application/jsonrequired
portalId required | integer The ID of the portal where admins will be added. |
portalAdmins | Array of strings List of new portal admin user objects (each must contain |
portalAdminPermissions | Array of strings List of permission names to assign to portal admins. |
isPortalAdminLearner | boolean Indicates if the selected users are also learners. |
selectedExUsers | Array of strings List of existing user IDs to assign as portal admins. Required if |
portalAdminType required | string The type of portal admin being added. Either |
Responses
Request samples
- Payload
{- "portalId": 12,
- "portalAdmins": [
- "molestiae"
], - "portalAdminPermissions": [
- "can_manage_courses",
- "can_edit_settings"
], - "isPortalAdminLearner": true,
- "selectedExUsers": [
- 3,
- 4,
- 5
], - "portalAdminType": "newPortalAdmin"
}
Response samples
- 201
- 422
{- "message": "Portal Admin added successfully"
}
Add learners to a portal.
This endpoint allows adding new learners to a portal either manually, via bulk import, or by selecting existing users. It also supports enrolling learners in courses, learning paths, and memberships, with proper seat availability validation and email domain blocking.
Request Body schema: application/jsonrequired
portalId required | integer The ID of the portal to which learners should be added. |
learners | Array of strings Optional array of learner objects if adding manually or via bulk import. |
selectedCategoriesIds | Array of strings Optional category IDs to assign to the learners. |
enrollCoursesIds | Array of strings Optional course IDs for enrollment. |
enrollLearningPathIds | Array of strings Optional learning path IDs. |
enrollMembershipId | integer Optional membership ID to assign. |
selectExistingUsers | Array of strings Optional array of existing user IDs to attach. |
userAddedType required | string The method of adding users: 'addManually', 'bulkImport', or 'existingUser'. |
Responses
Request samples
- Payload
{- "portalId": 12,
- "learners": [
- "rerum"
], - "selectedCategoriesIds": [
- 1,
- 2
], - "enrollCoursesIds": [
- 101,
- 102
], - "enrollLearningPathIds": [
- 201,
- 202
], - "enrollMembershipId": 301,
- "selectExistingUsers": [
- 5,
- 9
], - "userAddedType": "addManually"
}
Response samples
- 200
- 201
- 422
{- "blockedEmailDomainsmessage": "Email or domain is blocked for user with email [email protected]. Please contact Admin.",
}
Update the permissions of a portal admin
path Parameters
userId required | string Example: 1 User ID of the portal admin. |
portalId required | string Example: 1 Portal ID where the user is an admin. |
Request Body schema: application/jsonrequired
portalAdminPermissions required | Array of strings The permissions for the portal admin. |
Responses
Request samples
- Payload
{- "portalAdminPermissions": [
- "ipsa"
]
}
Response samples
- 200
{- "message": "Permissions updated successfully"
}
Removes users from a given portal and its sub-portals based on the given user IDs and type.
Request Body schema: application/jsonrequired
userIds required | Array of strings The IDs of the users to remove from the portal. |
portalId required | integer The ID of the portal to remove the users from. |
type required | string The type of user to remove, either 'learner' or 'portal_admin'. |
Responses
Request samples
- Payload
{- "userIds": [
- "totam"
], - "portalId": 5,
- "type": "dolore"
}
Response samples
- 201
{- "message": "Portal user removed successfully"
}
Update the status of a portal user
Request Body schema: application/jsonrequired
userIds required | Array of strings The ids of the users |
status required | string The status of the portal user |
Responses
Request samples
- Payload
{- "userIds": [
- "repellat"
], - "status": "est"
}
Response samples
- 200
{- "message": "Portal user status updated successfully"
}
Get detailed portal information.
This endpoint retrieves detailed information about a specific portal, including branding, configuration settings, seat usage, sub-portals, and selected content (courses, paths, memberships).
query Parameters
portalId required | integer Example: portalId=42 The ID of the portal to retrieve. |
Responses
Response samples
- 200
- 404
{- "id": 42,
- "portalName": "My Portal",
- "portalSlug": "my-portal",
- "parentPortalId": null,
- "referralCode": "ABCD1234",
- "seatAccess": "limited",
- "accessPermission": "invite_only",
- "expiryMessage": "Your access has expired.",
- "totalSeats": 100,
- "totalSeatAccess": 100,
- "expiryDate": "30-Dec-2025",
- "brandColor": "#FF5733",
- "bodyBackgroundColor": "#ffffff",
- "bodyTextColor": "#000000",
- "headerBackgroundColor": "#f5f5f5",
- "selectedPrimaryLanguage": "en",
- "customStyle": ".custom { color: red; }",
- "customFont": "Roboto",
- "customCode": "<script>console.log('custom');</script>",
- "isActive": true,
- "totalPortalAdmins": 5,
- "totalLearner": 120,
- "usedSeats": 80,
- "availableSeats": 20,
- "subPortalCount": 2,
- "parentPortalSlug": null,
- "parentPortalName": null,
- "portalCustomDomainEnabled": true,
- "publicSelectedCourses": [
- 101,
- 102
], - "privateSelectedCourses": [
- 201,
- 202
], - "selectedPublicLearningPaths": [
- 301,
- 302
], - "selectedPublicLearningPathNames": [
- "Beginner Path",
- "Intermediate Path"
], - "selectedPrivateLearningPaths": [
- 401
], - "selectedPrivateLearningPathNames": [
- "Advanced Path"
], - "selectedPrivateMembership": 501,
- "selectedPrivateMembershipName": "Gold Membership",
- "selectedContent": {
- "publicCourseIds": [
- 101,
- 102
], - "privateCourseIds": [
- 201,
- 202
], - "publicLearningPathIds": [
- 301,
- 302
], - "publicLearningPathNames": [
- "Beginner Path",
- "Intermediate Path"
], - "privateLearningPathIds": [
- 401
], - "privateLearningPathNames": [
- "Advanced Path"
], - "privateMembershipId": 501,
- "privateMembershipName": "Gold Membership"
}, - "learnerDashboard": "dashboard"
}
Update a portal
Request Body schema: application/jsonrequired
portalName required | string The name of the portal. |
portalSlug required | string The slug of the portal. |
totalSeatAccess | int|null The total number of seats for the portal. |
expiryDate | date|null The date when the portal will expire. |
expiryMessage | string|null The message to be displayed when the portal expires. |
accessPermission | string|null The type of access for the portal. |
seatAccess | string|null The type of seat access for the portal. |
logoImageUrl | string|null The url of the logo image for the portal. |
miniLogoImageUrl | string|null The url of the mini logo image for the portal. |
brandColor | string|null The brand color of the portal. |
bodyBackgroundColor | string|null The background color of the portal's body. |
bodyTextColor | string|null The text color of the portal's body. |
headerBackgroundColor | string|null The background color of the portal's header. |
selectedPrimaryLanguage | string|null The primary language of the portal. |
isActive | boolean|null Whether the portal is active or not. |
publicSelectedCourses | array|null The courses that are selected as public courses. |
privateSelectedCourses | array|null The courses that are selected as private courses. |
selectedPublicLearningPaths | array|null The learning paths that are selected as public learning paths. |
selectedPrivateLearningPaths | array|null The learning paths that are selected as private learning paths. |
selectedPrivateMembership | int|null The membership that is selected as private membership. |
customStyle | string|null The custom CSS for the portal. |
customFont | string|null The custom font for the portal. |
customCode | string|null The custom code for the portal. |
allowedEmails | string|null The emails that are allowed to access the portal. |
Responses
Request samples
- Payload
{- "portalName": "et",
- "portalSlug": "libero",
- "totalSeatAccess": "veniam",
- "expiryDate": "officia",
- "expiryMessage": "nostrum",
- "accessPermission": "ea",
- "seatAccess": "sed",
- "miniLogoImageUrl": "http://www.towne.com/voluptatem-quibusdam-reprehenderit-aut-minus-sint-et.html",
- "brandColor": "quo",
- "bodyBackgroundColor": "vero",
- "bodyTextColor": "sit",
- "headerBackgroundColor": "perspiciatis",
- "selectedPrimaryLanguage": "delectus",
- "isActive": "illo",
- "publicSelectedCourses": "est",
- "privateSelectedCourses": "iste",
- "selectedPublicLearningPaths": "alias",
- "selectedPrivateLearningPaths": "numquam",
- "selectedPrivateMembership": "nam",
- "customStyle": "maiores",
- "customFont": "natus",
- "customCode": "laboriosam",
- "allowedEmails": "architecto"
}
Response samples
- 201
{- "message": "Portal updated successfully"
}
Update the branding settings of a portal
path Parameters
portalId required | string Example: 1 Portal ID of the user. |
Request Body schema: application/jsonrequired
logoImageUrl required | string Logo image URL of the portal. |
miniLogoImageUrl required | string Mini logo image URL of the portal. |
brandColor required | string Brand color of the portal. |
bodyBackgroundColor required | string Body background color of the portal. |
bodyTextColor required | string Body text color of the portal. |
headerBackgroundColor required | string Header background color of the portal. |
selectedPrimaryLanguage required | string Selected primary language of the portal. |
customStyle required | string Custom CSS for the portal. |
customCode required | string Custom JavaScript code for the portal. |
customFont required | string Custom font for the portal. |
learnerDashboard required | string JSON object for learner dashboard. |
Responses
Request samples
- Payload
{- "brandColor": "#2e1e55",
- "bodyBackgroundColor": "#f8f8f8",
- "bodyTextColor": "#1b1e24",
- "headerBackgroundColor": "#2e1e55",
- "selectedPrimaryLanguage": "en",
- "customStyle": "CSS code",
- "customCode": "JavaScript code",
- "customFont": "font family name",
- "learnerDashboard": "{\"type\": \"page\", \"id\": 1} or {\"type\": \"menu\", \"id\": \"menu-name\"}"
}
Response samples
- 200
{- "message": "Portal branding updated successfully"
}
Add a sub portal to the given portal
path Parameters
portalId required | string Example: 1 Portal ID of the user. |
Request Body schema: application/jsonoptional
subPortal | required An array of sub portals. |
Responses
Request samples
- Payload
{- "subPortal": "[{\"name\": \"Sub Portal 1\", \"referralCode\": \"sp1\"}, {\"name\": \"Sub Portal 2\", \"referralCode\": \"sp2\"}]"
}
Response samples
- 200
{- "message": "Sub Portal added successfully"
}
Save the menu items for the given portal. The menu items should be an array of objects with the following properties:
- id: The ID of the menu item.
- label: The label to display for the menu item.
- icon: The icon to display for the menu item.
- type: The type of the menu item. Can be "page" or "custom_link".
- page_id: The ID of the page if the type is "page".
- custom_link: The link to redirect to if the type is "custom_link".
- css_class: The CSS class to apply to the menu item.
- level: The level of the menu item.
- items: An array of submenu items.
Request Body schema: application/jsonrequired
portalId required | integer The ID of the portal. |
menuList required | Array of strings An array of menu items. |
Responses
Request samples
- Payload
{- "portalId": 123,
- "menuList": [
- "voluptatum"
]
}
Response samples
- 200
- 400
{- "message": "Menu updated successfully"
}
Add users to learner list of the portal.
Request Body schema: application/jsonrequired
userIds required | Array of strings The IDs of the users to add to learner list. |
portalId required | integer The ID of the portal to add users to. |
Responses
Request samples
- Payload
{- "userIds": [
- "similique"
], - "portalId": 17
}
Response samples
- 201
{- "message": "User updated successfully"
}
Update a user to portal admin
Request Body schema: application/jsonrequired
userId required | integer The id of the user |
portalId required | integer The id of the portal |
portalAdminPermissions required | Array of strings The permissions for the portal admin |
Responses
Request samples
- Payload
{- "userId": 19,
- "portalId": 1,
- "portalAdminPermissions": [
- "distinctio"
]
}
Response samples
- 200
{- "message": "User updated successfully"
}
Update the status of a given portal(s)
Request Body schema: application/jsonrequired
ids required | Array of strings The IDs of the portals to update. |
status required | string The status to set for the portals. Options: 'Active', 'InActive'. |
Responses
Request samples
- Payload
{- "ids": [
- "illum"
], - "status": "earum"
}
Response samples
- 201
{- "message": "Status updated successfully"
}
Retrieve a paginated list of portals in a tabular format.
Fetches portals with optional filtering by status and portal name, and returns the results in a paginated format with sorting options. The function also provides the total and filtered records count.
query Parameters
page_size required | string Example: page_size=50 The number of items per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by={"colName":"created_at", "direction":"desc"} Optional JSON for sorting. |
search_param | string Example: search_param={"status":"active", "portalName":"Example Portal"} Optional JSON for filtering. |
portalId | string Example: portalId=velit Optional The parent portal ID for filtering sub-portals. |
Responses
Response samples
- 200
{- "recordsTotal": 100,
- "recordsFiltered": 20,
- "records": [
- {
- "id": 1,
- "name": "Portal Name",
- "parentPortalId": "Parent Portal",
- "referralCode": "ABC123",
- "totalSeat": 50,
- "usedSeat": 25,
- "seatAccess": "full",
- "status": "active",
- "slug": "portal-name",
- "portalAdmins": "Admin Name",
- "portalAdminsCount": 3,
- "created_by": "Creator Name",
- "created_at": "Sep 10, 2023 10:00 AM",
- "totalLearner": 10
}
]
}
Lookup Portals
Retrieves portals based on the specified type, portal ID, and search term. If the portal ID is provided and not -1, it fetches sub-portals or reports/portals based on the type. If a search term is provided, it filters portals by name. Returns a list of portals with their ID, name, total seats, used seats, and available seats.
query Parameters
type | string Example: type=subPortals The type of lookup to perform (e.g., subPortals, reports, portals). |
portalId | integer Example: portalId=5 The portal ID to filter by (use -1 to skip filtering). |
search_term | string Example: search_term=Portal 1 The search term to filter portals by name. |
user_id | integer Example: user_id=1 The ID of the user performing the lookup. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Portal 1",
- "totalSeats": 100,
- "usedSeat": 50,
- "availableSeats": 50
}
]
Retrieves all the menus with all its associated items
query Parameters
portalId | integer Example: portalId=1 The portal ID to filter menus by. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "name": "Main Menu",
- "items": [
- {
- "label": "Home",
- "type": "page",
- "custom_link": null,
- "page_id": 1,
- "display_order": 1,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
- "hyperlink": "/"
}, - {
- "label": "Courses",
- "type": "page",
- "custom_link": null,
- "page_id": 2,
- "display_order": 2,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}, - {
- "label": "Our Team",
- "type": "page",
- "custom_link": null,
- "page_id": 3,
- "display_order": 3,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}, - {
- "label": "Contact Us",
- "type": "page",
- "custom_link": null,
- "page_id": 6,
- "display_order": 4,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}
]
}, - {
- "id": 2,
- "name": "Top Bar Menu",
- "items": [
- {
- "label": "Dashboard",
- "type": "custom_link",
- "custom_link": "/dashboard",
- "page_id": null,
- "display_order": 1,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
- "hyperlink": "/dashboard"
}, - {
- "label": "Cart",
- "type": "page",
- "custom_link": null,
- "page_id": 5,
- "display_order": 2,
- "css_class": null,
- "restrictions": null,
- "open_in_new_tab": false,
- "level": 1,
- "isCollapsed": true,
}
]
}, - {
- "id": 3,
- "name": "Footer Menu",
- "items": [ ]
}
]
Page dropdown list
Returns a list of pages of the associated portal with their ID and Name based on the provided portal ID and search term. If a valid portal ID is provided, it filters pages associated with the portal. If no portal ID or an invalid one (e.g., -1) is given, it returns all pages.
query Parameters
portalId | integer Example: portalId=5 The portal ID to filter pages by portal. Use -1 to skip portal filtering. |
search_term | string Example: search_term="Advanced" The search term to filter pages by title. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "title": "Page 1"
}, - {
- "id": 2,
- "title": "Page 2"
}
]
Retrieve the menu and pages for a specific portal.
This endpoint retrieves the list of pages associated with a given portal and the sidebar menu items for the portal user.
Request Body schema: application/jsonrequired
portalId required | integer The ID of the portal. |
Responses
Request samples
- Payload
{- "portalId": 123
}
Response samples
- 200
- 400
{- "pages": [
- {
- "id": 1,
- "title": "Home Page"
}, - {
- "id": 2,
- "title": "About Us"
}
], - "menus": [
- "Dashboard",
- "My Profile",
- "Settings"
]
}
Retrieve checkout details for a portal order
Request Body schema: application/jsonoptional
portalId | required The ID of the portal. |
qty | required The quantity of the product to be purchased. |
billingAddress | required The customer billing address. |
shippingAddress | required The customer shipping address. |
selectedBillingAddress | required The customer selected billing address. |
selectedShippingAddress | required The customer selected shipping address. |
isShippingSameAsBilling | required Whether the shipping address is the same as the billing address. |
shippingMethodId | required The ID of the shipping method. |
Responses
Request samples
- Payload
{- "portalId": "dolore",
- "qty": "laboriosam",
- "billingAddress": "dolorum",
- "shippingAddress": "sunt",
- "selectedBillingAddress": "tempore",
- "selectedShippingAddress": "animi",
- "isShippingSameAsBilling": "in",
- "shippingMethodId": "aliquid"
}
Response samples
- 200
{- "recurringItems": [ ],
- "hasSubscriptionWithFreeTrial": false,
- "hasSubscriptionProduct": false,
- "productDetails": [ ],
- "totalTax": 0,
- "conditions": [ ],
- "taxRates": [ ],
- "taxSettings": { },
- "total": 0,
- "subtotal": 0,
- "itemQuantity": 1,
- "portalId": 1,
- "currentPortalSeats": 0,
- "cartErrors": {
- "message": null,
- "portalMessages": null
}
}
Updates the current portal for a user
query Parameters
portalId required | integer Example: portalId=1 ID of the portal to set as current. |
userId | integer Example: userId=1 optional ID of the user to update the current portal for. Defaults to the ID of the authenticated user. |
Responses
Response samples
- 200
{- "message": "Current portal updated successfully"
}
Retrieve Portal Details Report
Provides detailed report information for portals based on the specified parameters.
query Parameters
page_size required | string Example: page_size=10 The number of results per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by=doloremque optional The column to sort the results by in the format {"colName": "name", "direction": "asc"} |
Responses
Response samples
- 200
{- "recordsTotal": 100,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "Portal 1",
- "parentPortalName": "Parent Portal",
- "totalSeat": 100,
- "usedSeat": 50,
- "status": "active",
- "seatAccess": "open",
- "portalUserIds": [
- 1,
- 2,
- 3
], - "portalAdminsCount": 2,
- "created_by": "Admin User",
- "created_at": "2023-01-01 12:00:00",
- "portalExpireOn": "2024-01-01 12:00:00",
- "totalLearner": 50,
- "portalUserDetails": [
- {
- "firstName": "John",
- "lastName": "Doe",
- "isLearner": true,
- "isAdmin": "admin"
}
]
}
]
}
Clone a portal and optionally its sub-portal.
This endpoint clones a portal and its associated data (such as branding, settings, etc.), including an optional sub-portal. A new referral code is generated for each cloned portal.
Request Body schema: application/jsonrequired
portalId required | integer The ID of the portal to be cloned. |
portalName required | string The name of the new cloned portal. |
subPortals | boolean Optional flag indicating whether to clone a sub-portal. |
Responses
Request samples
- Payload
{- "portalId": 5,
- "portalName": "My Cloned Portal",
- "subPortals": true
}
Response samples
- 200
{- "message": "Portal Cloned Successfully"
}
A Powerpoint Module is used as course content. Helps to perform CRUD operation to and for Powerpoint modules.
Powerpoint Modules Tabular List
Returns all the powerpoint modules in a tabular list format with pagination. Filters can be applied using search parameters such as moduleCategoryIds, associatedCourse, and moduleName. Data can be sorted using order_by.
query Parameters
page_size required | string Example: page_size=50 The number of items per page. |
page_number required | string Example: page_number=1 Current page number for pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} Optional JSON for sorting items by column. |
search_param | string Example: search_param={"moduleCategoryIds": [], "associatedCourse": "", "moduleName": ""} Optional JSON for searching by moduleCategoryIds, associatedCourse, and moduleName. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 5,
- "records": [
- {
- "id": 1,
- "name": "Powerpoint Module 1",
- "slug": "powerpoint-module-1",
- "type": "powerpoint",
- "icon": "<i class=\"el-icon-presentation\"></i>",
- "author": "John Doe",
- "showMappedCourses": false,
- "created_at": "Aug 03, 2020 09:56 AM",
- "course_count": 2
}
]
}
Create a new Powerpoint module
Creates a new Powerpoint module. Returns the ID of the newly created module.
query Parameters
name required | string Example: name=Getting Started Name of the Powerpoint module. |
viewer required | string Example: viewer=microsoft_office microsoft_office, google_viewer. |
content | string Example: content=<p>This is the content for the module</p> Content for the text modules that students will see. |
url required | string Example: url=https://drive.google.com/file/d/0B5cbJMbHsJ1gc3RhcnRlcl9ma2Rhc2hlclYw/view?usp=sharing URL or actual path of the Powerpoint module that students will see. |
estimatedCompletion | integer Example: estimatedCompletion=30 Estimated time in minutes that a student should take to complete this module. |
estimationCompletedUnit | string Example: estimationCompletedUnit=hour Required if estimatedCompletion is set. |
categories | Array of strings Example: categories=1&categories=2&categories=3&categories=Category 1 of integers or strings List of categories that this module belongs to. If strings are provided, new categories will be created. |
Responses
Response samples
- 200
{- "id": 6,
- "message": "Module saved successfully"
}
Retrieve a Powerpoint Module
Retrieves a Powerpoint module by given id. Returns its details and associated courses.
path Parameters
id required | string Example: 6 The ID of the Powerpoint module. |
Responses
Response samples
- 200
{- "id": 6,
- "name": "Getting Started",
- "slug": "getting-started",
- "content": "<p>This is the content for the module</p>",
- "estimatedCompletion": 1,
- "estimationCompletedUnit": "hour",
- "categories": [
- 1,
- 2
], - "courses": [
- {
- "course_id": 1,
- "course_name": "Course 1"
}, - {
- "course_id": 2,
- "course_name": "Course 2"
}
]
}
Update Powerpoint Module
Updates the details of the specified powerpoint module. (See parameters) Powerpoint modules can be used in the course as course content/lesson.
Returns : successfull message
path Parameters
id required | string Example: 6 The ID of the Powerpoint module. |
Request Body schema: application/jsonrequired
id | required The ID of the powerpoint module. |
viewer | required Viewer for the module. |
name required | string Name of the powerpoint module. |
content required | string Content for the powerpoint modules that students will see. |
url required | string URL or actual path of the powerpoint module that students will see. |
estimatedCompletion | integer Estimated time in minutes that a student should take to complete this module. |
estimationCompletedUnit | string Required if estimatedCompletion is set. |
categories | Array of strings of integers or strings List of categories that this module belongs to. If strings are provided, new categories will be created. |
Responses
Request samples
- Payload
{- "id": "6",
- "viewer": "<iframe src=\"https://view.officeapps.live.com/op/embed.aspx?src=https://example.com/powerpoint.pptx\" width=\"100%\" height=\"600px\"></iframe>",
- "name": "My-powerpoint-lesson",
- "content": "<p>This is the content for the module</p>",
- "estimatedCompletion": 30,
- "estimationCompletedUnit": "hour",
- "categories": [
- 1,
- 2,
- 3,
- "Category 1"
]
}
Response samples
- 200
{- "message": "Module updated successfully"
}
Get Powerpoint Module Details
To get the details of a powerpoint module, you need to use this request. (See parameters)
path Parameters
registrationId required | string Example: 1 ID of the course registration. |
moduleId required | string Example: 2 ID of the powerpoint module. |
portalId required | integer Examples:
Optional parameter. The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
{- "name": "First Powerpoint",
- "slug": "first-powerpoint",
- "content": "A brief description",
- "courseName": "First Course",
- "totalPoints": 20,
- "shouldBeEvaluated": true,
- "min_time_spent": 90,
- "otherModules": [ ],
- "launchCheck": { },
- "prevSlug": "first-video",
- "nextSlug": "second-video",
- "currentUserId": 1,
- "currentUserName": "John Doe",
- "status": "In Progress",
- "statusRowId": 1,
- "timeSpent": 0,
- "course_newly_completed": false,
- "timeToBeSpent": 1,
- "instructorResponse": null
}
Retrieve Detailed Powerpoint Module Info
Retrieves details of a Powerpoint module for the current user. Returns related fields such as module name, slug, viewer type, URL, content, and time spent on the module.
query Parameters
moduleId required | string Example: moduleId=9 The ID of the Powerpoint module. |
Responses
Response samples
- 200
{- "name": "Module Name",
- "slug": "module-slug",
- "viewer": "google_viewer",
- "url": "//docs.google.com/viewer?url=...",
- "content": "Module content here...",
- "timeSpent": 120
}
Manage Questions. Questions can be added in the Quiz module for learners to answer. Helps to perform CRUD operations for and to questions.
Questions Tabular List
Returns all the questions in a tabular list format in paginated mode. You can apply filter using search_param via questionTypes, questionCategoryIds, quizModuleId and questionName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"questionTypes":[],"questionCategoryIds":[],"quizModuleId":"","questionName":""} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "title": "Question-1",
- "type": "multiple_choice",
- "display_type": "Multiple Choice",
- "categories": "Category-1",
- "author": "John Doe",
- "created_at": "2021-01-01 12:00:00"
}
]
}
Lookup for questions.
Searches for questions based on a search term provided in the request. Returns a list of questions with their IDs and titles that match the search term. The response is formatted to include 'value' as the question ID and 'label' as the question title for each matching question.
query Parameters
search_term required | string Example: search_term=nobis The term to search for in question titles. |
Responses
Response samples
- 200
[- {
- "value": 1,
- "label": "Question Title 1"
}, - {
- "value": 2,
- "label": "Question Title 2"
}
]
Quick Edit
Updates the details in bulk for a specified question. Parameters is provided which needs to be updated. (See Parameters)
Request Body schema: application/jsonrequired
question_ids required | Array of strings All question IDs which needs to be updated. |
author_id | integer Update the instructor/Author for the selected questions. |
categories_id | Array of strings Update the categories of selected questions. |
Responses
Request samples
- Payload
{- "question_ids": [
- 3,
- 2
], - "author_id": 1,
- "categories_id": [
- 6
]
}
Response samples
- 200
{- "message": "Questions updated Successfully"
}
Creates a new question with the given details.
Validates the question details and stores the question in the database.
Request Body schema: application/jsonrequired
title required | string Title of the question. |
content | string Content for the text modules that students will see. |
type required | string Type of the question. Type options: multiple_choice, multiple_correct or short_answers. |
hint | string Hint for the question for students. |
explanation | string Explanation of the answer for students. |
categories | Array of strings Categories for the question. |
options | Array of strings Options and correct answer for this question. |
matchPossibilities | string Match possibilities for the question. |
Responses
Request samples
- Payload
{- "title": "Q1",
- "content": "<p>This is the short content here</p>",
- "type": "multiple_choice",
- "hint": "SpaceX owner",
- "explanation": "Elon owns Tesla car company",
- "categories": [
- 12,
- 16
], - "options": [
- "soluta"
], - "matchPossibilities": "{ \"item\": \"Apple\", \"match\": \"Fruit\" }"
}
Response samples
- 200
{- "id": 4,
- "message": "Question saved successfully"
}
Retrieves the details of a specified question. Helps in fetching question using its ID. (See Parameters)
path Parameters
id required | integer Example: 2 ID of the question you want to fetch the details of. |
Responses
Response samples
- 200
{- "id": 4,
- "title": "Q1",
- "content": "<p>This is the short content here</p>",
- "hint": "SpaceX owner",
- "explanation": "Elon owns Tesla car company",
- "type": "multiple_choice",
- "categories": [
- 12,
- 16
], - "options": [
- {
- "value": "Elon Musk",
- "is_correct": true
}, - {
- "value": "Jeff bezos",
- "is_correct": false
}
]
}
Update Question
Updates the details of a specified question. (See parameters) Questions can be used in the quizzes as quiz's content.
path Parameters
id required | integer Example: 2 ID of the question you want to fetch the details of. |
Request Body schema: application/jsonrequired
id | required ID of the question you want to edit. |
title | required Title of the question. |
content | string Content for the text modules that students will see. |
type | required Type of the question. Type options: multiple_choice, multiple_correct or short_answers. |
hint | string Hint for the question for students. |
explanation | string Explanation of the answer for students. |
options | required Array of options and correct answer for this question. |
categories | Array of strings Categories of the question. |
matchPossibilities required | string if type is match_answers. |
Responses
Request samples
- Payload
{- "id": "7",
- "title": "Q1",
- "content": "<p>This is the short content here<\\/p>",
- "type": "multiple_choice",
- "hint": "Hint here",
- "explanation": "This is the explanation",
- "options": "[{value: \\\"Elon Musk\\\", is_correct: true}, {value: \\\"Jeff bezos\\\", is_correct: false}]",
- "categories": [
- 3,
- 4
], - "matchPossibilities": "Possibility 1, Possibility 2"
}
Response samples
- 200
{- "message": "Question updated successfully"
}
Delete question
To delete a question, you need to use this request. Returns number of question deleted(if multiple selected) and also not deleted. (See Response)
Request Body schema: application/jsonrequired
delete_ids required | Array of strings All question IDs which needs to be deleted. |
Responses
Request samples
- Payload
{- "delete_ids": [
- 1,
- 12,
- 15
]
}
Response samples
- 200
{- "message": "3 question(s) deleted 2 question(s) not deleted as it is used in quiz. Please remove the question(s) from the quiz and try again.",
- "deletedQuestions": [
- 1,
- 2,
- 3
], - "notDeletedQuestions": [
- 5,
- 6
], - "usedInPlaces": {
- "Question Category-1": [
- {
- "id": 1,
- "name": "Quiz-1"
}
], - "Question Category-2": [
- {
- "id": 2,
- "name": "Quiz-2"
}
]
}
}
Bulk upload questions from CSV file
Request Body schema: application/jsonrequired
questionList required | Array of strings Question List. See the example request. |
quizIds required | Array of strings Quiz Ids to which the questions should be added |
quiztype required | string Type of quiz, new or existing |
newQuiz required | string Name of the new quiz |
Responses
Request samples
- Payload
{- "questionList": [
- "deserunt"
], - "quizIds": [
- "at"
], - "quiztype": "non",
- "newQuiz": "labore"
}
Response samples
- 201
{- "message": "Question(s) uploaded successfully",
- "status": "success",
- "title": "Success",
- "errors": [
- [
- "Row #1 : Question Type is not correct.",
- "Row #2 : Empty Title/Title too large(It must be under 500 characters).",
- "Row #2 : Multiple Choice - Incorrect value in Correct_Answer column. Correct_Answer column must contain only Numbers(>0)"
]
], - "successfulRow": 4,
- "skipped": 2,
- "insertedQuestions": [
- {
- "id": 1,
- "title": "Question1"
}, - {
- "id": 2,
- "title": "Question2"
}, - {
- "id": 3,
- "title": "Question3"
}, - {
- "id": 4,
- "title": "Question4"
}
]
}
This controller handles all API interactions related to QuickBooks integration. * Endpoints in this controller are responsible for managing QuickBooks-specific operations, ensuring seamless integration between the system and QuickBooks.
Returns all the QuickBooks logs in a tabular list format in paginated mode.
path Parameters
id required | string Example: 50 ID of the QuickBooks action. |
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"entity": "order", "entityId": 10, "status": "success"} For filtering records based on the columns provided in JSON format. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "event": "new_account_created",
- "data": [ ],
- "status": "success",
- "errorMessage": "",
- "created_at": "Aug 03, 2020 09:56 AM",
- "showData": false
}
]
}
A Quiz Module is a quiz used as course content. Helps to perform CRUD operation to and for quiz modules.
Quizzes Tabular List
Returns all the quizzes in a tabular list format with pagination. Filters can be applied using search parameters for associated courses and module names.
query Parameters
page_size required | string Example: page_size=50 The number of items per page. |
page_number required | string Example: page_number=1 Current page number for pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} Optional JSON for sorting items by column. |
search_param | string Example: search_param={"associatedCourse": "", "moduleName": ""} Optional JSON for searching by associatedCourse and moduleName. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 5,
- "records": [
- {
- "id": 1,
- "name": "Quiz 1",
- "slug": "quiz-1",
- "type": "quiz",
- "totalQuestions": 5,
- "icon": "<i class=\"el-icon-tickets\"></i>",
- "author": "John Doe",
- "showMappedCourses": false,
- "created_at": "Aug 03, 2020 09:56 AM",
- "course_count": 2
}
]
}
Creates a new Quiz Module.
Request Body schema: application/jsonoptional
name | required The name of the quiz module. |
content | string The content of the quiz module. |
type | required The type of the quiz, either static or dynamic. |
showCorrectAnswerOption | required Whether to show correct answer. Options: always, never, not_till_retake_allowed. |
shuffleQuestions | boolean Whether to shuffle the questions. |
forceSequential | boolean Whether to force the questions sequential. |
realTimeGrading | boolean Whether to grade the quiz in real time. |
noOfRetakesAllowed | integer The number of retakes allowed. 0 means unlimited. |
minimumPassingMarks | integer The minimum passing marks. |
questions | required_if:type,static The questions to be included in the quiz. |
questionCategories | required_if:type,dynamic The categories of questions to be included in the quiz. |
maxSpentHour | integer The maximum time to be spent in hours. |
maxSpentMinutes | integer The maximum time to be spent in minutes. |
estimatedCompletion | string The estimated time to complete the quiz. |
estimationCompletedUnit | string The unit of estimated time to complete the quiz. |
Responses
Request samples
- Payload
{- "name": "nam",
- "content": "aut",
- "type": "eius",
- "showCorrectAnswerOption": "dolorum",
- "shuffleQuestions": false,
- "forceSequential": false,
- "realTimeGrading": true,
- "noOfRetakesAllowed": 7,
- "minimumPassingMarks": 18,
- "questions": "vero",
- "questionCategories": "praesentium",
- "maxSpentHour": 5,
- "maxSpentMinutes": 8,
- "estimatedCompletion": "autem",
- "estimationCompletedUnit": "qui"
}
Response samples
- 200
{- "id": 1,
- "message": "Module saved successfully"
}
Get Quiz Module
Returns the details of the specified quiz module.
query Parameters
id required | string Example: id=6 ID of the quiz module. |
Responses
Response samples
- 200
{- "id": 8,
- "name": "Quiz-2",
- "slug": "quiz-2",
- "content": "<p>afegrshtdh</p>",
- "type": "static",
- "shuffleQuestions": true,
- "forceSequential": true,
- "realTimeGrading": true,
- "showCorrectAnswerOption": "always",
- "noOfRetakesAllowed": 3,
- "minimumPassingMarks": null,
- "questions": [
- {
- "id": 3,
- "title": "Is red a color?"
}
], - "questionCategories": [ ],
- "maxSpentMinutes": "",
- "maxSpentHour": ""
}
Update Quiz Module
Updates the details of a specified quiz module. This includes both static and dynamic types. Validates and processes the module details, including questions or question categories, and updates the associated database records accordingly.
Request Body schema: application/jsonrequired
name required | string Name of the quiz module. |
content | string Content for the quiz module. |
type required | string Type of the quiz, either 'static' or 'dynamic'. |
showCorrectAnswerOption required | string Option to show correct answers: always, never, or not_till_retake_allowed. |
shuffleQuestions | boolean Shuffle the questions in the quiz. |
forceSequential | boolean Display questions in a fixed order. |
realTimeGrading | boolean Enable real-time grading. |
noOfRetakesAllowed | integer Maximum number of retakes allowed for the quiz. Maximum: 9999. |
minimumPassingMarks | integer Minimum percentage required to pass the quiz. |
questions | Array of strings required_if:type,static List of questions for static quizzes. |
questionCategories | Array of strings required_if:type,dynamic List of question categories for dynamic quizzes. |
maxSpentHour | integer Maximum hours allowed for the quiz. Minimum: 0. |
maxSpentMinutes | integer Maximum minutes allowed for the quiz. Minimum: 0. |
estimatedCompletion | string Estimated time to complete the quiz. |
estimationCompletedUnit | string Unit of estimated time to complete. |
Responses
Request samples
- Payload
{- "name": "Quiz-1",
- "content": "<p>Quiz content</p>",
- "type": "et",
- "showCorrectAnswerOption": "qui",
- "shuffleQuestions": true,
- "forceSequential": true,
- "realTimeGrading": false,
- "noOfRetakesAllowed": 4,
- "minimumPassingMarks": 4,
- "questions": [
- "voluptatem"
], - "questionCategories": [
- "dolorum"
], - "maxSpentHour": 16,
- "maxSpentMinutes": 11,
- "estimatedCompletion": "00:30:00",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 201
{- "id": 5,
- "message": "Module saved successfully"
}
Retrieves the details of the specified quiz module. Helps in fetching quiz module using module ID.
query Parameters
moduleId required | string Example: moduleId=1 ID of the module. |
registrationId required | string Example: registrationId=2 ID of the course registration. |
portalId required | string Example: portalId=3 ID of the portal. |
Responses
Response samples
- 200
{- "name": "Quiz-2",
- "slug": "quiz-2",
- "content": "<p>afegrshtdh</p>",
- "courseId": 6,
- "courseName": "Course 1",
- "courseSlug": "/course/1/launch",
- "type": "static",
- "shuffleQuestion": true,
- "forceSequential": true,
- "realTimeGrading": true,
- "showCorrectAnswerOption": "always",
- "minimumPassingMarks": null,
- "maxTimer": "",
- "maxRetakesAllowed": 0,
- "min_time_spent": 0,
- "questions": [ ],
- "otherModules": [ ],
- "launchCheck": {
- "canbeLaunched": true,
- "reason": ""
}, - "userId": 1,
- "showInstructionButton": true,
- "prevSlug": "",
- "nextSlug": ""
}
Save the answer of the question in the quiz module
Saves the answer of the question in the quiz module. Updates the status of quiz to completed if student is finished the quiz and submits. (See Parameters)
query Parameters
questionId required | string Example: questionId=1 ID of the question is user is answering. |
moduleStatusId required | string Example: moduleStatusId=10 ID of the Module status of the current quiz. |
isAnswerSubmitted required | string Example: isAnswerSubmitted=true boolean to check if answer is submitted or not. |
markedAnswer required | string Example: markedAnswer=A Answer marked by the user. |
Responses
Response samples
- 200
{- "id": 1,
- "message": "Answer saved successfully",
- "isCorrect": true
}
Submits the quiz after attempting all the questions of the quiz. Updates the status of quiz to completed if student is finished the quiz and submits.
query Parameters
portalId required | string Example: portalId=1 The ID of the portal for the user. |
questions required | string Example: questions=[{"id":1,"type":"multiple_choice","markedAnswer":"A"}] An array of questions in the current quiz. |
statusRowId required | string Example: statusRowId=10 The ID of the module status for the current quiz. |
retakeCounter required | string Example: retakeCounter=2 The number of times the quiz has been retaken. |
Responses
Response samples
- 200
{- "message": "Quiz Submitted Successfully",
- "course_newly_completed": false
}
Get Quiz Module Results
Retrieves the quiz module results based on the status row ID specified.
query Parameters
statusRowId required | string Example: statusRowId=10 The ID of the status row. |
studentId required | string Example: studentId=2 The ID of the student. |
Responses
Response samples
- 200
{- "name": "Quiz 1",
- "slug": "quiz-1",
- "status": "Completed",
- "questions": [
- {
- "id": 1,
- "title": "Question 1",
- "type": "Multiple Choice",
- "content": "What is your question?",
- "explanation": "This is the explanation",
- "is_correct": true,
- "marked_answer": "A",
- "correct_answer": "A",
- "created_at": "2020-03-03 10:30:00"
}
], - "studentName": "John Doe",
- "totalQuestions": 5,
- "totalCorrect": 4,
- "totalInCorrect": 1,
- "minimumPassingAchieved": true,
- "score": 80,
- "percentAchieved": 80,
- "showCorrectAnswerOption": true,
- "courseCompleted": false,
- "totalRetakeallowed": 3,
- "attemptCount": 2,
- "timeSpent": "00:30:00",
- "minimumPassingMarks": 90,
- "isRetakeAllowed": true
}
Quiz Lookup
Retrieves all the quiz modules. Helps while showing quiz names in form elements like dropdown. You can apply filters using search_term parameter. (See Response)
query Parameters
search_term required | string Example: search_term=molestiae The name or substring of the quiz name to search for that module. |
Responses
Response samples
- 200
[- {
- "value": 1,
- "label": "First-quiz"
}, - {
- "value": 2,
- "label": "Quiz-2"
}
]
Returns the analysis details of a quiz, including the questions, options selected, percentages etc.
Request Body schema: application/jsonrequired
page_size required | integer The number of records to return per page. |
page_number required | integer The page number to return. |
search_param | string The search query to filter the results by. |
quiz_id required | integer The id of the quiz module. |
Responses
Request samples
- Payload
{- "page_size": 17,
- "page_number": 14,
- "search_param": "aspernatur",
- "quiz_id": 10
}
Response samples
- 200
{- "quizName": "Quiz Example",
- "totalSubmissions": 5,
- "questionDetails": [
- {
- "id": 1,
- "name": "What is your name?",
- "questionType": "Multiple Choice",
- "correctOption": [
- 1,
- 2
], - "optionsWithPercentage": {
- "Option A": 20,
- "Option B": 40,
- "Option C": 40
}
}, - {
- "id": 2,
- "name": "What is your age?",
- "questionType": "Short Answer",
- "correctOption": [ ],
- "optionsWithPercentage": {
- "18-24": 60,
- "25-34": 20,
- "35-44": 20
}
}
], - "totalQuestions": 5,
- "recordsFiltered": 5,
- "quizStatistics": {
- "averageScore": 80,
- "averageTimeSpent": "00:30:00",
- "totalSubmissions": 5
}, - "averageTimeSpent": "00:30:00",
- "totalAttempts": 10,
- "headers": [
- "optionName_1",
- "markedPercentageOfOption_1",
- "optionName_2",
- "markedPercentageOfOption_2",
- "optionName_3",
- "markedPercentageOfOption_3"
]
}
Get the question submission details
Retrieves the question submission details based on the question ID and quiz ID specified.
query Parameters
quiz_id required | string Example: quiz_id=1 The ID of the quiz. |
question_id required | string Example: question_id=1 The ID of the question. |
page_size required | string Example: page_size=10 The number of records to be returned in a single page. |
page_number required | string Example: page_number=1 The page number to be returned. |
Responses
Response samples
- 200
{- "totalRecords": 100,
- "records": [
- {
- "courseName": "Course 1",
- "firstName": "John",
- "lastName": "Doe",
- "questionType": "Multiple Choice",
- "markedAnswer": "A",
- "isCorrectResponse": "Yes"
}
]
}
Downloads the quiz response as a PDF.
Generates a PDF file containing the details of the quiz response, including the name, retake information, time spent, questions, answers, and scores. The PDF is then returned as a downloadable file.
query Parameters
statusRowId required | string Example: statusRowId=consequuntur The ID of the status row. |
Responses
Send the quiz score achieved by the user to the LTI consumer.
query Parameters
statusRowId required | string Example: statusRowId=10 The ID of the status row. |
userId required | string Example: userId=2 The ID of the user. |
ltiRegistrationId required | string Example: ltiRegistrationId=1 The ID of the LTI registration. |
courseId required | string Example: courseId=3 The ID of the course. |
Responses
Response samples
- 200
- 500
{- "status": "success",
- "message": "Score submitted successfully."
}
Get the quiz module content details
Retrieves the quiz module content details based on the quiz ID specified.
query Parameters
id required | string Example: id=1 The ID of the quiz. |
name required | string Example: name=Quiz 1 The name of the quiz. |
content required | string Example: content=Quiz 1 content The content of the quiz. |
type required | string Example: type=static The type of the quiz. |
shuffleQuestions | string Example: shuffleQuestions=true optional Whether to shuffle the questions or not. |
forceSequential | string Example: forceSequential=true optional Whether to force sequential questions or not. |
realTimeGrading | string Example: realTimeGrading=true optional Whether to enable real time grading or not. |
slug required | string Example: slug=quiz-1 The slug of the quiz. |
showCorrectAnswerOption required | string Example: showCorrectAnswerOption=always The option to show correct answer. |
noOfRetakesAllowed required | string Example: noOfRetakesAllowed=2 The number of retakes allowed. |
questionCategories required | string Example: questionCategories=[{"categoryId": 1, "numOfQuestions": 2}] The question categories. |
questions required | string Example: questions=[{"id": 1, "title": "Question 1", "content": "Question 1 content", "type": "multiple_choice", "hint": "Hint 1", "explanation": "Explanation 1"}] The questions. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "Quiz 1",
- "content": "Quiz 1 content",
- "type": "static",
- "shuffleQuestions": true,
- "forceSequential": true,
- "realTimeGrading": true,
- "slug": "quiz-1",
- "showCorrectAnswerOption": "always",
- "noOfRetakesAllowed": 2,
- "questionCategories": [
- {
- "categoryId": 1,
- "numOfQuestions": 2
}
], - "questions": [
- {
- "id": 1,
- "title": "Question 1",
- "content": "Question 1 content",
- "type": "multiple_choice",
- "hint": "Hint 1",
- "explanation": "Explanation 1"
}
]
}
It allows you to track learner activity and progress in the LMS, and trigger changes in Salesforce data accordingly.
Salesforce Event Lookup
Retrieves all the events for the salesforce actions. Helps showing options in dropdowns elements
Responses
Response samples
- 200
{- "events": [
- {
- "db_value": "new_account_created",
- "display_value": "New Account Created",
- "crud_op": "Create",
- "salesforce_crud": [
- {
- "db_value": "salesforce_contact",
- "display_value": "Salesforce Contacts"
}
]
}, - {
- "db_value": "account_updated",
- "display_value": "Account Updated",
- "crud_op": "Update",
- "salesforce_crud": [
- {
- "db_value": "salesforce_contact",
- "display_value": "Salesforce Contacts"
}
]
}, - {
- "db_value": "course_enrolled",
- "display_value": "Enrolled in a course",
- "crud_op": "Update",
- "salesforce_crud": [
- {
- "db_value": "salesforce_custom_registration_object",
- "display_value": "Salesforce Custom Course Registration Object"
}
]
}, - {
- "db_value": "course_completed",
- "display_value": "Course Completed",
- "crud_op": "Update",
- "salesforce_crud": [
- {
- "db_value": "salesforce_custom_registration_object",
- "display_value": "Salesforce Custom Course Registration Object"
}
]
}, - {
- "db_value": "course_started",
- "display_value": "Course Started",
- "crud_op": "Update",
- "salesforce_crud": [
- {
- "db_value": "salesforce_custom_registration_object",
- "display_value": "Salesforce Custom Course Registration Object"
}
]
}, - {
- "db_value": "course_progress",
- "display_value": "Course Progress Tracking",
- "crud_op": "Update",
- "salesforce_crud": [
- {
- "db_value": "salesforce_custom_registration_object",
- "display_value": "Salesforce Custom Course Registration Object"
}
]
}
]
}
Field Lookup
Retrieves all the fields for the given object type - contact or custom_course_object. Helps showing options in dropdowns elements
query Parameters
type required | string Example: type=contact The object type - contact or custom_course_object. |
Responses
Response samples
- 200
{- "lms_fields": [
- {
- "db_value": "email"
}, - {
- "db_value": "last_name"
}, - {
- "db_value": "first_name"
}, - {
- "db_value": "last_login_ip"
}, - {
- "db_value": "is_disabled"
}
], - "salesforce_fields": [
- {
- "db_value": "email"
}, - {
- "db_value": "lastName"
}, - {
- "db_value": "firstName"
}
], - "courses": [
- {
- "id": 1,
- "name": "Course 1"
}, - {
- "id": 2,
- "name": "Course 2"
}
]
}
Tabular List
Retrieves all the salesforce integrations in a tabular list format in paginated mode. You can apply filter using search_param via events(salesforce integration events).
query Parameters
order_by | string Example: order_by={"colName": "name", "direction": "asc"} For ordering items based on columns provided in JSON format. |
search_param | integer Example: search_param=0 for searching items based on field names. |
page_size required | string Example: page_size=10 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "event": "course_enrolled",
- "event_display_value": "Enrolled in a Course",
- "object": "salesforce_contact",
- "object_display_value": "Salesforce Contact",
- "action": "created",
- "author": "John Doe",
- "created_at": "2021-01-01 12:00:00"
}
]
}
Create Salesforce Action
To create a Salesforce Action, you need to use this request. Provide event, action and object and it will be created. (See parameters)
Request Body schema: application/jsonrequired
event required | string Event for which you want to create action. |
action required | string Action will be create of the event by default. |
object required | string Select the object from the dropdown list from Salesforce contact. |
Responses
Request samples
- Payload
{- "event": "course_enrolled",
- "action": "create.",
- "object": "salesforce_contact"
}
Response samples
- 200
{- "message": "Action created Successfully"
}
Save Salesforce Mapping
Saves the mapping of salesforce mapping. Helps in saving salesforce mapping using its type. (See Parameters)
Request Body schema: application/jsonoptional
type | required Type of the salesforce mapping you want to save the details of. |
Responses
Request samples
- Payload
{- "type": "salesforce_contact"
}
Response samples
- 200
{- "is_success": true,
- "message": "Mapping saved Successfully"
}
Retrieve Salesforce Mapping
Retrieves the details of the salesforce mapping. Helps in fetching salesforce mapping using its type. (See Parameters)
Request Body schema: application/jsonoptional
type | required Type of the salesforce mapping you want to fetch the details of. |
Responses
Request samples
- Payload
{- "type": "salesforce_contact"
}
Response samples
- 200
{- "type": "salesforce_course_and_registration_custom_object",
- "courseFieldProperties": [ ],
- "courseRegistrationFieldProperties": [ ],
- "sfCustomObjectNames": [ ],
- "isSyncCourseCompleted": true
}
Update Salesforce Action
Updates a Salesforce action based on the provided ID.
path Parameters
id required | string Example: 1 The ID of the Salesforce action to be updated. |
Request Body schema: application/jsonoptional
event | required The event of the Salesforce action. |
action | required The action of the Salesforce action. |
object | required The object of the Salesforce action. |
Responses
Request samples
- Payload
{- "event": "New Account Created",
- "action": "create",
- "object": "Salesforce Contact"
}
Response samples
- 200
{- "id": 1,
- "message": "Salesforce updated successfully"
}
Delete Salesforce Action
To delete a Salesforce Action, you need to use this request. Provide id and it will be deleted. (See parameters)
path Parameters
id required | string Example: 3 ID of the salesforce action. |
Responses
Response samples
- 200
{- "message": "Salesforce deleted successfully"
}
Retrieves Salesforce logs in a paginated format.
This function returns logs related to a specific Salesforce action identified by its ID. The logs are presented in a tabular format, allowing pagination and optional sorting.
path Parameters
id required | string Example: 50 The ID of the Salesforce action whose logs are to be retrieved. |
query Parameters
page_size required | string Example: page_size=50 The number of items per page. |
page_number required | string Example: page_number=1 The current page number for pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} Optional parameter for sorting items based on columns in JSON format. |
Responses
Response samples
- 200
{- "recordsTotal": 100,
- "recordsFiltered": 50,
- "records": [
- {
- "id": 1,
- "event": "New Account Created",
- "data": [ ],
- "status": "success",
- "display_status": "Success",
- "errorMessage": "",
- "created_at": "Aug 03, 2020 09:56 AM",
- "showData": false
}
]
}
SCORM packages can be used in course as course scorm module. Endpoints for managing SCORM Packages.
Tabular List
Retrieves all the SCORM packages in a tabular list format in paginated mode. You can apply filter using search_param via name(package name), scormTypes(scorm type).
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName": "name", "direction": "asc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"name": "my package", "scormTypes": ["SCORM 1.2", "xAPI"]} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "My Package",
- "uploadId": 1,
- "launchFile": "launch.html",
- "status": "Completed",
- "downloadStatus": "Completed",
- "version": "SCORM 1.2",
- "author": "John Doe",
- "created_at": "2021-01-01 12:00:00"
}
]
}
Get Scorm Package
Fetch the details of a specified scorm package. (See parameters) Scorm packages can be used in course as course content/lesson.
query Parameters
id required | string Example: id=1 ID of the scorm package you want to fetch the details of. |
Responses
Response samples
- 200
{- "name": "New Scorm",
- "version": "1.2",
- "launch_file": "index_lms.html"
}
Deletes a scorm package.
path Parameters
delete_ids required | string Example: maiores IDs of the scorm package you want to delete. |
Responses
Response samples
- 200
{- "message": "1 package(s) deleted 0 package(s) not deleted as it is used in Module. Please remove the scorm Package from the module and try again."
}
Download a SCORM package
This endpoint downloads a SCORM package by ID. After download, the status is reset to "Not Started" and the download path is cleared. The file is automatically deleted after being sent.
Request Body schema: application/jsonrequired
id required | integer The ID of the SCORM package to download. |
Responses
Request samples
- Payload
{- "id": 5
}
An SCORM Module is used as course content. Helps to perform CRUD operation to and for SCORM modules.
Get TinCan (xAPI) state for a module in a course registration.
This endpoint retrieves the SCORM/xAPI state (like suspend_data or other tracking keys)
for a specific module within a registered course. The state is retrieved based on the
stateId
and a given registration string.
query Parameters
stateId required | string Example: stateId=suspend_data The key/state ID to retrieve (e.g., suspend_data). |
activityId required | string Example: activityId=http://example.com/activity The activity ID of the xAPI object. |
registration required | string Example: registration=123|456|789 Pipe-separated values: registrationId|moduleId|packageId. |
Responses
Response samples
- 200
- 404
{- "suspend_data": "c2Vzc2lvbl9zdGF0ZT0yMDE=",
- "progress": "75%",
- "lesson_status": "incomplete"
}
Update TinCan (xAPI) state for a module in a course registration.
This endpoint allows updating a SCORM/xAPI state value (e.g., suspend_data or lesson_status) for a specific module within a course registration. If a state already exists, it will be updated; otherwise, a new state record will be created.
query Parameters
stateId required | string Example: stateId=suspend_data The key/state ID to update. |
activityId required | string Example: activityId=http://example.com/activity The activity ID of the xAPI object. |
registration required | string Example: registration=123|456|789 Pipe-separated values: registrationId|moduleId|packageId. |
Request Body schema: application/jsonoptional
string | required Raw SCORM/xAPI value to store in the state. |
Responses
Request samples
- Payload
{- "string": "{\"score\":85,\"lesson_status\":\"completed\"}"
}
Response samples
- 200
- 404
true
Save TinCan (xAPI) statement for course progress tracking.
This endpoint accepts and stores xAPI statements sent by a learning module. It handles different types
of verbs like attempted
, completed
, passed
, failed
, and answered
, and processes scoring, progress,
and interactions accordingly.
Request Body schema: application/jsonrequired
verb required | object The verb of the xAPI statement. |
object | |
object required | object The object of the statement containing details about the learning activity. |
result | object The result of the statement, such as scores and success. |
timestamp | string The timestamp of when the interaction happened. |
Responses
Request samples
- Payload
{- "context": {
- "registration": "123|456|789|10"
}, - "object": [ ],
- "result": {
- "score": {
- "raw": 90,
- "max": 100
}, - "success": true,
- "completion": true
}, - "timestamp": "2024-05-01T10:00:00Z"
}
Response samples
- 200
true
SCORM Modules Tabular List
Returns all the SCORM modules in a tabular list format in paginated mode. You can apply filter using search_param via moduleTypes(module type), associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"moduleTypes": ["scorm"],associatedCourse:"",moduleName:""} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "test",
- "slug": "test",
- "type": "scorm",
- "icon": "<i class=\"el-icon-document\"></i>",
- "author": "Aom Staff",
- "created_at": "Aug 03, 2020 09:56 AM",
- "course_count": 1
}
]
}
Create SCORM Module
This function creates a new SCORM module with the provided details. It validates the request, saves module details, and associates categories.
Request Body schema: application/jsonoptional
name | required The name of the SCORM module. |
trackCompletion | required Boolean indicating if the module should track completion. |
scormPackageId | required The ID of the SCORM package. |
launchNewWindow | required Boolean indicating if the module should launch in a new window. |
categories | array|nullable Array of category IDs or names associated with the module. |
estimatedCompletion | int|nullable Estimated time to complete the module in minutes. |
estimationCompletedUnit | string|nullable Unit of the estimated time to complete the module. |
Responses
Request samples
- Payload
{- "name": "New Scorm Module",
- "trackCompletion": "true",
- "scormPackageId": "1",
- "launchNewWindow": "true",
- "categories": "[1, \"New Category\"]",
- "estimatedCompletion": "10",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 201
{- "id": 1,
- "message": "Module saved successfully"
}
Update SCORM Module
This function updates an existing SCORM module with the provided details. It validates the request, saves module details, and associates categories.
Request Body schema: application/jsonoptional
id | required The ID of the SCORM module you want to update. |
name | required The name of the SCORM module. |
trackCompletion | required Boolean indicating if the module should track completion. |
launchNewWindow | required Boolean indicating if the module should launch in a new window. |
scormPackageId | required The ID of the SCORM package. |
categories | array|nullable Array of category IDs or names associated with the module. |
estimatedCompletion | int|nullable Estimated time to complete the module in minutes. |
estimationCompletedUnit | string|nullable Unit of the estimated time to complete the module. |
Responses
Request samples
- Payload
{- "id": "1",
- "name": "Updated Scorm Module",
- "trackCompletion": "true",
- "launchNewWindow": "true",
- "scormPackageId": "1",
- "categories": "[1, \"New Category\"]",
- "estimatedCompletion": "10",
- "estimationCompletedUnit": "minutes"
}
Response samples
- 200
{- "message": "Module updated successfully"
}
Get Scorm Module
Fetch the details of a specified scorm module. (See parameters) Scorm modules can be used in the course as course content/lesson.
query Parameters
id required | string Example: id=1 ID of the scorm module you want to fetch the details of. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "New Scorm",
- "slug": "new-scorm",
- "trackCompletion": true,
- "launchNewWindow": false,
- "scormPackageId": 1,
- "estimatedCompletion": null,
- "estimationCompletedUnit": null,
- "categories": [
- 1,
- 2,
- 3
], - "courses": [
- {
- "course_id": 1,
- "course_name": "Testing"
}, - {
- "course_id": 2,
- "course_name": "Testing 2"
}
]
}
Retrieve Detailed Scorm Module Info
Retrieves detailed information about a SCORM module including its name, slug, content, associated course details, SCORM URL, tracking and launching options, and more. It also handles the SCORM package versioning and generates authorization tokens for xAPI integration if applicable. The function checks and updates the module status, calculates time spent, and fetches SCORM keys for the module.
query Parameters
registrationId required | string Example: registrationId=16 ID of the course registration for which this module is attached. |
moduleId required | string Example: moduleId=11 ID of the SCORM module. |
portalId | string Example: portalId=5 optional ID of the portal for course launch URL. |
openInNewWindow | string Example: openInNewWindow=true optional If true, the module is launched in a new window. |
Responses
Get scorm module report details
Returns the scorm module report details for the given module status id.
path Parameters
modulesStatusId required | integer Example: 12 ID of the module status you want to fetch the report of. |
studentId required | integer Example: 9 ID of the student you want to fetch the report for. |
Responses
Response samples
- 200
{- "moduleName": "Sample Scorm",
- "moduleId": 1,
- "score": 100,
- "studentName": "Aom Staff",
- "interactions": [
- {
- "slide": "1",
- "question": "What is your name?",
- "questionType": "text",
- "studentResponse": "John Doe",
- "correctResponse": "",
- "result": "correct",
- "time": "2022-01-01 12:00:00 PM"
}, - {
- "slide": "2",
- "question": "What is your email?",
- "questionType": "text",
- "correctResponse": "",
- "result": "correct",
- "time": "2022-01-01 12:00:00 PM"
}
], - "courseId": 1,
- "courseName": "Sample Course"
}
Get TinCan (xAPI) report for a specific module attempt.
This endpoint retrieves the TinCan (xAPI) interaction report for a given learner's module status. It includes detailed interaction logs, score calculations, and context information for analysis.
query Parameters
modulesStatusId required | integer Example: modulesStatusId=42 The ID of the module status. |
studentId required | integer Example: studentId=2 The ID of the student. |
Responses
Response samples
- 200
{- "score": 90,
- "studentName": "John Doe",
- "moduleName": "Workplace Safety 101",
- "interactions": [
- {
- "id": 123,
- "modulesStatusId": 42,
- "activity": "Completed",
- "objectType": "Activity",
- "objectName": "Introduction Slide",
- "statementRaw": null,
- "createdBy": 7,
- "createdAt": "April 16, 2025 02:45 PM",
- "message": "You completed 'Introduction Slide'"
}
]
}
Generate SCORM report as PDF
This endpoint generates a PDF report of SCORM interactions and scores for a given module status ID. It includes question responses, time spent, score percentage, and interaction details. The PDF is returned as a downloadable file.
Request Body schema: application/jsonrequired
modulesStatusId required | integer The ID of the module status for which the SCORM report is to be generated. |
Responses
Request samples
- Payload
{- "modulesStatusId": 42
}
Get scorm module content details
Returns the scorm module content details.
path Parameters
moduleId required | integer Example: 14 ID of the module you want to fetch the details of. |
Responses
Response samples
- 200
{- "name": "Sample Scorm",
- "slug": "sample-scorm",
- "content": "Sample Scorm Content",
- "version": "1.2",
- "trackCompletion": true,
- "scormKeys": {
- "cmi.suspend_data": "",
- "cmi.core.lesson_location": "",
- "cmi.core.lesson_mode": "normal",
- "cmi.mode": "normal",
- "cmi.core.lesson_status": "incomplete",
- "cmi.success_status": "",
- "cmi.completion_status": "incomplete",
- "cmi.core.student_id": 2,
- "cmi.core.student_name": "Aom Staff",
- "cmi.location": ""
}, - "timeSpent": "0h 0m"
}
Tabular List
Retrieves all the staffs in a tabular list format with pagination mode. You can apply filter using search_param via name or email.
query Parameters
page_size required | string Example: page_size=10 The number of the users you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"nameOrEmail":"John Doe","membershipId":1} for searching items based on name, email. |
Responses
Response samples
- 200
{- "recordsTotal": 4,
- "recordsFiltered": 4,
- "records": [
- {
- "id": 4,
- "first_name": "John",
- "last_name": "Doe",
- "avatar": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\"><circle cx=\"20\" cy=\"20\" r=\"20\" stroke=\"background\" stroke-width=\"0\" fill=\"#03A9F4\"/><text x=\"20\" y=\"20\" font-size=\"14\" fill=\"#FFFFFF\" alignment-baseline=\"middle\" text-anchor=\"middle\" dominant-baseline=\"central\">JD</text></svg>",
- "user_type": "general",
- "display_user_type": "General",
- "created_at": "Aug 06, 2020 07:20 AM",
- "last_login": "2 days ago"
}
]
}
Retrieves detailed report for all staffs.
query Parameters
page_size required | string Example: page_size=10 Number of the result row you want in each page. |
page_number required | string Example: page_number=1 Current Page number. |
registered_between | string Example: registered_between={"first_name":"John","last_name":"Doe"} Returns search filtered data. |
Responses
Response samples
- 200
{- "totalNotStarted": 1,
- "totalInProgress": 0,
- "totalCompleted": 0,
- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "first_name": "John",
- "last_name": "Doe",
- "user_type": "General",
- "created_at": "Aug 09, 2020",
- "last_login": "Oct 09, 2020"
}
]
}
Creates a new staff member.
query Parameters
firstName required | string Example: firstName=John First name of the staff. |
lastName required | string Example: lastName=Doe Last name of the staff. |
email required | |
password required | string Example: password=Nv10=80l^ Password for the staff. Must be at least 8 characters long and should not have been compromised according to the haveibeenpwned.com API. |
staffPermissions required | string Example: staffPermissions=[1,2,3] if userType is set to staff. Array of permission IDs to assign to the staff. |
userType required | string Example: userType=staff Type of the user to create. |
Responses
Response samples
- 200
{- "id": 1,
- "message": "Staff created successfully"
}
Retrieve Staff By ID
This endpoint returns the staff details based on the ID specified.
path Parameters
id required | string Example: 1 The ID of the staff. |
Responses
Response samples
- 200
{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "lastLoggedIn": "2 hours ago",
- "avatar": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"50\" stroke=\"background\" stroke-width=\"0\" fill=\"#03A9F4\" /><text x=\"50\" y=\"50\" font-size=\"40\" fill=\"#FFFFFF\" alignment-baseline=\"middle\" text-anchor=\"middle\" dominant-baseline=\"central\">JD</text></svg>",
- "disabled": false,
- "userType": "staff",
- "currentLoggedUserType": "owner",
- "membership": {
- "id": 1,
- "name": "Silver",
- "expiryDate": null
}, - "customUserMetas": {
- "full_name": {
- "type": "text",
- "label": "Full Name",
- "submitted_value": "John Doe",
- "placeholder_value": ""
}, - "user_type": {
- "type": "dropdown",
- "label": "User Type",
- "submitted_value": 1,
- "placeholder_value": "",
- "option_label": [
- "Staff",
- "Owner"
], - "option_value": [
- 1,
- 2
]
}
}, - "internal_note": null
}
Update Staff/Owner details
path Parameters
id required | string Example: 1 The ID of the staff. |
Request Body schema: application/jsonoptional
id | required The ID of the staff to update. |
firstName | required First name of the staff. |
lastName | required Last name of the staff. |
required Email of the staff. | |
disabled | required boolean whether the staff is disabled or not. |
internal_note | optional Internal note for the staff. |
customUserMetas | optional Custom user meta fields. |
userType | required Type of the user to update. |
Responses
Request samples
- Payload
{- "id": "2",
- "firstName": "John",
- "lastName": "Doe",
- "disabled": "0",
- "internal_note": "This is a note.",
- "customUserMetas": "{\"meta_key1\":{\"type\":\"text\",\"submitted_value\":\"value1\"},\"meta_key2\":{\"type\":\"checkbox\",\"submitted_value\":[1,2,3]}}",
- "userType": "staff"
}
Response samples
- 200
{- "message": "Owner/Staff updated successfully"
}
Update Staff Permissions
Update the permissions of a staff member
path Parameters
id required | string Example: 1 The ID of the staff. |
Request Body schema: application/jsonrequired
permissions required | Array of strings The permissions for the staff. |
Responses
Request samples
- Payload
{- "permissions": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "message": "Permissions updated successfully"
}
A subscription product whose amount will be paid in subscriptions (in between intervals) by your learners. Helps in performing CRUD operations for and to subscription products.
Retrieve Subscription
To retrieve a subscription, you need to use this request. (See parameters)
Returns : success status and successfull message
query Parameters
id required | string Example: id=1 Subscription ID of the subscription. |
Responses
Response samples
- 200
{- "status": "ACTIVE",
- "endDate": "2020-10-01 00:00:00",
- "nextPaymentDate": "2020-10-01 00:00:00",
- "paymentGatewayId": 1
}
Update Subscription
To update a subscription, you need to use this request. (See parameters) Subscription can be only created by purchasing subscription product.
Returns : success status and successfull message
query Parameters
id required | string Example: id=1 Subscription ID of the subscription. |
Request Body schema: application/jsonoptional
status | required Status of the subscription. |
endDate | nullable End date of the subscription. |
nextPaymentDate | required Next payment date of the subscription. |
Responses
Request samples
- Payload
{- "status": "ACTIVE",
- "endDate": "2020-10-01 00:00:00",
- "nextPaymentDate": "2020-10-01 00:00:00"
}
Response samples
- 200
{- "message": "Subscription updated successfully"
}
Retrieves the product details for a given subscription id.
Returns product title, price, and image url.
query Parameters
id required | string Example: id=laudantium The subscription id whose product details you want to retrieve. |
Responses
Response samples
- 200
{- "product_id": 1,
- "title": "Product 1",
- "subscription_price": "$10.00 / month",
}
Retrieves the related orders of a given subscription id.
query Parameters
subscription_id required | string Example: subscription_id=recusandae The subscription id whose related orders you want to retrieve. |
page_size required | string Example: page_size=50 The amount of records to return per page. |
page_number required | string Example: page_number=1 The page number of the records to return. |
order_by required | string Example: order_by={"colName":"created_at", "direction": "desc"} The order by parameters. |
search_param required | string Example: search_param={"orderStatus": ["IN-PROGRESS", "COMPLETED"]} The search parameters. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "total": 100,
- "status": "IN-PROGRESS",
- "relationship": "Parent Order",
- "created_at": "Jan 01, 2021 12:00 AM"
}
]
}
Create Subscription
Creates a new subscription based on an order, selected subscription products, and optional coupon/payment token.
Request Body schema: application/jsonrequired
orderId required | integer The ID of the order containing the subscription products. |
paymentToken | string Optional token for payment processing. |
productQuantity required | object A key-value pair of product IDs and their quantities. |
Responses
Request samples
- Payload
{- "orderId": 1001,
- "paymentToken": "sk_test_abc123",
- "productQuantity": {
- "12": 1,
- "15": 2
}
}
Response samples
- 201
{- "success": true,
- "message": "Subscription has been created"
}
Tabular List
Retrieves all the subscriptions in a tabular list format with pagination mode. You can apply filter using search_param via productTitle, subscriptionStatus(active, cancelled, expired, on-hold), nameOrEmail and subscriptionOrderMonth.
query Parameters
page_size required | string Example: page_size=10 The number of the subscriptions you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"productTitle": "", "subscriptionStatus": ["ACTIVE", "CANCELLED"], "nameOrEmail": "[email protected]", "subscriptionOrderMonth": "2020-01"} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "user_name": "John Doe",
- "user_id": 1,
- "product": "Product 1",
- "product_id": 1,
- "subscription_price": "$10.00 / month",
- "next_payment_date": "Jan 01, 2021 12:00 AM",
- "status": "ACTIVE",
- "created_at": "Jan 01, 2021 12:00 AM"
}
]
}
Subscription Status Lookup
Retrieves all the statuses for a subscription the platform offers like Active, Cancelled, Expired, On-Hold. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "ACTIVE",
- "display_value": "Active"
}, - {
- "db_value": "CANCELLED",
- "display_value": "Cancelled"
}, - {
- "db_value": "EXPIRED",
- "display_value": "Expired"
}, - {
- "db_value": "ON-HOLD",
- "display_value": "On-Hold"
}
]
Quick Edit Subscriptions
Updates the status of the specified subscriptions in bulk.
Request Body schema: application/jsonrequired
subscription_ids required | Array of strings The IDs of the subscriptions to be updated. |
status required | string The new status to set for the subscriptions. |
Responses
Request samples
- Payload
{- "subscription_ids": [
- 1,
- 2
], - "status": "\"ACTIVE\""
}
Response samples
- 200
{- "message": "Subscriptions updated Successfully"
}
Process Subscription Action
Perform a specific action on the subscription like process renewal.
Request Body schema: application/jsonrequired
id required | integer The ID of the subscription. |
action required | string The action to perform on the subscription. |
Responses
Request samples
- Payload
{- "id": 1,
- "action": "PROCESS_RENEWAL"
}
Response samples
- 200
{- "success": true,
- "message": "Process Renewal Successfully completed"
}
Subscription Action Lookup
Retrieves all the actions that can be performed on a subscription like Process renewal. Helps showing options in form elements like dropdowns.
Responses
Response samples
- 200
[- {
- "db_value": "PROCESS_RENEWAL",
- "display_value": "Process renewal"
}, - {
- "db_value": "CREATE_PENDING_RENEWAL_ORDER",
- "display_value": "Create pending renewal order"
}
]
A survey module is a feedback module that you can add as course content to get learners feedback about your course(How they felt about course, ratings, etc). Helps in performing CRUD operation to and for survey modules.
Get paginated list of survey modules.
Returns a paginated, searchable, and sortable list of survey-type modules with metadata such as author, course mapping, and timestamps.
query Parameters
page_size required | integer Example: page_size=10 The number of records per page. |
page_number required | integer Example: page_number=1 The current page number. |
order_by | object Example: colName=name&direction=asc An object containing sorting preferences. |
search_param | object Example: Optional search filters. |
Responses
Response samples
- 200
{- "recordsTotal": 52,
- "recordsFiltered": 7,
- "records": [
- {
- "id": 12,
- "name": "Employee Feedback Survey",
- "slug": "employee-feedback-survey",
- "type": "survey",
- "icon": "fa-poll",
- "author": "Jane Smith",
- "showMappedCourses": false,
- "created_at": "April 15, 2025 03:20 PM",
- "course_count": 3
}
]
}
Creates a new survey module
Creates a new survey module using form fields provided in the request body.
Request Body schema: application/jsonrequired
name required | string Name of the text module. |
content | string Content for the text modules that learners will see. |
submitButtonText required | string Text for the submit button. |
submitOption required | string Submission options for learners. |
fields required | Array of strings Form fields inside the Survey form(like radio, dropdown, rating, text, textarea, etc). |
Responses
Request samples
- Payload
{- "name": "Feedback",
- "content": "This is the short content here",
- "submitButtonText": "Submit Survey",
- "submitOption": "save_to_db",
- "fields": [
- {
- "type": "text",
- "label": "How you left",
- "defaultValue": "",
- "isRequired": false,
- "optionLabel": [ ]
}, - {
- "type": "rating",
- "label": "How you rate us",
- "defaultValue": "",
- "isRequired": false,
- "optionLabel": [ ]
}
]
}
Response samples
- 200
{- "id": 1,
- "message": "Module saved successfully"
}
Update the specified survey module in storage.
Request Body schema: application/jsonoptional
id | required The ID of the survey module. |
name | required The name of the survey module. |
content | The content of the survey module. |
trackCompletion | boolean Whether the module is being tracked(whether its finished or not) in course player. |
estimatedCompletion | integer The estimated time in minutes to complete the module. |
estimationCompletedUnit | string The unit of estimated completion time. |
submitButtonText | string The text for the submit button. |
submitOption | string The option on how to submit the form. |
fields | Array of strings Array of form fields. |
Responses
Request samples
- Payload
{- "id": "1",
- "name": "Feedback",
- "content": "A brief Description",
- "trackCompletion": false,
- "estimatedCompletion": 60,
- "estimationCompletedUnit": "minutes",
- "submitButtonText": "Submit Form",
- "submitOption": "send_email",
- "fields": [
- "quos"
]
}
Response samples
- 200
{- "id": 1,
- "message": "Module updated successfully"
}
Retrieves the details of the specified survey module.
Retrieves the details of the specified survey module. Helps in fetching survey module using its ID. (See Parameters)
Responses
Response samples
- 200
{- "id": 1,
- "name": "Feedback",
- "slug": "feedback",
- "content": "A brief Description",
- "redirect": null,
- "trackCompletion": false,
- "submitButtonText": "Submit Survey",
- "submitOption": "save_to_db",
- "fields": [
- {
- "id": 1,
- "type": "text",
- "label": "How you left",
- "defaultValue": "",
- "isRequired": false,
- "optionLabel": [ ]
}, - {
- "id": 2,
- "type": "rating",
- "label": "How you rate us",
- "defaultValue": "",
- "isRequired": false,
- "optionLabel": [ ]
}
]
}
Get Survey Module Details
Retrieves the details of a survey module including its name, slug, content, course information, track completion status, launch checks, and form field data for a specific course registration and module.
path Parameters
registrationId required | string Example: 1 The ID of the course registration. |
moduleId required | string Example: 2 The ID of the survey module. |
portalId required | integer Examples:
Optional parameter. The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Mark Complete Survey Module
Updates the status of the survey module to completed. Changes the completion percentage to 100% and marks completed the survey module.
query Parameters
statusRowId required | string Example: statusRowId=4 ID of the ModuleStatus Row belongs to current survey module. |
Responses
Response samples
- 200
{- "message": "Module Completed Successfully"
}
Get Student Response
Returns all the survey module user response of the course in a tabular list format in paginated mode. You can apply filter using search_param via name and scormType(version).
path Parameters
statusRowId required | string Example: totam ID of the ModuleStatus Row belongs to current text module. |
Responses
Response samples
- 200
{- "question": [
- "How you felt",
- "How you rate us"
], - "answer": [
- "Awesome course it was",
- "5"
]
}
Survey User Response
Retrieves all the survey modules user response of the course in a tabular list format in paginated mode. You can apply filter using search_param via name and scormType(version).
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"userName":""} For searching items based on field names. |
course_id required | string Example: course_id=4 Course ID for which you want to get user response. |
portalId required | string Example: portalId=1 Portal ID for which you want to get user response. |
type required | string Example: type=export Type of the response. |
Responses
Response samples
- 200
{- "headers": [
- "student_id",
- "student_name",
- "student_email",
- "first_name",
- "last_name",
- "email",
- "submitted_on"
], - "form_data": [
- {
- "student_id": 1,
- "student_name": "John Doe",
- "Question 1": "Answer 1",
- "Question 2": "Answer 2",
- "Submitted On": "10-Aug-2020"
}
], - "form_id": [
- 1,
- 2
], - "course_name": "My Course Name"
}
Retrieves the count of the maximum number of the form submissions in a single form in a specified course.
Used to estimiate the number of seperate requests are needed to fetch all responses in chunks. (See response)
query Parameters
course_id required | string Example: course_id=4 Course ID for which you want to get user response. |
Responses
Response samples
- 200
{- "max_form_data_count": 2
}
Survey Report
Retrieves a paginated list of courses along with their associated survey modules. The result can be filtered by course name or ID, and restricted to specific portals. The function also supports ordering of the result set based on specified columns.
query Parameters
page_size required | string Example: page_size=50 The number of items you want per page. |
page_number required | string Example: page_number=1 The current page number in pagination. |
order_by | string Example: order_by={"colName":"name", "direction": "asc"} JSON object for ordering items based on columns. |
search_param | string Example: search_param={"courseName":"Math", "courseId":1} JSON object for searching courses by name or ID. |
portalId | string Example: portalId=2 Optional portal ID to restrict results to a specific portal and its sub-portals. |
Responses
Response samples
- 200
{- "recordsTotal": 100,
- "recordsFiltered": 50,
- "records": [
- {
- "id": 1,
- "name": "Course Name",
- "survey": [
- {
- "id": 1,
- "name": "Survey Name",
- "formId": 123,
- "count": 10
}
], - "count": 10
}
]
}
Get All Users’ Survey Responses by Course and Module
Retrieves paginated survey/form responses submitted by users for a specific module within a course. Supports search filtering, sub-portal filtering, and returns processed answers per question.
query Parameters
page_size required | integer Example: page_size=10 The number of records per page. |
page_number required | integer Example: page_number=1 The current page number. |
course_id required | integer Example: course_id=42 The ID of the course. |
module_id required | integer Example: module_id=108 The ID of the module. |
portalId | integer Example: portalId=3 optional The ID of the portal to filter user responses by portal and sub-portals. |
search_param | string Example: search_param={"userName":"John"} optional JSON-encoded object to filter by user name or email. |
Responses
Response samples
- 200
{- "form_data": [
- {
- "submissions": [
- {
- "question": "How would you rate this course?",
- "answer": "5"
}, - {
- "question": "Any comments?",
- "answer": "Very helpful!"
}
], - "name": "John Doe",
- "email": "[email protected]"
}
], - "courseName": "Introduction to Programming",
- "moduleName": "Module 1: Basics",
- "form_data_count": 1,
- "recordsTotal": 10,
- "recordsFiltered": 1
}
Saves the survey form submission data
Saves the survey form submission data and returns the id of the saved form submission
Request Body schema: application/jsonrequired
content required | string Content of the text module. |
form_id required | integer Form ID for which you want to save the form submission. |
name required | string Name of the form. |
form_fields required | Array of strings Form fields inside the Survey form(like radio, dropdown, rating, text, textarea, etc). |
statusRowId | required ID of the Module status of the current survey module. |
Responses
Request samples
- Payload
{- "content": "A brief Description",
- "form_id": 1,
- "name": "Feedback",
- "form_fields": [
- {
- "type": "text",
- "label": "How you left",
- "submitted_value": "",
- "options_label": [ ],
- "options_value": [ ]
}, - {
- "type": "rating",
- "label": "How you rate us",
- "submitted_value": 5,
- "options_label": [ ],
- "options_value": [ ]
}
], - "statusRowId": "7"
}
Response samples
- 200
{- "id": 1,
- "message": "Form saved successfully"
}
A Text Module is a lesson module used as course content. Helps to perform CRUD operation to and for Text modules.
Text Modules Tabular List
Returns all the text modules in a tabular list format in paginated mode. You can apply filter using search_param via moduleTypes(module type), associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"}} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"moduleTypes": ["text"],associatedCourse":"","moduleName":""} for searching items based on field names. |
Responses
Create Text Module
Creates a new text module. (See parameters)
Request Body schema: application/jsonrequired
name | required Name of the text module. |
content required | string Content for the text modules that students will see. |
trackCompletion required | boolean If true, the module is being tracked(whether its finished or not) in course player. |
estimatedCompletion | string Estimated time to complete in course player. |
estimationCompletedUnit | string Unit of estimated time to complete in course player. |
categories | Array of strings Categories to be added to the module. |
Responses
Request samples
- Payload
{- "name": "Getting Started",
- "content": "<p>This is the updated short content here</p>",
- "trackCompletion": true,
- "estimatedCompletion": "00:30:00",
- "estimationCompletedUnit": "minutes",
- "categories": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "id": 1,
- "message": "Module saved successfully"
}
Get Text Module
Retrieves the details of the specified text module. Helps in fetching text module using module ID. (See Parameters) Returns : id, name, slug, content, trackCompletion, estimatedCompletion, estimationCompletedUnit and categories of the text module created.
path Parameters
id required | string Example: 6 ID of the text module. |
Responses
Response samples
- 200
{- "id": 6,
- "name": "Getting Started",
- "slug": "getting-started",
- "content": " ",
- "trackCompletion": false,
- "estimatedCompletion": null,
- "estimationCompletedUnit": null,
- "categories": [
- 1,
- 2,
- 3
], - "courses": [
- {
- "course_id": 1,
- "course_name": "Course Name"
}
]
}
Update Text Module
Updates the details of the specified text module. (See parameters) Text modules can be used in the course as course content/lesson.
Returns : Successfull message
path Parameters
id required | string Example: 6 ID of the text module. |
Request Body schema: application/jsonrequired
name | required Name of the text module. |
content required | string Content for the text modules that students will see. |
trackCompletion required | boolean If true, the module is being tracked(whether its finished or not) in course player. |
estimatedCompletion | string Estimated time to complete in course player. |
estimationCompletedUnit | string Unit of estimated time to complete in course player. |
categories | Array of strings Categories to be added to the module. |
Responses
Request samples
- Payload
{- "name": "My-text-lesson",
- "content": "<p>This is the updated short content here</p>",
- "trackCompletion": true,
- "estimatedCompletion": "00:30:00",
- "estimationCompletedUnit": "minutes",
- "categories": [
- 1,
- 2,
- 3
]
}
Response samples
- 200
{- "message": "Module updated successfully"
}
Get Text Module Details
To get the details of a text module, you need to use this request. (See parameters)
path Parameters
registrationId required | string Example: 1 ID of the course registration. |
moduleId required | string Example: 2 ID of the text module. |
portalId required | integer Examples:
Optional parameter. The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Mark Complete Text Module
Updates the status of the text module to completed. Changes the completion percentage to 100% and marks completed the text module.
query Parameters
statusRowId required | string Example: statusRowId=4 ID of the ModuleStatus Row belongs to current text module. |
Responses
Response samples
- 200
{- "is_success": true,
- "message": "Module Completed Successfully",
- "course_newly_completed": false
}
Retrieve Detailed Text Module Info for Membership content
Retrieves details of text module in depth for the same membership the current text module is attached to. Returns related fields value. (See Response)
query Parameters
moduleId required | string Example: moduleId=9 ID of the text module. |
Responses
Response samples
- 200
{- "name": "Getting Started",
- "slug": "getting-started",
- "content": " ",
- "trackCompletion": true,
- "timeSpent": null
}
Retrieve Custom User Fields that needs to be shown on the Registration page
Retrieves the details of pre saved Custom User Fields.
Responses
Response samples
- 200
{- "fields": {
- "user_meta_key_1": {
- "id": 1,
- "type": "text",
- "label": "Gender",
- "defaultValue": null,
- "isRequired": false,
- "optionLabel": [ ],
- "isFieldOnRegistrationPage": false,
- "isFieldOnCertificate": true,
- "includeInReportExports": [
- "export-users",
- "export-orders"
]
}, - "user_meta_key_2": {
- "id": 2,
- "type": "textarea",
- "label": "What is your home address",
- "defaultValue": null,
- "isRequired": true,
- "optionLabel": [ ],
- "isFieldOnRegistrationPage": true,
- "isFieldOnCertificate": false,
- "includeInReportExports": [ ]
}
}
}
Update the status of a webinar registration for the given user and course.
query Parameters
ids required | string Example: ids=[101, 102, 103] array The IDs of the course registrations to update. |
status required | string Example: status="approved" string The new status of the webinar registration. |
webinarId required | string Example: webinarId=55 int The ID of the webinar module. |
portalId required | string Example: portalId=12 int The ID of the portal. |
Responses
Response samples
- 200
{- "message": "Status Updated Successfully"
}
Update the notes for a webinar registration for the given user and course.
query Parameters
ids required | string Example: ids=[101, 102, 103] array The IDs of the course registrations to update. |
webinarId required | string Example: webinarId=55 int The ID of the webinar module. |
portalId required | string Example: portalId=12 int The ID of the portal. |
notes required | string Example: notes="This is a test note" string The new notes of the webinar registration. |
Responses
Response samples
- 200
{- "message": "Notes Updated Successfully"
}
Get the quizzes for a given user and portal.
query Parameters
user_id required | string Example: user_id=1 int The ID of the user. |
searchPortalIds required | string Example: searchPortalIds=[1,2] array The IDs of the portals to search in. |
page_number required | string Example: page_number=1 int The page number. |
page_size required | string Example: page_size=10 int The page size. |
order_by required | string Example: order_by={"colName":"registered_on","direction":"desc"} object The order by parameters. |
search_param required | string Example: search_param={"nameOrEmail":"John Doe","status":[]} object The search parameters. |
Responses
Retrieves a list of portals for a given user.
query Parameters
userId | string Example: userId=1 optional User ID to filter portals. |
type | string Example: type=checkout optional The type of user to filter portals. |
Responses
Response samples
- 200
{- "portals": [
- {
- "id": 1,
- "name": "Portal 1",
- "referralCode": "portal1",
- "userType": "portal_admin",
- "totalSeat": 100,
- "subscriptionId": 1,
- "parentPortalId": 1,
- "slug": "portal-1"
}, - {
- "id": 2,
- "name": "Portal 2",
- "referralCode": "portal2",
- "userType": "portal_admin",
- "totalSeat": 50,
- "subscriptionId": 2,
- "parentPortalId": 2,
- "slug": "portal-2"
}
],
}
Response samples
- 200
[- {
- "db_value": "admin",
- "display_name": "Admin"
}, - {
- "db_value": "owner",
- "display_name": "Owner"
}, - {
- "db_value": "staff",
- "display_name": "Staff"
}, - {
- "db_value": "general",
- "display_name": "General"
}
]
Tabular List
Retrieves all the users in a tabular list format with pagination mode. You can apply filter using search_param via nameOrEmail, membershipId, userCategoryId.
query Parameters
page_size required | string Example: page_size=10 The number of the users you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"nameOrEmail":"John Doe","membershipId":1, "userCategoryId":1} for searching items based on nameOrEmail, membershipId, userCategoryId. |
Responses
Response samples
- 200
{- "recordsTotal": 10,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 4,
- "first_name": "John",
- "last_name": "Doe",
- "is_disabled": false,
- "avatar": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\"><circle cx=\"20\" cy=\"20\" r=\"20\" stroke=\"background\" stroke-width=\"0\" fill=\"#03A9F4\" /><text x=\"20\" y=\"20\" font-size=\"14\" fill=\"#FFFFFF\" alignment-baseline=\"middle\" text-anchor=\"middle\" dominant-baseline=\"central\">JD</text></svg>",
- "display_type": "General",
- "created_at": "Aug 06, 2020 07:20 AM",
- "last_login": "2 days ago",
- "source": "default",
- "portals": "Portal 1, Portal 2",
- "user_category": "Category 1, Category 2"
}
]
}
Retrieve Users By Type
Retrieves a list of users filtered by user type and optionally by portal ID.
query Parameters
userType | string Example: userType=learner The type of user to filter by. |
portalId | string Example: portalId=1 Optional. The ID of the portal to filter users by. |
Responses
Response samples
- 200
{
}
Enables enroll content for a user.
query Parameters
userId required | string Example: userId=1 int The ID of the user to enable enroll content for. |
selectedCourseView required | string Example: selectedCourseView='grid' string The view to enable for courses. |
selectedLearningPathView required | string Example: selectedLearningPathView='list' string The view to enable for learning paths. |
selectedCourseViewMode required | string Example: selectedCourseViewMode='enroll' string The mode to enable for courses. |
selectedLearningPathViewMode required | string Example: selectedLearningPathViewMode='enroll' string The mode to enable for learning paths. |
type required | string Example: type='course' string The type of content to enable. Must be either 'course' or 'learningPath'. |
Responses
Response samples
- 200
{- "message": "Setting Updated Successfully"
}
Retrieve Users
Retrieves a list of users filtered by search term and optionally by portal ID and user type.
query Parameters
search_term required | string Example: search_term=John The search term to search for users. |
portalId | string Example: portalId=1 optional The ID of the portal to filter users by. |
userType | string Example: userType=learner optional The type of user to filter by. |
remote_user_search | string Example: remote_user_search=qui optional Set to true to search for users globally. Set to false to search within the portal and its sub-portals. |
Responses
Response samples
- 200
{
}
Creates a new user.
query Parameters
firstName required | string Example: firstName=John First name of the user. |
lastName required | string Example: lastName=Doe Last name of the user. |
email required | |
password required | string Example: password=h\*{P/tCM8u Password for the user. Must be at least 8 characters long and should not have been compromised according to the haveibeenpwned.com API. |
userCategory | string Example: userCategory=[1,2,3] optional Array of category IDs or names to assign to the user. |
Responses
Response samples
- 200
{- "id": 1,
- "message": "User created successfully"
}
Bulk upload users from csv file
Request Body schema: application/jsonrequired
userList required | Array of strings The list of user objects containing email, first_name, last_name, password, and other custom fields |
selectedCourses required | Array of strings List of Course Ids to be enrolled |
selectedLearningPaths required | Array of strings List of Learning Path Ids to be enrolled |
membershipId required | integer Membership Id to be attached |
portalId required | integer Portal Id to be attached |
Responses
Request samples
- Payload
{- "userList": [
- "amet"
], - "selectedCourses": [
- "officia"
], - "selectedLearningPaths": [
- "dolorum"
], - "membershipId": 2,
- "portalId": 1
}
Response samples
- 201
{- "message": "User(s) uploaded successfully",
- "is_success": "true"
}
Retrieves the saved cards for a user.
query Parameters
userId required | string Example: userId=1 int The ID of the user to retrieve saved cards for. |
Responses
Response samples
- 200
[- {
- "id": 101,
- "last4": "4242",
- "payment_gateway_name": "Stripe",
- "card_type": "Visa"
}, - {
- "id": 102,
- "last4": "1881",
- "payment_gateway_name": "PayPal",
- "card_type": "Mastercard"
}
]
Returns a sample file in JSON format which can be downloaded by the user and used as a template for bulk uploading users.
The sample file contains dummy data for the standard fields and the custom user fields that have been set up in the system. The dummy data is in a format that can be easily copied and pasted into the user's own CSV file. The first record in the sample file contains data for all the fields, while the subsequent records contain blank data. This is to make it easy for the user to see what data is required for each field.
Responses
Response samples
- 200
{- "headers": [
- "email",
- "first_name",
- "last_name",
- "password",
- "custom_field_1",
- "custom_field_2",
- "custom_field_3"
], - "records": [
- {
- "first_name": "Fake FName1",
- "last_name": "Fake LName1",
- "password": "Qwerty@123",
- "custom_field_1": "Fake Custom Field 1 Value",
- "custom_field_2": "Fake Custom Field 2 Value",
- "custom_field_3": "Fake Custom Field 3 Value"
}, - {
- "first_name": "Fake FName2",
- "last_name": "Fake LName2",
- "password": "",
- "custom_field_1": "",
- "custom_field_2": "",
- "custom_field_3": ""
}, - {
- "first_name": "Fake FName3",
- "last_name": "Fake LName3",
- "password": "",
- "custom_field_1": "",
- "custom_field_2": "",
- "custom_field_3": ""
}
]
}
Get blocked and allowed emails and domains for a given portal.
query Parameters
portalId | integer Example: portalId=1 The ID of the portal to get the blocked and allowed emails and domains for. If not provided, will return the blocked emails and domains for the main site. |
Responses
Response samples
- 200
{
}
Retrieve User By ID
This endpoint returns the user details based on the ID specified.
path Parameters
id required | string Example: 1 The ID of the user. |
Responses
Response samples
- 200
{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "lastLoggedIn": "2 hours ago",
- "avatar": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"50\" stroke=\"background\" stroke-width=\"0\" fill=\"#03A9F4\" /><text x=\"50\" y=\"50\" font-size=\"40\" fill=\"#FFFFFF\" alignment-baseline=\"middle\" text-anchor=\"middle\" dominant-baseline=\"central\">JD</text></svg>",
- "disabled": false,
- "userType": "staff",
- "currentLoggedUserType": "owner",
- "membership": {
- "id": 1,
- "name": "Silver",
- "expiryDate": null
}, - "customUserMetas": {
- "full_name": {
- "type": "text",
- "label": "Full Name",
- "submitted_value": "John Doe",
- "placeholder_value": ""
}, - "user_type": {
- "type": "dropdown",
- "label": "User Type",
- "submitted_value": 1,
- "placeholder_value": "",
- "option_label": [
- "Staff",
- "Owner"
], - "option_value": [
- 1,
- 2
]
}
}, - "internal_note": null
}
Updates an existing user.
path Parameters
id required | string Example: 1 The ID of the user. |
query Parameters
id required | string Example: id=1 User ID to update. |
firstName required | string Example: firstName=John First name of the user. |
lastName required | string Example: lastName=Doe Last name of the user. |
email required | |
disabled required | string Example: disabled=0 boolean whether the user is disabled or not. |
internal_note | string Example: internal_note=This is a note. optional Internal note for the user. |
customUserMetas | string Example: customUserMetas={"meta_key1":{"type":"text","submitted_value":"value1"},"meta_key2":{"type":"checkbox","submitted_value":[1,2,3]}} optional Custom user meta fields. |
userCategory | string Example: userCategory=[1,2,3] optional Array of category IDs or names to assign to the user. |
Responses
Response samples
- 200
{- "message": "User updated successfully"
}
Update Membership
Updates the membership of a specified user. The membership will be revoked if the expired_at date is in the past. If the expired_at is not provided, the expired_at of the membership will be used.
path Parameters
id required | string Example: 1 The ID of the user. |
Request Body schema: application/jsonoptional
id | required The ID of the membership. |
expired_at | nullable The expired date for the user. |
Responses
Request samples
- Payload
{- "id": "1",
- "expired_at": "'2021-10-03 23:59:59'"
}
Updates the password of a user.
query Parameters
password required | string Example: password="MyP@ssw0rd" New password for the user. Must be at least 8 characters long and should not have been compromised according to the haveibeenpwned.com API. |
userId required | string Example: userId=1 ID of the user to update the password for. |
Responses
Response samples
- 200
{- "message": "Password updated successfully"
}
Enrolled Courses
Retrieves all courses enrolled by a specified user. The response includes course status, completion percentage, last access date, and access status.
query Parameters
user_id required | string Example: user_id=1 ID of the user to retrieve enrolled courses for. |
page_size required | string Example: page_size=10 Number of records to return per page. |
page_number required | string Example: page_number=1 Current page number. |
order_by | string Example: order_by={"colName":"created_at","direction":"desc"} optional Returns results in some order. |
search_param | string Example: search_param={"status":["Not Started","In Progress"],"nameOrEmail":"John Doe"} optional Search parameters related to course. |
portalId required | string Example: portalId=1 ID of the portal to filter courses by portal and sub-portals. Use -1 to skip portal filtering. |
viewType required | string Example: viewType="self" "self" or "manage". If "self", then only the enrolled courses of the requesting user are returned. If "manage", then all enrolled courses of users managed by the requesting user are returned. |
manage_course required | string Example: manage_course=true true or false. If true, then only courses with access type "manage" are returned. If false, then all courses are returned. |
Responses
Response samples
- 200
{- "recordsTotal": 50,
- "recordsFiltered": 50,
- "records": [
- {
- "id": 1,
- "courseId": 1,
- "courseSlug": "course1",
- "courseName": "Course 1",
- "lastAccessed": "2 days ago",
- "status": "Not Started",
- "display_status": "Not Started",
- "accessStatus": "Allowed",
- "percentComplete": 0,
- "courseStatus": "publish",
- "registered_on": "Aug 09, 2020",
- "started_on": "",
- "completed_on": "",
- "expire_on": "Never",
- "isExpired": false,
- "canRecertify": false,
- "estimatedCompletionTime": "2 hours",
- "certificate_count": 0,
- "enableCourseRating": true,
- "rating": 4.5
}
], - "name": "John Doe",
- "userType": "learner",
- "isLearner": true
}
Get courses enrolled by a user in a particular portal
Request Body schema: application/jsonrequired
portalId required | integer The ID of the portal |
page_size required | integer The number of records per page |
page_number required | integer The page number |
order_by required | object The order by object with colName and direction properties |
search_param required | object The search object with name, categories, and status properties |
Responses
Request samples
- Payload
{- "portalId": 7,
- "page_size": 17,
- "page_number": 18,
- "order_by": [ ],
- "search_param": [ ]
}
Response samples
- 200
{- "courses": [
- {
- "courseId": 1,
- "registrationId": 1,
- "type": "course",
- "contentName": "Course 1",
- "rating": 4.5,
- "enableCourseRating": true,
- "launchUrl": "/portal/course/course-1/launch",
- "canRecertify": true,
- "isEnrolled": true,
- "lastAccessed": "3 days ago",
- "display_status": "In Progress",
- "percentComplete": 20,
- "isExpired": false,
- "registered_on": "2021-01-01 00:00:00",
- "estimatedCompletionTime": "3 hours",
- "status": "In Progress"
}
], - "totalRecords": 10,
- "recordsFiltered": 10
}
Delete a user or multiple users
Deletes a specified user or multiple users in a single API call. Supports deleting users with or without enrollments. Does not delete users who have created courses or modules. Does not delete users who have portal access. Also deletes announcements, cart abandonment records, and user reviews associated with the user.
query Parameters
delete_ids required | string Example: delete_ids="[1,2,3]" JSON string containing the IDs of the users to be deleted. |
user_id | integer Example: user_id=4 optional ID of the user. Defaults to the authenticated user if not provided. |
Responses
Response samples
- 200
{- "message": "string",
- "deletedStudents": [
- {
- "id": 2,
- "name": "John Doe"
}, - {
- "id": 3,
- "name": "Jane Doe"
}
], - "notDeletedStudents": [
- {
- "id": 1,
- "name": "Adam Smith"
}
], - "usedInCourses": {
- "John Doe": [
- {
- "id": 1,
- "name": "Course 1"
}, - {
- "id": 2,
- "name": "Course 2"
}
]
}, - "usedAsCourseAuthors": {
- "John Doe": [
- {
- "id": 1,
- "name": "Course 1"
}, - {
- "id": 2,
- "name": "Course 2"
}
]
}, - "usedAsModuleAuthors": {
- "John Doe": [
- {
- "id": 1,
- "name": "Module 1"
}, - {
- "id": 2,
- "name": "Module 2"
}
]
}, - "usedInPortals": {
- "John Doe": [
- {
- "id": 1,
- "name": "Portal 1"
}, - {
- "id": 2,
- "name": "Portal 2"
}
]
}
}
Quick Edit
Updates user details in bulk based on the provided parameters. This function supports enabling/disabling users, enrolling users in courses and learning paths, and attaching users to memberships.
Request Body schema: application/jsonrequired
user_ids required | Array of strings IDs of the users to be updated. |
course_ids | Array of strings Optional. IDs of the courses to enroll users in. |
disabled | boolean Optional. Whether to disable the users. |
learning_path_ids | Array of strings Optional. IDs of the learning paths to enroll users in. |
enrollMembershipId | integer Optional. ID of the membership to attach users to. |
portalId | integer Optional. ID of the portal for membership attachment. |
Responses
Request samples
- Payload
{- "user_ids": [
- 1,
- 2,
- 3
], - "course_ids": [
- 10,
- 20
], - "disabled": true,
- "learning_path_ids": [
- 5,
- 6
], - "enrollMembershipId": 2,
- "portalId": 1
}
Response samples
- 200
{- "message": "Users updated Successfully"
}
Insert Address
Adds a new address for a specified user with the provided details. If the address is marked as default, it updates other addresses of the same type to not be default.
Request Body schema: application/jsonrequired
fullName required | string Full Name of the user. |
orgName | string optional Organization Name. |
orgVatId | string optional Organization VAT ID. |
addressLine1 required | string Address line1 of the user. |
addressLine2 | string optional Address line2 of the user. |
zipcode required | string Zipcode of the user address. |
city required | string City of the user address. |
state | string optional State of the user address. |
country required | string Country of the user address. |
isDefault required | boolean Is the address default for billing. |
userId required | integer ID of the user for whom the address is being added. |
type required | string Type of address. |
billing_address_id | integer optional Billing address ID if applicable. |
Responses
Request samples
- Payload
{- "fullName": "John Doe",
- "orgName": "Acme Corp",
- "orgVatId": "VAT12345",
- "addressLine1": "Boring Street",
- "addressLine2": "Awesome Colony",
- "zipcode": "123456",
- "city": "Mumbai",
- "state": "NY",
- "country": "US",
- "isDefault": true,
- "userId": 4,
- "type": "billing",
- "billing_address_id": 5
}
Response samples
- 201
{- "message": "Address added successfully"
}
Retrieve all billing addresses of a user
Retrieves all the billing addresses which are added by the specified user.
path Parameters
id required | string Example: 1 ID of the user address row from UsersAddress Model. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "isDefault": false,
- "fullName": "John Doe",
- "addressLine1": "Boring Street",
- "addressLine2": "Awesome Colony",
- "zipcode": "123456",
- "city": "Mumbai",
- "state": "MH",
- "country": "IN"
}
]
Get shipping address By ID.
Retrieves a list of all shipping addresses associated with a specific user ID.
path Parameters
id required | integer Example: 12 The ID of the user. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "isDefault": true,
- "fullName": "John Doe",
- "orgName": "Acme Inc.",
- "orgVatId": "VAT123456",
- "addressLine1": "123 Main St",
- "addressLine2": "Suite 456",
- "zipcode": "12345",
- "city": "New York",
- "state": "NY",
- "country": "USA"
}
]
Retrieve User Dashboard Statistics
Returns user's dashboard statistics which includes Total Courses, Completed Courses, In Progress Courses, Not Started Courses, and Time Spent.
query Parameters
user_id required | string Example: user_id=4 ID of the user. |
portalId required | string Example: portalId=1 ID of the portal. |
Responses
Response samples
- 200
{- "totalCourses": 10,
- "completedCourses": 2,
- "inProgressCourses": 3,
- "notStartedCourses": 5,
- "timeSpent": 12
}
Retrieve User Activities
Returns all activities performed by a specified user in a paginated format. Supports filtering, sorting, and context-based queries.
query Parameters
user_id required | integer Example: user_id=4 ID of the user. Defaults to the authenticated user if not provided. |
page_size required | integer Example: page_size=10 Number of records per page. |
page_number required | integer Example: page_number=1 Current page number. |
order_by | string Example: order_by={"colName":"created_at", "direction":"desc"} optional JSON string to specify the column and direction for ordering. |
search_param | string Example: search_param={"courseCategoryIds":[],"courseName":"course-1","status":"In Progress"} optional JSON string containing search parameters. |
context required | string Example: context="admin" The context for the activities. |
portalId required | integer Example: portalId=1 The ID of the portal. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 15,
- "verb": "ENROLLED",
- "created_at": "Aug 09, 2020 10:27 AM",
- "message": "John Doe is enrolled to course 1",
- "course": "course 1"
}
]
}
Retrieve User Orders
Returns all orders of a specified user in a paginated format. Supports filtering, sorting, and context-based queries.
query Parameters
user_id required | integer Example: user_id=4 ID of the user. Defaults to the authenticated user if not provided. |
page_size required | integer Example: page_size=10 Number of records per page. |
page_number required | integer Example: page_number=1 Current page number. |
order_by | string Example: order_by={"colName":"created_at", "direction":"desc"} optional JSON string to specify the column and direction for ordering. |
search_param | string Example: search_param={"courseCategoryIds":[],"courseName":"course-1","status":"In Progress"} optional JSON string containing search parameters. |
context required | string Example: context="admin" The context for the activities. |
portalId required | integer Example: portalId=1 The ID of the portal. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 15,
- "verb": "ENROLLED",
- "created_at": "Aug 09, 2020 10:27 AM",
- "message": "John Doe is enrolled to course 1",
- "course": "course 1"
}
]
}
Get user certificates.
Retrieves a paginated list of certificates for a specific user, with optional filtering, sorting, and portal-based context.
path Parameters
id required | string Example: 42 The ID of the user or "undefined" to use the authenticated user. |
query Parameters
page_size required | integer Example: page_size=10 Number of records per page. |
page_number required | integer Example: page_number=1 Page number to retrieve. |
order_by | string Example: order_by=[{"field":"issued_at","direction":"desc"}] json Sort options in JSON format. |
search_param | string Example: search_param=[{"field":"title","value":"AWS"}] json Search filters in JSON format. |
return_type | string Example: return_type="summary" Optional return type. |
portalId | integer Example: portalId=3 Optional portal ID for context. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "title": "AWS Certified Solutions Architect",
- "issued_at": "2023-08-01",
- "valid_till": "2026-08-01",
- "issuer": "Amazon",
- "status": "active"
}
]
Update Certificate Issue and Expiry Dates
This API request is used to update the issue date and expiry date of a user's certificate.
Request Body schema: application/jsonrequired
rowId required | integer ID of the user certificate row. |
newIssueDate required | string New issue date of the certificate in Y-m-d H:i:s format. |
newExpiryDate required | string New expiry date of the certificate in Y-m-d H:i:s format. |
Responses
Request samples
- Payload
{- "rowId": 1,
- "newIssueDate": "2020-08-15 10:00:00",
- "newExpiryDate": "2020-08-15 10:00:00"
}
Response samples
- 200
{- "message": "Date Updated Successfully"
}
Retrieves the default address of a user.
path Parameters
id required | string Example: 1 ID of the user. |
query Parameters
type | string Example: type=billing_address or shipping_address optional Type of the address to be retrieved. |
Responses
Response samples
- 200
{- "id": 1,
- "isDefault": false,
- "fullName": "John Doe",
- "addressLine1": "Boring Street",
- "addressLine2": "Awesome Colony",
- "zipcode": "123456",
- "city": "Mumbai",
- "state": "MH",
- "country": "IN"
}
Retrieves the address of a user by address ID.
path Parameters
id required | string Example: 1 ID of the address. |
Responses
Response samples
- 200
{- "id": 1,
- "isDefault": false,
- "fullName": "John Doe",
- "addressLine1": "Boring Street",
- "addressLine2": "Awesome Colony",
- "zipcode": "123456",
- "city": "Mumbai",
- "state": "MH",
- "country": "IN"
}
Update a user's address.
path Parameters
id required | string Example: 1 ID of the address. |
Request Body schema: application/jsonoptional
fullName | required Full name of the user. |
orgName | optional Organization Name. |
orgVatId | optional Organization VAT ID. |
addressLine1 | required Address Line 1. |
addressLine2 | optional Address Line 2. |
zipcode | required Zipcode. |
city | required City. |
state | optional State. |
country | required Country. |
isDefault | required Whether the address is default or not. |
userId | required ID of the user. |
Responses
Request samples
- Payload
{- "fullName": "John Doe",
- "orgName": "ABC Company",
- "orgVatId": "1234567890",
- "addressLine1": "Boring Street",
- "addressLine2": "Awesome Colony",
- "zipcode": "123456",
- "city": "Mumbai",
- "state": "MH",
- "country": "IN",
- "isDefault": "true",
- "userId": "1"
}
Response samples
- 200
{- "message": "Address updated successfully"
}
Retrieves the detailed report for all courses of a user. Returned data contains information like total number of modules and number of courses in different status(In Progress, Not Started and Completed).
Example - [1,0]. You can use these data for graphs representation as well.
query Parameters
user_id required | string Example: user_id=1 ID of the user. |
page_size required | string Example: page_size=50 The number of the submissions you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"registered_on","direction":"desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"nameOrEmail":"","status":[]} For searching items based on students name or emaila and status of the course. |
portalId | string Example: portalId={"portalId":1} For listing courses assigned to a specific portal. |
searchPortalIds | string Example: searchPortalIds={"searchPortalIds":[1,2]} For listing courses assigned to multiple portals. |
Responses
Response samples
- 200
{- "courseName": "course 1",
- "featuredImage": null,
- "recordsTotal": 3,
- "totalNotStarted": 1,
- "totalInProgress": 1,
- "totalCompleted": 1,
- "recordsFiltered": 3,
- "records": [
- {
- "first_name": "Aom",
- "last_name": "Staff",
- "status": "In Progress",
- "percent_complete": 45,
- "access_status": "Allowed",
- "registered_on": "10-Aug-2020",
- "started_on": "10-Aug-2020",
- "completed_on": "",
- "expire_on": "Never",
- "last_accessed_on": "1 hour ago",
- "percent_achieved": null,
- "total_time_spent": "0h 20m",
- "certifcate_issued": "No"
}, - {
- "first_name": "Client",
- "last_name": "Admin",
- "status": "Not Started",
- "percent_complete": 0,
- "access_status": "Allowed",
- "registered_on": "09-Aug-2020",
- "started_on": "",
- "completed_on": "",
- "expire_on": "12-Aug-2023",
- "last_accessed_on": "Never",
- "percent_achieved": null,
- "total_time_spent": "0h 0m",
- "certifcate_issued": "Yes"
}, - {
- "first_name": "Demo",
- "last_name": "Student",
- "status": "Completed",
- "percent_complete": 50,
- "access_status": "Allowed",
- "registered_on": "03-Aug-2020",
- "started_on": "03-Aug-2020",
- "completed_on": "03-Aug-2020",
- "expire_on": "Never",
- "last_accessed_on": "6 days ago",
- "percent_achieved": 0,
- "total_time_spent": "0h 0m",
- "certifcate_issued": "Yes"
}
]
}
Retrieves a paginated report of users with custom user data.
query Parameters
page_size required | string Example: page_size=10 Number of the result row you want in each page. |
page_number required | string Example: page_number=1 Current page number. |
registered_between required | string Example: registered_between=["2023-01-01", "2023-12-31"] Date range filter for user registration. |
Responses
Retrieve User Subscriptions
Returns all subscriptions of a specified user in a paginated format. Supports filtering and sorting.
query Parameters
user_id | integer Example: user_id=4 optional ID of the user. Defaults to the authenticated user if not provided. |
page_size required | integer Example: page_size=10 Number of records per page. |
page_number required | integer Example: page_number=1 Current page number. |
order_by | string Example: order_by={"colName":"created_at", "direction":"desc"} optional JSON string to specify the column and direction for ordering. |
search_param | string Example: search_param={"status":"Active"} optional JSON string containing search parameters. |
Responses
Response samples
- 200
{- "recordsTotal": 5,
- "recordsFiltered": 5,
- "records": [
- {
- "id": 1,
- "subscription_name": "Premium Plan",
- "status": "Active",
- "start_date": "2023-01-01",
- "end_date": "2023-12-31"
}
]
}
Get all User Sources
Retrieves all the sources for a portal with pagination mode. You can apply filter using search_param via name or identifier.
query Parameters
portalId required | string Example: portalId=1 The id of the portal. |
Responses
Response samples
- 200
{- "records": [
- {
- "id": 1,
- "name": "Default",
- "identifier": "default",
- "description": "Default source of users.",
}
]
}
Creates a new portal for a given user.
query Parameters
portalId | integer Example: portalId=5 The portal ID to filter by portal and sub-portals. Use -1 to skip portal filtering. |
Request Body schema: application/jsonrequired
userId required | integer The ID of the user to create the portal for. |
portals required | Array of strings The array of portals to create. Each portal should contain "name", "referralCode", "totalSeat", "userType", "portalType", "status", "subscriptionId", "expiryDate", "expiryMessage", and "parentPortalId". |
clonePortalAdmins required | boolean Whether to clone the portal admins or not. |
cloneBrandingNotifications required | boolean Whether to clone the branding notifications or not. |
Responses
Request samples
- Payload
{- "userId": 12,
- "portals": [
- {
- "name": "My New Portal",
- "referralCode": "REF123",
- "totalSeat": 50,
- "userType": "admin",
- "portalType": "education",
- "status": "active",
- "subscriptionId": 101,
- "expiryDate": "2025-12-31",
- "expiryMessage": "Subscription ends soon",
- "parentPortalId": 1
}
], - "clonePortalAdmins": true,
- "cloneBrandingNotifications": false
}
Response samples
- 200
{- "message": "Portals created successfully"
}
Retrieves all learning paths for a given user.
query Parameters
user_id required | string Example: user_id=1 User ID to filter learning paths. |
portalId required | string Example: portalId=-1 Portal ID to filter learning paths. If -1, it will return all learning paths. |
viewType required | string Example: viewType=self View type of the user. |
page_size required | string Example: page_size=10 Number of records to return per page. |
page_number required | string Example: page_number=1 Page number. |
order_by required | string Example: order_by={"colName":"started_on","direction":"desc"} Order by parameters. |
search_param required | string Example: search_param={"status":["Not Started","In Progress"],"nameOrEmail":"John Doe"} Search parameters related to learning path. |
Responses
Response samples
- 200
{- "recordsTotal": 12,
- "recordsFiltered": 12,
- "records": [
- {
- "id": 1,
- "learningPathName": "Learning Path 1",
- "status": "Not Started",
- "display_status": "Not Started",
- "percentComplete": 0,
- "registered_on": "22-02-2022",
- "started_on": "",
- "completed_on": "",
- "certificateCount": 0,
- "totalLPCourses": 5,
- "completedLpCourses": 0,
- "rating": 4.5,
- "totalEstimatedTime": "2 hours"
}
], - "name": "John Doe",
- "userType": "Learner",
}
Retrieves learning paths associated with the portal, filtered by the search parameters.
path Parameters
portalId required | string Example: 1 Portal ID of the user. |
query Parameters
page_size required | string Example: page_size=10 The number of results per page. |
page_number required | string Example: page_number=1 The current page number. |
order_by | string Example: order_by={"colName": "name", "direction": "desc"} optional The column to sort the results by. |
search_param | string Example: search_param={"name": "Learning Path 1", "status": ["registered", "started"]} optional The search query parameters. |
Responses
Response samples
- 200
{- "learningPaths": [
- {
- "id": 1,
- "learningPathId": 1,
- "type": "public",
- "learningPathName": "Learning Path 1",
- "display_status": "Registered",
- "percentComplete": 0,
- "isEnrolled": true,
- "certificateCount": 0,
- "totalLPCourses": 5,
- "completedLpCourses": 2,
- "rating": 4.5,
- "totalEstimatedTime": "2 hours"
}, - {
- "id": 2,
- "learningPathId": 2,
- "type": "private",
- "learningPathName": "Learning Path 2",
- "display_status": "Not Enrolled",
- "percentComplete": 0,
- "isEnrolled": false,
- "certificateCount": 0,
- "totalLPCourses": 5,
- "completedLpCourses": 0,
- "rating": null,
- "totalEstimatedTime": "2 hours"
}
], - "totalRecords": 10,
- "recordsFiltered": 10
}
Retrieve Membership Content
Fetches and returns a paginated list of content available to a user through their membership. The content includes courses and modules, which can be filtered and sorted based on the input parameters.
query Parameters
page_size required | integer Example: page_size=10 Number of records per page. |
page_number required | integer Example: page_number=1 Current page number. |
order_by | string Example: order_by={"colName":"created_at", "direction":"desc"} optional JSON string specifying the column and direction for ordering. |
search_param | string Example: search_param={"type":"video", "nameOrDescription":"Introduction"} optional JSON string containing search parameters. |
portalId required | integer Example: portalId=1 ID of the portal for filtering membership content. Use -1 for default behavior. |
viewType required | string Example: viewType="self" Specifies the view type. "self" for personal view, others for different portal settings. |
Responses
Response samples
- 200
{- "activeMembership": true,
- "recordsTotal": 100,
- "recordsFiltered": 10,
- "records": [
- {
- "id": 1,
- "name": "Course 1",
- "slug": "course-1",
- "type": "Course",
- "description": "Course description",
- "enrollButton": null,
- "duration": "2 hours",
- "user_id": [
- 4
], - "created_at": "2023-01-01"
}
]
}
Custom User Field Type Lookup
Provides a list of available custom user field types. Each type is represented by a database value and a display value.
Responses
Response samples
- 200
[- {
- "db_value": "text",
- "display_value": "Text Field"
}, - {
- "db_value": "textarea",
- "display_value": "Text Area"
}, - {
- "db_value": "date",
- "display_value": "Date"
}, - {
- "db_value": "radio",
- "display_value": "Single Select"
}, - {
- "db_value": "checkbox",
- "display_value": "Multiple Select"
}, - {
- "db_value": "dropdown",
- "display_value": "Drop Down"
}
]
Retrieve Custom User Fields that needs to be shown on the Registration page
Retrieves the details of pre saved Custom User Fields.
Responses
Response samples
- 200
{- "fields": [
- {
- "id": 1,
- "type": "text",
- "label": "How you left",
- "defaultValue": null,
- "isRequired": false,
- "optionLabel": [ ],
- "isFieldOnRegistrationPage": false,
- "isFieldOnCertificate": true,
- "includeInReportExports": [
- "export-users",
- "export-orders"
]
}, - {
- "id": 2,
- "type": "textarea",
- "label": "What is your home address",
- "defaultValue": null,
- "isRequired": true,
- "optionLabel": [ ],
- "isFieldOnRegistrationPage": true,
- "isFieldOnCertificate": false,
- "includeInReportExports": [ ]
}
]
}
Update custom user fields.
Updates the details of the fields in "Custom User Fields" table. If the field is not present in the table, it will be added. If the field is not present in the request, it will be deleted from the table.
Request Body schema: application/jsonrequired
fields required | Array of strings List of fields to be saved. |
Responses
Request samples
- Payload
{- "fields": [
- "possimus"
]
}
Response samples
- 200
{- "message": "Fields updated successfully"
}
Checks if a custom user field can be deleted.
query Parameters
fieldToDelete required | string Example: fieldToDelete={"userMetaKey":"dob","label":"Date Of Birth","type":"date","isRequired":false,"optionsLabel":[]}. example: {"userMetaKey":"custom_field_1","label":"Custom Field 1","type":"text","isRequired":false,"optionsLabel":[]} Field data in JSON format. |
Responses
Response samples
- 200
{- "canDeleteField": true,
- "message": "This field can not be deleted as some user data is associated with it. Please contact administrator.",
- "certificateTemplates": [ ]
}
Retrieve the badges and the count of each badge a user has earned
path Parameters
id required | string Example: 1 The ID of the user. |
Responses
Response samples
- 200
[- {
- "id": 1,
- "title": "Gold",
- "badgeIconUrl": "/images/badges/Badge_1.png",
- "points": 1,
- "organizationId": 1,
- "count": 3
}, - {
- "id": 2,
- "title": "Silver",
- "badgeIconUrl": "/images/badges/Badge_2.png",
- "points": 2,
- "organizationId": 1,
- "count": 1
}
]
Returns 2FA details for a user.
query Parameters
user_id | integer Example: user_id=4 optional ID of the user. |
Responses
Response samples
- 200
{- "is2FactorAuthActive": true,
- "qr_code": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAE1pY3Jvc29mdCBPZmZpY2UgTWF0aXZpY2FsIEJ1aWx0aW5nIChNaW5pbnNpemUpd2l0aCBHZW5lcmF0b3Igd2l0aCBQb3NpdGljIFRleHQgLSBDb3B5cmlnaHQgTmFtZSBmcm9tIHVuaXF1ZSBpZGVudGl0eQAAABh0RVh0VGh1bWI6OkRTVEVYUWhUQyBjb250ZW50LW1vc3QgdGh1bWIh4NApweCt4M6rAAAAAElFTkSuQmCC",
- "string_code": "string code"
}
Prepares QR code for Two factor authentication.
Returns QR code, URI code and String code for users to authenticate themselves using their authenticator app.
Request Body schema: application/jsonoptional
user_id | integer optional ID of the user. |
Responses
Request samples
- Payload
{- "user_id": 4
}
Response samples
- 200
{- "as_qr_code": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAE1pY3Jvc29mdCBPZmZpY2UgTWF0aXZpY2FsIEJ1aWx0aW5nIChNaW5pbnNpemUpd2l0aCBHZW5lcmF0b3Igd2l0aCBQb3NpdGljIFRleHQgLSBDb3B5cmlnaHQgTmFtZSBmcm9tIHVuaXF1ZSBpZGVudGl0eQAAABh0RVh0VGh1bWI6OkRTVEVYUWhUQyBjb250ZW50LW1vc3QgdGh1bWIh4NApweCt4M6rAAAAAElFTkSuQmCC",
- "as_uri": "otpauth://totp/AOM?secret=base32secret&issuer=AOM",
- "as_string": "base32secret"
}
Confirms relation between AOM site and authenticator app for 2fa.
User need to provided secret code from authenticator app. It enables Two factor authentication feature in the system for users.
Request Body schema: application/jsonrequired
user_id | integer optional ID of the user. |
secretCode required | string Secret code from users authenticator app. |
qrCode required | string QR code generated by prepareTwoFactor method. |
stringCode required | string String code generated by prepareTwoFactor method. |
Responses
Request samples
- Payload
{- "user_id": 4,
- "secretCode": "123456",
- "qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAE1pY3Jvc29mdCBPZmZpY2UgTWF0aXZpY2FsIEJ1aWx0aW5nIChNaW5pbnNpemUpd2l0aCBHZW5lcmF0b3Igd2l0aCBQb3NpdGljIFRleHQgLSBDb3B5cmlnaHQgTmFtZSBmcm9tIHVuaXF1ZSBpZGVudGl0eQAAABh0RVh0VGh1bWI6OkRTVEVYUWhUQyBjb250ZW50LW1vc3QgdGh1bWIh4NApweCt4M6rAAAAAElFTkSuQmCC",
- "stringCode": "base32secret"
}
Response samples
- 200
{- "status": "success",
- "message": "Two Factor Authentication activated"
}
Disable Two Factor Authentication for a user.
Disables Two factor authentication feature in the system for users.
Request Body schema: application/jsonoptional
user_id | integer optional ID of the user. |
Responses
Request samples
- Payload
{- "user_id": 4
}
Response samples
- 200
{- "message": "2factor authentication disabled successfully",
- "qrcode": null,
- "stringcode": null
}
Resend New Account Email
Resends a new account email to the user. If the user is not found, it will be ignored.
query Parameters
portalId required | integer Example: portalId=1 The Portal ID to which the user belongs. |
user_id | integer Example: user_id=1 string|array required The ID of the user who needs to receive a new account email. |
Responses
Response samples
- 200
{- "status": "success",
- "message": "New Password is created and New Account Email Sent."
}
Loads user consents based on pagination parameters.
query Parameters
page_size required | integer Example: page_size=10 The number of records to return per page. |
page_number required | integer Example: page_number=1 The page number to return. |
Responses
Response samples
- 200
{- "userConsents": [
- {
- "id": 101,
- "consentDate": "2025-04-01T14:32:00Z",
- "consentId": "CONSENT-XYZ123",
- "country": "US",
- "ipAddress": "192.168.1.15",
- "status": "accepted",
- "userId": 2001,
- "userName": "johndoe",
- "createdAt": "2025-04-01T14:32:00Z"
}, - {
- "id": 102,
- "consentDate": "2025-04-02T09:15:43Z",
- "consentId": "CONSENT-ABC456",
- "country": "DE",
- "ipAddress": "203.0.113.45",
- "status": "rejected",
- "userId": 2002,
- "userName": "janedoe",
- "createdAt": "2025-04-02T09:15:43Z"
}
], - "total": 50,
- "recordsFiltered": 10
}
A Video Module is a lesson module used as course content. Helps to perform CRUD operation to and for Video modules.
Video Modules Tabular List
Returns all the video modules in a tabular list format in paginated mode. You can apply filter using search_param via associatedCourse(modules used in course) and moduleName.
query Parameters
page_size required | string Example: page_size=50 The number of the items you want for a page. |
page_number required | string Example: page_number=1 Current page number in pagination. |
order_by | string Example: order_by={"colName":"created_at", "direction": "desc"} For ordering items based on columns provided in JSON format. |
search_param | string Example: search_param={"associatedCourse":"","moduleName":""} for searching items based on field names. |
Responses
Response samples
- 200
{- "recordsTotal": 1,
- "recordsFiltered": 1,
- "records": [
- {
- "id": 1,
- "name": "test",
- "slug": "test",
- "type": "video",
- "icon": "<i class=\"el-icon-document\"></i>",
- "author": "Aom Staff",
- "created_at": "Aug 03, 2020 09:56 AM",
- "course_count": 1
}
]
}
Create Video Module
Creates a new video module with the provided details. (See parameters) Video modules can be used in the course as course content/lesson.
Returns : id of the video module created and success message
Request Body schema: application/jsonrequired
name required | string Name of the video module. |
content | string Content for the video modules that students will see. |
url required | string Url path for the video module. |
provider required | string Provider of the video. Options: vimeo, in-house, youtube. |
coverUrl | string Cover url path for the video module. |
trackCompletion | boolean Whether the module is tracked for completion in the course player. |
estimatedCompletion | string Estimated time to complete in course player. |
estimationCompletedUnit | string Unit of estimated time to complete in course player. |
disableForwardSeek | boolean If true, students cannot skip forward in the video. |
categories | Array of strings Categories to associate with the module. |
subtitleType | string Type of subtitle in the video. Options: upload, nocaption. |
interactions | Array of strings Interactions to add in the video. |
subtitles | Array of strings Subtitles to add if subtitleType is 'upload'. |
Responses
Request samples
- Payload
{- "name": "My-video-lesson",
- "content": "Brief Description",
- "provider": "vimeo",
- "trackCompletion": true,
- "estimatedCompletion": "00:30:00",
- "estimationCompletedUnit": "minutes",
- "disableForwardSeek": true,
- "categories": [
- 1,
- 2,
- 3
], - "subtitleType": "upload",
- "interactions": [
- {
- "type": "quiz",
- "time": "00:05:00"
}
], - "subtitles": [
- {
- "language": "en",
- "subtitleContent": "Subtitle text"
}
]
}
Response samples
- 200
{- "id": 1,
- "message": "Module saved successfully"
}
Video Module Details
Returns a video module details given its Id. This API is used by the course player to fetch the video module details while playing the course.
path Parameters
id required | string Example: 3 The id of the video module. |
Responses
Response samples
- 200
{- "id": 1,
- "name": "test",
- "slug": "test",
- "content": "This is a test video module.",
- "provider": "vimeo",
- "disableForwardSeek": false,
- "trackCompletion": false,
- "estimatedCompletion": null,
- "estimationCompletedUnit": null,
- "subtitleType": "",
- "subtitleFilePath": [
- {
- "language": "en",
- "filePath": "/storage/vtt/en_1.vtt"
}
], - "categories": [
- 1,
- 2
], - "courses": [
- {
- "course_id": 1,
- "course_name": "My Course"
}
], - "subtitleDetails": [
- {
- "subtitleContent": "This is a test subtitle.",
- "language": "en"
}
]
}
Video Module Details
Returns a video module details given its Id. This API is used by the course player to fetch the video module details while playing the course.
path Parameters
registrationId required | string Example: 1 The id of the registration. |
moduleId required | string Example: 3 The id of the video module. |
portalId required | string Example: 1 The id of the portal. |
Responses
Response samples
- 200
{- "name": "test",
- "slug": "test",
- "content": "This is a test video module.",
- "courseName": "My Course",
- "courseSlug": "my-course",
- "min_time_spent": 5,
- "otherModules": [
- {
- "module_id": 1,
- "module_name": "Module 1",
- "module_slug": "module-1",
- "display_order": 1
}, - {
- "module_id": 2,
- "module_name": "Module 2",
- "module_slug": "module-2",
- "display_order": 2
}
], - "subtitleType": "",
- "subtitleFilePath": [
- {
- "language": "en",
- "filePath": "/storage/vtt/en_1.vtt"
}
], - "launchCheck": {
- "canbeLaunched": true,
- "errDesc": ""
}, - "prevSlug": "module-1",
- "nextSlug": "module-2",
- "provider": "vimeo",
- "disableForwardSeek": false,
- "trackCompletion": false,
- "interactions": [ ],
- "courseStatus": "In Progress",
- "status": "In Progress",
- "statusRowId": 1,
- "timeSpent": 0,
- "lastWatchedTime": 0,
- "isReady": true,
- "course_newly_completed": false
}
Mark Complete Video Module
Updates the status of the video module to completed. Changes the completion percentage to 100% and marks completed the video module.
query Parameters
statusRowId required | string Example: statusRowId=4 ID of the ModuleStatus Row belongs to current video module. |
videoDuration required | string Example: videoDuration=90 The duration of the video in seconds. |
portalId | integer Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
{- "status": true,
- "message": "Module completed successfully",
- "course_newly_completed": false
}
Retrieve Detailed Video Module Info for Membership content
This function retrieves details of a video module, including its name, slug, content, provider, cover URL, and URL. It checks if the video is ready to be viewed, updates the time spent and last watched time, and indicates whether the video is part of membership content. If the video is not ready, an error message is included in the response.
query Parameters
moduleId required | string Example: moduleId=9 ID of the video module. |
Responses
Response samples
- 200
{- "name": "Module Name",
- "slug": "module-slug",
- "content": "Content of the module",
- "provider": "in-house",
- "disableForwardSeek": false,
- "trackCompletion": true,
- "timeSpent": 120,
- "lastWatchedTime": 30,
- "isPartOfMembershipContent": true,
- "isReady": true
}
This controller handles all API interactions related to webinar management within the platform. It provides endpoints for creating, updating, deleting, and retrieving webinar details, as well as managing attendee registrations, webinar sessions, and related content.
Endpoints in this controller are focused on managing the lifecycle of webinars, from setup to attendee interactions and webinar reporting.
Create a new webinar module with recurrence.
Request Body schema: application/jsonrequired
attendanceThreshold required | integer The attendance threshold for the webinar. Must be between 0 and 100. |
startDate required | string The start date of the webinar in the format 'Y-m-d'. |
startTime required | string The start time of the webinar in the format 'H:i:s'. |
endTime required | string The end time of the webinar in the format 'H:i:s'. |
location required | integer The location id of the webinar. |
instructor required | integer The instructor id of the webinar. |
serviceProvider required | string The service provider for the webinar. |
enableCloudRecording required | boolean Whether to enable cloud recording for the webinar. |
allowDownload required | boolean Whether to allow download of the webinar. |
meetingUrl required | string The meeting url for the webinar. |
enableAutoAttendance required | boolean Whether to enable auto attendance for the webinar. |
enableRecurrence required | boolean Whether to enable recurrence for the webinar. |
frequency required | string The frequency of the recurrence. |
interval required | integer The interval of the recurrence. |
end required | string The end date of the recurrence in the format 'Y-m-d'. |
webinarDays required | integer The number of days for the recurrence. |
Responses
Request samples
- Payload
{- "attendanceThreshold": 17,
- "startDate": "rerum",
- "startTime": "veniam",
- "endTime": "numquam",
- "location": 18,
- "instructor": 12,
- "serviceProvider": "quibusdam",
- "enableCloudRecording": false,
- "allowDownload": false,
- "enableAutoAttendance": false,
- "enableRecurrence": false,
- "frequency": "error",
- "interval": 6,
- "end": "tenetur",
- "webinarDays": 13
}
Response samples
- 200
{- "recurrenceWebinar": [
- {
- "startDate": "2020-01-01",
- "endDate": "2020-01-01",
- "startTime": "10:00:00",
- "endTime": "11:00:00",
- "location": 1,
- "instructor": 1,
- "showEdit": false,
- "serviceProvider": "zoom",
- "enableCloudRecording": true,
- "allowDownload": true,
- "enableAutoAttendance": true,
- "attendanceThreshold": 80
}
], - "message": "Webinar created successfully",
- "status": "success"
}
Validate the webinar request.
Request Body schema: application/jsonrequired
attendanceThreshold required | integer The attendance threshold for the webinar. Must be between 0 and 100. |
startDate required | string The start date of the webinar in the format 'Y-m-d'. |
startTime required | string The start time of the webinar in the format 'H:i:s'. |
endTime required | string The end time of the webinar in the format 'H:i:s'. |
Responses
Request samples
- Payload
{- "attendanceThreshold": 8,
- "startDate": "architecto",
- "startTime": "sequi",
- "endTime": "eveniet"
}
Response samples
- 200
{- "message": "Webinar updated successfully",
- "status": "success"
}
Update a webinar for the given course
Request Body schema: application/jsonrequired
course_id required | integer The ID of the course |
id required | integer The ID of the webinar |
webinarList required | Array of strings The webinar list |
Responses
Request samples
- Payload
{- "course_id": 4,
- "id": 20,
- "webinarList": [
- "similique"
]
}
Response samples
- 200
- 422
{- "message": "Webinar updated successfully",
- "status": "success"
}
Create a new webinar in the database.
Request Body schema: application/jsonrequired
course_id required | integer The id of the course for which the webinar is being created. |
webinarList required | Array of strings The array of webinars to be created, each containing the following: |
Responses
Request samples
- Payload
{- "course_id": 14,
- "webinarList": [
- "error"
]
}
Response samples
- 200
{- "message": "Webinar created successfully",
- "status": "success"
}
Export attendance report for a given webinar
Request Body schema: application/jsonrequired
webinarId required | integer The ID of the webinar |
pageSize required | integer The page size of the report |
pageNumber required | integer The page number of the report |
portalId required | integer The ID of the portal |
Responses
Request samples
- Payload
{- "webinarId": 7,
- "pageSize": 12,
- "pageNumber": 16,
- "portalId": 14
}
Response samples
- 200
{- "courseName": "Course Name",
- "startDate": "2020-12-01 10:00:00",
- "endDate": "2020-12-01 11:00:00",
- "recordsTotal": 100,
- "totalAttended": 50,
- "totalNoShow": 20,
- "totalCancelled": 10,
- "totalPartiallyAttended": 20,
- "records": [
- {
- "firstName": "John",
- "lastName": "Doe",
- "status": "Attended",
- "attendanceRecordingType": "Manual",
- "notes": "Test notes",
- "recordedAt": "2020-12-01 10:00:00"
}
]
}
A Webinar Module is used as course content. Helps to perform CRUD operation to and for Webinar modules.
Handle Zoom Webhook
Receives Zoom webhook events. When a meeting.ended
event is received, it processes webinar attendance.
Request Body schema: application/jsonrequired
event required | string The Zoom event type. |
required | object The payload object from Zoom. |
Responses
Request samples
- Payload
{- "event": "meeting.ended",
- "payload": [ ]
}
Response samples
- 200
{- "message": "Event received"
}
Get Launch Details
Retrieves the launch details for the webinar modules. Returned data includes webinar provider name(like vimeo, zoom, big blue button, etc), whether webinar is created successfully or not, etc This information helps while launching the webinar for learners.
query Parameters
moduleId required | string Example: moduleId=12 ID of the webinar module. |
portalId | integer Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
{- "provider": "zoom",
- "webinarDetails": {
- "is_success": true,
- "message": "Meeting started successfully",
}
}
Mark Complete Webinar Module
Updates the status of the webinar module to completed. Changes the completion percentage to 100% and marks completed the webinar module.
query Parameters
statusRowId required | string Example: statusRowId=4 ID of the ModuleStatus Row belongs to current webinar module. |
portalId | integer Example: portalId=5 The portal ID to filter users by portal and sub-portals. Use -1 to skip portal filtering. |
Responses
Response samples
- 200
{- "message": "Module completed successfully",
- "course_newly_completed": false
}