Track learning via the enrollments API

Poll the Go1 Enrolments API to capture learner enrolment events, including in-progress and completed learning.

Overview

This article explores how to utilise the Enrolment API to lookup your learner's progress and completion through Go1 content. This method of tracking content progress and completion requires you to request the data at intervals. If you are looking to receive content completion events in near real-time, we recommend using our Enrolment Update Webhook.

Polling the enrolments endpoint is best used when you are looking to analyse and report learning progress at a deeper level and can be used to build out your own custom reporting interface.

How it works

Enrolment data is available by making a GET request to https://api.go1.com/v2/enrollments. We'll provide an example of this below in the implementation steps of this guide. There are various ways you can filter the enrolment data returned - see the /v2/enrolments API Reference for all filter options.

Enrolments

Before jumping into the implementation steps, we'll briefly touch on the concept of Enrolments within the Go1 ecosystem. An Enrolment is an event that is recorded by Go1 whenever a user begins a new learning object within the Go1 Library (a learning object or LO is any learning resource within the Go1 library, eg. a course or video). Each created enrolment has a status associated with it of in-progress or complete, which records the user's progress through the learning object.

A user can be enrolled in a learning object themselves by simply starting a new learning object resource. Or, they could be enrolled by another actor, for example by an Admin or Manager user in the Go1 web application.

All of these enrolment records are stored against each customer portal and can be queried by the /v2/enrolments endpoint.

Implementation steps
Step 1. List enrolment records

To retrieve a list of enrolments, make a GET request to https://api.go1.com/v2/enrollments.

 curl --location --request GET 'https://api.go1.com/v2/enrollments' \
--header 'Authorization: Bearer <access-token>'

This request will return all enrolments that belong to a customers portals. Here is the example response:

{
  "total": 100,
  "hits": [
    {
      "id": 99999,
      "type": "enrolment",
      "created_time": "2019-08-24T14:15:22Z",
      "updated_time": "2019-08-24T14:15:22Z",
      "lo_id": 4444,
      "parent_lo_id": 5555,
      "parent_enrollment_id": 88888,
      "pass": true,
      "status": "not-started",
      "user_id": 2222,
      "utm_source": "msteams",
      "utm_content": "External_ID",
      "utm_medium": "desktop",
      "utm_campaign": "SF-xxxxxxxx",
      "lo": {
        "id": 555,
        "delivery": {
          "duration": 600,
          "mode": "self-paced"
        },
        "image": "https://res.cloudinary.com/v1431504122/ztiqbtyqcncc5bnk6ef1.png",
        "provider": {
          "id": 111222,
          "logo": "https://res.cloudinary.com/v1431504122/ztiqbtyqcncc5bnk6ef1.png",
          "name": "Learning Provider"
        },
        "title": "Learning Object Title",
        "type": "course",
        "summary": "Learning Object Summary"
      }
    }
  ]
}

This endpoint can be filtered using a series of query parameters to support a variety of use cases. For example, you can filter the returned results based on status (eg. only displayed completed enrolments), users (filter to a specific user), etc. See the GET /v2/enrolments API Reference for all filtering options.