Course Archive Format¶
This document describes the NextThought Course Archive (“course
archives”, or more simply, “archive”) format. An archive is a ZIP
file
containing the structure and assets of the course. The archive format
is designed to be a full representation of course content. It can be
used to back up course content or as a custom intermediate format to
move course content to another system.
Course archives can be extracted from the NextThought LMS using the “Export Course” functionality.
The archive contains a number of structured files in json
and,
XML
format (identified by the file extension and contents) as well
as folders containing user-provided assets (where those assets are images, documents, PDFs, etc.).
Common Object Properties¶
Many of the json
and XML
documents in the archive represent
objects or collections of objects. The objects have a set of
common properties useful for identifying the type of object, as well
as other metadata about the object. Common properties include:
Class
- A type identifier for the object
MimeType
- An RFC-6838 MIME type identifying the type of object
Creator
- The creator of the object identified by their unique
Username.
CreatedTime
- The time the object was created, represented as the time
in seconds since the epoch (a floating point number)
Last Modified
- The most recent modification time of the object, represented as the time
in seconds since the epoch (a floating point number)
NTIID
- A global, unique identifier for the object
OID
- An internal, unique identifier for the object
Publication¶
Certain object’s track publication state. While publication semantics may vary based on the type of object, publication state is most commonly used to control the visibility of the object. Objects supporting publication provide the following attributes.
Field Name | Type | Description |
---|---|---|
isPublished | Boolean | Whether or not the object is published. |
publishLastModified | Timestamp | The timestamp at which this object updated its publication state. |
Additionally some objects may have publication state driven by calendar dates. For example this object is published at a particular date and time. These objects supporting calendar based publication provide the following additional attributes.
Field Name | Type | Description |
---|---|---|
publishBeginning | DateTime | When present, this specifies the time instant at which this object is to be available. |
publishEnding | DateTime | When present, this specifies the last instance at which this object is to be available. |
acclaim_badges.json¶
A list of AcclaimBadge
objects that are awarded to learners upon
successful completion of the course. These objects model
BadgeTemplates
linked via the Credly/Acclaim integration.
See credly documentation for more information.
assessment_index.json¶
This file is deprecated in favor of evaluation_index.json.
assets (folder)¶
A folder of user-uploaded assets that are used within lessons and readings. This folder is exposed to course admins, and may contain sub-directories or unused assets.
assignment_policies.json¶
Assignment policy information that controls how the included evaluations (see evaluation_index.json) behave in the system. In general values here are merged on top of the corresponding values on the assignment to override behavior the assignment related settings.
This structure provides a mapping from evaluation NTIID to a dictionary of settings with the following possible keys.
Name | Type | Description |
---|---|---|
auto_grade | Dict | See below |
available_for_submission_beginning | String | The ISO-8601 datetime string controlling when submissions begin being accepted for the assignment. |
available_for_submission_ending | String | The ISO-8601 datetime string controlling when submissions are no longer accepted for the assignment. |
completion_passing_percent | Number [0, 1] | The percentage of questions the learner must get correct for
the assignment to be considered completed successfully
e.g. passed. For example a value of 0.80 would result in
successful completion if a learner gets at least 8 of 10
questions correct. |
disclosure | ‘never’, ‘always’, ‘termination’, ‘submission’ | Only applicable to polls and surveys, controls when users should be able to see the results associated with the pull/survey. |
locked | Bool | Deprecated |
max_submissions | Number | The maximum number of submission attempts this assignment
allows. Assignments with a max_submissions > 2 is said to be a
multiattempt assignment. |
maximum_time_allowed | Number | The number of seconds a learner has to complete the assignment after starting it. A maximum_time_allowed > 0 is indicative of a timed assignment. |
submission_buffer | Number | The number of seconds of grace period beyond
available_for_submission_ending that submissions will still
be allowed. See Late Submissions |
Name | Type | Description |
---|---|---|
disable | Bool | Is auto grading disabled |
total_points | Number | The total number of points this assignment is worth. |
evaluation_index.json¶
Lists all the evaluation items in the course. The Items
array contains zero or more of the following:
Question¶
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.naquestion”, “application/vnd.nextthought.question” |
content | string | The prompt for the question (May contain HTML). |
parts | array | the list of inputs,limited to 1 input per question. |
Poll¶
Have the same fields as questions. Polls aggregate the response of every learner, rather than test one learner.
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.napoll” |
Question Set¶
A collection of questions, used for learners to self test their own knowledge.
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.questionset” |
questions | array | the list of questions in the question set |
Survey¶
A collection of polls, used to aggregate results from all learners. Has the same fields as a question set plus:
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.nasurvey” |
title | string | The name of the survey |
description | string | Summary of the purpose of the survey |
disclosure | string | [policy] field |
contents | string | An optional RST string providing rich content to the survey, with napollref directives indicating the location of the polls found in the ``questions``property. |
Assignment¶
A wrapper around a question set, provides a score contributing to the learner’s course grade.
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.assessment.assignment” |
total_points | number | how many points the assignment is worth |
parts | array | a list of assignment parts containing the question sets |
available_for_submission_beginning | string | [policy] field |
available_for_submission_ending | string | [policy] field |
completion_passing_percent | Number [0, 1] | [policy] field |
max_submissions | Number | [policy] field |
maximum_time_allowed | Number | [policy] field |
submission_buffer | Number | [policy] field |
[policy] | (1, 2, 3, 4, 5, 6, 7) See assignment_policies.json for more information |
Documents (folder)¶
The default folder for storing user-uploaded documents used as lesson content. This folder is exposed to course admins. It may contain other documents, and some documents may have been moved to other directories.
Images (folder)¶
The default folder for storing user-uploaded images used as cover images for lesson content. This folder is exposed to the user. It may contain other documents, and some images may have been moved to other directories.
Lessons (folder)¶
Contains a json
file for each lesson, describing the overview of the lesson.
The json
files are referenced in course_outline.xml
and course_outline.json
, to build the full course structure.
The lesson overview has the following hierarchy:
Lesson Overview
└── Overview Group(s)
└── Lesson Asset(s)
Lesson Overview¶
The lesson’s json
file will contain exactly one lesson overview object.
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.ntilessonoverview” |
title | string | The name of the lesson (should match the name of the outline node) |
Items | array | An array of the overview groups in this lesson |
isPublished | boolean | If the contents of the lesson are available to learners. |
publishBeginning | date | When the contents of the lesson should become available to learners. |
publishEnding | date | When the contents of the lesson should become unavailable to learners. |
Overview Group¶
The lesson overview’s Items will be a zero or more overview groups.
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.nticourseoverviewgroup” |
title | string | The name of the overview groups |
accentColor | string | A color (in hex format)assigned to the group to help create visual contrast. |
Lesson Asset¶
The overview group’s Items will be zero or more lesson assets.
Lesson assets are broken into two categories references and assets. References point to other assets in the course.
Assessment Reference¶
MimeType: | “application/vnd.nextthought.questionsetref” |
---|---|
Target-NTIID: | Points to a QuestionSet in the evaluation_index.json |
Assignment Reference¶
MimeType: | “application/vnd.nextthought.assignmentref” |
---|---|
Target-NTIID: | Points to an Assignment in the evaluation_index.json |
Discussion Reference¶
MimeType: | “application/vnd.nextthought.discussionref” |
---|---|
Target-NTIID: | Points to a Discussion in one of the json files in the Discussions folder. |
SCORM Content Reference¶
MimeType: | “application/vnd.nextthought.scormcontentref” |
---|---|
Target-NTIID: | Points to a folder in the ScormContent folder. |
Survey Reference¶
MimeType: | “application/vnd.nextthought.surveyref” |
---|---|
Target-NTIID: | Points to a Survey in the evaluation_index.json |
LTI Tool Asset¶
MimeType: | “application/vnd.nextthought.ims.consumer.configuredtool” |
---|---|
title: | Name of the tool |
description: | Summary of the tool |
launch_url: | the URL to launch the LTI tool |
Video Asset¶
Webinar Asset¶
A reference to a GotoWebinar webinar.
MimeType: | “application/vnd.nextthought.webinar” |
---|---|
description: | summary of the webinar |
Links: | an array of link object, one will have a rel of JoinWebinar that href will launch the webinar |
webinarID: | the id of the webinar |
webinarKey: | the GotoWebinar key |
organizerKey: | the GotoWebinar account |
bundle_dc_metadata.xml¶
Incomplete Dublin Core metadata for the course. See course_info.json for more complete catalog information.
bundle_meta_info.json¶
Additional external content referenced by the course. This is only applicable to a subset of legacy enterprise courses.
completable_item_default_required.json¶
A list of content types, specified by MimeType
that this course
requires completion of by default.
completable_item_required.json¶
A list of required/optional overrides for content in the course.
Name | Type | Description |
---|---|---|
optional | String[] | List of NTIIDs for course objects that are explicitly marked as optional. |
required | String[] | List of NTIIDs for course objects that are explicitly marked as required. |
completion_policies.json¶
The aggregate completion policy for the course. The context_policy
field is an AggregateCompletionPolicy
modeling the aggregate completion requirement for
the course as well as whether or not a certificate is awarded on completion.
Name | Type | Description |
---|---|---|
percentage | Number | The percentage of required items a learner must successfully complete to complete the course. |
offers_completion_certificate | Bool | If true, when successfully completed learners are awarded a certificate. |
content_packages.json¶
A list of all the ContentPackages in the course. ContentPackages contain one and only one reading.
Name | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.renderablecontentpackage” |
title | string | the name of the content package |
content | string | A base 64 encoded, gzipped, ReSTructured text |
To decode the content, base 64 decode it and unzip the contents. Online tools exist to help with that process.
RST Primer¶
RST is a markup format that adds additional semantic information.
One powerful feature of RST, is the ability to add custom directives. The reading content utilizes custom directives for NextThought specific content blocks.
Code Block¶
Directive Name: | code-block |
---|---|
Arguments: | the language |
Body: | code block |
Photo¶
Directive Name: | course-figure |
---|---|
Arguments: | the URL for the image, points to a file in the assets folder |
Video¶
Directive Name: | ntivideoref |
---|---|
Arguments: | NTIID of the video, in the user_assets.json file |
Iframe¶
Directive Name: |
|
||||||
---|---|---|---|---|---|---|---|
Arguments: | src of the iframe |
||||||
Options: |
|
Sidebar¶
Directive Name: | sidebar |
---|---|
Body: | the contents of the sidebar |
course_info.json¶
Metadata and presentation information used to represent this course in the course catalog.
Name | Type | Description |
---|---|---|
additionalProperties | Deprecated | Deprecated |
awardableCredits | CourseAwardableCredit[] | Credit that will be awarded to a user’s transcript on successful completion. |
credit | Deprecated | Deprecated |
description | String | An optional plain text description of the course. |
duration | Deprecated | Deprecated |
endDate | String | The anticipated datetime this course will end in ISO-8601 timestamp format. |
id | String | The course identifier given to this course. |
instructors | Instructor[] | The published instructors for this course. |
isPreview | Bool | When true, this course is not avaialble to learners. |
is_anonymously_but_not_publicly_accessible | Deprecated | Deprecated |
is_non_public | Bool | When true, the course is not listed in the catalog for enrollment. |
prerequisites | Deprecated | Deprecated |
richDescription | String | An optional rich text (html) description of the course. |
schedule | Deprecated | Deprecated |
school | Deprecated | Deprecated |
startDate | String | The anticipated datetime this course will begin in ISO-8601 timestamp format. |
tags | String[] | A list of tags associated with this course. |
title | String | The title for this course. |
video | URL | The embed url of this course’s promotional video. |
CourseAwardableCredit¶
CourseAwardableCredit
defines the type and amount of credit a user
will be awarded upon successful completion of the course.
Name | Type | Description |
---|---|---|
amount | Number | The amount of credit to be awarded. |
credit_definition | CreditDefinition | The type of credit to be awarded including type, units, and precision. |
Instructor¶
The instructors
field defines the set of instructors that show up
when viewing course information in the catalog. These instructors are
distinct from users actually granted elevated permissions in the
course (see role_info.json).
Name | Type | Description |
---|---|---|
biography | Deprecated | Deprecated |
String | The public email for the instructor. | |
jobTitle | String | The instructors job title. For example: Chief Training Officer |
name | String | The display name for this instructor. |
suffix | String | The isntructors suffix. For example: PhD. |
title | Deprecated | Deprecated |
userid | Deprecated | Deprecated |
username | String | The optional NextThought username for the user this instructor item is associated with. |
course_outline.json¶
A json representation of the course outline, lesson structure, of the
course. The course outline is a tree structure of course outline nodes
representing the nodes in a course. Outline nodes containing other
nodes are sometimes referred to as Units
. Leaf nodes in the tree,
CourseOutlineContentNode
objects point to lesson content instead
of other nodes.
Field Name | Type | Description |
---|---|---|
AvailableBeginning | String | An ISO-8601 datetime string for the start of when the contents of this lesson are anticipated to be covered. This is purely a display construct. See Course Outline Node Publication for details on node visibility |
AvailableEnding | String | An ISO-8601 datetime string for the end of when the contents of this lesson are anticipated to be covered. This is purely a display construct. See Course Outline Node Publication for details on node visibility |
title | String | The display name for the lesson/unit in the outline |
Items | CourseOutlineNode[] | Child nodes of this node |
Additionally CourseOutlineContentNode
objects add a src
field
that references the LessonOverview
json file from the Lessons
folder.
Field Name | Type | Description |
---|---|---|
src | String | The filename of the lesson definition file found in the Lessons (folder). |
Note
In practice the CourseOutline is typically 2 levels, the
first level maps to Units
and the second level maps to
Lessons
. Some legacy courses may have CourseOutlineNode
objects that nest more than 2 levels.
Course Outline Node Publication¶
The publication properties on course outline nodes drive the visibility of those outline nodes to learners. Only published outline nodes are visible in the Course’s lesson structure for learners. All nodes are visible to instructors and editors when in editing mode.
course_outline.xml¶
Warning
This file is deprecated and replaced by course_outline.json.
An xml representation of the course structure (units and lessons). This is a legacy format. In general we recommend using the course_outline.json representation as it is more verbose.
course_tab_preferences.json¶
A json
file containing overrides to the course’s default tab names (as displayed on the Course page)
There is only a names
key which maps the tab name to the display name.
Note
Enterprise site may have global overrides not accounted for here
Name | Default display |
---|---|
lessons | Lessons |
assignments | Assignments |
discussions | Community |
info | Course info |
dc_metadata.xml¶
Incomplete Dublin Core metadata for the course. See course_info.json for more complete catalog information.
ims_configured_tools.json¶
A mapping of configured LTI tools in the course keyed by NTIID. Each
LTI tool is represented by ConfguredTool
which itself contains a PersistentToolConfig
Field Name | Type | Description |
---|---|---|
config | PersistentToolConfig | See below. |
config_xml | String | The xml representation of the LTI configuration |
consumer_key | String | The consumer key associated with this LTI tool |
deleted | Bool | Was this tool deleted. Deleted tools don’t show in the UI. |
secret | String | The consumer secret associated with this LTI tool |
Field Name | Type | Description |
---|---|---|
title | String | A displayable title of the tool |
description | String | A plain text description of the tool |
launch_url | URL | A fully qualified url that can be used to launch the tool |
secure_launch_url | URL | A fully qualified https url that can be used to launch the tool |
meta_info.json¶
A json
file containing metadata about the export archive.
The json object has the following fields:
Field Name | Type | Description |
---|---|---|
CreatedTime | String | The creation time of this archive in ISO-8601 format |
Creator | String | The Username of the user that created the export |
ExportHash | String | An opaque, unique identifier for this archive |
MimeType | String | application/vnd.nextthought.courses.courseinstance |
For example:
{
"CreatedTime": "2021-12-22T17:06:26Z",
"Creator": "admin1",
"ExportHash": "49115848444338989_1640192784.88",
"MimeType": "application/vnd.nextthought.courses.courseinstance"
}
presentation-assets (folder)¶
The presentation assets for the course. This includes cover, thumbnail, background, etc. Anything outside the webapp folder (which is found within presentation-assets) should be ignored.
File Name | Size | Description |
---|---|---|
contentpackage-thumb-60x60.png | 120px X 120px | Used in list presentation of courses |
contentpackage-landing-232x170.png | 464px X 240px | Used in card presentation of courses |
background.png | 3000px X 2000px | Used as the background image when on a course, has a Gaussian blur to handle |
client_image_source.png | any | The source image used to generate the other images |
course-promo-large-16x9.png | Deprecated | Deprecated |
course-cover-232x170.png | Deprecated | Deprecated |
contentpackage-cover-256x156 | Deprecated | Deprecated |
role_info.json¶
A json
file providing a mapping of course roles and the users
assigned to them.
{
"nti.roles.course_content_editor": {
"allow": [
"editor1",
"instructor1"
]
},
"nti.roles.course_instructor": {
"allow": [
"instructor1",
"grader1"
]
}
}
UI Labels:
Instructor: | Has access to edit content and assign grades. Appears in both nti.roles.course_content_editor and nti.roles.course_instructor . |
---|---|
Editor: | Has access to edit the content. Appears only in nti.roles.course_content_editor . |
Assistant: | Has access to assign grades. Appears only in nti.roles.course_instructor . |
user_assets.json¶
A list of additional assets in the course, typically videos
Field | Type | Description |
---|---|---|
MimeType | string | “application/vnd.nextthought.ntivideo” |
title | string | Name of the video |
sources | VideoSource[] | List of possible sources for the video (typically only one) |
transcripts | Transcript[] | List of transcripts attached to the video |
Field | Type | Description |
---|---|---|
service | string | The service hosting the video; either ‘kaltura,’ ‘vimeo,’ ‘wistia,’ or ‘youtube’ |
source | string | The service-specific ID |
To generate the video src, combine the source with the service’s base URL
Note
Youtube
service: | “youtube” |
---|---|
base URL: | “https://www.youtube.com/{source}” |
For Example:
source: | “aqz-KE-bpKQ” |
---|---|
video src: | https://www.youtube.com/aqz-KE-bpKQ |
Note
Vimeo
service: | “vimeo” |
---|---|
base URL: | “https://www.vimeo.com/{source}” |
For Example:
source: | “798022” |
---|---|
video src: | https://www.vimeo.com/798022 |
Note
Wistia
service: | “wistia” |
---|---|
base URL: | “https://fast.wistia.com/embed/iframe/{source}” |
For Example:
source: | s3lqfi0zn7 |
---|---|
base URL: | https://fast.wistia.com/embed/iframe/s3lqfi0zn7 |
Field | Type | Description |
---|---|---|
lang | string | The language of the transcript |
purpose | string | The purpose of the transcript (either ‘captions’ or ‘normal’) * - filename
|
contents | string | base64 encoded gzip of the .vtt file (specification) |
To decode the contents, base 64 decode it and unzip the contents. Online tools exist to help with that process.
vendor_info.json¶
Additional custom vendor information specific to the NextThought Platform. This data structure is deprecated.
ScormContent (folder)¶
The SCORM content files uploaded as part of this course. The folder contains a unique folder for each SCORM package in the course containing metadata about the package and the original SCORM content package itself.
ScormContent
└── tag_nextthought.com_2011-10_NTI-ScormContentInfo-1BC4CCEA431F1E6166205A94AC39402C174C67AF4E1CBEEB692E501C5D17F8AF_0087
└── scorm_content.json
└── myscorm_package.zip
The metadata for this scorm package is found in the
scorm_content.json
file and has the following structure.
Field | Type | Description |
---|---|---|
NTIID | string | The unique identifier for this scorm package. |
ScormArchiveFilename | string | The filename of the SCORM original content file. |
For example:
{
"NTIID": "tag:nextthought.com,2011-10:NTI-ScormContentInfo-1BC4CCEA431F1E6166205A94AC39402C174C67AF4E1CBEEB692E501C5D17F8AF_0087",
"ScormArchiveFilename": "myscorm_package.zip"
}