OpenMantle Graph API

The OpenMantle Graph API provides a way for apps to get the data needed to power adaptive learning use cases. The Graph API can be called from any platform using any language. For convenience, we have created a JavaScript SDK for web apps.

Mobile / Native app

JavaScript SDK

Backend / API

The API and data are maintained and released by the Mapping Lab under the open-source MIT license. Email us for an API key.

The basics

The Graph API is named as such because it accesses learning data that is structured as a graph. This data is composed of:

All data resides in a single graph. In this way, you can make very complex queries in blazing fast time. For example, if you wanted to find ALL the prerequisites of a course, you can simply do:

GET https://mapping.mit.edu/graph-api/{courseId}/incoming-entities-all

This would fetch the set of nodes and prerequisite edges that are incoming to the course:

What makes the Graph API different is that it is designed to be fast and user-friendly. With traditional databases, this query is complex to code, and will often take quadratic time with multiple joins. In a production setting, this will kill your users' motivation. With the Graph API, these types of queries run in linear (and sometimes constant) time.

The data

The Graph API comprises these entities:

Node Description
Assessment A multiple-choice question, designed for formative assessment
Outcome A phrase that describes what the learner needs to be able to do. Also known as learning objective, Knowledge Component1, etc.
Module A grouping of outcomes that are tightly-coupled
Courses The courses on an institution's course listing

No Student or student-related data is available due to privacy issues.

Reference

Assessment /{assessment-id}

Represents a multiple-choice question item.

Examples

GET /{achievement-id} HTTP/1.1
Host: mapping.mit.edu

// make the call using our SDK
ML.api(
 "/{assessment-id}",
 fields: {
  solution, feedback, outcome
 },
 response => {
  // handle the result
 }
)
// coming soon!

Response

{
  "id": "1122334455",
  "displayName": "Solving a quadratic equation 1",
  "text": "<p> Find x in $x^2 + 5/2 = 3$ </p>",
  "created_at": "2017 March 23 19:05:22",
  "choices": [
    {id: "c1", text: "$x=1/2$"},
    {id: "c2", text: "$x=-3/5$"},
    {id: "c3", text: "$x=-3/2$"},
    {id: "c4", text: "$x=4$"},
  ],
  "solution": {
    id: "c1"
  },
  "feedback": "The correct solution is $x=1/2$. To see this, subtract ...."
  "outcome": "123456789"
}

Outcome /{outcome-id}

Represents a learning outcome — a phrase used to describe what a learner is able to do.

Examples

GET /{outcome-id} HTTP/1.1
Host: mapping.mit.edu

// make the call using our SDK
ML.api(
"/{outcome-id}",
fields: {
description
},
response => {
// handle the result
}
)
// coming soon!

Response

{
"id": "1122334455",
"displayName": "Calculate compound interest",
"description": "Calculate the result of a compound interest equation"
}