Canvas · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Canvas LMS REST Files API
54 actions
54 updates
phrasing
extends
openapi/canvas-files-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 54 · first 16 shown; the file carries all of them
$.info
$.paths['/v1/courses/{course_id}/files'].get
$.paths['/v1/courses/{course_id}/files/quota'].get
$.paths['/v1/groups/{group_id}/files/quota'].get
$.paths['/v1/users/{user_id}/files/quota'].get
$.paths['/v1/users/{user_id}/files'].get
$.paths['/v1/groups/{group_id}/files'].get
$.paths['/v1/folders/{id}/files'].get
$.paths['/v1/files/{id}/public_url'].get
$.paths['/v1/files/{id}'].get
$.paths['/v1/files/{id}'].put
$.paths['/v1/files/{id}'].delete
$.paths['/v1/courses/{course_id}/files/{id}'].get
$.paths['/v1/groups/{group_id}/files/{id}'].get
$.paths['/v1/users/{user_id}/files/{id}'].get
$.paths['/v1/courses/{course_id}/files/file_ref/{migration_id}'].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 Files API
version: 1.0.0
extends: openapi/canvas-files-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: 53
- target: $.paths['/v1/courses/{course_id}/files'].get
update:
x-apievangelist-phrasing:
intent: List the files in a course
effect: read
questions:
- How do I see every file uploaded to a Canvas course?
- Can I search a course's files by name or filter them to only PDFs?
- Which files in a course can I sort by size or last update?
instructions:
- text: List all files in course {course_id}.
slots:
course_id: path.course_id
- text: Search course {course_id}'s files for {search_term}.
slots:
course_id: path.course_id
search_term: query.search_term
- text: Show only the {content_types} files in course {course_id}.
slots:
content_types: query.content_types
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/files/quota'].get
update:
x-apievangelist-phrasing:
intent: Check a course's file storage quota
effect: read
questions:
- How much file storage has a course used out of its quota?
- Is a course close to running out of file space?
instructions:
- text: Show the storage quota and usage for course {course_id}.
slots:
course_id: path.course_id
- text: Check how much file space course {course_id} has left.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/files/quota'].get
update:
x-apievangelist-phrasing:
intent: Check a group's file storage quota
effect: read
questions:
- How much file storage is a student group using?
- What is the storage limit for a group's files?
instructions:
- text: Show the storage quota and usage for group {group_id}.
slots:
group_id: path.group_id
- text: Check how much file space group {group_id} has left.
slots:
group_id: path.group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/files/quota'].get
update:
x-apievangelist-phrasing:
intent: Check a user's personal file storage quota
effect: read
questions:
- How much of a user's personal file quota is used?
- Is a student running out of space in their personal files?
instructions:
- text: Show the personal storage quota and usage for user {user_id}.
slots:
user_id: path.user_id
- text: Check how much personal file space user {user_id} has left.
slots:
user_id: path.user_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/files'].get
update:
x-apievangelist-phrasing:
intent: List a user's personal files
effect: read
questions:
- How do I list the files in a user's personal files area?
- Can I search a student's personal files for a document name?
instructions:
- text: List the personal files of user {user_id}.
slots:
user_id: path.user_id
- text: Search user {user_id}'s personal files for {search_term}.
slots:
user_id: path.user_id
search_term: query.search_term
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/files'].get
update:
x-apievangelist-phrasing:
intent: List the files in a group
effect: read
questions:
- What files has a student group uploaded?
- Can I filter a group's files by content type?
instructions:
- text: List all files in group {group_id}.
slots:
group_id: path.group_id
- text: Search group {group_id}'s files for {search_term}.
slots:
group_id: path.group_id
search_term: query.search_term
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{id}/files'].get
update:
x-apievangelist-phrasing:
intent: List the files inside a folder
effect: read
questions:
- How do I see just the files inside one specific folder?
- Can I sort the files in a folder by name or date?
instructions:
- text: List the files in folder {id}.
slots:
id: path.id
- text: Search folder {id} for files matching {search_term}.
slots:
id: path.id
search_term: query.search_term
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/files/{id}/public_url'].get
update:
x-apievangelist-phrasing:
intent: Get a file's inline preview URL
effect: read
questions:
- How do I get the URL used to preview a file inline?
- Can I get a preview link for a file attached to a submission?
instructions:
- text: Get the inline preview URL for file {id}.
slots:
id: path.id
- text: Get the preview URL for file {id} from submission {submission_id}.
slots:
id: path.id
submission_id: query.submission_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/files/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a file by its ID
effect: read
questions:
- How do I look up a file's details when I only have its file ID?
- What metadata does Canvas return for a single file?
instructions:
- text: Get the details of file {id}.
slots:
id: path.id
- text: Look up file {id} directly by its ID.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/files/{id}'].put
update:
x-apievangelist-phrasing:
intent: Rename, move or lock a file
effect: write
questions:
- How do I rename a file or move it to another folder?
- Can I hide a file or lock it until a certain date?
- What visibility levels can I set on a file?
instructions:
- text: Rename file {id} to {name}.
slots:
id: path.id
name: requestBody.name
- text: Move file {id} into folder {parent_folder_id}.
slots:
id: path.id
parent_folder_id: requestBody.parent_folder_id
- text: Lock file {id} until {unlock_at}.
slots:
id: path.id
unlock_at: requestBody.unlock_at
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/files/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Permanently delete a file
effect: destructive
questions:
- How do I permanently delete a file from Canvas?
- Is deleting a file reversible, or is it destroyed for good?
instructions:
- text: Permanently delete file {id}.
slots:
id: path.id
- text: Destroy file {id} and replace it with a placeholder.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/files/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a file within a course
effect: read
questions:
- How do I fetch a specific file in the context of a course?
- Can I get a course file's details along with its usage rights?
instructions:
- text: Get file {id} from course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Show the details of course {course_id}'s file {id}.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/files/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a file within a group
effect: read
questions:
- How do I fetch a specific file that belongs to a group?
- What details can I see about a file in a group's files area?
instructions:
- text: Get file {id} from group {group_id}.
slots:
id: path.id
group_id: path.group_id
- text: Show the details of group {group_id}'s file {id}.
slots:
id: path.id
group_id: path.group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/files/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a file from a user's personal files
effect: read
questions:
- How do I fetch a specific file from a user's personal files?
- Can I see details of a file a student stored in their own files?
instructions:
- text: Get file {id} from user {user_id}'s personal files.
slots:
id: path.id
user_id: path.user_id
- text: Show the details of user {user_id}'s file {id}.
slots:
id: path.id
user_id: path.user_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/files/file_ref/{migration_id}'].get
update:
x-apievangelist-phrasing:
intent: Resolve a course-copy file reference
effect: read
questions:
- How do I find the file a course copy migration reference points to?
- Can I translate a file migration ID into the copied file in my course?
instructions:
- text: Translate file reference {migration_id} in course {course_id}.
slots:
migration_id: path.migration_id
course_id: path.course_id
- text: Find which file in course {course_id} came from migration reference {migration_id}.
slots:
migration_id: path.migration_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/files/{id}/icon_metadata'].get
update:
x-apievangelist-phrasing:
intent: Get Icon Maker metadata for a file
effect: read
questions:
- How do I read the Icon Maker settings stored on an icon file?
- Can I see what shape and colors an Icon Maker icon was built with?
instructions:
- text: Get the Icon Maker metadata for file {id}.
slots:
id: path.id
- text: Show how icon file {id} was configured in Icon Maker.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/files/{id}/reset_verifier'].post
update:
x-apievangelist-phrasing:
intent: Reset a file's link verifier
effect: destructive
questions:
- How do I stop old shared links to a file from granting access?
- What permissions do I need to reset a file's verifier?
instructions:
- text: Reset the link verifier on file {id}.
slots:
id: path.id
- text: Invalidate existing verifier links to file {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/files/update_word_count'].post
update:
x-apievangelist-phrasing:
intent: Report a submission attachment's word count
effect: write
questions:
- How does a document viewer report a submission's word count back?
- Can an external viewer update the word count on a submitted attachment?
instructions:
- text: Set the word count to {word_count} for attachment token {attachment_jwt}.
slots:
word_count: requestBody.word_count
attachment_jwt: requestBody.attachment_jwt
- text: Report {word_count} words for the submission attachment identified by {attachment_jwt}.
slots:
word_count: requestBody.word_count
attachment_jwt: requestBody.attachment_jwt
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{id}/folders'].get
update:
x-apievangelist-phrasing:
intent: List the subfolders directly in a folder
effect: read
questions:
- How do I see the folders nested one level inside a folder?
- What subfolders does a given folder contain?
instructions:
- text: List the subfolders inside folder {id}.
slots:
id: path.id
- text: Show the immediate child folders of folder {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/folders'].get
update:
x-apievangelist-phrasing:
intent: List every folder in a course
effect: read
questions:
- How do I get a flat list of all folders in a course, subfolders included?
- Which folders exist anywhere in a course's files?
instructions:
- text: List every folder in course {course_id}.
slots:
course_id: path.course_id
- text: Give me a flat list of all of course {course_id}'s folders.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/folders'].post
update:
x-apievangelist-phrasing:
intent: Create a folder in a course
effect: write
questions:
- How do I create a new folder in a course's files?
- Can I create a course folder that stays hidden or locked until a date?
instructions:
- text: Create a folder named {name} in course {course_id}.
slots:
name: requestBody.name
course_id: path.course_id
- text: Create course {course_id} folder {name} under {parent_folder_path}.
slots:
name: requestBody.name
course_id: path.course_id
parent_folder_path: requestBody.parent_folder_path
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/folders'].get
update:
x-apievangelist-phrasing:
intent: List every folder in a user's files
effect: read
questions:
- How do I list all the folders in a user's personal files?
- What folder structure does a student have in their own files?
instructions:
- text: List every folder in user {user_id}'s personal files.
slots:
user_id: path.user_id
- text: Give me a flat list of user {user_id}'s folders.
slots:
user_id: path.user_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/folders'].post
update:
x-apievangelist-phrasing:
intent: Create a folder in a user's files
effect: write
questions:
- How do I add a folder to a user's personal files?
- Can I create a personal folder at a specific path?
instructions:
- text: Create a folder named {name} in user {user_id}'s files.
slots:
name: requestBody.name
user_id: path.user_id
- text: Create personal folder {name} for user {user_id} under {parent_folder_path}.
slots:
name: requestBody.name
user_id: path.user_id
parent_folder_path: requestBody.parent_folder_path
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/folders'].get
update:
x-apievangelist-phrasing:
intent: List every folder in a group
effect: read
questions:
- How do I list all the folders in a group's files?
- What folders has a student group set up?
instructions:
- text: List every folder in group {group_id}.
slots:
group_id: path.group_id
- text: Give me a flat list of group {group_id}'s folders.
slots:
group_id: path.group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/folders'].post
update:
x-apievangelist-phrasing:
intent: Create a folder in a group
effect: write
questions:
- How do I create a folder in a group's files area?
- Can I make a group folder hidden from members?
instructions:
- text: Create a folder named {name} in group {group_id}.
slots:
name: requestBody.name
group_id: path.group_id
- text: Create group {group_id} folder {name} under {parent_folder_path}.
slots:
name: requestBody.name
group_id: path.group_id
parent_folder_path: requestBody.parent_folder_path
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/folders/by_path/*full_path'].get
update:
x-apievangelist-phrasing:
intent: Resolve a full folder path in a course
effect: read
questions:
- How do I turn a course folder path like 'Week 1/Readings' into its folder chain?
- Can I get every folder from the course root down to a nested path?
instructions:
- text: Resolve a nested folder path in course {course_id} into its folder hierarchy.
slots:
course_id: path.course_id
- text: Walk the folder chain from the root to a given path in course {course_id}.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/folders/by_path'].get
update:
x-apievangelist-phrasing:
intent: Get a course's root folder via path resolution
effect: read
questions:
- How do I resolve the root of a course's folder path with no subpath?
- What does path resolution return for a course when no path is given?
instructions:
- text: Resolve the root folder path for course {course_id}.
slots:
course_id: path.course_id
- text: Run folder path resolution on course {course_id} without a subpath.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/folders/by_path/*full_path'].get
update:
x-apievangelist-phrasing:
intent: Resolve a full folder path in a user's files
effect: read
questions:
- How do I find the folders along a nested path in a user's personal files?
- Can I resolve a personal folder path into each folder on the way down?
instructions:
- text: Resolve a nested folder path in user {user_id}'s files into its hierarchy.
slots:
user_id: path.user_id
- text: Walk the folder chain to a given path in user {user_id}'s personal files.
slots:
user_id: path.user_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/folders/by_path'].get
update:
x-apievangelist-phrasing:
intent: Get a user's root folder via path resolution
effect: read
questions:
- How do I resolve the root of a user's personal folder path?
- What does path resolution return for a user's files with no path?
instructions:
- text: Resolve the root folder path for user {user_id}.
slots:
user_id: path.user_id
- text: Run folder path resolution on user {user_id}'s files without a subpath.
slots:
user_id: path.user_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/folders/by_path/*full_path'].get
update:
x-apievangelist-phrasing:
intent: Resolve a full folder path in a group
effect: read
questions:
- How do I resolve a nested folder path inside a group's files?
- Can I get each folder on the path to a deep group folder?
instructions:
- text: Resolve a nested folder path in group {group_id} into its hierarchy.
slots:
group_id: path.group_id
- text: Walk the folder chain to a given path in group {group_id}.
slots:
group_id: path.group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/folders/by_path'].get
update:
x-apievangelist-phrasing:
intent: Get a group's root folder via path resolution
effect: read
questions:
- How do I resolve the root of a group's folder path?
- What does path resolution return for a group with no path given?
instructions:
- text: Resolve the root folder path for group {group_id}.
slots:
group_id: path.group_id
- text: Run folder path resolution on group {group_id} without a subpath.
slots:
group_id: path.group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/folders/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a folder within a course
effect: read
questions:
- How do I get a course folder's details, including the root folder?
- Can I use 'root' to fetch a course's top-level folder?
instructions:
- text: Get folder {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Show the root folder of course {course_id}.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/folders/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a folder in a user's files
effect: read
questions:
- How do I get details of a folder in a user's personal files?
- Can I fetch the root of a student's personal files?
instructions:
- text: Get folder {id} in user {user_id}'s files.
slots:
id: path.id
user_id: path.user_id
- text: Show the root personal folder of user {user_id}.
slots:
user_id: path.user_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/folders/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a folder within a group
effect: read
questions:
- How do I get details of a folder in a group's files?
- Can I fetch a group's root folder?
instructions:
- text: Get folder {id} in group {group_id}.
slots:
id: path.id
group_id: path.group_id
- text: Show the root folder of group {group_id}.
slots:
group_id: path.group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a folder by its ID
effect: read
questions:
- How do I look up a folder when I only know its folder ID?
- What details does Canvas return about a single folder?
instructions:
- text: Get folder {id} by its ID.
slots:
id: path.id
- text: Look up the details of folder {id} directly.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{id}'].put
update:
x-apievangelist-phrasing:
intent: Rename, move or lock a folder
effect: write
questions:
- How do I rename a folder or move it under another folder?
- Can I hide a folder or lock it until a set date?
instructions:
- text: Rename folder {id} to {name}.
slots:
id: path.id
name: requestBody.name
- text: Move folder {id} under folder {parent_folder_id}.
slots:
id: path.id
parent_folder_id: requestBody.parent_folder_id
- text: Hide folder {id} from students.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a folder
effect: destructive
questions:
- How do I delete a folder from Canvas files?
- Can I delete a folder that still has files in it?
instructions:
- text: Delete empty folder {id}.
slots:
id: path.id
- text: Force-delete folder {id} and everything inside it.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{folder_id}/folders'].post
update:
x-apievangelist-phrasing:
intent: Create a subfolder inside a folder
effect: write
questions:
- How do I create a subfolder inside an existing folder?
- Can I set a position for a new subfolder within its parent?
instructions:
- text: Create subfolder {name} inside folder {folder_id}.
slots:
name: requestBody.name
folder_id: path.folder_id
- text: Add a locked subfolder {name} to folder {folder_id}.
slots:
name: requestBody.name
folder_id: path.folder_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/folders'].post
update:
x-apievangelist-phrasing:
intent: Create a folder at the account level
effect: write
questions:
- How do I create a folder in an account's files?
- Can admins create folders for a whole account?
instructions:
- text: Create a folder named {name} in account {account_id}.
slots:
name: requestBody.name
account_id: path.account_id
- text: Create account {account_id} folder {name} under {parent_folder_path}.
slots:
name: requestBody.name
account_id: path.account_id
parent_folder_path: requestBody.parent_folder_path
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{folder_id}/files'].post
update:
x-apievangelist-phrasing:
intent: Start uploading a file to a folder
effect: write
questions:
- How do I upload a file into a specific Canvas folder?
- What is the first step of the file upload workflow for a folder?
instructions:
- text: Start a file upload into folder {folder_id}.
slots:
folder_id: path.folder_id
- text: Upload a new file to folder {folder_id}.
slots:
folder_id: path.folder_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{dest_folder_id}/copy_file'].post
update:
x-apievangelist-phrasing:
intent: Copy a file into a folder
effect: write
questions:
- How do I copy a file from one course into another course's folder?
- What happens if a copied file has the same name as an existing one?
instructions:
- text: Copy file {source_file_id} into folder {dest_folder_id}.
slots:
source_file_id: requestBody.source_file_id
dest_folder_id: path.dest_folder_id
- text: Copy file {source_file_id} into folder {dest_folder_id} and {on_duplicate} on a name clash.
slots:
source_file_id: requestBody.source_file_id
dest_folder_id: path.dest_folder_id
on_duplicate: requestBody.on_duplicate
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/folders/{dest_folder_id}/copy_folder'].post
update:
x-apievangelist-phrasing:
intent: Copy a folder and its contents
effect: write
questions:
- How do I copy a whole folder with its contents into another folder?
- Can I copy a folder between courses in the same institution?
instructions:
- text: Copy folder {source_folder_id} into folder {dest_folder_id}.
slots:
source_folder_id: requestBody.source_folder_id
dest_folder_id: path.dest_folder_id
- text: Duplicate folder {source_folder_id} with all its files under {dest_folder_id}.
slots:
source_folder_id: requestBody.source_folder_id
dest_folder_id: path.dest_folder_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/folders/media'].get
update:
x-apievangelist-phrasing:
intent: Get my media upload folder in a course
effect: read
questions:
- Where do my uploaded media files go in a course?
- Does Canvas create a course media upload folder if one doesn't exist?
instructions:
- text: Get my uploaded media folder in course {course_id}.
slots:
course_id: path.course_id
- text: Find the course {course_id} folder I can upload media to.
slots:
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/folders/media'].get
update:
x-apievangelist-phrasing:
intent: Get my media upload folder in a group
effect: read
questions:
- Where do my uploaded media files go in a group?
- Which group folder am I allowed to upload media into?
instructions:
- text: Get my uploaded media folder in group {group_id}.
slots:
group_id: path.group_id
- text: Find the group {group_id} folder I can upload media to.
slots:
group_id: path.group_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/usage_rights'].put
update:
x-apievangelist-phrasing:
intent: Set copyright info on course files
effect: write
questions:
- How do I set copyright and license info on files in a course?
- Can I apply a Creative Commons license to several course files at once?
- Which use justifications can I choose for course files?
instructions:
- text: Mark files {file_ids} in course {course_id} as {justification}.
slots:
file_ids: requestBody.file_ids
course_id: path.course_id
justification: requestBody.usage_rights[use_justification]
- text: License course {course_id} files {file_ids} under {license} with justification {justification}.
slots:
course_id: path.course_id
file_ids: requestBody.file_ids
license: requestBody.usage_rights[license]
justification: requestBody.usage_rights[use_justification]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/usage_rights'].delete
update:
x-apievangelist-phrasing:
intent: Remove copyright info from course files
effect: destructive
questions:
- How do I clear the copyright and license info from course files?
- Can I remove usage rights from a whole folder in a course?
instructions:
- text: Remove usage rights from files {file_ids} in course {course_id}.
slots:
file_ids: query.file_ids
course_id: path.course_id
- text: Clear the license info on course {course_id} files {file_ids}.
slots:
file_ids: query.file_ids
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/groups/{group_id}/usage_rights'].put
update:
x-apievangelist-phrasing:
intent: Set copyright info on group files
effect: write
questions:
- How do I set copyright and license info on a group's files?
- Can I record a legal copyright holder for group files?
instructions:
- text: Mark files {file_ids} in group {group_id} as {justification}.
slots:
file_ids: requestBody.file_ids
group_id: path.group_id
justification: requestBody.usage_rights[use_justification]
- text: License group {group_id} files {file_ids} under {license} with justification {justification}.
slots:
group_id: path.group_id
file_ids: requestBody.file_ids
license: requestBody.usage_rights[license]
justification: requestBody.usage_rights[use_justification]
method: generated
generated: '2026-10-01'
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/overlays/canvas-files-api-phrasing-overlay.yaml