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
- Session Object
- Course Learner Object
- Learner Course Object
- Learning Path Course Object
- Learning Path Learner Object
- Group Course Object
- Get Activity Report
- Get Course Learner Report
- Get Learner Course Report
- Get Learning Path Courses Report
- Get Learning Path Learners Report
- Get Group Courses Report
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 identifiercourseTitle
(string) - title of coursecourseReportUrl
(string) - URL to fetch course report from the APIcourseUrl
(string) - URL to fetch course's details from the APIuserId
(string) - user identifieremail
(string) - user email addressfirstName
(string) - the user's first namelastName
(string) - the user's last namelearnerReportUrl
(string) - URL to fetch the user's learner report from the APIuserUrl
(string) - URL to fetch user's details from the APIduration
(string) - ISO 8601-formatted duration of user sessionnumberOfLessonsCompleted
(integer) - number of lessons completedquizScorePercent
(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 starteduserDeleted
(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 identifieremail
(string) - user email addressfirstName
(string) - the user's first namelastName
(string) - the user's last namelearnerReportUrl
(string) - URL to fetch the user's learner report from the APIuserUrl
(string) - URL to fetch user's details from the APIduration
(string) - ISO 8601-formatted duration of average user sessionquizScorePercent
(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 ofNot Started
,In Progress
, orComplete
)completedAt
(string) - Timestamp of when the course was completed by the learner ornull
.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 identifiercourseTitle
(string) - title of coursecourseReportUrl
(string) - URL to fetch course report from the APIcourseUrl
(string) - URL to fetch course's details from the APIduration
(string) - ISO 8601-formatted duration of average user sessionquizScorePercent
(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 ofNot Started
,In Progress
, orComplete
)completedAt
(string) - Timestamp of when the course was completed by the learner ornull
.courseDeleted
(bool) - whether the course has been deleted.progress
(integer) - progress percentage
Learning Path Course Object (course in a learning path)
courseId
(string) ****- course identifiercourseTitle
(string) - course titlecourseUrl
(string) - URL to fetch the course's details from the APInumberOfLessons
(integer) - number of lessons in the courseaverageDuration
(string) - ISO 8601-formatted duration of average user sessioncourseReportUrl
(string) - URL to fetch the course report from the APIcourseDeleted
(bool) - whether the course has been deleted.
Learning Path Learner Object (learner in a learning path)
userId
(string) - user identifieremail
(string) - user email addressfirstName
(string) - the user's first namelastName
(string) - the user's last namelearnerReportUrl
(string) - URL to fetch the user's learner report from the APIuserUrl
(string) - URL to fetch user's details from the APIduration
(string) - ISO 8601-formatted duration of average user sessiondueAt
(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 ofNot Started
,In Progress
, orComplete
)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 identifiercourseTitle
(string) - course titlecourseUrl
(string) - URL to fetch the course's details from the APIaverageDuration
(string) - ISO 8601-formatted duration of average user sessioncourseReportUrl
(string) - URL to fetch the course report from the APIcourseDeleted
(bool) - whether the course has been deletedenrollmentDeleted
(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