Author content via API Integration

Build and onboard your content into Go1 using the Go1 API

Overview

This guide demonstrates the processes required to integrate your learning content into the Go1 environment using Go1 API. By following the steps outlined in this guide, you will be able to upload your learning content, maintain it, as well as synchronise learner enrolment data with Go1.

Why the content launch procedure is required

The Go1 API allows you to deliver your eLearning catalogue to the Go1 audience. The intuitive API provides a low-maintenance integration to help you scale and optimise your offering while adding minimal overhead. This means you can spend more time building great learner experiences while Go1 brings the audience to you.

How it works

Integrating your content via the API and keeping it up to date can be broken down into the followings steps:

  1. Upload your content using our POST /v2/learning-objects endpoint, to create your learning objects in Go1
  2. Sync learner enrollments using our POST /v2/provider/enrollments endpoint, to send content completions to Go1
  3. Update your content using our PATCH /v2/learning-objects endpoint, to keep your learning objects up to date in Go1
  4. Retire your content using our PATCH /v2/learning-objects endpoint, to decommission learning objects in Go1
Preparation

Before getting started you will need to ensure you have your Go1 account set up and have provisioned your API Keys, see the following guides to complete these steps:

Implementation steps
Step 1. Upload your content, by creating learning objects via the API

To create learning objects in Go1, you will need to make a POST request to the https://api.go1.com/v2/learning-objects endpoint.

Here is an example request (please refer to the API Reference to see the entire schema for creating learning objects):

curl --location --request POST 'https://api.go1.com/v2/learning-objects' \
--header 'Authorization: Bearer {{client_credentials_token}}' \
--data {...}

Mandatory metadata -The endpoint requires a minimum set of properties in the request body for the learning object to be created successfully. For details on Go1’s metadata properties and structure of the request body, please refer to Developer API Reference - Create Learning Object API.

Note - source_id is your internal unique identifier for the learning objects you create. To help simplify your Go1 integration, we have enabled the ability for your object ID to be used for all content actions via the API.

On a successful request, the response message body will contain your learning object as represented in Go1. Properties that weren’t supplied in the request are also returned with the default values. This response can be used in the PATCH endpoint to update your learning object.

Here is an example response:

{
	"id": "36265961",
	"title": "Link - All Mandatory Properties",
	"type": "link",
	"description": "This is a new object",
	"source_id": "link-011",
	"authentication_type": "saml",
	"instance": "16754510",
	"published": false,
	"url": "https://www.go1.com",
	"image": "https://carsguide-res.cloudinary.com/image/upload/f_auto,fl_lossy,q_auto,t_cg_hero_large/v1/editorial/ford-focus-rs-limited-edition-2017-blue-1_0.jpg",
	"language": "AU",
	"premium": false,
	"marketplace": false,
	"decommission_at": null,
	"retire_at": null,
	"can_embed": null,
	"duration": 30,
	"pricing": {
		"price": 0,
		"currency": "USD",
		"tax": 0
	},
	"summary": "this is a summary field",
	"tags": [
		"tag 1",
		"tag 2"
	],
	"import_status": "pending",
	"import_message": "Pending downloading and uploading of learning object assets",
	"attributes": {
		"integration": false,
		"mobile_optimised": null,
		"assessable": false,
		"wcag": true,
		"region_relevance": [
			{
				"key": "496",
				"value": "AU"
			},
			{
				"key": "495",
				"value": "GLOBAL"
			}
		],
		"learning_outcomes": [
			"outcome 1",
			"outcome 2"
		],
		"topics": [
			{
				"key": "65",
				"value": "Business Skills"
			},
			{
				"key": "16",
				"value": "Accounting and Finance"
			}
		],
		"entry_level": {
			"key": "489",
			"value": "Intermediate"
		}
	}
}
Step 2. Synchronize Learner Enrollment Data with Go1

If your content manages the learner's enrollment progress and completion status external to the Go1 system, it is a requirement to inform Go1 of any changes to that enrollment status. This ensures that we can consistently update our consumers, and give them consistent experiences when accessing your content - wherever they consume it.

In order to update a learners enrollment status via the API, make a POST request to https://api.go1.com/v2/provider/enrollments, using the following request body schema (see API Reference):

{
  "go1_account_id": <Go1_user_account_id>,
  "source_id": "<content_source_id>",
  "status": "completed",
  "result": 0,
  "pass": true,
  "start_date": "2021-02-22T01:00:00.000Z",
  "end_date": "2021-06-12T01:00:00.000Z"
}

In this example, upon a successful request, the user's enrolment will be updated to complete, ensuring an accurate reflection of the learner's progression through your content in Go1.

Step 3. Updating your Learning Objects

To keep the content you publish with Go1 up to date, you will need to update your content via a PATCH request to the https://api.go1.com/v2/learning-objects endpoint (see API Reference).

Here is an example request (please refer to the API Reference for the entire schema):

curl --location --request PATCH 'https://api.go1.com/v2/learning-objects?source_id="{your object identifier}' \
--header 'Authorization: Bearer {{client_credentials_token}}' \
--data {...}

This endpoint allows you to provide the data that has changed for the object if you do not want to provide the full set.

Changing your unique ID

If you have changed your unique identifiers in your system, you can update your catalogue in Go1 by providing the old source ID as a parameter and adding the new source ID in the body.

Step 4. Decommissioning your content

Decommissioning is the phase of Go1 Learning Objects that leads to retiring your content. Go1’s decommissioning process allows our users to complete their learning in progress as well as giving them time to find replacement content.

To set this process in motion, you use the PATCH https://api.go1.com/v2/learning-objects request to provide the dates you would like to trigger each phase.

decommission_at is the date that you will no longer accept new enrollments. In Go1, this translates to the learning item no longer appearing in any search, hiding it from people who do not already have an enrollment after this date. This property has a minimum date of 60 days after the current date.

retire_at is the date that you will no longer accept any access for learners. After this date, enrolled users will no longer be able to launch and access the learning item. In Go1, the learning item will no longer be visible to any learner, but their record of enrollment will still remain visible. This property has a minimum of 180 days.

See the API Reference - PATCH /v2/learning-objects and the example above in step 2 for how to make this request.

Minimum Date requirements

If you require your content to be retired quicker than the minimum notice period, please contact contentsupport@go1.com with your request.

If you no longer wish to trigger the decommissioning process, you can send a PATCH with the properties nulled prior to the date of execution.

Deleting unwanted Learning Objects

If you would like to remove unwanted objects from your catalogue such as objects you created for testing the API integration, please send an email to contentsupport@go1.com with the details of the objects that you would like us to delete for you.

There are some restrictions that need to be considered before deletion can occur.

  1. The learning object cannot be live (currently available to Go1 learners)
    a. The object needs to go through the sunsetting process so it is no longer available
  2. The learning object cannot have learner enrollment records attached to it including historical records)
    a. If you are the administrator of the user accounts, you can delete the enrollments first