# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Canvas LMS REST Modules API version: 1.0.0 extends: openapi/canvas-modules-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-10-01' generator: build-phrasing.py label: Generated by API Evangelist operations: 17 - target: $.paths['/v1/courses/{course_id}/modules'].get update: x-apievangelist-phrasing: intent: List modules in a course effect: read questions: - What modules does a course have? - Can I search a course's modules by name? - How do I see modules as a particular student sees them? instructions: - text: List the modules in course {course_id}. slots: course_id: path.course_id - text: Search modules in course {course_id} for {search_term}. slots: course_id: path.course_id search_term: query.search_term - text: List course {course_id} modules with completion for student {student_id}. slots: course_id: path.course_id student_id: query.student_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules'].post update: x-apievangelist-phrasing: intent: Create a module in a course effect: write questions: - How do I add a new module to a course? - Can a new module unlock on a set date or require sequential progress? instructions: - text: Create a module named {name} in course {course_id}. slots: name: requestBody.module[name] course_id: path.course_id - text: Add module {name} to course {course_id} unlocking at {unlock_at}. slots: name: requestBody.module[name] course_id: path.course_id unlock_at: requestBody.module[unlock_at] - text: Create module {name} in course {course_id} with prerequisites {prerequisite_module_ids}. slots: name: requestBody.module[name] course_id: path.course_id prerequisite_module_ids: requestBody.module[prerequisite_module_ids] method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{id}'].get update: x-apievangelist-phrasing: intent: Get a single module effect: read questions: - What's in one specific module, and is it published? - Can I see a module's state for a given student? instructions: - text: Show module {id} in course {course_id}. slots: id: path.id course_id: path.course_id - text: Get module {id} in course {course_id} as seen by student {student_id}. slots: id: path.id course_id: path.course_id student_id: query.student_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{id}'].put update: x-apievangelist-phrasing: intent: Update or publish a module effect: write questions: - Can I rename a module or change its position? - Which call publishes or unpublishes a whole module? instructions: - text: Rename module {id} in course {course_id} to {name}. slots: id: path.id course_id: path.course_id name: requestBody.module[name] - text: Set published to {published} for module {id} in course {course_id}. slots: published: requestBody.module[published] id: path.id course_id: path.course_id - text: Move module {id} in course {course_id} to position {position}. slots: id: path.id course_id: path.course_id position: requestBody.module[position] method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{id}'].delete update: x-apievangelist-phrasing: intent: Delete a module effect: destructive questions: - Can I delete an entire module from a course? - Is removing a module permanent? instructions: - text: Delete module {id} from course {course_id}. slots: id: path.id course_id: path.course_id - text: Remove the whole module {id} in course {course_id}. slots: id: path.id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{id}/relock'].put update: x-apievangelist-phrasing: intent: Re-lock module progressions effect: write questions: - After adding requirements, how do I re-lock students out of a module until they meet them? - Can I recalculate module progress based on current requirements? instructions: - text: Re-lock progressions for module {id} in course {course_id}. slots: id: path.id course_id: path.course_id - text: Reset and recalculate student progress on module {id} in course {course_id}. slots: id: path.id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items'].get update: x-apievangelist-phrasing: intent: List items in a module effect: read questions: - What pages, assignments and files are inside a module? - Can I search a module's items by title? instructions: - text: List the items in module {module_id} of course {course_id}. slots: module_id: path.module_id course_id: path.course_id - text: Search module {module_id} in course {course_id} for items matching {search_term}. slots: module_id: path.module_id course_id: path.course_id search_term: query.search_term method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items'].post update: x-apievangelist-phrasing: intent: Add an item to a module effect: write questions: - How do I add an assignment or page to a module? - Can I add an external URL to a module and open it in a new tab? - What completion requirements can I set on a new module item? instructions: - text: Add {type} {content_id} to module {module_id} in course {course_id}. slots: type: requestBody.module_item[type] content_id: requestBody.module_item[content_id] module_id: path.module_id course_id: path.course_id - text: Add an external link to {external_url} titled {title} in module {module_id} of course {course_id}. slots: external_url: requestBody.module_item[external_url] title: requestBody.module_item[title] module_id: path.module_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items/{id}'].get update: x-apievangelist-phrasing: intent: Get a single module item effect: read questions: - What are the details and completion rules of one module item? - Can I see whether a student has completed a specific module item? instructions: - text: Show item {id} in module {module_id} of course {course_id}. slots: id: path.id module_id: path.module_id course_id: path.course_id - text: Get module item {id} in module {module_id}, course {course_id}, for student {student_id}. slots: id: path.id module_id: path.module_id course_id: path.course_id student_id: query.student_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items/{id}'].put update: x-apievangelist-phrasing: intent: Update or move a module item effect: write questions: - Can I move an item from one module to another? - How do I change a module item's indent or title? instructions: - text: Retitle item {id} in module {module_id} of course {course_id} to {title}. slots: id: path.id module_id: path.module_id course_id: path.course_id title: requestBody.module_item[title] - text: Move item {id} from module {module_id} to module {new_module} in course {course_id}. slots: id: path.id module_id: path.module_id new_module: requestBody.module_item[module_id] course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items/{id}'].delete update: x-apievangelist-phrasing: intent: Delete a module item effect: destructive questions: - Can I remove a single item from a module? - Does deleting a module item remove it from the module only? instructions: - text: Delete item {id} from module {module_id} in course {course_id}. slots: id: path.id module_id: path.module_id course_id: path.course_id - text: Remove module item {id} in module {module_id} of course {course_id}. slots: id: path.id module_id: path.module_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items/{id}/select_mastery_path'].post update: x-apievangelist-phrasing: intent: Choose a mastery path for a student effect: write questions: - How does a student pick one of several mastery paths on a module item? - Can I select a mastery path on behalf of a student? instructions: - text: Select assignment set {assignment_set_id} for item {id} in module {module_id} of course {course_id}. slots: assignment_set_id: requestBody.assignment_set_id id: path.id module_id: path.module_id course_id: path.course_id - text: Choose mastery path {assignment_set_id} for student {student_id} on item {id}, module {module_id}, course {course_id}. slots: assignment_set_id: requestBody.assignment_set_id student_id: requestBody.student_id id: path.id module_id: path.module_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items/{id}/done'].put update: x-apievangelist-phrasing: intent: Mark a module item as done effect: write questions: - Can a student manually mark a module item as done? - How do I tick off a 'mark as done' requirement on a module item? instructions: - text: Mark item {id} in module {module_id} of course {course_id} as done. slots: id: path.id module_id: path.module_id course_id: path.course_id - text: Complete the mark-as-done requirement on module item {id} in module {module_id}, course {course_id}. slots: id: path.id module_id: path.module_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/module_item_sequence'].get update: x-apievangelist-phrasing: intent: Find previous and next module items effect: read questions: - Given an assignment, which module item comes before and after it? - Can I find which module an asset like a quiz belongs to? instructions: - text: Get the module sequence for {asset_type} {asset_id} in course {course_id}. slots: asset_type: query.asset_type asset_id: query.asset_id course_id: path.course_id - text: Find the next and previous items around {asset_type} {asset_id} in course {course_id}. slots: asset_type: query.asset_type asset_id: query.asset_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{module_id}/items/{id}/mark_read'].post update: x-apievangelist-phrasing: intent: Fulfill a module item's must-view requirement effect: write questions: - How do I satisfy a 'must view' requirement when content is opened outside Canvas? - Can an app mark a module item as viewed? instructions: - text: Mark item {id} in module {module_id} of course {course_id} as read. slots: id: path.id module_id: path.module_id course_id: path.course_id - text: Record that module item {id} in module {module_id}, course {course_id}, was viewed. slots: id: path.id module_id: path.module_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{context_module_id}/assignment_overrides'].get update: x-apievangelist-phrasing: intent: List a module's assignment overrides effect: read questions: - Which sections or students have overrides on a module? - Can I see who a module has been assigned to? instructions: - text: List the overrides for module {context_module_id} in course {course_id}. slots: context_module_id: path.context_module_id course_id: path.course_id - text: Show who module {context_module_id} in course {course_id} is assigned to. slots: context_module_id: path.context_module_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/modules/{context_module_id}/assignment_overrides'].put update: x-apievangelist-phrasing: intent: Set a module's assignment overrides effect: write questions: - How do I assign a module to only certain sections or students? - Can I replace all overrides on a module in one call? instructions: - text: Apply overrides {overrides} to module {context_module_id} in course {course_id}. slots: overrides: requestBody.overrides context_module_id: path.context_module_id course_id: path.course_id - text: Assign module {context_module_id} in course {course_id} using overrides {overrides}. slots: context_module_id: path.context_module_id course_id: path.course_id overrides: requestBody.overrides method: generated generated: '2026-10-01'