Canvas · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Canvas LMS REST Assignments API
21 actions
21 updates
phrasing
extends
openapi/canvas-assignments-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Canvas's API. It is a proposal applied on top of the contract, not a document Canvas publishes.
What the actions change
x-apievangelist-phrasing
Targets 21 · first 16 shown; the file carries all of them
$.info
$.paths['/v1/courses/{course_id}/assignments/{id}'].get
$.paths['/v1/courses/{course_id}/assignments/{id}'].put
$.paths['/v1/courses/{course_id}/assignments/{id}'].delete
$.paths['/v1/courses/{course_id}/assignments'].get
$.paths['/v1/courses/{course_id}/assignments'].post
$.paths['/v1/courses/{course_id}/assignment_groups/{assignment_group_id}/assignments'].get
$.paths['/v1/users/{user_id}/courses/{course_id}/assignments'].get
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/duplicate'].post
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/users/{user_id}/group_members'].get
$.paths['/v1/courses/{course_id}/assignments/bulk_update'].put
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides'].get
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides'].post
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}'].get
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}'].put
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}'].delete
OpenAPI Overlay
# 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 Assignments API
version: 1.0.0
extends: openapi/canvas-assignments-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: 20
- target: $.paths['/v1/courses/{course_id}/assignments/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get one assignment in a course
effect: read
questions:
- How can I look up the details of a single Canvas assignment?
- Can I see how many submissions still need grading per section for one assignment?
- Will the due date I get back reflect my own overrides?
instructions:
- text: Show assignment {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Get assignment {id} from course {course_id} with all of its dates included.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{id}'].put
update:
x-apievangelist-phrasing:
intent: Edit an assignment
effect: write
questions:
- Can I change the due date or point value of an existing assignment?
- Is it possible to publish an assignment that is still a draft?
- Can I turn on moderated grading for an assignment that already exists?
instructions:
- text: Change the due date of assignment {id} in course {course_id} to {due_at}.
slots:
id: path.id
course_id: path.course_id
due_at: requestBody.assignment[due_at]
- text: Set assignment {id} in course {course_id} to be worth {points_possible} points.
slots:
id: path.id
course_id: path.course_id
points_possible: requestBody.assignment[points_possible]
- text: Rename existing assignment {id} in course {course_id} to {name}.
slots:
id: path.id
course_id: path.course_id
name: requestBody.assignment[name]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an assignment
effect: destructive
questions:
- Can I permanently remove an assignment from a course?
- What does deleting an assignment return?
instructions:
- text: Delete assignment {id} from course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Remove the assignment {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}/assignments'].get
update:
x-apievangelist-phrasing:
intent: List a course's assignments
effect: read
questions:
- Which assignments in my course are overdue or still upcoming?
- Can I search a course's assignments by name?
- How do I list only the assignments marked to post grades to the SIS?
instructions:
- text: List all assignments in course {course_id}.
slots:
course_id: path.course_id
- text: Find assignments in course {course_id} whose name contains {search_term}.
slots:
course_id: path.course_id
search_term: query.search_term
- text: Show course {course_id} assignments in the {bucket} bucket.
slots:
course_id: path.course_id
bucket: query.bucket
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments'].post
update:
x-apievangelist-phrasing:
intent: Create an assignment
effect: write
questions:
- How do I add a new assignment to a course?
- Can I create an assignment that only accepts certain file extensions?
- Is a newly created assignment published right away?
instructions:
- text: Create an assignment called {name} in course {course_id}.
slots:
name: requestBody.assignment[name]
course_id: path.course_id
- text: Add assignment {name} to course {course_id} worth {points_possible} points due {due_at}.
slots:
name: requestBody.assignment[name]
course_id: path.course_id
points_possible: requestBody.assignment[points_possible]
due_at: requestBody.assignment[due_at]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignment_groups/{assignment_group_id}/assignments'].get
update:
x-apievangelist-phrasing:
intent: List assignments in an assignment group
effect: read
questions:
- Which assignments belong to one assignment group, like Homework or Exams?
- Can I list just the assignments inside a single weighted category?
instructions:
- text: List assignments in assignment group {assignment_group_id} of course {course_id}.
slots:
assignment_group_id: path.assignment_group_id
course_id: path.course_id
- text: Show group {assignment_group_id}'s assignments in course {course_id} ordered by {order_by}.
slots:
assignment_group_id: path.assignment_group_id
course_id: path.course_id
order_by: query.order_by
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/courses/{course_id}/assignments'].get
update:
x-apievangelist-phrasing:
intent: List a student's assignments in a course
effect: read
questions:
- How can a parent or advisor see the assignments for one particular student?
- Can I view assignments as they apply to a specific user in a course?
instructions:
- text: List assignments for user {user_id} in course {course_id}.
slots:
user_id: path.user_id
course_id: path.course_id
- text: Show what student {user_id} has been assigned in course {course_id}.
slots:
user_id: path.user_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/duplicate'].post
update:
x-apievangelist-phrasing:
intent: Duplicate an assignment
effect: write
questions:
- Can I make a copy of an existing assignment?
- What can the response look like after copying an assignment?
instructions:
- text: Duplicate assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
- text: Copy assignment {assignment_id} in course {course_id} and return the result as {result_type}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
result_type: requestBody.result_type
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/users/{user_id}/group_members'].get
update:
x-apievangelist-phrasing:
intent: List a student's group mates on an assignment
effect: read
questions:
- Who is in the same group as a student for a group assignment?
- Can I get the names of a student's teammates on one assignment?
instructions:
- text: List group members of student {user_id} on assignment {assignment_id} in course {course_id}.
slots:
user_id: path.user_id
assignment_id: path.assignment_id
course_id: path.course_id
- text: Who are student {user_id}'s teammates for assignment {assignment_id} in course {course_id}.
slots:
user_id: path.user_id
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/bulk_update'].put
update:
x-apievangelist-phrasing:
intent: Bulk update assignment dates
effect: write
questions:
- Can I shift due dates for many assignments at once?
- Is there a way to change availability dates across a whole course in one request?
instructions:
- text: Bulk update due and availability dates for several assignments in course {course_id}.
slots:
course_id: path.course_id
- text: Push back the due dates of multiple assignments in course {course_id} in one request.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides'].get
update:
x-apievangelist-phrasing:
intent: List an assignment's overrides
effect: read
questions:
- Which sections or students have a different due date for this assignment?
- How do I see all date exceptions set on one assignment?
instructions:
- text: List overrides for assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
- text: Show every due date exception on assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides'].post
update:
x-apievangelist-phrasing:
intent: Create an assignment override
effect: write
questions:
- Can I give one student an extended due date on an assignment?
- 'What target does an override need: students, a group, or a section?'
instructions:
- text: Give students {student_ids} a due date of {due_at} on assignment {assignment_id} in course {course_id}.
slots:
student_ids: requestBody.assignment_override[student_ids]
due_at: requestBody.assignment_override[due_at]
assignment_id: path.assignment_id
course_id: path.course_id
- text: Create an override for section {course_section_id} on assignment {assignment_id} in course {course_id}.
slots:
course_section_id: requestBody.assignment_override[course_section_id]
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get one assignment override
effect: read
questions:
- How do I check the dates on a specific override?
- Can I see which students a single assignment override targets?
instructions:
- text: Show override {id} on assignment {assignment_id} in course {course_id}.
slots:
id: path.id
assignment_id: path.assignment_id
course_id: path.course_id
- text: Get the details of assignment {assignment_id}'s override {id} in course {course_id}.
slots:
id: path.id
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}'].put
update:
x-apievangelist-phrasing:
intent: Update an assignment override
effect: write
questions:
- If I update an override and leave out the due date, is it cleared?
- Can I add students to an existing assignment override?
instructions:
- text: Change override {id} on assignment {assignment_id} in course {course_id} to lock at {lock_at}.
slots:
id: path.id
assignment_id: path.assignment_id
course_id: path.course_id
lock_at: requestBody.assignment_override[lock_at]
- text: Update override {id} on assignment {assignment_id} in course {course_id} to cover students {student_ids}.
slots:
id: path.id
assignment_id: path.assignment_id
course_id: path.course_id
student_ids: requestBody.assignment_override[student_ids]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an assignment override
effect: destructive
questions:
- Can I remove an extension I gave a section?
- Does deleting an override return what it used to contain?
instructions:
- text: Delete override {id} from assignment {assignment_id} in course {course_id}.
slots:
id: path.id
assignment_id: path.assignment_id
course_id: path.course_id
- text: Remove the date exception {id} on assignment {assignment_id} in course {course_id}.
slots:
id: path.id
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/assignments/{assignment_id}/override'].get
update:
x-apievangelist-phrasing:
intent: Find a group's assignment override
effect: read
questions:
- Does a student group have its own due date for an assignment?
- Can I jump to the override for a particular group without knowing its id?
instructions:
- text: Find the override for group {group_id} on assignment {assignment_id}.
slots:
group_id: path.group_id
assignment_id: path.assignment_id
- text: Go to group {group_id}'s date override for assignment {assignment_id}.
slots:
group_id: path.group_id
assignment_id: path.assignment_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/sections/{course_section_id}/assignments/{assignment_id}/override'].get
update:
x-apievangelist-phrasing:
intent: Find a section's assignment override
effect: read
questions:
- Does a course section have a special due date for an assignment?
- Can I locate a section's override using only the section and assignment ids?
instructions:
- text: Find the override for section {course_section_id} on assignment {assignment_id}.
slots:
course_section_id: path.course_section_id
assignment_id: path.assignment_id
- text: Go to section {course_section_id}'s date override for assignment {assignment_id}.
slots:
course_section_id: path.course_section_id
assignment_id: path.assignment_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/overrides'].get
update:
x-apievangelist-phrasing:
intent: Fetch several overrides in a course at once
effect: read
questions:
- Can I fetch many assignment overrides across different assignments in one call?
- What comes back for an override id I can't see when batch fetching?
instructions:
- text: Fetch overrides {override_ids} for assignments {assignment_ids} in course {course_id}.
slots:
override_ids: query.assignment_overrides[id]
assignment_ids: query.assignment_overrides[assignment_id]
course_id: path.course_id
- text: Batch look up overrides {override_ids} on assignments {assignment_ids} in course {course_id}.
slots:
override_ids: query.assignment_overrides[id]
assignment_ids: query.assignment_overrides[assignment_id]
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/overrides'].put
update:
x-apievangelist-phrasing:
intent: Update many overrides in a course together
effect: write
questions:
- Can I update overrides on several assignments in a single all-or-nothing transaction?
- If one override update in a batch fails, are the others still applied?
instructions:
- text: Batch update overrides {assignment_overrides} in course {course_id}.
slots:
assignment_overrides: requestBody.assignment_overrides
course_id: path.course_id
- text: Apply these override changes {assignment_overrides} across course {course_id} all at once.
slots:
assignment_overrides: requestBody.assignment_overrides
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/overrides'].post
update:
x-apievangelist-phrasing:
intent: Create many overrides in a course together
effect: write
questions:
- Can I create due date exceptions for several assignments in one request?
- Is batch override creation all or nothing?
instructions:
- text: Batch create overrides {assignment_overrides} in course {course_id}.
slots:
assignment_overrides: requestBody.assignment_overrides
course_id: path.course_id
- text: Create these new date exceptions {assignment_overrides} for multiple assignments in course {course_id}.
slots:
assignment_overrides: requestBody.assignment_overrides
course_id: path.course_id
method: generated
generated: '2026-10-01'