Canvas · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Canvas LMS REST Enrollments API
15 actions
15 updates
phrasing
extends
openapi/canvas-enrollments-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 15
$.info
$.paths['/v1/courses/{course_id}/enrollments'].get
$.paths['/v1/courses/{course_id}/enrollments'].post
$.paths['/v1/sections/{section_id}/enrollments'].get
$.paths['/v1/sections/{section_id}/enrollments'].post
$.paths['/v1/users/{user_id}/enrollments'].get
$.paths['/v1/accounts/{account_id}/enrollments/{id}'].get
$.paths['/v1/accounts/{account_id}/bulk_enrollment'].post
$.paths['/v1/courses/{course_id}/enrollments/{id}'].delete
$.paths['/v1/courses/{course_id}/enrollments/{id}/accept'].post
$.paths['/v1/courses/{course_id}/enrollments/{id}/reject'].post
$.paths['/v1/courses/{course_id}/enrollments/{id}/reactivate'].put
$.paths['/v1/courses/{course_id}/users/{user_id}/last_attended'].put
$.paths['/v1/users/{user_id}/temporary_enrollment_status'].get
$.paths['/v1/temporary_enrollment_status'].get
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 Enrollments API
version: 1.0.0
extends: openapi/canvas-enrollments-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: 14
- target: $.paths['/v1/courses/{course_id}/enrollments'].get
update:
x-apievangelist-phrasing:
intent: List enrollments in a course
effect: read
questions:
- Who is enrolled in my course, students and teachers alike?
- Can I list only the active student enrollments in a course?
instructions:
- text: List the enrollments in course {course_id}.
slots:
course_id: path.course_id
- text: List {type} enrollments in course {course_id} with state {state}.
slots:
type: query.type
course_id: path.course_id
state: query.state
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/enrollments'].post
update:
x-apievangelist-phrasing:
intent: Enroll a user in a course
effect: write
questions:
- How do I add a student to a course?
- Can I enroll someone as a teacher and skip the invitation?
instructions:
- text: Enroll user {user_id} in course {course_id} as a {type}.
slots:
user_id: requestBody.enrollment[user_id]
course_id: path.course_id
type: requestBody.enrollment[type]
- text: Add user {user_id} to course {course_id} as {type} with state {enrollment_state}.
slots:
user_id: requestBody.enrollment[user_id]
course_id: path.course_id
type: requestBody.enrollment[type]
enrollment_state: requestBody.enrollment[enrollment_state]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/sections/{section_id}/enrollments'].get
update:
x-apievangelist-phrasing:
intent: List enrollments in a section
effect: read
questions:
- Who is enrolled in a particular course section?
- Can I filter a section's roster by role?
instructions:
- text: List the enrollments in section {section_id}.
slots:
section_id: path.section_id
- text: List {role} enrollments in section {section_id}.
slots:
role: query.role
section_id: path.section_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/sections/{section_id}/enrollments'].post
update:
x-apievangelist-phrasing:
intent: Enroll a user in a section
effect: write
questions:
- How do I put a student into a specific section?
- Can I enroll a TA directly into one section of a course?
instructions:
- text: Enroll user {user_id} in section {section_id} as a {type}.
slots:
user_id: requestBody.enrollment[user_id]
section_id: path.section_id
type: requestBody.enrollment[type]
- text: Add user {user_id} to section {section_id} as {type} and notify them by setting notify to {notify}.
slots:
user_id: requestBody.enrollment[user_id]
section_id: path.section_id
type: requestBody.enrollment[type]
notify: requestBody.enrollment[notify]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/enrollments'].get
update:
x-apievangelist-phrasing:
intent: List a user's enrollments
effect: read
questions:
- Which courses is a particular user enrolled in?
- Can I see a student's enrollments for one grading period?
instructions:
- text: List all enrollments for user {user_id}.
slots:
user_id: path.user_id
- text: List user {user_id}'s enrollments with state {state}.
slots:
user_id: path.user_id
state: query.state
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/enrollments/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get an enrollment by ID
effect: read
questions:
- What are the details of one enrollment record?
- Can I look up a single enrollment by its ID within an account?
instructions:
- text: Get enrollment {id} in account {account_id}.
slots:
id: path.id
account_id: path.account_id
- text: Show me enrollment record {id} from account {account_id}.
slots:
id: path.id
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/bulk_enrollment'].post
update:
x-apievangelist-phrasing:
intent: Bulk enroll users across courses
effect: write
questions:
- How do I enroll a list of users into several courses at once?
- Can I bulk-enroll people with a start and end date?
instructions:
- text: Enroll users {user_ids} into courses {course_ids} in account {account_id}.
slots:
user_ids: requestBody.user_ids
course_ids: requestBody.course_ids
account_id: path.account_id
- text: Bulk enroll {user_ids} as {enrollment_type} in courses {course_ids} under account {account_id}.
slots:
user_ids: requestBody.user_ids
enrollment_type: requestBody.enrollment_type
course_ids: requestBody.course_ids
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/enrollments/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Conclude, deactivate or delete an enrollment
effect: destructive
questions:
- How do I remove a student from a course?
- What happens if I deactivate an enrollment instead of concluding it?
instructions:
- text: Conclude enrollment {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Apply task {task} to enrollment {id} in course {course_id}.
slots:
task: query.task
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/enrollments/{id}/accept'].post
update:
x-apievangelist-phrasing:
intent: Accept a course invitation
effect: write
questions:
- How do I accept a pending invitation to join a course?
- Can I accept my course invite through the API?
instructions:
- text: Accept my invitation {id} to course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Join course {course_id} by accepting pending enrollment {id}.
slots:
course_id: path.course_id
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/enrollments/{id}/reject'].post
update:
x-apievangelist-phrasing:
intent: Decline a course invitation
effect: destructive
questions:
- How do I decline an invitation to a course?
- Can I turn down a pending course invite?
instructions:
- text: Reject my invitation {id} to course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Decline pending enrollment {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}/enrollments/{id}/reactivate'].put
update:
x-apievangelist-phrasing:
intent: Reactivate an inactive enrollment
effect: write
questions:
- How do I bring back a student whose enrollment was deactivated?
- Can an inactive enrollment be turned back on?
instructions:
- text: Reactivate enrollment {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Make inactive enrollment {id} in course {course_id} active again.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/users/{user_id}/last_attended'].put
update:
x-apievangelist-phrasing:
intent: Record a student's last attended date
effect: write
questions:
- How do I record the last day a student attended my course?
- Can I set a last attendance date on a student's enrollment?
instructions:
- text: Set user {user_id}'s last attended date in course {course_id} to {date}.
slots:
user_id: path.user_id
course_id: path.course_id
date: requestBody.date
- text: Record that student {user_id} last attended course {course_id} on {date}.
slots:
user_id: path.user_id
course_id: path.course_id
date: requestBody.date
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/temporary_enrollment_status'].get
update:
x-apievangelist-phrasing:
intent: Check a user's temporary enrollment status
effect: read
questions:
- Is this user giving or receiving a temporary enrollment?
- Can I see whether someone is a temporary enrollment provider or recipient?
instructions:
- text: Show the temporary enrollment status for user {user_id}.
slots:
user_id: path.user_id
- text: Check user {user_id}'s temporary enrollment status in account {account_id}.
slots:
user_id: path.user_id
account_id: query.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/temporary_enrollment_status'].get
update:
x-apievangelist-phrasing:
intent: Check temporary enrollment status for many users
effect: read
questions:
- Can I check temporary enrollment status for a whole list of users at once?
- What's the limit on users per bulk temporary enrollment check?
instructions:
- text: Get temporary enrollment statuses for users {user_ids}.
slots:
user_ids: query.user_ids
- text: Check temporary enrollment status in bulk for {user_ids} in account {account_id}.
slots:
user_ids: query.user_ids
account_id: query.account_id
method: generated
generated: '2026-10-01'