Modules API
Modules are collections of learning materials useful for organizing courses and optionally providing a linear flow through them. Module items can be accessed linearly or sequentially depending on module configuration. Items can be unlocked by various criteria such as reading a page or achieving a minimum score on a quiz. Modules themselves can be unlocked by the completion of other Modules.
A Module object looks like:
{ // the unique identifier for the module id: 123, // the state of the module: active, deleted workflow_state: active, // the position of this module in the course (1-based) position: 2, // the name of this module name: "Imaginary Numbers and You", // (Optional) the date this module will unlock unlock_at: "2012-12-31T06:00:00-06:00", // Whether module items must be unlocked in order require_sequential_progress: true, // IDs of Modules that must be completed before this one is unlocked prerequisite_module_ids: [121, 122], // The number of items in the module items_count: 10, // The API URL to retrive this module's items items_url: 'https://canvas.example.com/api/v1/modules/123/items', items: [ ... ] // The contents of this module, as an array of Module Items. // (Present only if requested via include[]=items // AND the module is not deemed too large by Canvas.) // The state of this Module for the calling user // one of 'locked', 'unlocked', 'started', 'completed' // (Optional; present only if the caller is a student) state: 'started', // the date the calling user completed the module // (Optional; present only if the caller is a student) completed_at: nil }
A Module Item object looks like:
{ // the unique identifier for the module item id: 768, // the position of this item in the module (1-based) position: 1, // the title of this item title: "Square Roots: Irrational numbers or boxy vegetables?", // 0-based indent level; module items may be indented to show a hierarchy indent: 0, // the type of object referred to // one of "File", "Page", "Discussion", "Assignment", "Quiz", "SubHeader", // "ExternalUrl", "ExternalTool" type: "Assignment", // the id of the object referred to // applies to "File", "Discussion", "Assignment", "Quiz", "ExternalTool" types content_id: 1337, // link to the item in Canvas html_url: "https://canvas.example.edu/courses/222/modules/items/768", // (Optional) link to the Canvas API object, if applicable url: "https://canvas.example.edu/api/v1/courses/222/assignments/987", // (only for 'Page' type) unique locator for the linked wiki page page_url: "my-page-title" // (only for 'ExternalUrl' and 'ExternalTool' types) external url that the item points to external_url: "https://www.example.com/externalurl", // (only for 'ExternalTool' type) whether the external tool opens in a new tab new_tab: false, // Completion requirement for this module item completion_requirement: { // one of "must_view", "must_submit", "must_contribute", "min_score" type: "min_score", // minimum score required to complete (only present when type == 'min_score') min_score: 10, // whether the calling user has met this requirement // (Optional; present only if the caller is a student) completed: true }, // (Present only if requested through include[]=content_details) // If applicable, returns additional details specific to the associated object content_details: { points_possible: 20, due_at: "2012-12-31T06:00:00-06:00", unlock_at: "2012-12-31T06:00:00-06:00", lock_at: "2012-12-31T06:00:00-06:00" } }
List modules ContextModulesApiController#index
GET /api/v1/courses/:course_id/modules
List the modules in a course
Request Parameters:
-
include[]
- "items"
-
Return module items inline if possible.
This parameter suggests that Canvas return module items directly in the Module object JSON, to avoid having to make separate API requests for each module when enumerating modules and items. Canvas is free to omit 'items' for any particular module if it deems them too numerous to return inline. Callers must be prepared to use the List Module Items API if items are not returned.
-
include[]
- "content_details"
-
(Requires include) Returns additional details with module items specific to their associated content items.
Refer to the Module Item specification for more details.
-
search_term
(optional) The partial name of the modules (and module items, if include is specified) to match and return.
Example Request:
curl -H 'Authorization: Bearer <token>' \ https://<canvas>/api/v1/courses/222/modules
Show module ContextModulesApiController#show
GET /api/v1/courses/:course_id/modules/:id
Get information about a single module
Request Parameters:
-
include[]
- "items"
-
Return module items inline if possible.
Please refer to the caveats outlined in the List modules endpoint.
-
include[]
- "content_details"
-
If module items are included, also returns additional details specific to their associated content items.
Refer to the Module Item specification for more details.
Example Request:
curl -H 'Authorization: Bearer <token>' \ https://<canvas>/api/v1/courses/222/modules/123
Create a module ContextModulesApiController#create
POST /api/v1/courses/:course_id/modules
Create and return a new module
Request Parameters:
-
module[name]
- Required
-
The name of the module
-
module[unlock_at]
- Optional
-
The date the module will unlock
-
module[position]
- Optional
-
The position of this module in the course (1-based)
-
module[require_sequential_progress]
- Optional
-
Whether module items must be unlocked in order
-
module[prerequisite_module_ids][]
- Optional
-
IDs of Modules that must be completed before this one is unlocked
Prerequisite modules must precede this module (i.e. have a lower position value), otherwise they will be ignored
Example Request:
curl https://<canvas>/api/v1/courses/<course_id>/modules \ -X POST \ -H 'Authorization: Bearer <token>' \ -d 'module[name]=module' \ -d 'module[position]=2' \ -d 'module[prerequisite_module_ids][]=121' \ -d 'module[prerequisite_module_ids][]=122'
Update a module ContextModulesApiController#update
PUT /api/v1/courses/:course_id/modules/:id
Update and return an existing module
Request Parameters:
-
module[name]
- Optional
-
The name of the module
-
module[unlock_at]
- Optional
-
The date the module will unlock
-
module[position]
- Optional
-
The position of the module in the course (1-based)
-
module[require_sequential_progress]
- Optional
-
Whether module items must be unlocked in order
-
module[prerequisite_module_ids][]
- Optional
-
IDs of Modules that must be completed before this one is unlocked
Prerequisite modules must precede this module (i.e. have a lower position value), otherwise they will be ignored
-
module[published]
- Optional
-
Whether the module is published and visible to students
Example Request:
curl https://<canvas>/api/v1/courses/<course_id>/modules/<module_id> \ -X PUT \ -H 'Authorization: Bearer <token>' \ -d 'module[name]=module' \ -d 'module[position]=2' \ -d 'module[prerequisite_module_ids][]=121' \ -d 'module[prerequisite_module_ids][]=122'
Delete module ContextModulesApiController#destroy
DELETE /api/v1/courses/:course_id/modules/:id
Delete a module
Example Request:
curl https://<canvas>/api/v1/courses/<course_id>/modules/<module_id> \ -X Delete \ -H 'Authorization: Bearer <token>'
List module items ContextModuleItemsApiController#index
GET /api/v1/courses/:course_id/modules/:module_id/items
List the items in a module
Request Parameters:
-
include[]
- "content_details"
-
If included, will return additional details specific to the content associated with each item.
Refer to the Module Item specification for more details.
-
search_term
(optional) The partial title of the items to match and return.
Example Request:
curl -H 'Authorization: Bearer <token>' \ https://<canvas>/api/v1/courses/222/modules/123/items
Show module item ContextModuleItemsApiController#show
GET /api/v1/courses/:course_id/modules/:module_id/items/:id
Get information about a single module item
Request Parameters:
-
include[]
- "content_details"
-
If included, will return additional details specific to the content associated with this item.
Refer to the Module Item specification for more details.
Example Request:
curl -H 'Authorization: Bearer <token>' \ https://<canvas>/api/v1/courses/222/modules/123/items/768
Create a module item ContextModuleItemsApiController#create
POST /api/v1/courses/:course_id/modules/:module_id/items
Create and return a new module item
Request Parameters:
-
module_item[title]
- Optional
-
The name of the module item and associated content
-
module_item[type]
- Required
-
The type of content linked to the item
one of "File", "Page", "Discussion", "Assignment", "Quiz", "SubHeader", "ExternalUrl", "ExternalTool"
-
module_item[content_id]
- Required, except for 'ExternalUrl', 'Page', and 'SubHeader' types
-
The id of the content to link to the module item
-
module_item[position]
- Optional
-
The position of this item in the module (1-based)
-
module_item[indent]
- Optional
-
0-based indent level; module items may be indented to show a hierarchy
-
module_item[page_url]
- Required for 'Page' type
-
Suffix for the linked wiki page (e.g. 'front-page')
-
module_item[external_url]
- Required for 'ExternalUrl' and 'ExternalTool' types
-
External url that the item points to
-
module_item[new_tab]
- Optional, only applies to 'ExternalTool' type
-
Whether the external tool opens in a new tab
-
module_item[completion_requirement][type]
- Optional
-
Completion requirement for this module item
"must_view": Applies to all item types "must_contribute": Only applies to "Assignment", "Discussion", and "Page" types "must_submit", "min_score": Only apply to "Assignment" and "Quiz" types Inapplicable types will be ignored
-
module_item[completion_requirement][min_score]
- Required for completion_requirement type 'min_score'
-
minimum score required to complete
Example Request:
curl https://<canvas>/api/v1/courses/<course_id>/modules/<module_id>/items \ -X POST \ -H 'Authorization: Bearer <token>' \ -d 'module_item[title]=module item' \ -d 'module_item[type]=ExternalTool' \ -d 'module_item[content_id]=10' \ -d 'module_item[position]=2' \ -d 'module_item[indent]=1' \ -d 'module_item[new_tab]=true'
Update a module item ContextModuleItemsApiController#update
PUT /api/v1/courses/:course_id/modules/:module_id/items/:id
Update and return an existing module item
Request Parameters:
-
module_item[title]
- Optional
-
The name of the module item
-
module_item[position]
- Optional
-
The position of this item in the module (1-based)
-
module_item[indent]
- Optional
-
0-based indent level; module items may be indented to show a hierarchy
-
module_item[external_url]
- Optional, only applies to 'ExternalUrl' type
-
External url that the item points to
-
module_item[new_tab]
- Optional, only applies to 'ExternalTool' type
-
Whether the external tool opens in a new tab
-
module_item[completion_requirement][type]
- Optional
-
Completion requirement for this module item
"must_view": Applies to all item types "must_contribute": Only applies to "Assignment", "Discussion", and "Page" types "must_submit", "min_score": Only apply to "Assignment" and "Quiz" types Inapplicable types will be ignored
-
module_item[completion_requirement][min_score]
- Required for completion_requirement type 'min_score'
-
minimum score required to complete
-
module_item[published]
- Optional
-
Whether the module item is published and visible to students
-
module_item[module_id]
- Optional
-
Move this item to another module by specifying the target module id here. The target module must be in the same course.
Example Request:
curl https://<canvas>/api/v1/courses/<course_id>/modules/<module_id>/items/<item_id> \ -X PUT \ -H 'Authorization: Bearer <token>' \ -d 'module_item[content_id]=10' \ -d 'module_item[position]=2' \ -d 'module_item[indent]=1' \ -d 'module_item[new_tab]=true'
Delete module item ContextModuleItemsApiController#destroy
DELETE /api/v1/courses/:course_id/modules/:module_id/items/:id
Delete a module item
Example Request:
curl https://<canvas>/api/v1/courses/<course_id>/modules/<module_id>/items/<item_id> \ -X Delete \ -H 'Authorization: Bearer <token>'