Reach 360: Reports API

Article Last Updated

This article applies to:

What This API Endpoint Does

With the Reports API you can retrieve the user activity report (with all user sessions account-wide), get a list of learner sessions for a specific course or learning path, a list of course sessions within a learning path, or a list of all course sessions for a specific learner.

Endpoints

  • GET /reports/activity - user activity report (list of user sessions)
  • GET /reports/courses/{courseId} - course learner report (list of learner sessions for a course)
  • GET /reports/learners/{userId} - learner course report (list of course sessions for a learner)
  • GET /reports/learning-paths/{learningPathId}/courses - learning path courses report (list of course sessions in a learning path)
  • GET /reports/learning-paths/{learningPathId}/learners - learning path learners report (list of learner sessions in a learning path)
  • GET /reports/groups/{groupId}/courses - Learn• Group courses report (list of course sessions in a group)

Session Object (user activity with a course)

  • courseId (string) - course identifier
  • courseTitle (string) - title of course
  • courseReportUrl (string) - URL to fetch course report from the API
  • courseUrl (string) - URL to fetch course's details from the API
  • userId (string) - user identifier
  • email (string) - user email address
  • firstName (string) - the user's first name
  • lastName (string) - the user's last name
  • learnerReportUrl (string) - URL to fetch the user's learner report from the API
  • userUrl (string) - URL to fetch user's details from the API
  • duration (string) - ISO 8601-formatted duration of user session
  • numberOfLessonsCompleted (integer) - number of lessons completed
  • quizScorePercent (integer) - quiz score percentage (if quiz present)
  • isQuizPassed (bool) - whether user passed quiz or not (if quiz present)
  • startedAt (string) - ISO 8601-formatted UTC timestamp of when session started
  • userDeleted (bool) - whether the user has been removed from Reach 360 or not.
  • courseDeleted (bool) - whether the course has been deleted.

Course Learner Object (user enrolled in a course)

  • userId (string) - user identifier
  • email (string) - user email address
  • firstName (string) - the user's first name
  • lastName (string) - the user's last name
  • learnerReportUrl (string) - URL to fetch the user's learner report from the API
  • userUrl (string) - URL to fetch user's details from the API
  • duration (string) - ISO 8601-formatted duration of average user session
  • quizScorePercent (integer) - quiz score percentage (if quiz present)
  • dueAt (string) - ISO 8601-formatted UTC timestamp of when course is due for user (if applicable)
  • status (string) - status of course for user (one of Not Started, In Progress, or Complete)
  • completedAt (string) - Timestamp of when the course was completed by the learner or null.
  • userDeleted (bool) - whether the user has been removed from Reach 360 or not.
  • progress (integer) - progress percentage

Learner Course Object (course a learner is enrolled in)

  • courseId (string) - course identifier
  • courseTitle (string) - title of course
  • courseReportUrl (string) - URL to fetch course report from the API
  • courseUrl (string) - URL to fetch course's details from the API
  • duration (string) - ISO 8601-formatted duration of average user session
  • quizScorePercent (integer) - quiz score percentage (if quiz present)
  • dueAt (string) - ISO 8601-formatted UTC timestamp of when course is due for user (if applicable)
  • status (string) - status of course for user (one of Not Started, In Progress, or Complete)
  • completedAt (string) - Timestamp of when the course was completed by the learner or null.
  • courseDeleted (bool) - whether the course has been deleted.
  • progress (integer) - progress percentage

Learning Path Course Object (course in a learning path)

  • courseId (string) ****- course identifier
  • courseTitle (string) - course title
  • courseUrl (string) - URL to fetch the course's details from the API
  • numberOfLessons (integer) - number of lessons in the course
  • averageDuration (string) - ISO 8601-formatted duration of average user session
  • courseReportUrl (string) - URL to fetch the course report from the API
  • courseDeleted (bool) - whether the course has been deleted.

Learning Path Learner Object (learner in a learning path)

  • userId (string) - user identifier
  • email (string) - user email address
  • firstName (string) - the user's first name
  • lastName (string) - the user's last name
  • learnerReportUrl (string) - URL to fetch the user's learner report from the API
  • userUrl (string) - URL to fetch user's details from the API
  • duration (string) - ISO 8601-formatted duration of average user session
  • dueAt (string) - ISO 8601-formatted UTC timestamp of when the learning path is due for user (if applicable)
  • status (string) - status of learning path for user (one of Not Started, In Progress, or Complete)
  • userDeleted (bool) - whether the user has been removed from the Reach 360 account or not.

Group Course Object (course in a group)

  • courseId (string) ****- course identifier
  • courseTitle (string) - course title
  • courseUrl (string) - URL to fetch the course's details from the API
  • averageDuration (string) - ISO 8601-formatted duration of average user session
  • courseReportUrl (string) - URL to fetch the course report from the API
  • courseDeleted (bool) - whether the course has been deleted
  • enrollmentDeleted (bool) - whether the group was unenrolled from the course

Get Activity Report

GET /reports/activity

Request Parameters (Query String)

  • limit (integer, optional) - the maximum number of results to return in a single response (see Pagination); must be between 1 and 2,000 (defaults to 50)

Example Response

{ 
 "sessions": [ 
  { 
   "courseId": "example-course-id-1", 
   "courseDeleted": false,
   "courseTitle": "Course Title 1", 
   "courseReportUrl": "https://api.reach360.com/reports/courses/example-course-id-1", 
   "courseUrl": "https://api.reach360.com/courses/example-course-id-1", 
   "userId": "example-user-id-1", 
   "firstName": "Example First Name 1", 
   "lastName": "Example Last Name 1", 
   "learnerReportUrl": "https://api.reach360.com/reports/learners/example-user-id-1", 
   "userDeleted": false,
   "userUrl": "https://api.reach360.com/users/example-user-id-1", 
   "duration": "PT37.578S", 
   "numberOfLessonsCompleted": 1, 
   "quizScorePercent": null, 
   "isQuizPassed": null, 
   "startedAt": "2020-01-01T12:30:00.000Z" 
  }, ... 
 ], 
 "nextUrl": "https://url-for-next-page-of-results" 
}

Get Course Learner Report

GET /reports/courses/{courseId}

Request Parameters (Query String)

  • limit (integer, optional) - the maximum number of results to return in a single response (see Pagination); must be between 1 and 2,000 (defaults to 50)

Example Response

{ 
 "courseDeleted": false,
 "courseUrl": "https://api.reach360.com/courses/example-course-id", 
 "learners": [ 
  { 
   "userId": "example-user-id-1", 
   "firstName": "Example First Name 1", 
   "lastName": "Example Last Name 1", 
   "learnerReportUrl": "https://api.reach360.com/reports/learners/example-user-id-1", 
   "userUrl": "https://api.reach360.com/users/example-user-id-1", 
   "duration": "PT37.578S", 
   "progress": 51,
   "quizScorePercent": null, 
   "dueAt": "2020-01-01T12:30:00.000Z", 
   "status": "Complete", 
   "userDeleted": false, 
   "completedAt": "2019-12-31T12:30:00.000Z",
  }, ... 
 ], 
 "nextUrl": "https://url-for-next-page-of-results" 
}

Endpoint-specific Error Codes

  • course_not_found - cannot retrieve report because course does not exist

Get Learner Course Report

GET /reports/learners/{userId}

Request Parameters (Query String)

  • limit (integer, optional) - the maximum number of results to return in a single response (see Pagination); must be between 1 and 2,000 (defaults to 50)

Example Response

{
 "userDeleted": false, 
 "userUrl": "https://api.reach360.com/users/example-user-id", 
 "courses": [ 
  { 
   "completedAt": "2019-12-31T12:30:00.000Z", 
   "courseDeleted": false,
   "courseId": "example-course-id-1", 
   "courseTitle": "Course Title 1", 
   "courseReportUrl": "https://api.reach360.com/reports/courses/example-course-id-1", 
   "courseUrl": "https://api.reach360.com/courses/example-course-id-1", 
   "duration": "PT37.578S", 
   "progress": 51,
   "quizScorePercent": null, 
   "dueAt": "2020-01-01T12:30:00.000Z", 
   "status": "Complete" 
  }, ... 
 ], 
 "nextUrl": "https://url-for-next-page-of-results" 
}

Endpoint-specific Error Codes

  • user_not_found - cannot retrieve report because user does not exist

Get Learning Path Courses Report

GET /reports/learning-paths/{learningPathId}/courses

Request Parameters (Query String)

  • limit (integer, optional) - the maximum number of results to return in a single response (see Pagination); must be between 1 and 2,000 (defaults to 50)

Example Response

{ 
  "learningPathDeleted": false,
  "learningPathUrl": "https://api.reach360.com/learning-paths/example-learning-path-id", 
  "learnersReportUrl": "https://api.reach360.com/reports/learning-paths/example-learning-path-id/learners", 
  "courses": [ 
    { 
     "courseDeleted": false,
     "courseId": "example-course-1", 
     "courseTitle": "Example Course", 
     "courseUrl": "https://api.reach360.com/courses/example-course-1",
     "numberOfLessons": 6, 
     "averageDuration": "PT37.578S", 
     "courseReportUrl": "https://api.reach360.com/reports/courses/example-course-1" 
    }, ... 
  ], 
  "nextUrl": "https://url-for-next-page-of-results" 
}

Endpoint-specific Error Codes

  • learning_path_not_found - cannot retrieve report because learning path does not exist

Get Learning Path Learners Report

GET /reports/learning-paths/{learningPathId}/learners

Request Parameters (Query String)

  • limit (integer, optional) - the maximum number of results to return in a single response (see Pagination); must be between 1 and 2,000 (defaults to 50)

Example Response

{ 
  "learningPathUrl": "https://api.reach360.com/learning-paths/example-learning-path-id", 
  "coursesReportUrl": "https://api.reach360.com/reports/learning-paths/example-learning-path-id/courses", 
  "learners": [ 
    { 
     "dueAt": null, 
     "duration": "PT37.578S", 
     "firstName": "Example First Name 1", 
     "lastName": "Example Last Name 1", 
     "learnerReportUrl": "https://api.reach360.com/reports/learners/example-user-id-1", 
     "status": "Complete", 
     "userDeleted": false,
     "userId": "example-user-id-1", 
     "userUrl": "https://api.reach360.com/users/example-user-id-1" 
    }, ... 
  ], 
  "nextUrl": "https://url-for-next-page-of-results" 
}

Endpoint-specific Error Codes

  • learning_path_not_found - cannot retrieve report because learning path does not exist

Get Group Courses Report

GET /reports/groups/{groupId}/courses

Request Parameters (Query String)

  • limit (integer, optional) - the maximum number of results to return in a single response (see Pagination); must be between 1 and 2000 (defaults to 50)

Example response

{ 
  "courses": [ 
   { 
    "courseDeleted": false, 
    "courseId": "example-course-1", 
    "courseTitle": "Example Course", 
    "courseUrl": "<https://api.reach360.com/courses/example-course-1>", 
    "averageDuration": "PT0S", 
    "courseReportUrl": "<https://api.reach360.com/reports/courses/example-course-1>", 
    "enrollmentDeleted": false }, ... ], 
    "groupDeleted": false, 
    "groupUrl": "<https://api.reach360.com/groups/example-group-1>", 
    "nextUrl": "<https://url-for-next-page-of-results>" 
}

Endpoint-specific error codes

  • group_not_found - can't retrieve report because group does not exist