Canvas LMS REST API

The Canvas LMS REST API provides programmatic access to courses, assignments, quizzes, grades, users, enrollments, accounts, discussions, files, modules, rubrics, submissions, SIS imports, and account administration. It uses OAuth 2.0 access tokens and returns JSON with ISO 8601 timestamps, supporting pagination, request throttling, masquerading, and compound documents.

Operations 1117

Showing the first 250 of 1117. The full set is in the contract, and via get_provider_operations.

GET /v1/users/{user_id}/user_generated_tokens List access tokens for a user #
GET /v1/users/{user_id}/tokens/{id} Show an access token #
PUT /v1/users/{user_id}/tokens/{id} Update an access token #
DELETE /v1/users/{user_id}/tokens/{id} Delete an access token #
POST /v1/users/{user_id}/tokens Create an access token #
POST /v1/users/{user_id}/educator_accessibility_course_scan Trigger accessibility course scan #
GET /v1/users/{user_id}/educator_accessibility_course_statistics List accessibility course statistics #
GET /v1/users/{user_id}/educator_accessibility_course_terms List accessibility course statistic terms #
GET /v1/account_calendars List available account calendars #
GET /v1/account_calendars/{account_id} Get a single account calendar #
PUT /v1/account_calendars/{account_id} Update a calendar #
PUT /v1/accounts/{account_id}/account_calendars Update several calendars #
GET /v1/accounts/{account_id}/account_calendars List all account calendars #
GET /v1/accounts/{account_id}/visible_calendars_count Count of all visible account calendars #
GET /v1/accounts/search Search account domains #
GET /v1/accounts/{account_id}/account_notifications Index of active global notification for the user #
POST /v1/accounts/{account_id}/account_notifications Create a global notification #
GET /v1/accounts/{account_id}/account_notifications/{id} Show a global notification #
PUT /v1/accounts/{account_id}/account_notifications/{id} Update a global notification #
DELETE /v1/accounts/{account_id}/account_notifications/{id} Close notification for user. Destroy notification for admin #
GET /v1/accounts/{account_id}/reports List Available Reports #
POST /v1/accounts/{account_id}/reports/{report} Start a Report #
GET /v1/accounts/{account_id}/reports/{report} Index of Reports #
GET /v1/accounts/{account_id}/reports/{report}/{id} Status of a Report #
DELETE /v1/accounts/{account_id}/reports/{report}/{id} Delete a Report #
PUT /v1/accounts/{account_id}/reports/{report}/{id}/abort Abort a Report #
GET /v1/accounts List accounts #
GET /v1/horizon_accounts List horizon accounts #
GET /v1/manageable_accounts Get accounts that admins can manage #
GET /v1/course_creation_accounts Get accounts that users can create courses in #
GET /v1/course_accounts List accounts for course admins #
GET /v1/accounts/{id} Get a single account #
PUT /v1/accounts/{id} Update an account #
GET /v1/accounts/{account_id}/settings Settings #
GET /v1/settings/environment List environment settings #
GET /v1/accounts/{account_id}/permissions Permissions #
GET /v1/accounts/{account_id}/sub_accounts Get the sub-accounts of an account #
POST /v1/accounts/{account_id}/sub_accounts Create a new sub-account #
GET /v1/accounts/{account_id}/terms_of_service Get the Terms of Service #
GET /v1/manually_created_courses_account Get the manually-created courses sub-account for the domain root account #
GET /v1/accounts/{account_id}/courses List active courses in an account #
POST /v1/accounts/{account_id}/courses Create a new course #
PUT /v1/accounts/{account_id}/courses Update courses #
DELETE /v1/accounts/{account_id}/users/{user_id} Delete a user from the root account #
DELETE /v1/accounts/{account_id}/users Delete multiple users from the root account #
GET /v1/accounts/{account_id}/users List users in account #
POST /v1/accounts/{account_id}/users Create a user #
PUT /v1/accounts/{account_id}/users/bulk_update Update multiple users #
PUT /v1/accounts/{account_id}/users/{user_id}/restore Restore a deleted user from a root account #
DELETE /v1/accounts/{account_id}/sub_accounts/{id} Delete a sub-account #
GET /lti/accounts/{account_id} Get account #
GET /v1/accounts/{account_id}/admins List account admins #
POST /v1/accounts/{account_id}/admins Make an account admin #
DELETE /v1/accounts/{account_id}/admins/{user_id} Remove account admin #
GET /v1/accounts/{account_id}/admins/self List my admin roles #
GET /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id} Show conversation #
DELETE /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id} Delete AI conversation #
GET /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations Get active conversation #
POST /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations Create AI conversation #
POST /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages Post message to conversation #
GET /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/evaluation Get conversation evaluation #
POST /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/evaluation Generate conversation evaluation #
POST /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback Create feedback on a conversation message #
DELETE /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback/{feedback_id} Delete feedback on a conversation message #
GET /v1/courses/{course_id}/ai_experiences List AI experiences #
POST /v1/courses/{course_id}/ai_experiences Create an AI experience #
GET /v1/courses/{course_id}/ai_experiences/{id} Show an AI experience #
PUT /v1/courses/{course_id}/ai_experiences/{id} Update an AI experience #
DELETE /v1/courses/{course_id}/ai_experiences/{id} Delete an AI experience #
GET /v1/courses/{course_id}/ai_experiences/new Show new AI experience form #
GET /v1/courses/{course_id}/ai_experiences/{id}/edit Show edit AI experience form #
GET /v1/courses/{course_id}/ai_experiences/{id}/ai_conversations List student AI conversations #
GET /v1/courses/{course_id}/ai_experiences/{id}/ai_conversations/{conversation_id} Show student AI conversation #
GET /v1/accounts/{account_id}/analytics/terms/{term_id}/activity Get department-level participation data #
GET /v1/accounts/{account_id}/analytics/current/activity Get department-level participation data #
GET /v1/accounts/{account_id}/analytics/completed/activity Get department-level participation data #
GET /v1/accounts/{account_id}/analytics/terms/{term_id}/grades Get department-level grade data #
GET /v1/accounts/{account_id}/analytics/current/grades Get department-level grade data #
GET /v1/accounts/{account_id}/analytics/completed/grades Get department-level grade data #
GET /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics Get department-level statistics #
GET /v1/accounts/{account_id}/analytics/current/statistics Get department-level statistics #
GET /v1/accounts/{account_id}/analytics/completed/statistics Get department-level statistics #
GET /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics_by_subaccount Get department-level statistics, broken down by subaccount #
GET /v1/accounts/{account_id}/analytics/current/statistics_by_subaccount Get department-level statistics, broken down by subaccount #
GET /v1/accounts/{account_id}/analytics/completed/statistics_by_subaccount Get department-level statistics, broken down by subaccount #
GET /v1/courses/{course_id}/analytics/activity Get course-level participation data #
GET /v1/courses/{course_id}/analytics/assignments Get course-level assignment data #
GET /v1/courses/{course_id}/analytics/student_summaries Get course-level student summary data #
GET /v1/courses/{course_id}/analytics/users/{student_id}/activity Get user-in-a-course-level participation data #
GET /v1/courses/{course_id}/analytics/users/{student_id}/assignments Get user-in-a-course-level assignment data #
GET /v1/courses/{course_id}/analytics/users/{student_id}/communication Get user-in-a-course-level messaging data #
GET /v1/courses/{course_id}/external_feeds List external feeds #
POST /v1/courses/{course_id}/external_feeds Create an external feed #
GET /v1/groups/{group_id}/external_feeds List external feeds #
POST /v1/groups/{group_id}/external_feeds Create an external feed #
DELETE /v1/courses/{course_id}/external_feeds/{external_feed_id} Delete an external feed #
DELETE /v1/groups/{group_id}/external_feeds/{external_feed_id} Delete an external feed #
GET /v1/announcements List announcements #
GET /v1/accounts/{account_id}/scopes List scopes #
GET /v1/appointment_groups List appointment groups #
POST /v1/appointment_groups Create an appointment group #
GET /v1/appointment_groups/{id} Get a single appointment group #
PUT /v1/appointment_groups/{id} Update an appointment group #
DELETE /v1/appointment_groups/{id} Delete an appointment group #
GET /v1/appointment_groups/{id}/users List user participants #
GET /v1/appointment_groups/{id}/groups List student group participants #
GET /v1/appointment_groups/next_appointment Get next appointment #
GET /v1/question_banks List question banks #
GET /v1/question_banks/{id} Get a single question bank #
GET /v1/question_banks/{id}/questions List assessment questions for a question bank #
POST /lti/asset_processors/{asset_processor_id}/reports Create an Asset Report #
PUT /lti/asset_processor_eulas/{context_external_tool_id}/deployment Update Eula Deployment Configuration #
POST /lti/asset_processor_eulas/{context_external_tool_id}/user Create an Eula Acceptance #
DELETE /lti/asset_processor_eulas/{context_external_tool_id}/user Delete Eula Acceptances for deployment #
POST /v1/courses/{course_id}/assignments/{assignment_id}/extensions Set extensions for student assignment submissions #
GET /v1/courses/{course_id}/assignment_groups List assignment groups #
POST /v1/courses/{course_id}/assignment_groups Create an Assignment Group #
GET /v1/courses/{course_id}/assignment_groups/{assignment_group_id} Get an Assignment Group #
PUT /v1/courses/{course_id}/assignment_groups/{assignment_group_id} Edit an Assignment Group #
DELETE /v1/courses/{course_id}/assignment_groups/{assignment_group_id} Destroy an Assignment Group #
DELETE /v1/courses/{course_id}/assignments/{id} Delete an assignment #
GET /v1/courses/{course_id}/assignments/{id} Get a single assignment #
PUT /v1/courses/{course_id}/assignments/{id} Edit an assignment #
GET /v1/courses/{course_id}/assignments List assignments #
POST /v1/courses/{course_id}/assignments Create an assignment #
GET /v1/courses/{course_id}/assignment_groups/{assignment_group_id}/assignments List assignments #
GET /v1/users/{user_id}/courses/{course_id}/assignments List assignments for user #
POST /v1/courses/{course_id}/assignments/{assignment_id}/duplicate Duplicate assignment #
GET /v1/courses/{course_id}/assignments/{assignment_id}/users/{user_id}/group_members List group members for a student on an assignment #
PUT /v1/courses/{course_id}/assignments/bulk_update Bulk update assignment dates #
GET /v1/courses/{course_id}/assignments/{assignment_id}/overrides List assignment overrides #
POST /v1/courses/{course_id}/assignments/{assignment_id}/overrides Create an assignment override #
GET /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id} Get a single assignment override #
PUT /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id} Update an assignment override #
DELETE /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id} Delete an assignment override #
GET /v1/groups/{group_id}/assignments/{assignment_id}/override Redirect to the assignment override for a group #
GET /v1/sections/{course_section_id}/assignments/{assignment_id}/override Redirect to the assignment override for a section #
GET /v1/courses/{course_id}/assignments/overrides Batch retrieve overrides in a course #
POST /v1/courses/{course_id}/assignments/overrides Batch create overrides in a course #
PUT /v1/courses/{course_id}/assignments/overrides Batch update overrides in a course #
GET /v1/accounts/{account_id}/authentication_providers List authentication providers #
POST /v1/accounts/{account_id}/authentication_providers Add authentication provider #
GET /v1/accounts/{account_id}/authentication_providers/{id} Get authentication provider #
PUT /v1/accounts/{account_id}/authentication_providers/{id} Update authentication provider #
DELETE /v1/accounts/{account_id}/authentication_providers/{id} Delete authentication provider #
PUT /v1/accounts/{account_id}/authentication_providers/{id}/restore Restore a deleted authentication provider #
GET /v1/accounts/{account_id}/sso_settings Show account auth settings #
PUT /v1/accounts/{account_id}/sso_settings Update account auth settings #
POST /v1/accounts/{account_id}/authentication_providers/force_password_reset Force password reset #
GET /v1/audit/authentication/logins/{login_id} Query by login. #
GET /v1/audit/authentication/accounts/{account_id} Query by account. #
GET /v1/audit/authentication/users/{user_id} Query by user. #
GET /v1/courses/{course_id}/blackout_dates List blackout dates #
POST /v1/courses/{course_id}/blackout_dates Create Blackout Date #
PUT /v1/courses/{course_id}/blackout_dates Update a list of Blackout Dates #
GET /v1/accounts/{account_id}/blackout_dates List blackout dates #
POST /v1/accounts/{account_id}/blackout_dates Create Blackout Date #
GET /v1/courses/{course_id}/blackout_dates/{id} Get a single blackout date #
PUT /v1/courses/{course_id}/blackout_dates/{id} Update Blackout Date #
DELETE /v1/courses/{course_id}/blackout_dates/{id} Delete Blackout Date #
GET /v1/accounts/{account_id}/blackout_dates/{id} Get a single blackout date #
PUT /v1/accounts/{account_id}/blackout_dates/{id} Update Blackout Date #
DELETE /v1/accounts/{account_id}/blackout_dates/{id} Delete Blackout Date #
GET /v1/courses/{course_id}/blackout_dates/new New Blackout Date #
GET /v1/accounts/{account_id}/blackout_dates/new New Blackout Date #
GET /v1/courses/{course_id}/block_editor_templates List block templates #
GET /v1/courses/{course_id}/blueprint_templates/{template_id} Get blueprint information #
GET /v1/courses/{course_id}/blueprint_templates/{template_id}/associated_courses Get associated course information #
PUT /v1/courses/{course_id}/blueprint_templates/{template_id}/update_associations Update associated courses #
POST /v1/courses/{course_id}/blueprint_templates/{template_id}/migrations Begin a migration to push to associated courses #
GET /v1/courses/{course_id}/blueprint_templates/{template_id}/migrations List blueprint migrations #
PUT /v1/courses/{course_id}/blueprint_templates/{template_id}/restrict_item Set or remove restrictions on a blueprint course object #
GET /v1/courses/{course_id}/blueprint_templates/{template_id}/unsynced_changes Get unsynced changes #
GET /v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id} Show a blueprint migration #
GET /v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id}/details Get migration details #
GET /v1/courses/{course_id}/blueprint_subscriptions List blueprint subscriptions #
GET /v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations List blueprint imports #
GET /v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id} Show a blueprint import #
GET /v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id}/details Get import details #
GET /v1/users/self/bookmarks List bookmarks #
POST /v1/users/self/bookmarks Create bookmark #
GET /v1/users/self/bookmarks/{id} Get bookmark #
PUT /v1/users/self/bookmarks/{id} Update bookmark #
DELETE /v1/users/self/bookmarks/{id} Delete bookmark #
GET /v1/brand_variables Get the brand config variables that should be used for this domain #
GET /v1/accounts/{account_id}/brand_variables Get the brand config variables for a sub-account or course #
GET /v1/courses/{course_id}/brand_variables Get the brand config variables for a sub-account or course #
GET /v1/calendar_events List calendar events #
POST /v1/calendar_events Create a calendar event #
GET /v1/users/{user_id}/calendar_events List calendar events for a user #
GET /v1/calendar_events/{id} Get a single calendar event or assignment #
PUT /v1/calendar_events/{id} Update a calendar event #
DELETE /v1/calendar_events/{id} Delete a calendar event #
POST /v1/calendar_events/{id}/reservations Reserve a time slot #
POST /v1/calendar_events/{id}/reservations/{participant_id} Reserve a time slot #
POST /v1/calendar_events/save_enabled_account_calendars Save enabled account calendars #
POST /v1/courses/{course_id}/calendar_events/timetable Set a course timetable #
GET /v1/courses/{course_id}/calendar_events/timetable Get course timetable #
POST /v1/courses/{course_id}/calendar_events/timetable_events Create or update events directly for a course timetable #
GET /v1/career/enabled Check if Canvas Career is enabled #
GET /v1/career/experience_summary Get current and available experiences #
POST /v1/career/switch_experience Switch experience #
POST /v1/career/switch_role Switch role #
GET /v1/career/user_context Get career user context #
GET /v1/courses/{course_id}/collaborations List collaborations #
GET /v1/groups/{group_id}/collaborations List collaborations #
GET /v1/collaborations/{id}/members List members of a collaboration. #
GET /v1/courses/{course_id}/potential_collaborators List potential members #
GET /v1/groups/{group_id}/potential_collaborators List potential members #
GET /v1/comm_messages List of CommMessages for a user #
GET /v1/users/{user_id}/communication_channels List user communication channels #
POST /v1/users/{user_id}/communication_channels Create a communication channel #
DELETE /v1/users/{user_id}/communication_channels/{id} Delete a communication channel #
DELETE /v1/users/{user_id}/communication_channels/{type}/{address} Delete a communication channel #
DELETE /v1/users/self/communication_channels/push Delete a push notification endpoint #
GET /v1/courses/{course_id}/conferences List conferences #
GET /v1/groups/{group_id}/conferences List conferences #
GET /v1/conferences List conferences for the current user #
GET /v1/courses/{course_id}/content_exports List content exports #
POST /v1/courses/{course_id}/content_exports Export content #
GET /v1/groups/{group_id}/content_exports List content exports #
POST /v1/groups/{group_id}/content_exports Export content #
GET /v1/users/{user_id}/content_exports List content exports #
POST /v1/users/{user_id}/content_exports Export content #
GET /v1/courses/{course_id}/content_exports/{id} Show content export #
GET /v1/groups/{group_id}/content_exports/{id} Show content export #
GET /v1/users/{user_id}/content_exports/{id} Show content export #
GET /v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues List migration issues #
GET /v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues List migration issues #
GET /v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues List migration issues #
GET /v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues List migration issues #
GET /v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues/{id} Get a migration issue #
PUT /v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues/{id} Update a migration issue #
GET /v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues/{id} Get a migration issue #
PUT /v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues/{id} Update a migration issue #
GET /v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues/{id} Get a migration issue #
PUT /v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues/{id} Update a migration issue #
GET /v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues/{id} Get a migration issue #
PUT /v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues/{id} Update a migration issue #
GET /v1/accounts/{account_id}/content_migrations List content migrations #
POST /v1/accounts/{account_id}/content_migrations Create a content migration #
GET /v1/courses/{course_id}/content_migrations List content migrations #
POST /v1/courses/{course_id}/content_migrations Create a content migration #
GET /v1/groups/{group_id}/content_migrations List content migrations #
POST /v1/groups/{group_id}/content_migrations Create a content migration #
GET /v1/users/{user_id}/content_migrations List content migrations #
POST /v1/users/{user_id}/content_migrations Create a content migration #
GET /v1/accounts/{account_id}/content_migrations/{id} Get a content migration #
PUT /v1/accounts/{account_id}/content_migrations/{id} Update a content migration #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/canvas-lms-rest-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

canvas-lms-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Canvas LMS REST API
  version: v1
  summary: The complete Canvas LMS REST API, converted from the Swagger 1.2 documents Instructure publishes under https://canvas.instructure.com/doc/api/.
  description: |-
    The Canvas LMS REST API covers courses, assignments, quizzes, grades, users, enrollments, accounts, files, modules, rubrics, submissions, SIS imports, LTI, analytics and account administration.

    PROVENANCE: this document is a mechanical conversion of the 144 first-party Swagger 1.2 resource documents Instructure publishes at https://canvas.instructure.com/doc/api/api-docs.json and https://canvas.instructure.com/doc/api/<resource>.json. Every path, operation, operationId (Canvas "nickname"), parameter, model and response message comes from those documents verbatim; the verbatim harvest is archived in openapi/_original/swagger-1.2/. Nothing here was authored by API Evangelist except the OpenAPI 3.1 scaffolding, the servers block (from the Swagger basePath) and the securitySchemes block (from https://canvas.instructure.com/doc/api/file.oauth.html).
  contact:
    name: Instructure Canvas
    url: https://canvas.instructure.com/doc/api/
  license:
    name: AGPL-3.0
    url: https://github.com/instructure/canvas-lms/blob/master/LICENSE
externalDocs:
  description: Canvas LMS REST API Documentation
  url: https://canvas.instructure.com/doc/api/
x-generated-from: https://canvas.instructure.com/doc/api/api-docs.json
x-provenance:
  method: derived
  derived_by: API Evangelist enrichment pipeline (Swagger 1.2 -> OpenAPI 3.1 conversion)
  source: openapi/_original/swagger-1.2/*.json (144 verbatim first-party Swagger 1.2 documents)
  source_url: https://canvas.instructure.com/doc/api/api-docs.json
  fetched: '2026-09-05'
  http_status: 200
servers:
- url: https://canvas.instructure.com/api
  description: Instructure-hosted Canvas (canvas.instructure.com)
- url: https://{canvas_host}/api
  description: Any Canvas instance; Canvas is multi-tenant and self-hostable, so the host is the institution's Canvas domain.
  variables:
    canvas_host:
      default: canvas.instructure.com
      description: Your institution's Canvas hostname, e.g. school.instructure.com
security:
- bearerAuth: []
- oauth2: []
tags:
- name: Access Tokens
  x-resource: access_tokens
  externalDocs:
    url: https://canvas.instructure.com/doc/api/access_tokens.html
- name: Accessibility Course Scans
  x-resource: accessibility_course_scans
  externalDocs:
    url: https://canvas.instructure.com/doc/api/accessibility_course_scans.html
- name: Accessibility Course Statistics
  x-resource: accessibility_course_statistics
  externalDocs:
    url: https://canvas.instructure.com/doc/api/accessibility_course_statistics.html
- name: Account Calendars
  x-resource: account_calendars
  externalDocs:
    url: https://canvas.instructure.com/doc/api/account_calendars.html
- name: Account Domain Lookups
  x-resource: account_domain_lookups
  externalDocs:
    url: https://canvas.instructure.com/doc/api/account_domain_lookups.html
- name: Account Notifications
  x-resource: account_notifications
  externalDocs:
    url: https://canvas.instructure.com/doc/api/account_notifications.html
- name: Account Reports
  x-resource: account_reports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/account_reports.html
- name: Accounts
  x-resource: accounts
  externalDocs:
    url: https://canvas.instructure.com/doc/api/accounts.html
- name: Accounts (Lti)
  x-resource: accounts_(lti)
  externalDocs:
    url: https://canvas.instructure.com/doc/api/accounts_(lti).html
- name: Admins
  x-resource: admins
  externalDocs:
    url: https://canvas.instructure.com/doc/api/admins.html
- name: Ai Conversations
  x-resource: ai_conversations
  externalDocs:
    url: https://canvas.instructure.com/doc/api/ai_conversations.html
- name: Ai Experiences
  x-resource: ai_experiences
  externalDocs:
    url: https://canvas.instructure.com/doc/api/ai_experiences.html
- name: Analytics
  x-resource: analytics
  externalDocs:
    url: https://canvas.instructure.com/doc/api/analytics.html
- name: Announcement External Feeds
  x-resource: announcement_external_feeds
  externalDocs:
    url: https://canvas.instructure.com/doc/api/announcement_external_feeds.html
- name: Announcements
  x-resource: announcements
  externalDocs:
    url: https://canvas.instructure.com/doc/api/announcements.html
- name: Api Token Scopes
  x-resource: api_token_scopes
  externalDocs:
    url: https://canvas.instructure.com/doc/api/api_token_scopes.html
- name: Appointment Groups
  x-resource: appointment_groups
  externalDocs:
    url: https://canvas.instructure.com/doc/api/appointment_groups.html
- name: Assessment Question Banks
  x-resource: assessment_question_banks
  externalDocs:
    url: https://canvas.instructure.com/doc/api/assessment_question_banks.html
- name: Asset Processor
  x-resource: asset_processor
  externalDocs:
    url: https://canvas.instructure.com/doc/api/asset_processor.html
- name: Assignment Extensions
  x-resource: assignment_extensions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/assignment_extensions.html
- name: Assignment Groups
  x-resource: assignment_groups
  externalDocs:
    url: https://canvas.instructure.com/doc/api/assignment_groups.html
- name: Assignments
  x-resource: assignments
  externalDocs:
    url: https://canvas.instructure.com/doc/api/assignments.html
- name: Authentication Providers
  x-resource: authentication_providers
  externalDocs:
    url: https://canvas.instructure.com/doc/api/authentication_providers.html
- name: Authentications Log
  x-resource: authentications_log
  externalDocs:
    url: https://canvas.instructure.com/doc/api/authentications_log.html
- name: Blackout Dates
  x-resource: blackout_dates
  externalDocs:
    url: https://canvas.instructure.com/doc/api/blackout_dates.html
- name: Block Editor Template
  x-resource: block_editor_template
  externalDocs:
    url: https://canvas.instructure.com/doc/api/block_editor_template.html
- name: Blueprint Courses
  x-resource: blueprint_courses
  externalDocs:
    url: https://canvas.instructure.com/doc/api/blueprint_courses.html
- name: Bookmarks
  x-resource: bookmarks
  externalDocs:
    url: https://canvas.instructure.com/doc/api/bookmarks.html
- name: Brand Configs
  x-resource: brand_configs
  externalDocs:
    url: https://canvas.instructure.com/doc/api/brand_configs.html
- name: Calendar Events
  x-resource: calendar_events
  externalDocs:
    url: https://canvas.instructure.com/doc/api/calendar_events.html
- name: Canvas Career Experiences
  x-resource: canvas_career_experiences
  externalDocs:
    url: https://canvas.instructure.com/doc/api/canvas_career_experiences.html
- name: Canvas Career User Context
  x-resource: canvas_career_user_context
  externalDocs:
    url: https://canvas.instructure.com/doc/api/canvas_career_user_context.html
- name: Collaborations
  x-resource: collaborations
  externalDocs:
    url: https://canvas.instructure.com/doc/api/collaborations.html
- name: Comm Messages
  x-resource: comm_messages
  externalDocs:
    url: https://canvas.instructure.com/doc/api/comm_messages.html
- name: Communication Channels
  x-resource: communication_channels
  externalDocs:
    url: https://canvas.instructure.com/doc/api/communication_channels.html
- name: Conferences
  x-resource: conferences
  externalDocs:
    url: https://canvas.instructure.com/doc/api/conferences.html
- name: Content Exports
  x-resource: content_exports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/content_exports.html
- name: Content Migrations
  x-resource: content_migrations
  externalDocs:
    url: https://canvas.instructure.com/doc/api/content_migrations.html
- name: Content Security Policy Settings
  x-resource: content_security_policy_settings
  externalDocs:
    url: https://canvas.instructure.com/doc/api/content_security_policy_settings.html
- name: Content Shares
  x-resource: content_shares
  externalDocs:
    url: https://canvas.instructure.com/doc/api/content_shares.html
- name: Conversations
  x-resource: conversations
  externalDocs:
    url: https://canvas.instructure.com/doc/api/conversations.html
- name: Course Audit Log
  x-resource: course_audit_log
  externalDocs:
    url: https://canvas.instructure.com/doc/api/course_audit_log.html
- name: Course Pace
  x-resource: course_pace
  externalDocs:
    url: https://canvas.instructure.com/doc/api/course_pace.html
- name: Course Quiz Extensions
  x-resource: course_quiz_extensions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/course_quiz_extensions.html
- name: Course Reports
  x-resource: course_reports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/course_reports.html
- name: Courses
  x-resource: courses
  externalDocs:
    url: https://canvas.instructure.com/doc/api/courses.html
- name: Custom Gradebook Columns
  x-resource: custom_gradebook_columns
  externalDocs:
    url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html
- name: Developer Key Account Bindings
  x-resource: developer_key_account_bindings
  externalDocs:
    url: https://canvas.instructure.com/doc/api/developer_key_account_bindings.html
- name: Developer Keys
  x-resource: developer_keys
  externalDocs:
    url: https://canvas.instructure.com/doc/api/developer_keys.html
- name: Discovery Pages
  x-resource: discovery_pages
  externalDocs:
    url: https://canvas.instructure.com/doc/api/discovery_pages.html
- name: Discussion Topics
  x-resource: discussion_topics
  externalDocs:
    url: https://canvas.instructure.com/doc/api/discussion_topics.html
- name: E Portfolios
  x-resource: e_portfolios
  externalDocs:
    url: https://canvas.instructure.com/doc/api/e_portfolios.html
- name: E Pub Exports
  x-resource: e_pub_exports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/e_pub_exports.html
- name: Enrollment Terms
  x-resource: enrollment_terms
  externalDocs:
    url: https://canvas.instructure.com/doc/api/enrollment_terms.html
- name: Enrollments
  x-resource: enrollments
  externalDocs:
    url: https://canvas.instructure.com/doc/api/enrollments.html
- name: Error Reports
  x-resource: error_reports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/error_reports.html
- name: External Tools
  x-resource: external_tools
  externalDocs:
    url: https://canvas.instructure.com/doc/api/external_tools.html
- name: Favorites
  x-resource: favorites
  externalDocs:
    url: https://canvas.instructure.com/doc/api/favorites.html
- name: Feature Flags
  x-resource: feature_flags
  externalDocs:
    url: https://canvas.instructure.com/doc/api/feature_flags.html
- name: Files
  x-resource: files
  externalDocs:
    url: https://canvas.instructure.com/doc/api/files.html
- name: Grade Change Log
  x-resource: grade_change_log
  externalDocs:
    url: https://canvas.instructure.com/doc/api/grade_change_log.html
- name: Gradebook History
  x-resource: gradebook_history
  externalDocs:
    url: https://canvas.instructure.com/doc/api/gradebook_history.html
- name: Grading Period Sets
  x-resource: grading_period_sets
  externalDocs:
    url: https://canvas.instructure.com/doc/api/grading_period_sets.html
- name: Grading Periods
  x-resource: grading_periods
  externalDocs:
    url: https://canvas.instructure.com/doc/api/grading_periods.html
- name: Grading Standards
  x-resource: grading_standards
  externalDocs:
    url: https://canvas.instructure.com/doc/api/grading_standards.html
- name: Graph Ql
  x-resource: graph_ql
  externalDocs:
    url: https://canvas.instructure.com/doc/api/graph_ql.html
- name: Group Categories
  x-resource: group_categories
  externalDocs:
    url: https://canvas.instructure.com/doc/api/group_categories.html
- name: Groups
  x-resource: groups
  externalDocs:
    url: https://canvas.instructure.com/doc/api/groups.html
- name: History
  x-resource: history
  externalDocs:
    url: https://canvas.instructure.com/doc/api/history.html
- name: Inst Access Tokens
  x-resource: inst_access_tokens
  externalDocs:
    url: https://canvas.instructure.com/doc/api/inst_access_tokens.html
- name: Jw Ts
  x-resource: jw_ts
  externalDocs:
    url: https://canvas.instructure.com/doc/api/jw_ts.html
- name: Late Policy
  x-resource: late_policy
  externalDocs:
    url: https://canvas.instructure.com/doc/api/late_policy.html
- name: Learning Object Dates
  x-resource: learning_object_dates
  externalDocs:
    url: https://canvas.instructure.com/doc/api/learning_object_dates.html
- name: Line Items
  x-resource: line_items
  externalDocs:
    url: https://canvas.instructure.com/doc/api/line_items.html
- name: Live Assessments
  x-resource: live_assessments
  externalDocs:
    url: https://canvas.instructure.com/doc/api/live_assessments.html
- name: Logins
  x-resource: logins
  externalDocs:
    url: https://canvas.instructure.com/doc/api/logins.html
- name: Lti Context Controls
  x-resource: lti_context_controls
  externalDocs:
    url: https://canvas.instructure.com/doc/api/lti_context_controls.html
- name: Lti Launch Definitions
  x-resource: lti_launch_definitions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/lti_launch_definitions.html
- name: Lti Registrations
  x-resource: lti_registrations
  externalDocs:
    url: https://canvas.instructure.com/doc/api/lti_registrations.html
- name: Lti Resource Links
  x-resource: lti_resource_links
  externalDocs:
    url: https://canvas.instructure.com/doc/api/lti_resource_links.html
- name: Media Objects
  x-resource: media_objects
  externalDocs:
    url: https://canvas.instructure.com/doc/api/media_objects.html
- name: Moderated Grading
  x-resource: moderated_grading
  externalDocs:
    url: https://canvas.instructure.com/doc/api/moderated_grading.html
- name: Modules
  x-resource: modules
  externalDocs:
    url: https://canvas.instructure.com/doc/api/modules.html
- name: Names And Role
  x-resource: names_and_role
  externalDocs:
    url: https://canvas.instructure.com/doc/api/names_and_role.html
- name: New Quiz Items
  x-resource: new_quiz_items
  externalDocs:
    url: https://canvas.instructure.com/doc/api/new_quiz_items.html
- name: New Quizzes
  x-resource: new_quizzes
  externalDocs:
    url: https://canvas.instructure.com/doc/api/new_quizzes.html
- name: New Quizzes Accommodations
  x-resource: new_quizzes_accommodations
  externalDocs:
    url: https://canvas.instructure.com/doc/api/new_quizzes_accommodations.html
- name: New Quizzes Reports
  x-resource: new_quizzes_reports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/new_quizzes_reports.html
- name: Notice Handlers
  x-resource: notice_handlers
  externalDocs:
    url: https://canvas.instructure.com/doc/api/notice_handlers.html
- name: Notification Preferences
  x-resource: notification_preferences
  externalDocs:
    url: https://canvas.instructure.com/doc/api/notification_preferences.html
- name: Originality Reports
  x-resource: originality_reports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/originality_reports.html
- name: Outcome Groups
  x-resource: outcome_groups
  externalDocs:
    url: https://canvas.instructure.com/doc/api/outcome_groups.html
- name: Outcome Imports
  x-resource: outcome_imports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/outcome_imports.html
- name: Outcome Results
  x-resource: outcome_results
  externalDocs:
    url: https://canvas.instructure.com/doc/api/outcome_results.html
- name: Outcomes
  x-resource: outcomes
  externalDocs:
    url: https://canvas.instructure.com/doc/api/outcomes.html
- name: Pages
  x-resource: pages
  externalDocs:
    url: https://canvas.instructure.com/doc/api/pages.html
- name: Peer Reviews
  x-resource: peer_reviews
  externalDocs:
    url: https://canvas.instructure.com/doc/api/peer_reviews.html
- name: Plagiarism Detection Platform Assignments
  x-resource: plagiarism_detection_platform_assignments
  externalDocs:
    url: https://canvas.instructure.com/doc/api/plagiarism_detection_platform_assignments.html
- name: Plagiarism Detection Platform Users
  x-resource: plagiarism_detection_platform_users
  externalDocs:
    url: https://canvas.instructure.com/doc/api/plagiarism_detection_platform_users.html
- name: Plagiarism Detection Submissions
  x-resource: plagiarism_detection_submissions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/plagiarism_detection_submissions.html
- name: Planner
  x-resource: planner
  externalDocs:
    url: https://canvas.instructure.com/doc/api/planner.html
- name: Poll Choices
  x-resource: poll_choices
  externalDocs:
    url: https://canvas.instructure.com/doc/api/poll_choices.html
- name: Poll Sessions
  x-resource: poll_sessions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/poll_sessions.html
- name: Poll Submissions
  x-resource: poll_submissions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/poll_submissions.html
- name: Polls
  x-resource: polls
  externalDocs:
    url: https://canvas.instructure.com/doc/api/polls.html
- name: Portfolio Notifications
  x-resource: portfolio_notifications
  externalDocs:
    url: https://canvas.instructure.com/doc/api/portfolio_notifications.html
- name: Proficiency Ratings
  x-resource: proficiency_ratings
  externalDocs:
    url: https://canvas.instructure.com/doc/api/proficiency_ratings.html
- name: Progress
  x-resource: progress
  externalDocs:
    url: https://canvas.instructure.com/doc/api/progress.html
- name: Public Jwk
  x-resource: public_jwk
  externalDocs:
    url: https://canvas.instructure.com/doc/api/public_jwk.html
- name: Quiz Assignment Overrides
  x-resource: quiz_assignment_overrides
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_assignment_overrides.html
- name: Quiz Extensions
  x-resource: quiz_extensions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_extensions.html
- name: Quiz Ip Filters
  x-resource: quiz_ip_filters
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_ip_filters.html
- name: Quiz Question Groups
  x-resource: quiz_question_groups
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_question_groups.html
- name: Quiz Questions
  x-resource: quiz_questions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_questions.html
- name: Quiz Reports
  x-resource: quiz_reports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_reports.html
- name: Quiz Statistics
  x-resource: quiz_statistics
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_statistics.html
- name: Quiz Submission Events
  x-resource: quiz_submission_events
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_submission_events.html
- name: Quiz Submission Files
  x-resource: quiz_submission_files
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_submission_files.html
- name: Quiz Submission Questions
  x-resource: quiz_submission_questions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_submission_questions.html
- name: Quiz Submission User List
  x-resource: quiz_submission_user_list
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_submission_user_list.html
- name: Quiz Submissions
  x-resource: quiz_submissions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quiz_submissions.html
- name: Quizzes
  x-resource: quizzes
  externalDocs:
    url: https://canvas.instructure.com/doc/api/quizzes.html
- name: Result
  x-resource: result
  externalDocs:
    url: https://canvas.instructure.com/doc/api/result.html
- name: Roles
  x-resource: roles
  externalDocs:
    url: https://canvas.instructure.com/doc/api/roles.html
- name: Rubrics
  x-resource: rubrics
  externalDocs:
    url: https://canvas.instructure.com/doc/api/rubrics.html
- name: Sandboxes
  x-resource: sandboxes
  externalDocs:
    url: https://canvas.instructure.com/doc/api/sandboxes.html
- name: Score
  x-resource: score
  externalDocs:
    url: https://canvas.instructure.com/doc/api/score.html
- name: Search
  x-resource: search
  externalDocs:
    url: https://canvas.instructure.com/doc/api/search.html
- name: Sections
  x-resource: sections
  externalDocs:
    url: https://canvas.instructure.com/doc/api/sections.html
- name: Services
  x-resource: services
  externalDocs:
    url: https://canvas.instructure.com/doc/api/services.html
- name: Shared Brand Configs
  x-resource: shared_brand_configs
  externalDocs:
    url: https://canvas.instructure.com/doc/api/shared_brand_configs.html
- name: Sis Import Errors
  x-resource: sis_import_errors
  externalDocs:
    url: https://canvas.instructure.com/doc/api/sis_import_errors.html
- name: Sis Imports
  x-resource: sis_imports
  externalDocs:
    url: https://canvas.instructure.com/doc/api/sis_imports.html
- name: Sis Integration
  x-resource: sis_integration
  externalDocs:
    url: https://canvas.instructure.com/doc/api/sis_integration.html
- name: Smart Search
  x-resource: smart_search
  externalDocs:
    url: https://canvas.instructure.com/doc/api/smart_search.html
- name: Study Assist
  x-resource: study_assist
  externalDocs:
    url: https://canvas.instructure.com/doc/api/study_assist.html
- name: Submission Comments
  x-resource: submission_comments
  externalDocs:
    url: https://canvas.instructure.com/doc/api/submission_comments.html
- name: Submissions
  x-resource: submissions
  externalDocs:
    url: https://canvas.instructure.com/doc/api/submissions.html
- name: Tabs
  x-resource: tabs
  externalDocs:
    url: https://canvas.instructure.com/doc/api/tabs.html
- name: Temporary Enrollment Pairings
  x-resource: temporary_enrollment_pairings
  externalDocs:
    url: https://canvas.instructure.com/doc/api/temporary_enrollment_pairings.html
- name: User Observees
  x-resource: user_observees
  externalDocs:
    url: https://canvas.instructure.com/doc/api/user_observees.html
- name: Users
  x-resource: users
  externalDocs:
    url: https://canvas.instructure.com/doc/api/users.html
- name: Webhooks Subscriptions For Plagiarism Platform
  x-resource: webhooks_subscriptions_for_plagiarism_platform
  externalDocs:
    url: https://canvas.instructure.com/doc/api/webhooks_subscriptions_for_plagiarism_platform.html
- name: What If Grades
  x-resource: what_if_grades
  externalDocs:
    url: https://canvas.instructure.com/doc/api/what_if_grades.html
paths:
  /v1/users/{user_id}/user_generated_tokens:
    get:
      tags:
      - Access Tokens
      operationId: list_access_tokens_for_user
      summary: List access tokens for a user
      description: |-
        Returns a list of manually generated access tokens for the specified user.
        Note that the actual token values are only returned when the token is first created.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: per_page
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: The number of results to return per page. Defaults to 10. Maximum of 100.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Token'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/access_tokens.html
  /v1/users/{user_id}/tokens/{id}:
    get:
      tags:
      - Access Tokens
      operationId: show_access_token
      summary: Show an access token
      description: The ID can be the actual database ID of the token, or the 'token_hint' value.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: id
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/access_tokens.html
    put:
      tags:
      - Access Tokens
      operationId: update_access_token
      summary: Update an access token
      description: |-
        Update an existing access token.

        The ID can be the actual database ID of the token, or the 'token_hint' value.

        Regenerating an expired token requires a new expiration date.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema: &id001
              type: object
              properties:
                token[purpose]:
                  type: string
                  description: The purpose of the token.
                token[expires_at]:
                  type: string
                  format: date-time
                  description: The time at which the token will expire.
                token[scopes]:
                  type: array
                  items:
                    type: array
                    items: {}
                  description: The scopes to associate with the token.
                token[regenerate]:
                  type: boolean
                  description: Regenerate the actual token.
          application/x-www-form-urlencoded:
            schema: *id001
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/access_tokens.html
    delete:
      tags:
      - Access Tokens
      operationId: delete_access_token
      summary: Delete an access token
      description: The ID can be the actual database ID of the token, or the 'token_hint' value.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: id
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/access_tokens.html
  /v1/users/{user_id}/tokens:
    post:
      tags:
      - Access Tokens
      operationId: create_access_token
      summary: Create an access token
      description: |-
        Create a new access token for the specified user.
        If the user is not the current user, the token will be created as "pending",
        and must be activated by the user before it can be used.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema: &id002
              type: object
              properties:
                token[purpose]:
                  type: string
                  description: The purpose of the token.
                token[expires_at]:
                  type: string
                  format: date-time
                  description: The time at which the token will expire.
                token[scopes]:
                  type: array
                  items:
                    type: array
                    items: {}
                  description: |-
                    The scopes to associate with the token.
                    Ignored if the default developer key does not have the "enable scopes" option enabled.
                    In such cases, the token will inherit the user's permissions instead.
              required:
              - token[purpose]
          application/x-www-form-urlencoded:
            schema: *id002
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/access_tokens.html
  /v1/users/{user_id}/educator_accessibility_course_scan:
    post:
      tags:
      - Accessibility Course Scans
      operationId: trigger_accessibility_course_scan
      summary: Trigger accessibility course scan
      description: |-
        Queues a background job that scans all a11y-enabled courses where the
        user has an active teacher or designer enrollment. Idempotent — if a
        scan is already queued or running, the existing Progress is returned.

        Requires the educator_dashboard feature flag on the root account and
        a11y_checker_account_statistics on site admin.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: |-
          The ID of the user, or "self" for the current user.
          The requesting user may only trigger a scan for themselves.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: Progress
      externalDocs:
        url: https://canvas.instructure.com/doc/api/accessibility_course_scans.html
  /v1/users/{user_id}/educator_accessibility_course_statistics:
    get:
      tags:
      - Accessibility Course Statistics
      operationId: list_accessibility_course_statistics
      summary: List accessibility course statistics
      description: |-
        Returns per-course accessibility issue statistics for the current user's
        active teacher and designer courses. Only courses where the accessibility
        checker is enabled and whose workflow state is neither completed nor deleted
        are included. Only statistic records with workflow_state "active" are returned.

        Requires the educator_dashboard feature flag to be enabled on the root
        account, and a11y_checker_account_statistics on site admin plus a11y_checker
        on the account (i.e. a11y_checker_account_statistics? must be true).
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: |-
          The ID of the user, or "self" for the current user.
          The requesting user may only retrieve their own statistics.
      - name: enrollment_term_id
        in: query
        schema:
          type: string
        required: false
        description: |-
          When present, only include courses that belong to the given enrollment
          term(s). Accepts a single term id or an array
          (enrollment_term_id[]=1&enrollment_term_id[]=2), and each value may be a
          term id or SIS term id. Returns 404 if any given term does not exist in
          this account.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccessibilityCourseStatistic'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/accessibility_course_statistics.html
  /v1/users/{user_id}/educator_accessibility_course_terms:
    get:
      tags:
      - Accessibility Course Statistics
      operationId: list_accessibility_course_statistic_terms
      summary: List accessibility course statistic terms
      description: |-
        Returns the distinct enrollment terms that the current user's active teacher
        and designer courses belong to -- the same courses reported by the List
        accessibility course statistics endpoint. Use this to populate a term filter
        for that endpoint. There is no "all terms" entry; "all terms" is represented
        by omitting the enrollment_term_id filter.

        Requires the same account settings and feature flags as the statistics
        endpoint.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: |-
          The ID of the user, or "self" for the current user.
          The requesting user may only retrieve their own terms.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
            

# --- truncated at 32 KB (2386 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/openapi/canvas-lms-openapi.yml