Canvas · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Canvas LMS REST Outcome Groups API
38 actions
38 updates
phrasing
extends
openapi/canvas-outcome-groups-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 38 · first 16 shown; the file carries all of them
$.info
$.paths['/v1/global/root_outcome_group'].get
$.paths['/v1/accounts/{account_id}/root_outcome_group'].get
$.paths['/v1/courses/{course_id}/root_outcome_group'].get
$.paths['/v1/accounts/{account_id}/outcome_groups'].get
$.paths['/v1/courses/{course_id}/outcome_groups'].get
$.paths['/v1/accounts/{account_id}/outcome_group_links'].get
$.paths['/v1/courses/{course_id}/outcome_group_links'].get
$.paths['/v1/global/outcome_groups/{id}'].get
$.paths['/v1/global/outcome_groups/{id}'].put
$.paths['/v1/global/outcome_groups/{id}'].delete
$.paths['/v1/accounts/{account_id}/outcome_groups/{id}'].get
$.paths['/v1/accounts/{account_id}/outcome_groups/{id}'].put
$.paths['/v1/accounts/{account_id}/outcome_groups/{id}'].delete
$.paths['/v1/courses/{course_id}/outcome_groups/{id}'].get
$.paths['/v1/courses/{course_id}/outcome_groups/{id}'].put
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 Outcome Groups API
version: 1.0.0
extends: openapi/canvas-outcome-groups-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: 37
- target: $.paths['/v1/global/root_outcome_group'].get
update:
x-apievangelist-phrasing:
intent: Find the global root outcome group
effect: read
questions:
- Where does the global outcome hierarchy start in Canvas?
- Is there a shortcut to the top-level outcome group shared across all institutions?
instructions:
- text: Take me to the global root outcome group.
- text: Resolve the root of the global learning outcomes tree.
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/root_outcome_group'].get
update:
x-apievangelist-phrasing:
intent: Find an account's root outcome group
effect: read
questions:
- Which outcome group sits at the top of my account's outcome tree?
- Can I jump straight to the root outcome folder for a sub-account?
instructions:
- text: Find the root outcome group for account {account_id}.
slots:
account_id: path.account_id
- text: Resolve where account {account_id}'s outcome hierarchy begins.
slots:
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/root_outcome_group'].get
update:
x-apievangelist-phrasing:
intent: Find a course's root outcome group
effect: read
questions:
- What is the top-level outcome group for my course?
- Can I get the starting folder of a course's learning outcomes?
instructions:
- text: Find the root outcome group for course {course_id}.
slots:
course_id: path.course_id
- text: Resolve where course {course_id}'s outcome hierarchy begins.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups'].get
update:
x-apievangelist-phrasing:
intent: List every outcome group in an account
effect: read
questions:
- How can I see all outcome groups defined at the account level?
- Can I pull a flat list of every outcome folder in a sub-account?
instructions:
- text: List all outcome groups in account {account_id}.
slots:
account_id: path.account_id
- text: Give me every outcome folder under account {account_id}, flattened.
slots:
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups'].get
update:
x-apievangelist-phrasing:
intent: List every outcome group in a course
effect: read
questions:
- How can I see all outcome groups a course uses?
- Is there a flat list of every outcome folder in one course?
instructions:
- text: List all outcome groups in course {course_id}.
slots:
course_id: path.course_id
- text: Give me every outcome folder in course {course_id} as one list.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_group_links'].get
update:
x-apievangelist-phrasing:
intent: List all outcome links in an account
effect: read
questions:
- How do I find every outcome linked anywhere in an account?
- Can I get account outcome links with abbreviated outcome details instead of full ones?
instructions:
- text: List every outcome link across account {account_id}.
slots:
account_id: path.account_id
- text: Show outcome links in account {account_id} using the {outcome_style} outcome style.
slots:
account_id: path.account_id
outcome_style: query.outcome_style
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_group_links'].get
update:
x-apievangelist-phrasing:
intent: List all outcome links in a course
effect: read
questions:
- Which outcomes are linked into my course, across all its groups?
- Can I control how much outcome group detail comes back with each course outcome link?
instructions:
- text: List every outcome link in course {course_id}.
slots:
course_id: path.course_id
- text: Show course {course_id}'s outcome links with outcome groups in {outcome_group_style} style.
slots:
course_id: path.course_id
outcome_group_style: query.outcome_group_style
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a global outcome group
effect: read
questions:
- What details are stored on a global outcome group?
- Can I look up one shared global outcome folder by its id?
instructions:
- text: Show global outcome group {id}.
slots:
id: path.id
- text: Fetch the title and description of global outcome group {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}'].put
update:
x-apievangelist-phrasing:
intent: Update a global outcome group
effect: write
questions:
- Can I rename a global outcome group?
- Is it possible to move a global outcome group under a different parent?
instructions:
- text: Rename global outcome group {id} to {title}.
slots:
id: path.id
title: requestBody.title
- text: Move global outcome group {id} under parent group {parent_outcome_group_id}.
slots:
id: path.id
parent_outcome_group_id: requestBody.parent_outcome_group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a global outcome group
effect: destructive
questions:
- What happens to child groups and links when I delete a global outcome group?
- Can I remove a global outcome folder entirely?
instructions:
- text: Delete global outcome group {id}.
slots:
id: path.id
- text: Remove global outcome group {id} along with its subgroups and links.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get an outcome group in an account
effect: read
questions:
- How do I view the details of one outcome group in my account?
- Can I check the parent and description of an account-level outcome folder?
instructions:
- text: Show outcome group {id} in account {account_id}.
slots:
id: path.id
account_id: path.account_id
- text: Fetch account {account_id}'s outcome group {id} details.
slots:
id: path.id
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}'].put
update:
x-apievangelist-phrasing:
intent: Update an outcome group in an account
effect: write
questions:
- Can I change the description of an account outcome group?
- How do I move an outcome folder in my account to another parent group?
instructions:
- text: Rename outcome group {id} in account {account_id} to {title}.
slots:
id: path.id
account_id: path.account_id
title: requestBody.title
- text: Set the vendor GUID of account {account_id} outcome group {id} to {vendor_guid}.
slots:
id: path.id
account_id: path.account_id
vendor_guid: requestBody.vendor_guid
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an outcome group in an account
effect: destructive
questions:
- Does deleting an account outcome group also delete the outcomes inside it?
- Can I clean up an unused outcome folder at the account level?
instructions:
- text: Delete outcome group {id} from account {account_id}.
slots:
id: path.id
account_id: path.account_id
- text: Remove account {account_id}'s outcome folder {id} and everything beneath it.
slots:
id: path.id
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get an outcome group in a course
effect: read
questions:
- How can I inspect one outcome group in a course?
- Can I see which parent a course outcome folder belongs to?
instructions:
- text: Show outcome group {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Fetch course {course_id}'s outcome group {id} details.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}'].put
update:
x-apievangelist-phrasing:
intent: Update an outcome group in a course
effect: write
questions:
- Can a teacher retitle an outcome group inside their course?
- How do I reparent an outcome folder within a course?
instructions:
- text: Rename outcome group {id} in course {course_id} to {title}.
slots:
id: path.id
course_id: path.course_id
title: requestBody.title
- text: Move course {course_id} outcome group {id} under group {parent_outcome_group_id}.
slots:
id: path.id
course_id: path.course_id
parent_outcome_group_id: requestBody.parent_outcome_group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an outcome group in a course
effect: destructive
questions:
- Will removing a course outcome group delete outcomes that are linked elsewhere?
- Can I delete an outcome folder from a single course?
instructions:
- text: Delete outcome group {id} from course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Remove course {course_id}'s outcome folder {id} with its sub-folders.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}/outcomes'].get
update:
x-apievangelist-phrasing:
intent: List outcomes linked in a global group
effect: read
questions:
- Which outcomes sit directly inside a global outcome group?
- Can I list the immediate outcome links of a shared global folder?
instructions:
- text: List the outcomes linked directly in global outcome group {id}.
slots:
id: path.id
- text: Show global group {id}'s outcomes in {outcome_style} detail.
slots:
id: path.id
outcome_style: query.outcome_style
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}/outcomes'].post
update:
x-apievangelist-phrasing:
intent: Add an outcome to a global group
effect: write
questions:
- How do I create a new outcome inside a global outcome group?
- Can I link an existing outcome into a global folder by posting its id?
instructions:
- text: Create outcome {title} in global outcome group {id}.
slots:
id: path.id
title: requestBody.title
- text: Link existing outcome {outcome_id} into global group {id}.
slots:
id: path.id
outcome_id: requestBody.outcome_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}/outcomes'].get
update:
x-apievangelist-phrasing:
intent: List outcomes linked in an account group
effect: read
questions:
- What outcomes are directly inside one of my account's outcome groups?
- Is the list of outcomes in an account outcome folder paginated?
instructions:
- text: List outcomes linked in group {id} of account {account_id}.
slots:
id: path.id
account_id: path.account_id
- text: Show the immediate outcome links under account {account_id} folder {id}.
slots:
id: path.id
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}/outcomes'].post
update:
x-apievangelist-phrasing:
intent: Add an outcome to an account group
effect: write
questions:
- How do I add a brand-new outcome to an account outcome group?
- Can I set mastery points and a calculation method when creating an account outcome?
instructions:
- text: Create outcome {title} in group {id} of account {account_id}.
slots:
id: path.id
account_id: path.account_id
title: requestBody.title
- text: Create account {account_id} outcome {title} in group {id} with mastery at {mastery_points} points.
slots:
id: path.id
account_id: path.account_id
title: requestBody.title
mastery_points: requestBody.mastery_points
- text: Link outcome {outcome_id} into account {account_id} group {id} via POST.
slots:
id: path.id
account_id: path.account_id
outcome_id: requestBody.outcome_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}/outcomes'].get
update:
x-apievangelist-phrasing:
intent: List outcomes linked in a course group
effect: read
questions:
- Which outcomes are attached directly to a course outcome group?
- Can I get the outcome links in one course folder with full outcome details?
instructions:
- text: List outcomes linked in group {id} of course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Show course {course_id} group {id} outcomes in {outcome_style} style.
slots:
id: path.id
course_id: path.course_id
outcome_style: query.outcome_style
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}/outcomes'].post
update:
x-apievangelist-phrasing:
intent: Add an outcome to a course group
effect: write
questions:
- How can a teacher create a new learning outcome inside a course group?
- Can I move an outcome from another group into a course folder while linking it?
instructions:
- text: Create outcome {title} in group {id} of course {course_id}.
slots:
id: path.id
course_id: path.course_id
title: requestBody.title
- text: Link outcome {outcome_id} into course {course_id} group {id}, moving it from group {move_from}.
slots:
id: path.id
course_id: path.course_id
outcome_id: requestBody.outcome_id
move_from: requestBody.move_from
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}/outcomes/{outcome_id}'].put
update:
x-apievangelist-phrasing:
intent: Link a specific outcome into a global group
effect: write
questions:
- Can I attach a known outcome to a global outcome group by its URL?
- Is there a way to relink an outcome into a global folder and edit its title in one call?
instructions:
- text: Put outcome {outcome_id} into global outcome group {id}.
slots:
id: path.id
outcome_id: path.outcome_id
- text: Link outcome {outcome_id} under global group {id} and retitle it {title}.
slots:
id: path.id
outcome_id: path.outcome_id
title: requestBody.title
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}/outcomes/{outcome_id}'].delete
update:
x-apievangelist-phrasing:
intent: Unlink an outcome from a global group
effect: destructive
questions:
- Does unlinking an outcome from a global group delete the outcome itself?
- Why can't I unlink an outcome that is aligned to content in a global group?
instructions:
- text: Unlink outcome {outcome_id} from global outcome group {id}.
slots:
id: path.id
outcome_id: path.outcome_id
- text: Detach outcome {outcome_id} from global folder {id}.
slots:
id: path.id
outcome_id: path.outcome_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}/outcomes/{outcome_id}'].put
update:
x-apievangelist-phrasing:
intent: Link a specific outcome into an account group
effect: write
questions:
- Can I attach an existing outcome to an account outcome group by addressing it directly?
- How do I move a known outcome into a different outcome folder in my account?
instructions:
- text: Put outcome {outcome_id} into group {id} of account {account_id}.
slots:
id: path.id
account_id: path.account_id
outcome_id: path.outcome_id
- text: Move outcome {outcome_id} from group {move_from} into account {account_id} group {id}.
slots:
id: path.id
account_id: path.account_id
outcome_id: path.outcome_id
move_from: requestBody.move_from
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}/outcomes/{outcome_id}'].delete
update:
x-apievangelist-phrasing:
intent: Unlink an outcome from an account group
effect: destructive
questions:
- What happens when I unlink the last link to an outcome in my account?
- Can I remove an outcome from one account outcome folder without deleting it elsewhere?
instructions:
- text: Unlink outcome {outcome_id} from group {id} in account {account_id}.
slots:
id: path.id
account_id: path.account_id
outcome_id: path.outcome_id
- text: Detach outcome {outcome_id} from account {account_id} folder {id}.
slots:
id: path.id
account_id: path.account_id
outcome_id: path.outcome_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}/outcomes/{outcome_id}'].put
update:
x-apievangelist-phrasing:
intent: Link a specific outcome into a course group
effect: write
questions:
- Can I pull an account outcome into one of my course outcome groups by its id?
- Is it possible to set a display name while linking a known outcome into a course?
instructions:
- text: Put outcome {outcome_id} into group {id} of course {course_id}.
slots:
id: path.id
course_id: path.course_id
outcome_id: path.outcome_id
- text: Link outcome {outcome_id} into course {course_id} group {id} with display name {display_name}.
slots:
id: path.id
course_id: path.course_id
outcome_id: path.outcome_id
display_name: requestBody.display_name
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}/outcomes/{outcome_id}'].delete
update:
x-apievangelist-phrasing:
intent: Unlink an outcome from a course group
effect: destructive
questions:
- Can a teacher remove an outcome from a course group if it is aligned to an assignment?
- Does unlinking a course outcome delete the account copy too?
instructions:
- text: Unlink outcome {outcome_id} from group {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
outcome_id: path.outcome_id
- text: Detach outcome {outcome_id} from course {course_id} folder {id}.
slots:
id: path.id
course_id: path.course_id
outcome_id: path.outcome_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}/subgroups'].get
update:
x-apievangelist-phrasing:
intent: List subgroups of a global outcome group
effect: read
questions:
- What child folders sit under a global outcome group?
- Can I browse the global outcome tree one level at a time?
instructions:
- text: List the subgroups of global outcome group {id}.
slots:
id: path.id
- text: Show the immediate child groups beneath global group {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}/subgroups'].post
update:
x-apievangelist-phrasing:
intent: Create a subgroup in a global outcome group
effect: write
questions:
- How do I add a new empty folder inside a global outcome group?
- Can I give a new global outcome subgroup a vendor GUID?
instructions:
- text: Create subgroup {title} under global outcome group {id}.
slots:
id: path.id
title: requestBody.title
- text: Add global subgroup {title} beneath {id} with vendor GUID {vendor_guid}.
slots:
id: path.id
title: requestBody.title
vendor_guid: requestBody.vendor_guid
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}/subgroups'].get
update:
x-apievangelist-phrasing:
intent: List subgroups of an account outcome group
effect: read
questions:
- Which child outcome groups are nested under an account outcome group?
- Can I walk the outcome folder tree in my account level by level?
instructions:
- text: List subgroups of group {id} in account {account_id}.
slots:
id: path.id
account_id: path.account_id
- text: Show child groups beneath account {account_id} outcome folder {id}.
slots:
id: path.id
account_id: path.account_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}/subgroups'].post
update:
x-apievangelist-phrasing:
intent: Create a subgroup in an account outcome group
effect: write
questions:
- How do I create a nested outcome folder in my account?
- Can I add a description when I create an account outcome subgroup?
instructions:
- text: Create subgroup {title} under group {id} in account {account_id}.
slots:
id: path.id
account_id: path.account_id
title: requestBody.title
- text: Add subgroup {title} to account {account_id} folder {id} described as {description}.
slots:
id: path.id
account_id: path.account_id
title: requestBody.title
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}/subgroups'].get
update:
x-apievangelist-phrasing:
intent: List subgroups of a course outcome group
effect: read
questions:
- What nested outcome groups does a course outcome folder contain?
- Can I list just the direct child folders of a course outcome group?
instructions:
- text: List subgroups of group {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Show child groups beneath course {course_id} outcome folder {id}.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}/subgroups'].post
update:
x-apievangelist-phrasing:
intent: Create a subgroup in a course outcome group
effect: write
questions:
- How can a teacher organize course outcomes into a new sub-folder?
- Does a new course outcome subgroup start empty?
instructions:
- text: Create subgroup {title} under group {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
title: requestBody.title
- text: Add an empty course {course_id} outcome folder named {title} inside {id}.
slots:
id: path.id
course_id: path.course_id
title: requestBody.title
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/global/outcome_groups/{id}/import'].post
update:
x-apievangelist-phrasing:
intent: Import an outcome group into a global group
effect: write
questions:
- Can I copy an existing outcome group into a global outcome group?
- Is there an asynchronous option when importing outcome groups globally?
instructions:
- text: Import outcome group {source_outcome_group_id} into global group {id}.
slots:
id: path.id
source_outcome_group_id: requestBody.source_outcome_group_id
- text: Import group {source_outcome_group_id} under global group {id} as a background job set to {async}.
slots:
id: path.id
source_outcome_group_id: requestBody.source_outcome_group_id
async: requestBody.async
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/outcome_groups/{id}/import'].post
update:
x-apievangelist-phrasing:
intent: Import an outcome group into an account
effect: write
questions:
- How do I bring a whole outcome group from the global bank into my account?
- Does importing an outcome group into an account copy the outcomes or just link them?
instructions:
- text: Import outcome group {source_outcome_group_id} into group {id} of account {account_id}.
slots:
id: path.id
account_id: path.account_id
source_outcome_group_id: requestBody.source_outcome_group_id
- text: Copy source group {source_outcome_group_id} as a new subgroup of account {account_id} folder {id}.
slots:
id: path.id
account_id: path.account_id
source_outcome_group_id: requestBody.source_outcome_group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/outcome_groups/{id}/import'].post
update:
x-apievangelist-phrasing:
intent: Import an outcome group into a course
effect: write
questions:
- Can a teacher import an account's outcome group into their course?
- What does a course get when I import an outcome group into it?
instructions:
- text: Import outcome group {source_outcome_group_id} into group {id} of course {course_id}.
slots:
id: path.id
course_id: path.course_id
source_outcome_group_id: requestBody.source_outcome_group_id
- text: Copy source group {source_outcome_group_id} into course {course_id} folder {id} asynchronously ({async}).
slots:
id: path.id
course_id: path.course_id
source_outcome_group_id: requestBody.source_outcome_group_id
async: requestBody.async
method: generated
generated: '2026-10-01'