View Source Course material ingestion
Torus supports importing, or ingesting, externally developed course material.
Overview
The Torus ingestion feature takes as input a course digest archive and converts that into a course project.
Course digest archives can be produced from a variety of different sources, either manually or via automated tools.
There is an automated tool that produces course digest archives from the legacy OLI XML course format.
https://github.com/Simon-Initiative/course-digest
[[assets/ingest.png]]
Course Digest Format
Course digest archives are zip
files that contain
JSON
files corresponding to curriculum resources.
In a course digest, the following are the minimally required files:
_project.json
This file describes high level course meta data.
{
"slug": "edx_bio_1",
"title": "Introduction to Biology",
"description": "An introductory biology course suitable for non-majors",
"type": "Manifest"
}
_hierarchy_.json
This file describes the course outline, or hierarchy, defining the units and modules of a course and the pages that they contain. The following is an excerpt of a sample hierarchy file:
{
"type": "Hierarchy",
"children": [
{
"type": "container",
"children": [
{
"type": "container",
"children": [
{
"type": "item",
"children": [],
"idref": "u-introduction-m-introduction-p-welcome"
}
],
"id": "u-introduction-m-introduction",
"title": "Introduction"
},
{
"type": "container",
"children": [
{
"type": "item",
The hierarchy file is essential a nested collection of children, that are of either type "container" (to represent a unit or module) or of type "item" (to
represent a page reference). For "item" instances, the
idref
attribute is a reference to the id
attribute
of resource JSON
file.
_media-manifest_.json
This file is a listing of all media assets that this course has prestaged into Torus S3 storage.
{
"mediaItems": [
{
"name": "1x1.png",
"url": "https://torus-media-dev.s3.amazonaws.com/media/nothingatall/1x1.png",
"fileSize": 95,
"mimeType": "image/png",
"md5": "71a50dbba44c78128b221b7df7bb51f1"
},
{
"name": "code-variable.png",
"url": "https://torus-media-dev.s3.amazonaws.com/media/nothingatall/code-variable.png",
"fileSize": 3671,
"mimeType": "image/png",
"md5": "0c084906e4502a6e93739b20a4ac119f"
},
Resource Files
Beyond the three require metadata files, a course digest
archive also contains any number of resource specific
JSON files. These files must be named <id>.json
where the id
is the
string identifier used to reference the resource from idref
attributes
in the course hierarchy file.
Currently three types of resource files are supported for ingestion: Page, Activity,
and Objective. All three follow the same format of requiring type
, id
, title
, content
and objectives
attributes to be defined. Samples of each follow:
Learning Objective
{
"type": "Objective",
"id": "u-hardware_and_software-m-hardware_and_software-p-kilobytes_megabytes_and_gigabytes_LO_1",
"title": "Solve word problems with arithmetic combinations of kilobytes, megabytes, and gigabytes.",
"content": {},
"objectives": []
}
Activity
{
"type": "Activity",
"id": "3550878268",
"title": "Image coding activity",
"tags": [],
"content": {
"authoring": {
"parts": [
{
"id": "1",
"responses": [
{
"id": "3713976972",
"score": 1,
"rule": "input like {1}",
"feedback": {
"id": "2848932877",
"content": {
"id": "2564146359",
"model": [
{
"type": "p",
"children": [
{
"text": "Correct"
}
]
}
]
Page
{
"type": "Page",
"id": "u-security-m-contents_security-p-contents_security",
"originalFile": "",
"title": "Contents: Security",
"tags": [],
"unresolvedReferences": [],
"content": {
"model": [
{
"type": "content",
"purpose": "none",
"id": "3177050314",
"children": [
{
"type": "ul",
"children": [
{
"type": "li",
"children": [
{
"text": " "
},
{