/ /
Developer APIs for Programmatic Access to Org-Level Analytics Data
Updated 4 months ago

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

  1. GET Get Data - Users
  2. GET Get Data - Courses
  3. GET Get Data - Enrollments
  4. GET Get Data - Lecture Pages
  5. GET Get Data - Course Activities
  6. GET Get Data - Question Set Questions and Response Options
  7. GET Get Data - Question Set User Responses Per Question and Attempt
  8. GET Get Data - Learner Activity Outcomes
  9. GET Get Data - Lecture Page Views
  10. 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:

  1. Quiz/Timed Exam: number of correct answers divided by the total number of questions
  2. Video: last second watched 
  3. Audio: last second listened
  4. Third Party Tool: external tool score as reported by the SCORM file or AICC package
  5. 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 . Thank you!


 

 

Was this article helpful?