# 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 Content Migrations API version: 1.0.0 extends: openapi/canvas-content-migrations-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/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues'].get update: x-apievangelist-phrasing: intent: List issues raised by an account content migration effect: read questions: - What problems came up during an import into my Canvas account? - Which warnings did an account-level content migration leave behind? instructions: - text: List the migration issues for migration {content_migration_id} in account {account_id}. slots: content_migration_id: path.content_migration_id account_id: path.account_id - text: Show every problem flagged on account {account_id}'s import {content_migration_id}. slots: account_id: path.account_id content_migration_id: path.content_migration_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues'].get update: x-apievangelist-phrasing: intent: List issues raised by a course content migration effect: read questions: - What went wrong when I imported content into my course? - Can I see all the errors from a course copy or import? instructions: - text: List the migration issues for course {course_id} migration {content_migration_id}. slots: course_id: path.course_id content_migration_id: path.content_migration_id - text: Show the import problems from migration {content_migration_id} into course {course_id}. slots: content_migration_id: path.content_migration_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues'].get update: x-apievangelist-phrasing: intent: List issues raised by a group content migration effect: read questions: - Which errors did a content import into a student group produce? - Are there any unresolved warnings on a group's content migration? instructions: - text: List the migration issues for group {group_id} migration {content_migration_id}. slots: group_id: path.group_id content_migration_id: path.content_migration_id - text: Show every problem flagged on group {group_id}'s import {content_migration_id}. slots: group_id: path.group_id content_migration_id: path.content_migration_id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues'].get update: x-apievangelist-phrasing: intent: List issues raised by a user content migration effect: read questions: - What problems came up importing files into a user's personal space? - Can I list the warnings from a user-level content migration? instructions: - text: List the migration issues for user {user_id} migration {content_migration_id}. slots: user_id: path.user_id content_migration_id: path.content_migration_id - text: Show every problem flagged on user {user_id}'s import {content_migration_id}. slots: user_id: path.user_id content_migration_id: path.content_migration_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].get update: x-apievangelist-phrasing: intent: Get one issue from an account content migration effect: read questions: - What are the details of a single issue from an account-level import? - Can I look up one specific migration issue on my account by its ID? instructions: - text: Get issue {id} from migration {content_migration_id} in account {account_id}. slots: id: path.id content_migration_id: path.content_migration_id account_id: path.account_id - text: Show me the details of account {account_id} migration issue {id} on import {content_migration_id}. slots: account_id: path.account_id id: path.id content_migration_id: path.content_migration_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].put update: x-apievangelist-phrasing: intent: Resolve or reopen an account migration issue effect: write questions: - How do I mark an issue from an account-level import as resolved? - Can I change the workflow state of a migration issue on my account? instructions: - text: Set issue {id} on account {account_id} migration {content_migration_id} to {workflow_state}. slots: id: path.id account_id: path.account_id content_migration_id: path.content_migration_id workflow_state: requestBody.workflow_state - text: Mark account {account_id} migration {content_migration_id} issue {id} as resolved. slots: account_id: path.account_id content_migration_id: path.content_migration_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].get update: x-apievangelist-phrasing: intent: Get one issue from a course content migration effect: read questions: - What exactly does one error from my course import say? - Can I fetch a single course migration issue by its ID? instructions: - text: Get issue {id} from migration {content_migration_id} in course {course_id}. slots: id: path.id content_migration_id: path.content_migration_id course_id: path.course_id - text: Show me the details of course {course_id} migration issue {id} on import {content_migration_id}. slots: course_id: path.course_id id: path.id content_migration_id: path.content_migration_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].put update: x-apievangelist-phrasing: intent: Resolve or reopen a course migration issue effect: write questions: - How do I mark a course import problem as resolved once I've fixed it? - Can I reactivate a course migration issue I resolved by mistake? instructions: - text: Set issue {id} on course {course_id} migration {content_migration_id} to {workflow_state}. slots: id: path.id course_id: path.course_id content_migration_id: path.content_migration_id workflow_state: requestBody.workflow_state - text: Mark course {course_id} migration {content_migration_id} issue {id} as resolved. slots: course_id: path.course_id content_migration_id: path.content_migration_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].get update: x-apievangelist-phrasing: intent: Get one issue from a group content migration effect: read questions: - What are the details of one problem from a group's content import? - Can I fetch a single group migration issue by its ID? instructions: - text: Get issue {id} from migration {content_migration_id} in group {group_id}. slots: id: path.id content_migration_id: path.content_migration_id group_id: path.group_id - text: Show me the details of group {group_id} migration issue {id} on import {content_migration_id}. slots: group_id: path.group_id id: path.id content_migration_id: path.content_migration_id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].put update: x-apievangelist-phrasing: intent: Resolve or reopen a group migration issue effect: write questions: - How do I mark a problem from a group's content import as resolved? - Can I change the state of a group migration issue? instructions: - text: Set issue {id} on group {group_id} migration {content_migration_id} to {workflow_state}. slots: id: path.id group_id: path.group_id content_migration_id: path.content_migration_id workflow_state: requestBody.workflow_state - text: Mark group {group_id} migration {content_migration_id} issue {id} as resolved. slots: group_id: path.group_id content_migration_id: path.content_migration_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].get update: x-apievangelist-phrasing: intent: Get one issue from a user content migration effect: read questions: - What does a single issue from a user's personal import say? - Can I fetch one user-level migration issue by its ID? instructions: - text: Get issue {id} from migration {content_migration_id} for user {user_id}. slots: id: path.id content_migration_id: path.content_migration_id user_id: path.user_id - text: Show me the details of user {user_id} migration issue {id} on import {content_migration_id}. slots: user_id: path.user_id id: path.id content_migration_id: path.content_migration_id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues/{id}'].put update: x-apievangelist-phrasing: intent: Resolve or reopen a user migration issue effect: write questions: - How do I mark an issue from a user's personal import as resolved? - Can I set the workflow state of a user-level migration issue? instructions: - text: Set issue {id} on user {user_id} migration {content_migration_id} to {workflow_state}. slots: id: path.id user_id: path.user_id content_migration_id: path.content_migration_id workflow_state: requestBody.workflow_state - text: Mark user {user_id} migration {content_migration_id} issue {id} as resolved. slots: user_id: path.user_id content_migration_id: path.content_migration_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations'].get update: x-apievangelist-phrasing: intent: List content migrations run on an account effect: read questions: - Which imports have been run against my Canvas account? - Can I see the history of account-level content migrations? instructions: - text: List the content migrations for account {account_id}. slots: account_id: path.account_id - text: Show all imports that have run on account {account_id}. slots: account_id: path.account_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations'].post update: x-apievangelist-phrasing: intent: Start a content import into an account effect: write questions: - How do I import a question bank or package into my account rather than a course? - Can I start an account-level content migration from a file URL? instructions: - text: Start a {migration_type} content migration into account {account_id}. slots: migration_type: requestBody.migration_type account_id: path.account_id - text: Import the file at {file_url} into account {account_id} as a {migration_type} migration. slots: file_url: requestBody.settings[file_url] account_id: path.account_id migration_type: requestBody.migration_type method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations'].get update: x-apievangelist-phrasing: intent: List content migrations run on a course effect: read questions: - What imports and course copies have been run into my course? - Can I check whether a previous course copy finished? instructions: - text: List the content migrations for course {course_id}. slots: course_id: path.course_id - text: Show all imports and copies that have run into course {course_id}. slots: course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations'].post update: x-apievangelist-phrasing: intent: Copy or import content into a course effect: write questions: - How do I copy everything from last term's course into a new one? - Can I shift assignment dates to a new term while importing course content? - Which settings let me import only selected items instead of the whole course? instructions: - text: Copy course {source_course_id} into course {course_id}. slots: source_course_id: requestBody.settings[source_course_id] course_id: path.course_id - text: Start a {migration_type} import into course {course_id} from {file_url}. slots: migration_type: requestBody.migration_type course_id: path.course_id file_url: requestBody.settings[file_url] - text: Import into course {course_id} with dates shifted to start {new_start_date} using migration type {migration_type}. slots: course_id: path.course_id new_start_date: requestBody.date_shift_options[new_start_date] migration_type: requestBody.migration_type method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations'].get update: x-apievangelist-phrasing: intent: List content migrations run on a group effect: read questions: - Which content imports have been run into a student group? - Can I see the migration history for a group? instructions: - text: List the content migrations for group {group_id}. slots: group_id: path.group_id - text: Show all imports that have run into group {group_id}. slots: group_id: path.group_id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations'].post update: x-apievangelist-phrasing: intent: Start a content import into a group effect: write questions: - How do I upload a zip of files into a group's files area? - Can I import content into a group instead of a course? instructions: - text: Start a {migration_type} content migration into group {group_id}. slots: migration_type: requestBody.migration_type group_id: path.group_id - text: Import the file at {file_url} into group {group_id} as a {migration_type} migration. slots: file_url: requestBody.settings[file_url] group_id: path.group_id migration_type: requestBody.migration_type method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations'].get update: x-apievangelist-phrasing: intent: List content migrations run for a user effect: read questions: - What imports have been run into a user's personal files? - Can I list a user's own content migrations? instructions: - text: List the content migrations for user {user_id}. slots: user_id: path.user_id - text: Show all imports that have run for user {user_id}. slots: user_id: path.user_id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations'].post update: x-apievangelist-phrasing: intent: Start a content import into a user's files effect: write questions: - How do I import a zip file into a user's personal files? - Can I start a content migration scoped to a single user? instructions: - text: Start a {migration_type} content migration for user {user_id}. slots: migration_type: requestBody.migration_type user_id: path.user_id - text: Import the file at {file_url} into user {user_id}'s files as a {migration_type} migration. slots: file_url: requestBody.settings[file_url] user_id: path.user_id migration_type: requestBody.migration_type method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations/{id}'].get update: x-apievangelist-phrasing: intent: Get the status of an account content migration effect: read questions: - Has a particular import into my account finished yet? - What is the current state of one account-level migration? instructions: - text: Get content migration {id} in account {account_id}. slots: id: path.id account_id: path.account_id - text: Check the progress of account {account_id} import {id}. slots: account_id: path.account_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations/{id}'].put update: x-apievangelist-phrasing: intent: Update or retry an account content migration effect: write questions: - How do I retry an account import after its file upload failed? - Can I change settings on an account migration that's already been created? instructions: - text: Update content migration {id} in account {account_id}. slots: id: path.id account_id: path.account_id - text: Resubmit the upload for account {account_id} import {id}. slots: account_id: path.account_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/{id}'].get update: x-apievangelist-phrasing: intent: Get the status of a course content migration effect: read questions: - Did my course copy finish, or is it still running? - What's the workflow state of one import into my course? instructions: - text: Get content migration {id} in course {course_id}. slots: id: path.id course_id: path.course_id - text: Check the progress of course {course_id} import {id}. slots: course_id: path.course_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/{id}'].put update: x-apievangelist-phrasing: intent: Choose items or retry a course content migration effect: write questions: - How do I pick which items to bring over in a selective course import? - Can I resend a file for a course import whose first upload failed? instructions: - text: Update content migration {id} in course {course_id} with the items I selected. slots: id: path.id course_id: path.course_id - text: Retry the file upload for course {course_id} import {id}. slots: course_id: path.course_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations/{id}'].get update: x-apievangelist-phrasing: intent: Get the status of a group content migration effect: read questions: - Has the content import into my group completed? - What is the state of a single group-level migration? instructions: - text: Get content migration {id} in group {group_id}. slots: id: path.id group_id: path.group_id - text: Check the progress of group {group_id} import {id}. slots: group_id: path.group_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations/{id}'].put update: x-apievangelist-phrasing: intent: Update or retry a group content migration effect: write questions: - How do I retry a group import after the upload went wrong? - Can I adjust a group migration after creating it? instructions: - text: Update content migration {id} in group {group_id}. slots: id: path.id group_id: path.group_id - text: Resubmit the upload for group {group_id} import {id}. slots: group_id: path.group_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations/{id}'].get update: x-apievangelist-phrasing: intent: Get the status of a user content migration effect: read questions: - Has the import into a user's personal files finished? - What is the state of one user-level migration? instructions: - text: Get content migration {id} for user {user_id}. slots: id: path.id user_id: path.user_id - text: Check the progress of user {user_id} import {id}. slots: user_id: path.user_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations/{id}'].put update: x-apievangelist-phrasing: intent: Update or retry a user content migration effect: write questions: - How do I retry a user's personal import after the upload failed? - Can I change a user-level migration after it was created? instructions: - text: Update content migration {id} for user {user_id}. slots: id: path.id user_id: path.user_id - text: Resubmit the upload for user {user_id} import {id}. slots: user_id: path.user_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations/migrators'].get update: x-apievangelist-phrasing: intent: List import types available to an account effect: read questions: - Which migration types can I use when importing into my account? - What import formats does my account support? instructions: - text: List the available migration systems for account {account_id}. slots: account_id: path.account_id - text: Show which import types account {account_id} supports. slots: account_id: path.account_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/migrators'].get update: x-apievangelist-phrasing: intent: List import types available to a course effect: read questions: - What migration types can I choose from when importing into a course? - Does my course support Common Cartridge or QTI imports? instructions: - text: List the available migration systems for course {course_id}. slots: course_id: path.course_id - text: Show which import types course {course_id} supports. slots: course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations/migrators'].get update: x-apievangelist-phrasing: intent: List import types available to a group effect: read questions: - Which migration types are allowed for imports into a group? - What import formats can a group accept? instructions: - text: List the available migration systems for group {group_id}. slots: group_id: path.group_id - text: Show which import types group {group_id} supports. slots: group_id: path.group_id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations/migrators'].get update: x-apievangelist-phrasing: intent: List import types available to a user effect: read questions: - Which migration types can be used for a user's personal imports? - What import formats are available at the user level? instructions: - text: List the available migration systems for user {user_id}. slots: user_id: path.user_id - text: Show which import types user {user_id} supports. slots: user_id: path.user_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/content_migrations/{id}/selective_data'].get update: x-apievangelist-phrasing: intent: Browse content selectable in an account import effect: read questions: - What content can I choose from in an account-level selective import? - Can I see the tree of importable items for an account migration? instructions: - text: List the selectable items for account {account_id} migration {id}. slots: account_id: path.account_id id: path.id - text: Show the {type} items available to import in account {account_id} migration {id}. slots: type: query.type account_id: path.account_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/{id}/selective_data'].get update: x-apievangelist-phrasing: intent: Browse content selectable in a course import effect: read questions: - Which assignments, pages and modules can I pick in a selective course import? - How do I get the copy parameters for just some items of a course migration? instructions: - text: List the selectable items for course {course_id} migration {id}. slots: course_id: path.course_id id: path.id - text: Show only the {type} items I can import in course {course_id} migration {id}. slots: type: query.type course_id: path.course_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/content_migrations/{id}/selective_data'].get update: x-apievangelist-phrasing: intent: Browse content selectable in a group import effect: read questions: - What content can I choose from in a group's selective import? - Can I see the importable item tree for a group migration? instructions: - text: List the selectable items for group {group_id} migration {id}. slots: group_id: path.group_id id: path.id - text: Show the {type} items available to import in group {group_id} migration {id}. slots: type: query.type group_id: path.group_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/content_migrations/{id}/selective_data'].get update: x-apievangelist-phrasing: intent: Browse content selectable in a user import effect: read questions: - What items can be picked in a user-level selective import? - Can I see the importable item tree for a user's migration? instructions: - text: List the selectable items for user {user_id} migration {id}. slots: user_id: path.user_id id: path.id - text: Show the {type} items available to import in user {user_id} migration {id}. slots: type: query.type user_id: path.user_id id: path.id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/content_migrations/{id}/asset_id_mapping'].get update: x-apievangelist-phrasing: intent: Map source to copied asset IDs after a course copy effect: read questions: - After a course copy, how do I find the new ID of each copied assignment or page? - Can I get the old-to-new ID mapping from a blueprint sync? instructions: - text: Get the asset ID mapping for course {course_id} migration {id}. slots: course_id: path.course_id id: path.id - text: Show which destination IDs the copied quizzes and modules got in course {course_id} from migration {id}. slots: course_id: path.course_id id: path.id method: generated generated: '2026-10-01'