🔎 Search online learning materials.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Learning Activities API

🔎 Search online learning materials.

This document describes a format for storing and searching learning materials ("activities") that can be used to use to create online courses or promote self-learning.

Reference implementation

This repository also contains a reference implementation of the Activity Search API, currently online at search.scholica.com.


Activities are JSON documents that contain the metadata and information for the visual representation of learning activities. These could be things like text, images, video's, live code editors, or any other type of rich web content.

For the creation of the specification outlined below, components were borrowed from both ADL's Experience API specification and the OEmbed specification. Definitions of Activities are however not directly compatible with OEmbed definitions or xAPI object definitions.

Criteria for inclusion

  • Content should work out of the box on any modern device, including mobile devices, without the installation of specific software. This means that Flash content is not allowed.

Activity definitions

An activity definition is a JSON object that describes a specific piece of learning material.


Minimal example: Khan Academy video

   "id": "https://www.khanacademy.org/math/algebra/units-in-modeling/rate-conversion/v/dimensional-analysis-units-algebraically",
   "type": "video",
   "name": "Intro to dimensional analysis",
   "thumbnail": "https://img.youtube.com/vi/hIAdCTNi1S8/default.jpg",
   "content": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/hIAdCTNi1S8\" frameborder=\"0\" allowfullscreen></iframe>"

Extended example: Khan Academy video

   "id": "https://www.khanacademy.org/math/algebra/units-in-modeling/rate-conversion/v/dimensional-analysis-units-algebraically",
   "type": "video",
   "name": "Intro to dimensional analysis",
   "description": "Sal Khan shows how we can treat units of measurement algebraically, and use these tools in order to convert between different units of the same quantity.",
   "thumbnail": "https://img.youtube.com/vi/hIAdCTNi1S8/default.jpg",
   "tags": ["algebra 1", "khan academy", "units", "algebra"],
   "locales": ["en-US"],
   "provider": {
      "id": "https://www.khanacademy.org/",
      "icon": "https://cdn.kastatic.org/images/large-tree-transparent.png",
      "name": "Khan Academy"
   "content": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/hIAdCTNi1S8\" frameborder=\"0\" allowfullscreen></iframe>"

Object fields specification

Property Type Description Required
id URI ID of the activity. This should be an unique URI. When possible, use the canonical URL of the online content you are referring to, if any. Required
type string One of the following: `link`, `photo`, `video`, `interactive`, `template` (see below). Required
name string Display name of the activity. Required
content enum Depending on the type of the activity, this contains the image URL or embed code. See activity types below. Required
thumbnail URL URL of a thumbnail of the activity. Whenever possible, this image should be around 300 pixels wide. Required
description string Description of the activity.
provider object Contains information about the content provider.
provider.id URI Unique provider URI. Whenever possible, use the homepage URL of the provider here.
provider.name string Name of provider, try to keep this short, but recognizable.
provider.icon URL URL of the provider icon. Minimal 32 pixels wide. Whenever possible, use a SVG image.
meta object Contains additional meta data about the content. Note that this object can also allows you to specify custom meta properties other than the ones below.
meta.tags array Array of strings with keywords that add additional information about the activity.
meta.language string ISO 639-1 language code of the activity.
meta.licence string Describes the usage language of the activity.
menu array Array of objects specifying the menu items that will be visible in the instructor options menu next to the activity.
menu[0].id string Unique internal name of the menu item (alphanumeric only).
menu[0].name string Display name of the menu item.
menu[0].icon string Name of the icon to display. Leave out to show default icon.

Activity types

Type link


Type photo


Type video


Type interactive


Activity templates

Activity templates provide a way to offer the course instructor the ability to create their own activities based on templates.

Additional properties

Property Type Description Required
fields array An array of Field objects specifying editable fields in this template. Optional


   "id": "https://scholica.com/activity/book",
   "type": "template",
   "name": "Book assigment",
   "description": "Instruct your students to read a book.",
   "thumbnail": "https://scholica.com/activity/book/icon.svg",
   "fields": [
         "id": "book_name",
         "title": "text",
         "name": "Book title",
         "required": true
         "id": "book_author",
         "type": "text",
         "name": "Author (optional)",
         "required": false
   "content": "<p>Read the following book:</p><img src=\"https://findbookimage.com/image?title={{book_name}}&author={{book_author}}\" style=\"float: left; margin-right: 24px;\" /><h3>{{book_name}}</h3><h4>{{book_author}}</h4>"

Example within Scholica module


   "controllers": {
      "courses-activity": "activity.php"


return [
       'id' => 'https://scholica.com/activity/book',
       'type' => 'template',
       'name' => 'Book assigment',
       'description' => 'Instruct your students to read a book.',
       'thumbnail' => 'https://scholica.com/activity/book/icon.svg',
       'fields' => [
               'id' => 'book_name',
               'title' => 'text',
               'name' => 'Book title',
               'required' => true
               'id' => 'book_author',
               'type' => 'text',
               'name' => 'Author (optional)',
               'required' => false
       'template' => 'book.html'


<p>Read the following book:</p>
<img src="https://findbookimage.com/image?title={{book_name}}&amp;author={{book_author}}" style="float: left; margin-right: 24px;" />

Search API


Providing activities to Scholica