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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'