This endpoint controls the creation and maintenance of courses.
Author - Course Templates API
Interfaces
-
List courses
-
List course titles
-
Show course
-
Create course
-
Update a course
-
Delete a course
-
Restore a destroyed course
-
Syncs course enrollments with data available in upstream SCORM
-
Publish course
-
Discard changes
-
Upload SCORM
-
Upload SCORM that has been attached to a course
-
Attach a SCORM course
-
Clone a course
-
Export a course
Object Synopses
CourseTemplateRequest
-
title
String
Required
Title of course.
-
description
String
A description of the course.
-
is_published
Boolean
Required
Describes the visibility of the course.
-
has_unpublished_changes
Boolean
Required
Describes if there are changes not yet visible to learners.
-
default_days_until_due
Integer
Required
Number of days from assignment to a learner until course is due.
-
default_due_on_date
String
Date on which all enrollments will be due.
-
due_date_type
String
Due date type currently being utilized by the server.
-
course_type
String
Required
Describes whether course is native bridge, SCORM, Lynda, or OpenSesame.
-
external_course_id
String
Optional identifier for linking to external systems.
-
has_certificate
Boolean
Indicates if certificate is issued when course is successfully completed.
-
passing_threshold
Integer
Percent correct answers required to pass course.
-
max_quiz_attempts
Integer
The number of times a learner is allowed to answer quiz questions.
-
continuing_education_credits
Integer
The number of points a learner earns for completing this course.
-
open_book
Boolean
Indicates if learners can navigate the course during quizzes.
-
tags
Array
A list of tags for the course
-
matching_tags
Array
Tags matching the search query for the course
-
maintain_branding_in_sub_account
Boolean
Controls whether this course is rendered with the custom branding of its originating account when shared
-
locked_attributes_enabled
Boolean
Indicates if some course attributes are locked.
-
locked_attributes
Array
Attributes that are locked on the enrollment profile of the course.
-
derived_locked_attributes
Array
Attributes that are locked on the enrollment profile, including those set on the subaccount and the root subaccount
OrderedSlide
-
id
Integer
Required
Slide id.
-
position
Integer
Required
Published. Slide position in the course.
-
new_position
Integer
Required
Unpublished slide position in the course.
-
published_attributes
{API::SlideAttributes}
No description provided.
-
draft_attributes
{API::SlideAttributes}
No description provided.
-
published_at
DateTime or null
Required DateTime slide was published.
-
estimated_time
Integer
Estimated number of minutes to complete slide.
-
attachments
TODO
Array of slide attachments
SlideAttributes
-
title
String
The title of the slide
-
body
String
The content of the slide
-
type
String
Slide type
-
allow_comments
Boolean or null
Required
Allows comments by learners if true.
-
cover_slide_data
{API::CoverSlideData}
No description provided.
-
attachment_url
String or null
The URL of the image associated with the quiz question.
-
attachment_align
String or null
The alignment of the image associated with the quiz question, one of top, left, wide, or bottom.
-
static_order
Boolean or null
Skips randomizing answer order if true.
CoverSlideData
-
dark
Boolean
Required
Describes the color scheme of slide.
-
heading
String
Required on cover slides. Optional on all others. Title of slide.
-
intro
String
Subtitle of slide.
-
backgroundColor
String
Hex color of background.
-
primaryColor
String
Hex color of foreground.
-
backgroundImageUrl
String
URL of background image
-
backgroundImageStyle
String
Optional unless backgroundImageUrl is present. Controls how background image is displayed
-
backgroundImageOpacity
Float
Optional unless backgroundImageUrl is present. Describes opacity of the image.
CourseTemplateSubAccount
-
id
Integer
SubAccount id
-
name
String
The name of the subaccount
-
is_root
Boolean
Is this the root account
-
not_current
Boolean
Is this course outside the current subaccount
-
sub_accounts_exist
Boolean
Do subaccounts exist in the account
List courses
GET
/api/author/course_templates
Note: the deleted_at
element in the returned object is present only
if deleted records were requested.
Response Codes
200 OK
304 Not Modified
Parameters
-
sort
String
[ newest, title, updated, archived ]
Query parameter. Applies a sort to the result list.
-
filters[]
String
[ my_courses, unpublished, has_certificate, no_enrollments, bridge, scorm, lynda, opensesame ]
Query parameter. This argument may occur multiple times.
-
search
String
Query parameter. Search course titles for a match with the given
string.
-
includes[]
String
[ counts, expiration, enrollment_profiles, programs ]
Query paramater. Additional information to be returned in the response.
This argument may occur multiple times.
If counts is given, response will include enrollment_counts.
If expiration is given, response will include auto_re_enroll, default_days_until_expiration, expires, and re_enrollment_period.
If enrollment_profiles is given, response will include enroll_url, open_enrollment, and uuid.
If programs is given, response will include program_ids.
-
updated_after
DateTime
Query parameter. Filters list to only include courses updated after the
given RFC 3339 compliant timestamp.
-
created_after
DateTime
Query parameter. Filters list to only include courses created after the
given RFC 3339 compliant timestamp.
-
deleted_after
DateTime
Query parameter. Filters list to only include courses deleted after the
given RFC 3339 compliant timestamp.
-
updated_before
DateTime
Query parameter. Filters list to only include courses updated before the
given RFC 3339 compliant timestamp.
-
created_before
DateTime
Query parameter. Filters list to only include courses created before the
given RFC 3339 compliant timestamp.
-
deleted_before
DateTime
Query parameter. Filters list to only include courses deleted before the
given RFC 3339 compliant timestamp.
-
only_deleted
Boolean
Filters list to only include deleted courses.
-
with_deleted
Boolean
Filters list to also include deleted courses.
Example Request
with includes
/api/author/course_templates?includes[]=enrollment_profiles&includes[]=expiration
Example Response
{
"meta": {},
"course_templates": [
{
"id": "1",
"estimated_time": null,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "Scorm 01",
"description": "",
"is_published": true,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"external_status": "inapplicable",
"external_status_message": "optional messaging",
"course_type": "scorm",
"open_book": false,
"enrollments_count": 0,
"attachments_count": 1,
"created_at": "2018-10-30T23:37:07.864Z",
"updated_at": "2018-11-28T09:58:33.000Z",
"deleted_at": "2018-12-05T19:27:54.010Z",
"third_party_course_id": null,
"external_course_id": null,
"next_section_due": null,
"sub_account": {
"id": "1",
"name": "Bridge",
"is_root": true,
"sub_accounts_exist": false,
"not_current": false,
"tac_type": "domestic",
"tac_custom_body_markup": null,
"tac_updated_at": "2016-08-05T18:03:21.815Z"
},
"has_shared_enrollments": false,
"tags": [],
"matching_tags": [],
"expires": false,
"default_days_until_expiration": null,
"retain": false,
"retain_intervals": [1, 3, 7],
"auto_re_enroll": false,
"re_enrollment_period": 7,
"open_enrollment": false,
"uuid": "193c854d",
"enroll_url": "http://bridge.bridgelearning.dev:3000/learner/courses/193c854d/enroll",
"links": {
"author": "1"
},
"show_correct_response": true,
"locked_attributes_enabled": false,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
List course titles
GET
/api/author/course_templates/titles
{
“meta”: {},
“course_templates”: [
{
“id”: “1”,
“title”: “My Test Course”
}
]
}
Parameters
-
sort
String
[ newest, title, updated ]
Query parameter. Applies a sort to the result list.
-
filters[]
String
[ my_courses, unpublished, has_certificate, no_enrollments, bridge, scorm, lynda, opensesame ]
Query parameter. This argument may occur multiple times.
-
search
String
Query parameter. Search course titles for a match with the given
string.
Show course
GET
/api/author/course_templates/:id
Response Codes
200 OK
304 Not Modified
Parameters
-
id
Integer
Required
The course id.
-
sort
String
Query parameter. This argument makes no difference on outcome, since
a single object is always sorted.
-
includes[]
String
[ has_shared_enrollments, next_section_due, programs, with_content ]
Query paramater. Additional information to be returned in the response.
This argument may occur multiple times.
If has_shared_enrollments or next_section_due is given, response will include each respective field.
If programs is given, response will include program_ids.
Example Request
with includes
/api/author/course_templates/1?includes[]=has_shared_enrollments&includes[]=next_section_due
Example Response
{
"meta": {},
"course_templates": [
{
"id": "1",
"estimated_time": null,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "Scorm 01",
"description": "",
"is_published": true,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"external_status": "inapplicable",
"external_status_message": "optional messaging",
"course_type": "scorm",
"open_book": false,
"enrollments_count": 0,
"attachments_count": 1,
"updated_at": "2016-09-01T12:44:10.773-06:00",
"third_party_course_id": null,
"external_course_id": null,
"next_section_due": null,
"sub_account": {
"id": "1",
"name": "Bridge",
"is_root": true,
"sub_accounts_exist": false,
"not_current": false,
"tac_type": "domestic",
"tac_custom_body_markup": null,
"tac_updated_at": "2016-08-05T18:03:21.815Z"
},
"has_shared_enrollments": false,
"enrollment_counts": {
"all": 0,
"required": 0,
"optional": 0,
"finished": 0,
"not_started": 0,
"overdue": 0,
"in_progress": 0
},
"tags": [],
"matching_tags": [],
"expires": false,
"default_days_until_expiration": null,
"retain": false,
"retain_intervals": [1, 3, 7],
"auto_re_enroll": false,
"re_enrollment_period": 7,
"open_enrollment": false,
"uuid": "193c854d",
"enroll_url": "http://bridge.bridgelearning.dev:3000/learner/courses/193c854d/enroll",
"links": {
"author": "1"
},
"scorm": {
"registration_instancing_option": "always",
"player_launch_type": "2",
"sco_launch_type": "2",
"score_rollup_mode": "3"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Create course
POST
/api/author/course_templates
Response codes
201 Created
Parameters
-
Body parameter. An array of {API::CourseTemplateRequest} to be created.
Example Request
Example Response
{
"meta": {},
"course_templates": [
{
"id": "4",
"estimated_time": null,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "My Course",
"description": "A description",
"is_published": false,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"program_ids": [],
"external_status": "inapplicable",
"external_status_message": "optional messaging",
"external_course_id": "P314159",
"course_type": "bridge",
"open_book": false,
"enrollments_count": 0,
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"not_current": false,
"sub_accounts_exist": true
},
"links": {
"author": "1"
},
"locked_attributes_enabled": false,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Update a course
PATCH
/api/author/course_templates/:id
PUT
/api/author/course_templates/:id
Response Codes
200 OK
Parameters
-
Body parameter. A {API::CourseTemplateRequest} containing the fields
to be updated.
Example Request
Example Response
{
"meta": {},
"course_templates": [
{
"id": "1",
"estimated_time": 3,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "My Test Course",
"is_published": true,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": true,
"program_ids": [],
"external_status": "inapplicable",
"external_status_message": "optional messaging",
"external_course_id": "P314159",
"course_type": "bridge",
"open_book": false,
"enrollments_count": 3,
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"not_current": false,
"sub_accounts_exist": true
},
"links": {
"author": "1"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Delete a course
DELETE
/api/author/course_templates/:id
Response codes
204 No Content
On successful deletion
Parameters
-
id
Integer
Required
Path parameter. Course template id.
Restore a destroyed course
POST
/api/author/course_templates/:id/restore
Response codes
200 OK
On successful restoration
204 No Content
On unsuccesful restoration
Parameters
-
id
Integer
Required
Path paramter. Course template id.
Syncs course enrollments with data available in upstream SCORM
POST
/api/author/course_templates/:id/sync
This endpoint requires support user permissions(validated by the frontend) for now.
In the future this may become available to account admins with a custom account permission
such as course_template_sync(which would need to be created)
Response codes
204 No Content
On successful sync request
400 Bad Request
When course is not SCORM
403 Forbidden
Parameters
-
id
Integer
Required
Path parameter. Course template id.
Example Request
/api/author/course_templates/1/sync
Publish course
POST
/api/author/course_templates/:id/publish
Makes a course visible to non-authors
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer
Required
Path parameter. Course template id.
-
notify_filter
String
Which learners to notify. One of ‘all’, ‘finished’, or ‘in_progress’.
-
notify_message
String
Message to send to learners. Limited to 1000 characters.
-
re_enroll
Boolean
Indicates if completed enrollments should be re-enrolled. Defaults to false.
Example Response
{
"meta": {},
"course_templates": [
{
"id": "7",
"estimated_time": 1,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "Test Course",
"is_published": true,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"program_ids": [],
"external_status": "inapplicable",
"external_status_message": "optional messaging",
"external_course_id": "P314159",
"course_type": "bridge",
"open_book": false,
"enrollments_count": 0,
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"not_current": false,
"sub_accounts_exist": true
},
"links": {
"author": "1"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Discard changes
POST
/api/author/course_templates/:id/discard_changes
Discards unpublished changes to the course.
Response Codes
200 OK
Parameters
-
id
Integer
Required
Path parameter. Course template id.
Example Response
{
"meta": {},
"course_templates": [
{
"id": "7",
"estimated_time": 1,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "Test Course",
"description": "A description",
"is_published": true,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"program_ids": [],
"external_status": "inapplicable",
"external_status_message": "optional messaging",
"external_course_id": "P314159",
"course_type": "bridge",
"open_book": false,
"enrollments_count": 0,
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"not_current": false,
"sub_accounts_exist": true
},
"links": {
"author": "1"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Upload SCORM
POST
/api/author/course_templates/:id/upload
Upload a SCORM course.
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer
Required
Path parameter. Course template to be overwritten by upload.
-
location
String
Required
Body parameter. URI of course to import.
-
file_modified_at
DateTime
Body parameter. Last modification time of the uploaded file.
-
name
String
Body parameter. Name of the uploaded file.
Example Request
{
"location": "https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip",
"file_modified_at": "2012-09-21T23:18:28.000Z",
"name": "RuntimeBasicCalls_SCORM20043rdEdition.zip"
}
curl \
-X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"location":"https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip","file_modified_at":"2012-09-21T23:18:28.000Z","name":"RuntimeBasicCalls_SCORM20043rdEdition.zip"}' \
http://<bridge>/api/author/course_templates/:id/upload
Example Response
{
"meta": {},
"course_templates": [
{
"id": "19",
"estimated_time": null,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "A course title",
"description": "A description",
"is_published": false,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"program_ids": [],
"external_status": "pending",
"external_status_message": "optional messaging",
"external_course_id": "P314159",
"course_type": "scorm",
"open_book": false,
"enrollments_count": 0,
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"not_current": false,
"sub_accounts_exist": true
},
"links": {
"author": "1"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Upload SCORM that has been attached to a course
POST
/api/author/course_templates/:id/import_attached_scorm
Replace course with previously attached SCORM course and then publish.
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer
Required
Path parameter. Course template to be overwritten by upload.
Example Request
Example Response
{
"meta": {},
"course_templates": [
{
"id": "19",
"estimated_time": null,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "A course title",
"description": "A description",
"is_published": false,
"has_been_unpublished": false,
"has_unpublished_changes": false,
"retain": false,
"quizzes_count": 0,
"external_status": "inapplicaable",
"external_status_message": null,
"course_type": "scorm",
"enrollments_count": 0,
"attachments_count": 1,
"meta": {
"domain_id": "1",
"sub_account_id": "1",
"r2b_jwt": "aaa.bbb.ccc"
},
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"sub_accounts_exist": false,
"not_current": false,
"tac_type": "domestic",
"tac_custom_body_markup": null,
"tac_updated_at": "2016-08-05T18:03:21.815Z"
},
"updated_at": "2016-09-01T12:44:10.773-06:00",
"has_shared_enrollments": false,
"enrollment_counts": {
"all": 0,
"required": 0,
"optional": 0,
"finished": 0,
"not_started": 0,
"overdue": 0,
"in_progress": 0
},
"tags": [],
"matching_tags": [],
"expires": false,
"default_days_until_expiration": null,
"retain": false,
"retain_intervals": [1, 3, 7],
"auto_re_enroll": false,
"re_enrollment_period": 7,
"open_enrollment": false,
"uuid": "193c854d",
"enroll_url": "http://bridge.bridgelearning.dev:3000/learner/courses/193c854d/enroll",
"links": {
"author": "1"
},
"scorm": {
"registration_instancing_option": "always",
"player_launch_type": "2",
"sco_launch_type": "2",
"score_rollup_mode": "3"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Attach a SCORM course
POST
/api/author/course_templates/:id/attach_scorm
Attach a SCORM course to a Bridge course.
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer
Required
Path parameter. Course template to attach SCORM course.
-
location
String
Required
Body parameter. URI of SCORM course to import.
-
file_modified_at
DateTime
Body parameter. Last modification time of the uploaded SCORM course
file.
-
name
String
Body parameter. Display name of the uploaded SCORM course file.
Example Request
{
"location": "https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip",
"file_modified_at": "2012-09-21T23:18:28.000Z",
"name": "RuntimeBasicCalls_SCORM20043rdEdition.zip"
}
curl \
-X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"location":"https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip","file_modified_at":"2012-09-21T23:18:28.000Z","name":"RuntimeBasicCalls_SCORM20043rdEdition.zip"}' \
http://<bridge>/api/author/course_templates/:id/attach_scorm
Example Response
{
"meta": {},
"course_templates": [
{
"id": "19",
"estimated_time": null,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "A course title",
"description": "A description",
"is_published": false,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"program_ids": [],
"external_status": "attached",
"external_course_id": "P314159",
"course_type": "scorm",
"open_book": false,
"enrollments_count": 0,
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"not_current": false,
"sub_accounts_exist": true
},
"links": {
"author": "1"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Clone a course
POST
/api/author/course_templates/:id/clone
Response Codes
200 OK
400 Bad Request
When original course is archived
Parameters
-
id
Integer
Required
Path parameter. Course template id.
Example Response
{
"meta": {},
"course_templates": [
{
"id": "10",
"estimated_time": 1,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"title": "Copy of Test Course",
"description": "A description",
"is_published": true,
"has_unpublished_changes": false,
"default_days_until_due": 7,
"has_certificate": false,
"program_ids": [],
"external_status": "inapplicable",
"external_course_id": "P314159",
"course_type": "bridge",
"open_book": false,
"enrollments_count": 0,
"sub_account": {
"id": 1,
"name": "Acme, Co",
"is_root": true,
"not_current": false,
"sub_accounts_exist": true
},
"links": {
"author": "1"
},
"locked_attributes_enabled": true,
"locked_attributes": ["title", "description"],
"derived_locked_attributes": ["title", "description"]
}
]
}
Export a course
GET
/api/author/course_templates/:id/export
This endpoint requires the course_template_download permission
which by default is granted to admins and account admins.
Bridge courses are exported to JSON format. SCORM courses
export a ZIP of relevant SCORM metadata.
Response Codes
200 OK
401 Unauthorized
Parameters
-
id
Integer
Required
Path parameter. The course id
-
format
String
Path parameter. Ignored.
Example Response
{
"id": 7,
"title": "Test Course",
"description": "A description",
"estimated_time": 1,
"user_id": 1,
"passing_threshold": 80,
"max_quiz_attempts": 5,
"continuing_education_credits": 3,
"published_at": "2015-07-15T11:15:22.730-06:00",
"default_days_until_due": 7,
"has_unpublished_changes": true,
"has_certificate": false,
"external_id": null,
"external_status": "inapplicable",
"external_course_id": "P314159",
"course_type": "bridge",
"domain_id": 1,
"ordered_slides": [
"{API::OrderedSlide}"
]
}
Interfaces
- List courses
- List course titles
- Show course
- Create course
- Update a course
- Delete a course
- Restore a destroyed course
- Syncs course enrollments with data available in upstream SCORM
- Publish course
- Discard changes
- Upload SCORM
- Upload SCORM that has been attached to a course
- Attach a SCORM course
- Clone a course
- Export a course
Object Synopses
CourseTemplateRequest
-
title
String RequiredTitle of course.
-
description
StringA description of the course.
-
is_published
Boolean RequiredDescribes the visibility of the course.
-
has_unpublished_changes
Boolean RequiredDescribes if there are changes not yet visible to learners.
-
default_days_until_due
Integer RequiredNumber of days from assignment to a learner until course is due.
-
default_due_on_date
StringDate on which all enrollments will be due.
-
due_date_type
StringDue date type currently being utilized by the server.
-
course_type
String RequiredDescribes whether course is native bridge, SCORM, Lynda, or OpenSesame.
-
external_course_id
StringOptional identifier for linking to external systems.
-
has_certificate
BooleanIndicates if certificate is issued when course is successfully completed.
-
passing_threshold
IntegerPercent correct answers required to pass course.
-
max_quiz_attempts
IntegerThe number of times a learner is allowed to answer quiz questions.
-
continuing_education_credits
IntegerThe number of points a learner earns for completing this course.
-
open_book
BooleanIndicates if learners can navigate the course during quizzes.
-
tags
ArrayA list of tags for the course
-
matching_tags
ArrayTags matching the search query for the course
-
maintain_branding_in_sub_account
BooleanControls whether this course is rendered with the custom branding of its originating account when shared
-
locked_attributes_enabled
BooleanIndicates if some course attributes are locked.
-
locked_attributes
ArrayAttributes that are locked on the enrollment profile of the course.
-
derived_locked_attributes
ArrayAttributes that are locked on the enrollment profile, including those set on the subaccount and the root subaccount
OrderedSlide
-
id
Integer RequiredSlide id.
-
position
Integer RequiredPublished. Slide position in the course.
-
new_position
Integer RequiredUnpublished slide position in the course.
-
published_attributes
{API::SlideAttributes}No description provided. -
draft_attributes
{API::SlideAttributes}No description provided. -
published_at
DateTime or nullRequired DateTime slide was published.
-
estimated_time
IntegerEstimated number of minutes to complete slide.
-
attachments
TODOArray of slide attachments
SlideAttributes
-
title
StringThe title of the slide
-
body
StringThe content of the slide
-
type
StringSlide type
-
allow_comments
Boolean or null RequiredAllows comments by learners if true.
-
cover_slide_data
{API::CoverSlideData}No description provided. -
attachment_url
String or nullThe URL of the image associated with the quiz question.
-
attachment_align
String or nullThe alignment of the image associated with the quiz question, one of top, left, wide, or bottom.
-
static_order
Boolean or nullSkips randomizing answer order if true.
CoverSlideData
-
dark
Boolean RequiredDescribes the color scheme of slide.
-
heading
StringRequired on cover slides. Optional on all others. Title of slide.
-
intro
StringSubtitle of slide.
-
backgroundColor
StringHex color of background.
-
primaryColor
StringHex color of foreground.
-
backgroundImageUrl
StringURL of background image
-
backgroundImageStyle
StringOptional unless backgroundImageUrl is present. Controls how background image is displayed
-
backgroundImageOpacity
FloatOptional unless backgroundImageUrl is present. Describes opacity of the image.
CourseTemplateSubAccount
-
id
IntegerSubAccount id
-
name
StringThe name of the subaccount
-
is_root
BooleanIs this the root account
-
not_current
BooleanIs this course outside the current subaccount
-
sub_accounts_exist
BooleanDo subaccounts exist in the account
List courses
Note: the deleted_at
element in the returned object is present only
if deleted records were requested.
Response Codes
200 OK
304 Not Modified
Parameters
-
sort
String [ newest, title, updated, archived ]Query parameter. Applies a sort to the result list.
-
filters[]
String [ my_courses, unpublished, has_certificate, no_enrollments, bridge, scorm, lynda, opensesame ]Query parameter. This argument may occur multiple times.
-
search
StringQuery parameter. Search course titles for a match with the given string.
-
includes[]
String [ counts, expiration, enrollment_profiles, programs ]Query paramater. Additional information to be returned in the response. This argument may occur multiple times. If counts is given, response will include enrollment_counts. If expiration is given, response will include auto_re_enroll, default_days_until_expiration, expires, and re_enrollment_period. If enrollment_profiles is given, response will include enroll_url, open_enrollment, and uuid. If programs is given, response will include program_ids.
-
updated_after
DateTimeQuery parameter. Filters list to only include courses updated after the given RFC 3339 compliant timestamp.
-
created_after
DateTimeQuery parameter. Filters list to only include courses created after the given RFC 3339 compliant timestamp.
-
deleted_after
DateTimeQuery parameter. Filters list to only include courses deleted after the given RFC 3339 compliant timestamp.
-
updated_before
DateTimeQuery parameter. Filters list to only include courses updated before the given RFC 3339 compliant timestamp.
-
created_before
DateTimeQuery parameter. Filters list to only include courses created before the given RFC 3339 compliant timestamp.
-
deleted_before
DateTimeQuery parameter. Filters list to only include courses deleted before the given RFC 3339 compliant timestamp.
-
only_deleted
BooleanFilters list to only include deleted courses.
-
with_deleted
BooleanFilters list to also include deleted courses.
Example Request
/api/author/course_templates?includes[]=enrollment_profiles&includes[]=expiration
Example Response
{ "meta": {}, "course_templates": [ { "id": "1", "estimated_time": null, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "Scorm 01", "description": "", "is_published": true, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "external_status": "inapplicable", "external_status_message": "optional messaging", "course_type": "scorm", "open_book": false, "enrollments_count": 0, "attachments_count": 1, "created_at": "2018-10-30T23:37:07.864Z", "updated_at": "2018-11-28T09:58:33.000Z", "deleted_at": "2018-12-05T19:27:54.010Z", "third_party_course_id": null, "external_course_id": null, "next_section_due": null, "sub_account": { "id": "1", "name": "Bridge", "is_root": true, "sub_accounts_exist": false, "not_current": false, "tac_type": "domestic", "tac_custom_body_markup": null, "tac_updated_at": "2016-08-05T18:03:21.815Z" }, "has_shared_enrollments": false, "tags": [], "matching_tags": [], "expires": false, "default_days_until_expiration": null, "retain": false, "retain_intervals": [1, 3, 7], "auto_re_enroll": false, "re_enrollment_period": 7, "open_enrollment": false, "uuid": "193c854d", "enroll_url": "http://bridge.bridgelearning.dev:3000/learner/courses/193c854d/enroll", "links": { "author": "1" }, "show_correct_response": true, "locked_attributes_enabled": false, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
List course titles
{ “meta”: {}, “course_templates”: [ { “id”: “1”, “title”: “My Test Course” } ] }
Parameters
-
sort
String [ newest, title, updated ]Query parameter. Applies a sort to the result list.
-
filters[]
String [ my_courses, unpublished, has_certificate, no_enrollments, bridge, scorm, lynda, opensesame ]Query parameter. This argument may occur multiple times.
-
search
StringQuery parameter. Search course titles for a match with the given string.
Show course
Response Codes
200 OK
304 Not Modified
Parameters
-
id
Integer RequiredThe course id.
-
sort
StringQuery parameter. This argument makes no difference on outcome, since a single object is always sorted.
-
includes[]
String [ has_shared_enrollments, next_section_due, programs, with_content ]Query paramater. Additional information to be returned in the response. This argument may occur multiple times. If has_shared_enrollments or next_section_due is given, response will include each respective field. If programs is given, response will include program_ids.
Example Request
/api/author/course_templates/1?includes[]=has_shared_enrollments&includes[]=next_section_due
Example Response
{ "meta": {}, "course_templates": [ { "id": "1", "estimated_time": null, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "Scorm 01", "description": "", "is_published": true, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "external_status": "inapplicable", "external_status_message": "optional messaging", "course_type": "scorm", "open_book": false, "enrollments_count": 0, "attachments_count": 1, "updated_at": "2016-09-01T12:44:10.773-06:00", "third_party_course_id": null, "external_course_id": null, "next_section_due": null, "sub_account": { "id": "1", "name": "Bridge", "is_root": true, "sub_accounts_exist": false, "not_current": false, "tac_type": "domestic", "tac_custom_body_markup": null, "tac_updated_at": "2016-08-05T18:03:21.815Z" }, "has_shared_enrollments": false, "enrollment_counts": { "all": 0, "required": 0, "optional": 0, "finished": 0, "not_started": 0, "overdue": 0, "in_progress": 0 }, "tags": [], "matching_tags": [], "expires": false, "default_days_until_expiration": null, "retain": false, "retain_intervals": [1, 3, 7], "auto_re_enroll": false, "re_enrollment_period": 7, "open_enrollment": false, "uuid": "193c854d", "enroll_url": "http://bridge.bridgelearning.dev:3000/learner/courses/193c854d/enroll", "links": { "author": "1" }, "scorm": { "registration_instancing_option": "always", "player_launch_type": "2", "sco_launch_type": "2", "score_rollup_mode": "3" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Create course
Response codes
201 Created
Parameters
-
Body parameter. An array of {API::CourseTemplateRequest} to be created.
Example Request
Example Response
{ "meta": {}, "course_templates": [ { "id": "4", "estimated_time": null, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "My Course", "description": "A description", "is_published": false, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "program_ids": [], "external_status": "inapplicable", "external_status_message": "optional messaging", "external_course_id": "P314159", "course_type": "bridge", "open_book": false, "enrollments_count": 0, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "not_current": false, "sub_accounts_exist": true }, "links": { "author": "1" }, "locked_attributes_enabled": false, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Update a course
Response Codes
200 OK
Parameters
-
Body parameter. A {API::CourseTemplateRequest} containing the fields to be updated.
Example Request
Example Response
{ "meta": {}, "course_templates": [ { "id": "1", "estimated_time": 3, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "My Test Course", "is_published": true, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": true, "program_ids": [], "external_status": "inapplicable", "external_status_message": "optional messaging", "external_course_id": "P314159", "course_type": "bridge", "open_book": false, "enrollments_count": 3, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "not_current": false, "sub_accounts_exist": true }, "links": { "author": "1" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Delete a course
Response codes
204 No Content
On successful deletion
Parameters
-
id
Integer RequiredPath parameter. Course template id.
Restore a destroyed course
Response codes
200 OK
On successful restoration204 No Content
On unsuccesful restoration
Parameters
-
id
Integer RequiredPath paramter. Course template id.
Syncs course enrollments with data available in upstream SCORM
This endpoint requires support user permissions(validated by the frontend) for now. In the future this may become available to account admins with a custom account permission such as course_template_sync(which would need to be created)
Response codes
204 No Content
On successful sync request400 Bad Request
When course is not SCORM403 Forbidden
Parameters
-
id
Integer RequiredPath parameter. Course template id.
Example Request
/api/author/course_templates/1/sync
Publish course
Makes a course visible to non-authors
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer RequiredPath parameter. Course template id.
-
notify_filter
StringWhich learners to notify. One of ‘all’, ‘finished’, or ‘in_progress’.
-
notify_message
StringMessage to send to learners. Limited to 1000 characters.
-
re_enroll
BooleanIndicates if completed enrollments should be re-enrolled. Defaults to false.
Example Response
{ "meta": {}, "course_templates": [ { "id": "7", "estimated_time": 1, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "Test Course", "is_published": true, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "program_ids": [], "external_status": "inapplicable", "external_status_message": "optional messaging", "external_course_id": "P314159", "course_type": "bridge", "open_book": false, "enrollments_count": 0, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "not_current": false, "sub_accounts_exist": true }, "links": { "author": "1" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Discard changes
Discards unpublished changes to the course.
Response Codes
200 OK
Parameters
-
id
Integer RequiredPath parameter. Course template id.
Example Response
{ "meta": {}, "course_templates": [ { "id": "7", "estimated_time": 1, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "Test Course", "description": "A description", "is_published": true, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "program_ids": [], "external_status": "inapplicable", "external_status_message": "optional messaging", "external_course_id": "P314159", "course_type": "bridge", "open_book": false, "enrollments_count": 0, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "not_current": false, "sub_accounts_exist": true }, "links": { "author": "1" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Upload SCORM
Upload a SCORM course.
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer RequiredPath parameter. Course template to be overwritten by upload.
-
location
String RequiredBody parameter. URI of course to import.
-
file_modified_at
DateTimeBody parameter. Last modification time of the uploaded file.
-
name
StringBody parameter. Name of the uploaded file.
Example Request
{ "location": "https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip", "file_modified_at": "2012-09-21T23:18:28.000Z", "name": "RuntimeBasicCalls_SCORM20043rdEdition.zip" }
curl \ -X POST \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"location":"https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip","file_modified_at":"2012-09-21T23:18:28.000Z","name":"RuntimeBasicCalls_SCORM20043rdEdition.zip"}' \ http://<bridge>/api/author/course_templates/:id/upload
Example Response
{ "meta": {}, "course_templates": [ { "id": "19", "estimated_time": null, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "A course title", "description": "A description", "is_published": false, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "program_ids": [], "external_status": "pending", "external_status_message": "optional messaging", "external_course_id": "P314159", "course_type": "scorm", "open_book": false, "enrollments_count": 0, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "not_current": false, "sub_accounts_exist": true }, "links": { "author": "1" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Upload SCORM that has been attached to a course
Replace course with previously attached SCORM course and then publish.
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer RequiredPath parameter. Course template to be overwritten by upload.
Example Request
Example Response
{ "meta": {}, "course_templates": [ { "id": "19", "estimated_time": null, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "A course title", "description": "A description", "is_published": false, "has_been_unpublished": false, "has_unpublished_changes": false, "retain": false, "quizzes_count": 0, "external_status": "inapplicaable", "external_status_message": null, "course_type": "scorm", "enrollments_count": 0, "attachments_count": 1, "meta": { "domain_id": "1", "sub_account_id": "1", "r2b_jwt": "aaa.bbb.ccc" }, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "sub_accounts_exist": false, "not_current": false, "tac_type": "domestic", "tac_custom_body_markup": null, "tac_updated_at": "2016-08-05T18:03:21.815Z" }, "updated_at": "2016-09-01T12:44:10.773-06:00", "has_shared_enrollments": false, "enrollment_counts": { "all": 0, "required": 0, "optional": 0, "finished": 0, "not_started": 0, "overdue": 0, "in_progress": 0 }, "tags": [], "matching_tags": [], "expires": false, "default_days_until_expiration": null, "retain": false, "retain_intervals": [1, 3, 7], "auto_re_enroll": false, "re_enrollment_period": 7, "open_enrollment": false, "uuid": "193c854d", "enroll_url": "http://bridge.bridgelearning.dev:3000/learner/courses/193c854d/enroll", "links": { "author": "1" }, "scorm": { "registration_instancing_option": "always", "player_launch_type": "2", "sco_launch_type": "2", "score_rollup_mode": "3" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Attach a SCORM course
Attach a SCORM course to a Bridge course.
Response Codes
200 OK
400 Bad Request
When course is archived
Parameters
-
id
Integer RequiredPath parameter. Course template to attach SCORM course.
-
location
String RequiredBody parameter. URI of SCORM course to import.
-
file_modified_at
DateTimeBody parameter. Last modification time of the uploaded SCORM course file.
-
name
StringBody parameter. Display name of the uploaded SCORM course file.
Example Request
{ "location": "https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip", "file_modified_at": "2012-09-21T23:18:28.000Z", "name": "RuntimeBasicCalls_SCORM20043rdEdition.zip" }
curl \ -X POST \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"location":"https://instructure-getsmart.s3.amazonaws.com/uploads/1/3d885212-e681-4971-98ab-0e1100b521c1.zip","file_modified_at":"2012-09-21T23:18:28.000Z","name":"RuntimeBasicCalls_SCORM20043rdEdition.zip"}' \ http://<bridge>/api/author/course_templates/:id/attach_scorm
Example Response
{ "meta": {}, "course_templates": [ { "id": "19", "estimated_time": null, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "A course title", "description": "A description", "is_published": false, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "program_ids": [], "external_status": "attached", "external_course_id": "P314159", "course_type": "scorm", "open_book": false, "enrollments_count": 0, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "not_current": false, "sub_accounts_exist": true }, "links": { "author": "1" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Clone a course
Response Codes
200 OK
400 Bad Request
When original course is archived
Parameters
-
id
Integer RequiredPath parameter. Course template id.
Example Response
{ "meta": {}, "course_templates": [ { "id": "10", "estimated_time": 1, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "title": "Copy of Test Course", "description": "A description", "is_published": true, "has_unpublished_changes": false, "default_days_until_due": 7, "has_certificate": false, "program_ids": [], "external_status": "inapplicable", "external_course_id": "P314159", "course_type": "bridge", "open_book": false, "enrollments_count": 0, "sub_account": { "id": 1, "name": "Acme, Co", "is_root": true, "not_current": false, "sub_accounts_exist": true }, "links": { "author": "1" }, "locked_attributes_enabled": true, "locked_attributes": ["title", "description"], "derived_locked_attributes": ["title", "description"] } ] }
Export a course
This endpoint requires the course_template_download permission which by default is granted to admins and account admins.
Bridge courses are exported to JSON format. SCORM courses export a ZIP of relevant SCORM metadata.
Response Codes
200 OK
401 Unauthorized
Parameters
-
id
Integer RequiredPath parameter. The course id
-
format
StringPath parameter. Ignored.
Example Response
{ "id": 7, "title": "Test Course", "description": "A description", "estimated_time": 1, "user_id": 1, "passing_threshold": 80, "max_quiz_attempts": 5, "continuing_education_credits": 3, "published_at": "2015-07-15T11:15:22.730-06:00", "default_days_until_due": 7, "has_unpublished_changes": true, "has_certificate": false, "external_id": null, "external_status": "inapplicable", "external_course_id": "P314159", "course_type": "bridge", "domain_id": 1, "ordered_slides": [ "{API::OrderedSlide}" ] }