Canvas · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Canvas LMS REST Blueprint Courses API
14 actions
14 updates
phrasing
extends
openapi/canvas-blueprint-courses-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 14
$.info
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}'].get
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/associated_courses'].get
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/update_associations'].put
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations'].get
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations'].post
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/restrict_item'].put
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/unsynced_changes'].get
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id}'].get
$.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id}/details'].get
$.paths['/v1/courses/{course_id}/blueprint_subscriptions'].get
$.paths['/v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations'].get
$.paths['/v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id}'].get
$.paths['/v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id}/details'].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 Blueprint Courses API
version: 1.0.0
extends: openapi/canvas-blueprint-courses-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: 13
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}'].get
update:
x-apievangelist-phrasing:
intent: Get a blueprint course template
effect: read
questions:
- Is this course set up as a blueprint, and what does its template look like?
- When was a blueprint course last synced to its associated courses?
instructions:
- text: Get blueprint template {template_id} for course {course_id}.
slots:
template_id: path.template_id
course_id: path.course_id
- text: Show the default blueprint settings for course {course_id} using template {template_id}.
slots:
course_id: path.course_id
template_id: path.template_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/associated_courses'].get
update:
x-apievangelist-phrasing:
intent: List courses that receive a blueprint's updates
effect: read
questions:
- Which courses get updates pushed from my blueprint course?
- Can I see every course associated with a blueprint template?
instructions:
- text: List courses associated with blueprint {course_id} template {template_id}.
slots:
course_id: path.course_id
template_id: path.template_id
- text: Show which courses receive syncs from blueprint course {course_id} via template {template_id}.
slots:
course_id: path.course_id
template_id: path.template_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/update_associations'].put
update:
x-apievangelist-phrasing:
intent: Add or remove courses linked to a blueprint
effect: write
questions:
- How do I add courses so they inherit content from a blueprint?
- Can I link a course from a different account to my blueprint?
- Can I unlink a course from a blueprint so it stops getting updates?
instructions:
- text: Add courses {course_ids_to_add} to blueprint {course_id} template {template_id}.
slots:
course_ids_to_add: requestBody.course_ids_to_add
course_id: path.course_id
template_id: path.template_id
- text: Remove courses {course_ids_to_remove} from blueprint course {course_id} template {template_id}.
slots:
course_ids_to_remove: requestBody.course_ids_to_remove
course_id: path.course_id
template_id: path.template_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations'].get
update:
x-apievangelist-phrasing:
intent: List sync migrations pushed from a blueprint
effect: read
questions:
- What syncs has my blueprint course pushed out, most recent first?
- Can I see the history of blueprint pushes from the blueprint side?
instructions:
- text: List migrations for blueprint {course_id} template {template_id}.
slots:
course_id: path.course_id
template_id: path.template_id
- text: Show the sync history pushed from blueprint course {course_id} template {template_id}.
slots:
course_id: path.course_id
template_id: path.template_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations'].post
update:
x-apievangelist-phrasing:
intent: Push blueprint changes to associated courses
effect: write
questions:
- How do I sync my latest blueprint edits out to all associated courses?
- Can I notify teachers when I push blueprint updates?
- Can I run two blueprint syncs at the same time?
instructions:
- text: Sync blueprint {course_id} template {template_id} to all associated courses.
slots:
course_id: path.course_id
template_id: path.template_id
- text: Push blueprint {course_id} template {template_id} changes with the comment {comment} and send notifications.
slots:
course_id: path.course_id
template_id: path.template_id
comment: requestBody.comment
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/restrict_item'].put
update:
x-apievangelist-phrasing:
intent: Lock or unlock a blueprint item in child courses
effect: write
questions:
- How do I stop teachers in associated courses from editing a blueprint assignment?
- Can I lock only the content or points of a blueprint item instead of everything?
instructions:
- text: Lock {content_type} {content_id} in blueprint {course_id} template {template_id}.
slots:
content_type: requestBody.content_type
content_id: requestBody.content_id
course_id: path.course_id
template_id: path.template_id
- text: Set restricted to {restricted} on blueprint course {course_id} template {template_id} item {content_id}.
slots:
restricted: requestBody.restricted
course_id: path.course_id
template_id: path.template_id
content_id: requestBody.content_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/unsynced_changes'].get
update:
x-apievangelist-phrasing:
intent: List blueprint changes not yet synced
effect: read
questions:
- What has changed in my blueprint since the last sync?
- Which learning objects are waiting to be pushed to associated courses?
instructions:
- text: Show unsynced changes in blueprint {course_id} template {template_id}.
slots:
course_id: path.course_id
template_id: path.template_id
- text: List items edited since the last sync of blueprint course {course_id} template {template_id}.
slots:
course_id: path.course_id
template_id: path.template_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get the status of a blueprint sync
effect: read
questions:
- Has the blueprint sync I started finished yet?
- Can I check the state of one specific blueprint push from the blueprint course?
instructions:
- text: Get blueprint migration {id} for course {course_id} template {template_id}.
slots:
id: path.id
course_id: path.course_id
template_id: path.template_id
- text: Check the status of sync {id} pushed from blueprint {course_id} template {template_id}.
slots:
id: path.id
course_id: path.course_id
template_id: path.template_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id}/details'].get
update:
x-apievangelist-phrasing:
intent: See what changed in a blueprint sync
effect: read
questions:
- Which items were pushed out in a particular blueprint sync?
- Can I see the exact changes a blueprint migration propagated?
instructions:
- text: Show the changes in migration {id} from blueprint {course_id} template {template_id}.
slots:
id: path.id
course_id: path.course_id
template_id: path.template_id
- text: List the items propagated by blueprint course {course_id} template {template_id} sync {id}.
slots:
course_id: path.course_id
template_id: path.template_id
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_subscriptions'].get
update:
x-apievangelist-phrasing:
intent: List a course's blueprint subscriptions
effect: read
questions:
- Is my course receiving content from a blueprint?
- Which blueprint is a given course subscribed to?
instructions:
- text: List blueprint subscriptions for course {course_id}.
slots:
course_id: path.course_id
- text: Show which blueprint course {course_id} is subscribed to.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations'].get
update:
x-apievangelist-phrasing:
intent: List blueprint syncs imported into a course
effect: read
questions:
- What blueprint updates has my associated course received?
- Can I see blueprint import history from the receiving course's side?
instructions:
- text: List blueprint imports into course {course_id} for subscription {subscription_id}.
slots:
course_id: path.course_id
subscription_id: path.subscription_id
- text: Show the blueprint syncs course {course_id} received through subscription {subscription_id}.
slots:
course_id: path.course_id
subscription_id: path.subscription_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get the status of a blueprint import
effect: read
questions:
- Did a specific blueprint update land in my associated course?
- Can I check one blueprint import's status from the receiving course?
instructions:
- text: Get blueprint import {id} for course {course_id} subscription {subscription_id}.
slots:
id: path.id
course_id: path.course_id
subscription_id: path.subscription_id
- text: Check whether import {id} into course {course_id} via subscription {subscription_id} completed.
slots:
id: path.id
course_id: path.course_id
subscription_id: path.subscription_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id}/details'].get
update:
x-apievangelist-phrasing:
intent: See what a blueprint import changed in a course
effect: read
questions:
- What exactly changed in my course from a blueprint import?
- Can I list the items a blueprint update overwrote in an associated course?
instructions:
- text: Show the changes from import {id} in course {course_id} subscription {subscription_id}.
slots:
id: path.id
course_id: path.course_id
subscription_id: path.subscription_id
- text: List items course {course_id} received in blueprint import {id} through subscription {subscription_id}.
slots:
course_id: path.course_id
id: path.id
subscription_id: path.subscription_id
method: generated
generated: '2026-10-01'