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
| Field | Type | Description |
|---|---|---|
title | string | Course title |
kind | CourseGroupKind | Course type (see below) |
CourseGroupKind Values
| Value | Description |
|---|---|
courseGroup | Structured course with sections/lessons |
microCourse | Bite-sized learning with topics |
article | Article/blog-style content |
video | Video-based course |
shareableContentObject | SCORM/xAPI package |
xApiObject | xAPI (Tin Can) content |
Common Optional Fields
| Field | Type | Default | Description |
|---|---|---|---|
discussionsEnabled | boolean | false | Enable course discussions |
sku | string | null | Stock keeping unit |
isbn | string | null | ISBN number |
availableToPublic | boolean | false | Make publicly accessible |
Date Fields
| Field | Type | Description |
|---|---|---|
enrollmentStartDate | Date | When enrollment opens |
enrollmentEndDate | Date | When enrollment closes |
courseStartDate | Date | When course content becomes available |
courseEndDate | Date | When course closes |
gracePeriodEndDate | Date | Extended access period |
Date Format: ISO 8601 (e.g., 2024-01-15T00:00:00Z)
Enrollment Fields
| Field | Type | Description |
|---|---|---|
enrollmentLimit | integer | Maximum 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 studentsopenToAll- Anyone can accessinstructorsOnly- 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:
| Field | Type | Description |
|---|---|---|
scormUrl | URL | SCORM package URL |
width | integer | Player width in pixels |
height | integer | Player height in pixels |
Optional fields:
| Field | Type | Default | Description |
|---|---|---|---|
embeddedEnabled | boolean | false | Allow embedding |
resetSessionAfterComplete | boolean | false | Reset 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
| Field | Type | Description |
|---|---|---|
title | string | Topic title |
type | TopicType | Topic type (see below) |
TopicType Values
| Type | Description | Required Fields |
|---|---|---|
text | Text content | body |
video | Video content | Asset uploaded separately |
quiz | Quiz/assessment | Questions added via UI |
test | Graded test | Questions added via UI |
assignment | Assignment | Setup via UI |
shareableContentObject | SCORM content | scormUrl |
xApiObject | xAPI content | scormUrl |
article | Article page | languages |
htmlEmbed | HTML embed | scripts |
meeting | Live meeting | Meeting details |
pdfViewer | PDF viewer | pdfUrl (URL to PDF file) |
Optional Topic Fields
| Field | Type | Description |
|---|---|---|
body | string | HTML content (for text, article) |
preTextBlock | string | HTML shown before content |
postTextBlock | string | HTML shown after content |
languages | ArticlePageVariant[] | For article topics |
scormUrl | URL | For SCORM/xAPI topics |
pdfUrl | URL | For pdfViewer topics |
width | integer | Display width |
height | integer | Display height |
embeddedEnabled | boolean | Allow embedding |
fullscreenEmbed | boolean | Open in fullscreen |
preventProgression | boolean | Block next until complete |
resetSessionAfterComplete | boolean | Reset on completion |
caption | string | Caption text |
searchDisabled | boolean | Disable search |
printDisabled | boolean | Disable printing |
fileDownloadDisabled | boolean | Disable downloads |
scoTitle | string | SCORM 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 characterssku: Up to 100 charactersisbn: Standard ISBN format
Number Ranges
enrollmentLimit: Positive integerwidth,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
enrollmentStartDateis set,enrollmentEndDateis recommended - If
courseStartDateis set,courseEndDateis recommended
Structure Dependencies
courseGrouprequiressectionsarray- Each
sectionrequireslessonsarray - Each
lessonrequirestopicsarray microCourserequirestopicsarray at top levelarticlerequiresarticleVariantobjectshareableContentObjectrequiresscormUrl
SCORM Dependencies
scormUrlrequired forshareableContentObjectandxApiObjectwidthandheightrecommended for proper display
Examples by Format
Notes
Default Behavior
- If no
sectionsprovided forcourseGroup, 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.