Overview
NovoEd’s Programmatic Access to Org-Level Analytics Data APIs pull analytics data in CSV format to plug into your organization’s data stores. This data is useful if your internal data analytics team aims to correlate learning data with other business or performance metrics that are not integrated into NovoEd.
The scope of data includes courses, users, enrollments, lecture pages (the pages that create a course), course activities (the composure of your courses), lesson page first and last view by learners and learner activities (the learner’s attempts in the activities in your courses).
Course activities span a wide variety of traditional and modern learning activities on NovoEd such as:
- Watching a video or listening to an audio file
- Quiz, Exam
- Survey, Poll
- Discussions, Team Discussions
- Projects/Assignments
- Video Practice
- Feedback (public or private)
- Live events
- External tools
- Creating a team/group or joining gone
- Filling out profiles
Our data set defines a unified data interface for all activities included in the lesson pages in a course and the learners’ submission outcomes in them. Most (not all) of these activities can have deadlines, or may award points, or may be required for receiving completion in the course. Such information is provided in the data set to allow for deeper analysis by your team.
This data can be used to answer questions about requirements in courses, and whether/to what extent users have fulfilled those requirements, as well as the trends of enrollment and activity across your learning and development offerings on NovoEd.
Implementation Recommendations
You can use this API to pull your data on any cadence based on your analytics team’s use cases. Please refer to our documentation for the update cadence of the data per API to architecture your API calls.
Every API call accepts a data set type, an updated_after and an updated_before timestamp. The timestamps are to be used to paginate your data.
Every call returns 20,200 rows of data. Depending on the scale of your usage, this might mean, one daily pull is enough for you or it might mean that you need to break the day down into smaller chunks and query with the updated_after and updated_before timestamps to collect all the data in scope.
Most data sets contain a boolean flag with the name record_deleted. This data point tells you what data has either been deleted by end users or your admins. We recommend removing any data from NovoEd support or client success users (user email ends in @novoed.com) as well as all deleted data from your analysis.
On our platform analytics we exclude data from sandbox courses in our analysis as well.
Set-Up
Prior to using the Programmatic Access to Org-Level Analytics Data APIs, an Org Admin must submit a request to their CSM or to our Support Team (hello@novoed.com) to enable this API set. Only requests made by Org Admins will be processed.
This article, How to Request and Set Up an API Key and Secret, walks through the process of requesting and setting up the API Key and Secret.
End Points
- GET Get Data - Users
- GET Get Data - Courses
- GET Get Data - Enrollments
- GET Get Data - Lecture Pages
- GET Get Data - Course Activities
- GET Get Data - Question Set Questions and Response Options
- GET Get Data - Question Set User Responses Per Question and Attempt
- GET Get Data - Learner Activity Outcomes
- GET Get Data - Lecture Page Views
- GET Get Data - Org Level Roles
Developer Documentation
Programmatic Access to Org-Level Analytics Data
Data Dictionary
User Data
Table users {
user_id int
institution_id int
first_name varchar
last_name varchar
email_address varchar
external_id varchar
bio varchar
headline varchar
last_active_date datetime
created_date datetime
record_updated_date datetime
record_deleted boolean
}
unique_key: user_id, institution_id
Data update interval: 6 hours
User Org Role Data
Table user_org_roles {
institution_id int
user_id int
org_admin_role varchar
updated_date datetime
}
unique id: user_id, institution_id
Data update interval: 6 hours
Course Data
Table courses {
course_id int
institution_id int
institution_name varchar
catalog_id varchar
lxp_external_id varchar
lms_external_id varchar
title varchar
start_date datetime
end_date datetime
release_date datetime
closed_date datetime
registration_close_date datetime
registration_type varchar
- Closed enrollment
- Open within your organization
- Open based on Entitlements
- Free
self_paced boolean
self_paced_access_limit int
is_sandbox boolean
duration int
created_date datetime
record_updated_date datetime
automated_completions_enabled boolean
num_of_points_required int
num_assignments_required int
}
unique_key: course_id
Data update interval: 6 hour
Enrollment Data
Table enrollments {
enrollment_id int
course_id int
user_id int
institution_id int
enrollment_status varchar
- Enrolled
- Withdrawn
- Removed by Teaching Team
- Auditing
enrollment_date datetime
unenrollment_date datetime
last_active_date datetime
first_visit_course_home_date datetime
completion_status varchar
- Not Completed
- Completed
completed_date datetime
course_role_id int
user_role_name varchar
has_admin_permission boolean
has_mentor_permission boolean
registered_by_user_id int
record_updated_date datetime
record_deleted boolean
}
unique_key: enrollment_id
unique_key: user_id, course_id
Data update interval: 1 hour
Course Activities
Table course_activities {
activity_idvarchar
activity_type varchar
- Video
- Audio
- Assignment
- Video Practice
- Private Feedback
- Public Feedback
- Course-Wide Discussion
- Team Discussion
- Quiz
- Survey
- Poll
- Timed Exam
- Live Video Event
- Third Party Tool
- Profile Completion
- Submission Carousel
- Team Formation
- Group Formation
course_id int
institution_id int
activity_title varchar
is_todo boolean
release_date datetime
deadline datetime
hard_deadline boolean
target int
- Audio, Video: the length of the video/audio
- Private Feedback, Public Feedback: the number of submissions a learner is required to provide feedback to
- Live Video Event: the length of the live event
lecture_page_id int
lecture_page_title varchar
section_id int
section_title varchar
updated_date datetime
record_deleted boolean
}
unique_key: activity_id, activity_type
Data update interval: 12 hours
Learning Activity Outcomes
This table contains a row for a user who has started an activity in a course. One row per user and per activity will be present in this table.
NovoEd has activities where learners need to submit multiple artifacts to complete, such as feedback activities, quizzes with multiple attempts and assignment submissions. Every submission attempt made by the user is represented in the data set. Concluding whether the user has made the completion requirement for public and private feedback activities is possible by comparing the number of completed attempts with the target goal from the course activities data set. Points indicate the number of points the learner has received for that specific attempt.
Last active date indicates the last time a user engaged with this activity; that includes making updates to their submission if the activity allows for that or re-watching video content.
Table user_activities {
user_id int
course_id int
institution_id int
activity_type varchar
- Video
- Audio
- Assignment
- Video Practice
- Private Feedback
- Public Feedback
- Course-Wide Discussion
- Team Discussion
- Quiz
- Timed Exam
- Survey
- Poll
- Live Video Event
- Third Party Tool
- Profile Completion
- Team Formation
- Group Formation
activity_id varchar
submitted int
last_active_date datetime
- Video: last date user watched or re-watched. *Admin update of total points updates this timestamp as well.
- Audio: last date user listed to the audio.*Admin update of total points updates this timestamp as well.
- Assignment: last date user submitted or revised their submission.
- Video Practice: the date the user submitted this video for the practice activity.
- Private Feedback: the date the user revised or submitted this private feedback for submissions in that activity.
- Public Feedback: the date the user submitted this public feedback for submissions in that activity.
- Course-Wide Discussion: the date the user submitted this response to the discussion thread or update of that same comment.
- Team Discussion: the date the user submitted this response to the discussion thread or update of that same comment.
- Quiz: the date the user attempted the quiz or made updates to their responses for an attempt if allowed
- Timed Exam: the date the user submitted or last revised their responses for the timed exam.
- Survey: the date the user submitted their responses for the survey.
- Poll: the date the user submitted their responses for the poll.
- Live Video Event: the date user’s attendance data was pulled by API or uploaded by admin.
- Third Party Tool: external tool completion date reported by external tool or the date user clicked on the mark as done button.
- Profile Completion: the date the user made an update to their course profile that had an impact on their completion status of profile completion activity.
points_received int
achieved* int
updated_date datetime
outcome_id varchar
record_deleted
}
* achieved is an integer field that represents the progress of a learner in these activities:
- Quiz/Timed Exam: number of correct answers divided by the total number of questions
- Video: last second watched
- Audio: last second listened
- Third Party Tool: external tool score as reported by the SCORM file or AICC package
- Live Video Event: Attendance duration in the event
Unique key: user_id, activity_id, activity_type, outcome_id
Data update interval: 12 hours
Lecture Pages
Table lecture_pages {
lecture_page_id int
title varchar
course_id int
release_date datetime
created_date datetime
section_id int
section_title varchar
institution_id int
record_deleted int
updated_date datetime
}
Unique key: lecture_page_id
Data update interval: 12 hours
Lecture Page First & Last Views
Table lecture_page_views {
user_id int
lecture_page_id int
visit_type varchar
- First
- Last
last_active_date datetime
course_id datetime
institution_id int
updated_date datetime
}
Unique key: user_id, lecture_page_id, visit_type
Data update interval: 12 hours
User Org Roles
Table user_org_roles {
user_id int
institution_id int
org_admin_role varchar
- org_admin
- org_mentor
- course_manager
- Or comma separated list of above values
updated_date datetime
}
Unique key: user_id, institution_id
Data update interval: 12 hours
Do you have any questions? Submit a request or email the NovoEd Support Team at hello@novoed.com. Thank you!