REST API HTTP Interface

The table below describes the routes that the HTTP interface provides. This HTTP interface is available for all models in Learning Locker.

GET http://www.example.org/api/v2/MODEL_NAME

For example, to get a count of stores via this API, you’d use the following route.

GET http://www.example.org/api/v2/lrs

To access this interface, you must additionally supply your Basic Auth details with each request in the Authorization header. Your Basic Auth details can be found under Settings > Clients.

Method Description
GET /count Gets a count of the models.
GET / Gets a subset of the models.
POST / Creates a model.
GET /:id Gets a single model.
PUT /:id Creates or overwrites a model.
POST /:id Creates or overwrites a model.
PATCH /:id Patches a model.
DELETE /:id Deletes a model.

Models

The table below lists the models supported by this interface, you can view the model schemas by clicking the model names.

Name API Model Name Description
Client client Credentials that access HTTP Interfaces.
Dashboard dashboard Customisable grid of visualisations.
Download download Record of downloaded exports.
Export export Template for exporting statements.
Journey journey Journeys visualisation.
Journey Progress journeyprogress Journey progress.
Organisation organisation Container of clients and stores that a subset of users can access.
Persona persona Person with many identifiers and attributes across systems.
Persona Identifier personaidentifier Unique xAPI identifier for a persona.
Persona Attribute personaattribute Attribute of a persona.
Query query Saved filter for statements.
Role role Group of permissions for accessing organisation data via users.
Store store Container for xAPI data (statements, documents, and attachments).
User user Login details for accessing the UI.
Visualisation visualisation Graphical view of statements.

Routes

GET /count

This route returns a count of the models. A request to this route would look something like the request below.

GET http://www.example.org/api/v2/lrs/count
Authorization: YOUR_BASIC_AUTH

A request like the one above, will respond with a 200 response like the one below containing a count of the models in the body.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

123

For more information about the acceptable URL query parameters, view the Restify documentation.

GET /

This route returns an array of models. A request to this route would look something like the request below.

GET http://www.example.org/api/v2/lrs
Authorization: YOUR_BASIC_AUTH

A request like the one above, will respond with a 200 response like the one below containing the models as JSON in the body. Different models will respond with a different schema, you can view the schemas by clicking the model names in the model table above.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[{
  createdAt: "2017-08-08T14:35:18.400Z",
  organisation: "111aaa1111a111111aa11111",
  statementCount: 987,
  title: "Example Store",
  updatedAt: "2017-08-08T14:35:33.721Z",
  _id: "111aaa1111a111111aa11112"
}]

For more information about the acceptable URL query parameters, view the Restify documentation.

POST /

This route creates a model. A request to this route would look something like the request below. Different models will require and respond with a different schema, you can view the schemas by clicking the model names in the model table above.

POST http://www.example.org/api/v2/lrs
Authorization: YOUR_BASIC_AUTH
Content-Type: application/json; charset=utf-8

{
  title: "Example Store",
}

A request like the one above, will respond with a 201 response like the one below containing the created model in the JSON body.

HTTP/1.1 201 CREATED
Content-Type: application/json; charset=utf-8

{
  createdAt: "2017-08-08T14:35:18.400Z",
  organisation: "111aaa1111a111111aa11111",
  statementCount: 0,
  title: "Example Store",
  updatedAt: "2017-08-08T14:35:33.721Z",
  _id: "111aaa1111a111111aa11112"
}

GET /:id

This route returns a single model that has the specified identifier from the URL. A request to this route would look something like the request below.

GET http://www.example.org/api/v2/lrs/111aaa1111a111111aa11112
Authorization: YOUR_BASIC_AUTH

A request like the one above, will respond with a 200 response like the one below containing the model as JSON in the body. Different models will respond with a different schema, you can view the schemas by clicking the model names in the model table above. Note that the request will return a 404 response if the model doesn’t exist.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  createdAt: "2017-08-08T14:35:18.400Z",
  organisation: "111aaa1111a111111aa11111",
  statementCount: 987,
  title: "Example Store",
  updatedAt: "2017-08-08T14:35:33.721Z",
  _id: "111aaa1111a111111aa11112"
}

For more information about the acceptable URL query parameters, view the Restify documentation.

PUT or POST /:id

This route creates or updates a single model that has the specified identifier from the URL. A request to this route would look something like the request below. Different models will require and respond with a different schema, you can view the schemas by clicking the model names in the model table above.

PUT http://www.example.org/api/v2/lrs/111aaa1111a111111aa11112
Authorization: YOUR_BASIC_AUTH
Content-Type: application/json; charset=utf-8

{
  createdAt: "2017-08-08T14:35:18.400Z",
  organisation: "111aaa1111a111111aa11111",
  statementCount: 987,
  title: "Updated Title",
  updatedAt: "2017-08-08T14:35:33.721Z",
  _id: "111aaa1111a111111aa11112"
}

A request like the one above, will respond with a 200 response like the one below containing the model as JSON in the body.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  createdAt: "2017-08-08T14:35:18.400Z",
  organisation: "111aaa1111a111111aa11111",
  statementCount: 987,
  title: "Updated Title",
  updatedAt: "2017-08-08T14:35:33.721Z",
  _id: "111aaa1111a111111aa11112"
}

PATCH /:id

This route patches a single model that has the specified identifier from the URL. A request to this route would look something like the request below. Different models will require and respond with a different schema, you can view the schemas by clicking the model names in the model table above.

PATCH http://www.example.org/api/v2/lrs/111aaa1111a111111aa11112
Authorization: YOUR_BASIC_AUTH
Content-Type: application/json; charset=utf-8

{
  title: "Patched Title",
}

A request like the one above, will respond with a 200 response like the one below containing the model as JSON in the body.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  createdAt: "2017-08-08T14:35:18.400Z",
  organisation: "111aaa1111a111111aa11111",
  statementCount: 987,
  title: "Patched Title",
  updatedAt: "2017-08-08T14:35:33.721Z",
  _id: "111aaa1111a111111aa11112"
}

DELETE /:id

This route deletes a single model that has the specified identifier from the URL. A request to this route would look something like the request below.

DELETE http://www.example.org/api/v2/lrs/111aaa1111a111111aa11112
Authorization: YOUR_BASIC_AUTH

A request like the one above, will respond with a 204 response like the one below.

HTTP/1.1 204 NO CONTENT