Skip to main content

Field Reference

Complete reference for all available fields when creating courses via the Thought Industries API.

CourseAttributes Object

The main object for course creation.

Required Fields

FieldTypeDescription
titlestringCourse title
kindCourseGroupKindCourse type (see below)

CourseGroupKind Values

ValueDescription
courseGroupStructured course with sections/lessons
microCourseBite-sized learning with topics
articleArticle/blog-style content
videoVideo-based course
shareableContentObjectSCORM/xAPI package
xApiObjectxAPI (Tin Can) content

Common Optional Fields

FieldTypeDefaultDescription
discussionsEnabledbooleanfalseEnable course discussions
skustringnullStock keeping unit
isbnstringnullISBN number
availableToPublicbooleanfalseMake publicly accessible

Date Fields

FieldTypeDescription
enrollmentStartDateDateWhen enrollment opens
enrollmentEndDateDateWhen enrollment closes
courseStartDateDateWhen course content becomes available
courseEndDateDateWhen course closes
gracePeriodEndDateDateExtended access period

Date Format: ISO 8601 (e.g., 2024-01-15T00:00:00Z)

Enrollment Fields

FieldTypeDescription
enrollmentLimitintegerMaximum number of enrollments

Format-Specific Fields

For courseGroup

Required structure:

sections: CourseSection[]

CourseSection:

{
title: string // Required
releaseDate?: Date // Optional
lessons: CourseLesson[] // Required
}

CourseLesson:

{
title: string // Required
openType: CourseLessonOpenType // Required
topics: CourseTopic[] // Required
}

CourseLessonOpenType values:

  • studentsOnly - Only enrolled students
  • openToAll - Anyone can access
  • instructorsOnly - Instructors only

For article

Required field:

articleVariant: {
language: string // e.g., "en"
label: string // e.g., "English"
title: string // Article title
subtitle?: string // Optional subtitle
body: string // HTML content
copyright?: string // Copyright notice
externalUrl?: string // External link
externalUrlCallToAction?: string // CTA text
}

For microCourse

Required structure:

topics: CourseTopic[]

For shareableContentObject (SCORM)

Required fields:

FieldTypeDescription
scormUrlURLSCORM package URL
widthintegerPlayer width in pixels
heightintegerPlayer height in pixels

Optional fields:

FieldTypeDefaultDescription
embeddedEnabledbooleanfalseAllow embedding
resetSessionAfterCompletebooleanfalseReset on completion

For xApiObject

Same as shareableContentObject - use scormUrl for the xAPI package.

CourseTopic Object

Used in lessons (for courseGroup) and directly (for microCourse).

Required Fields

FieldTypeDescription
titlestringTopic title
typeTopicTypeTopic type (see below)

TopicType Values

TypeDescriptionRequired Fields
textText contentbody
videoVideo contentAsset uploaded separately
quizQuiz/assessmentQuestions added via UI
testGraded testQuestions added via UI
assignmentAssignmentSetup via UI
shareableContentObjectSCORM contentscormUrl
xApiObjectxAPI contentscormUrl
articleArticle pagelanguages
htmlEmbedHTML embedscripts
meetingLive meetingMeeting details
pdfViewerPDF viewerpdfUrl (URL to PDF file)

Optional Topic Fields

FieldTypeDescription
bodystringHTML content (for text, article)
preTextBlockstringHTML shown before content
postTextBlockstringHTML shown after content
languagesArticlePageVariant[]For article topics
scormUrlURLFor SCORM/xAPI topics
pdfUrlURLFor pdfViewer topics
widthintegerDisplay width
heightintegerDisplay height
embeddedEnabledbooleanAllow embedding
fullscreenEmbedbooleanOpen in fullscreen
preventProgressionbooleanBlock next until complete
resetSessionAfterCompletebooleanReset on completion
captionstringCaption text
searchDisabledbooleanDisable search
printDisabledbooleanDisable printing
fileDownloadDisabledbooleanDisable downloads
scoTitlestringSCORM title override

ArticlePageVariant Object

For article topics:

{
language: string // Language code
label: string // Display name
title: string // Title in this language
subtitle?: string // Subtitle
body: string // HTML content
copyright?: string // Copyright
externalUrl?: string // External link
externalUrlCallToAction?: string // Link text
}

Field Validation

String Lengths

  • title: 1-255 characters
  • sku: Up to 100 characters
  • isbn: Standard ISBN format

Number Ranges

  • enrollmentLimit: Positive integer
  • width, height: 1-9999 pixels

Date Validation

  • Enrollment start < enrollment end
  • Course start < course end
  • All dates must be valid ISO 8601 format

URL Format

All URL fields (scormUrl, externalUrl) must be valid HTTP(S) URLs.

Bulk Operations

You can create up to 100 courses in a single request:

{
"courseAttributes": [
{ /* course 1 */ },
{ /* course 2 */ },
// ... up to 100
]
}

Field Dependencies

Date Dependencies

  • If enrollmentStartDate is set, enrollmentEndDate is recommended
  • If courseStartDate is set, courseEndDate is recommended

Structure Dependencies

  • courseGroup requires sections array
  • Each section requires lessons array
  • Each lesson requires topics array
  • microCourse requires topics array at top level
  • article requires articleVariant object
  • shareableContentObject requires scormUrl

SCORM Dependencies

  • scormUrl required for shareableContentObject and xApiObject
  • width and height recommended for proper display

Examples by Format

Notes

Default Behavior

  • If no sections provided for courseGroup, a default "Main" section with "Main" lesson is created
  • This default structure may not display optimally in the UI

Best Practices

  • Always provide complete structure (sections → lessons → topics)
  • Use clear, descriptive titles
  • Set appropriate dates for enrollment and access
  • Validate SCORM packages before uploading

API Response

Successful creation returns an array of course IDs:

["course-id-1", "course-id-2"]

Use these IDs for subsequent updates or queries.