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/.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 x-canvas-declared-type: EnrollmentTerm externalDocs: url: https://canvas.instructure.com/doc/api/accessibility_course_statistics.html /v1/account_calendars: get: tags: - Account Calendars operationId: list_available_account_calendars summary: List available account calendars description: |- Returns a paginated list of account calendars available to the current user. Includes visible account calendars where the user has an account association. parameters: - name: search_term in: query schema: type: string required: false description: |- When included, searches available account calendars for the term. Returns matching results. Term must be at least 2 characters. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: '{ "account_calendars": AccountCalendar, "total_results": "integer"}' externalDocs: url: https://canvas.instructure.com/doc/api/account_calendars.html /v1/account_calendars/{account_id}: get: tags: - Account Calendars operationId: get_single_account_calendar summary: Get a single account calendar description: Get details about a specific account calendar. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AccountCalendar' externalDocs: url: https://canvas.instructure.com/doc/api/account_calendars.html put: tags: - Account Calendars operationId: update_calendar summary: Update a calendar description: |- Set an account calendar's visibility and auto_subscribe values. Requires the `manage_account_calendar_visibility` permission on the account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id003 type: object properties: visible: type: boolean description: |- Allow administrators with `manage_account_calendar_events` permission to create events on this calendar, and allow users to view this calendar and its events. auto_subscribe: type: boolean description: |- When true, users will automatically see events from this account in their calendar, even if they haven't manually added that calendar. application/x-www-form-urlencoded: schema: *id003 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AccountCalendar' externalDocs: url: https://canvas.instructure.com/doc/api/account_calendars.html /v1/accounts/{account_id}/account_calendars: put: tags: - Account Calendars operationId: update_several_calendars summary: Update several calendars description: |- Set visibility and/or auto_subscribe on many calendars simultaneously. Requires the `manage_account_calendar_visibility` permission on the account. Accepts a JSON array of objects containing 2-3 keys each: `id` (the account's id, required), `visible` (a boolean indicating whether the account calendar is visible), and `auto_subscribe` (a boolean indicating whether users should see these events in their calendar without manually subscribing). Returns the count of updated accounts. parameters: - name: account_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/account_calendars.html get: tags: - Account Calendars operationId: list_all_account_calendars summary: List all account calendars description: |- Returns a paginated list of account calendars for the provided account and its first level of sub-accounts. Includes hidden calendars in the response. Requires the `manage_account_calendar_visibility` permission. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: |- When included, searches all descendent accounts of provided account for the term. Returns matching results. Term must be at least 2 characters. Can be combined with a filter value. - name: filter in: query schema: type: string enum: - visible - hidden required: false description: |- When included, only returns calendars that are either visible or hidden. Can be combined with a search term. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AccountCalendar' externalDocs: url: https://canvas.instructure.com/doc/api/account_calendars.html /v1/accounts/{account_id}/visible_calendars_count: get: tags: - Account Calendars operationId: count_of_all_visible_account_calendars summary: Count of all visible account calendars description: Returns the number of visible account calendars. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{ "count": "integer" }' externalDocs: url: https://canvas.instructure.com/doc/api/account_calendars.html /v1/accounts/search: get: tags: - Account Domain Lookups operationId: search_account_domains summary: Search account domains description: |- Returns a list of up to 5 matching account domains Partial match on name / domain are supported parameters: - name: name in: query schema: type: string required: false description: campus name - name: domain in: query schema: type: string required: false description: no description - name: latitude in: query schema: type: number required: false description: no description - name: longitude in: query schema: type: number required: false description: no description responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/account_domain_lookups.html /v1/accounts/{account_id}/account_notifications: get: tags: - Account Notifications operationId: index_of_active_global_notification_for_user summary: Index of active global notification for the user description: |- Returns a list of all global notifications in the account for the current user Any notifications that have been closed by the user will not be returned, unless a include_past parameter is passed in as true. Admins can request all global notifications for the account by passing in an include_all parameter. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: include_past in: query schema: type: boolean required: false description: Include past and dismissed global announcements. - name: include_all in: query schema: type: boolean required: false description: Include all global announcements, regardless of user's role or availability date. Only available to account admins. - name: show_is_closed in: query schema: type: boolean required: false description: Include a flag for each notification indicating whether it has been read by the user. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AccountNotification' externalDocs: url: https://canvas.instructure.com/doc/api/account_notifications.html post: tags: - Account Notifications operationId: create_global_notification summary: Create a global notification description: Create and return a new global notification for an account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id004 type: object properties: account_notification[subject]: type: string description: The subject of the notification. account_notification[message]: type: string description: The message body of the notification. account_notification[start_at]: type: string format: date-time description: |- The start date and time of the notification in ISO8601 format. e.g. 2014-01-01T01:00Z account_notification[end_at]: type: string format: date-time description: |- The end date and time of the notification in ISO8601 format. e.g. 2014-01-01T01:00Z account_notification[icon]: type: string enum: - warning - information - question - error - calendar description: |- The icon to display with the notification. Note: Defaults to warning. account_notification_roles: type: array items: type: string description: |- The role(s) to send global notification to. Note: ommitting this field will send to everyone Example: account_notification_roles: ["StudentEnrollment", "TeacherEnrollment"] required: - account_notification[subject] - account_notification[message] - account_notification[start_at] - account_notification[end_at] application/x-www-form-urlencoded: schema: *id004 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/account_notifications.html /v1/accounts/{account_id}/account_notifications/{id}: get: tags: - Account Notifications operationId: show_global_notification summary: Show a global notification description: |- Returns a global notification for the current user A notification that has been closed by the user will not be returned parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/AccountNotification' externalDocs: url: https://canvas.instructure.com/doc/api/account_notifications.html put: tags: - Account Notifications operationId: update_global_notification summary: Update a global notification description: Update global notification for an account. parameters: - name: account_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: &id005 type: object properties: account_notification[subject]: type: string description: The subject of the notification. account_notification[message]: type: string description: The message body of the notification. account_notification[start_at]: type: string format: date-time description: |- The start date and time of the notification in ISO8601 format. e.g. 2014-01-01T01:00Z account_notification[end_at]: type: string format: date-time description: |- The end date and time of the notification in ISO8601 format. e.g. 2014-01-01T01:00Z account_notification[icon]: type: string enum: - warning - information - question - error - calendar description: The icon to display with the notification. account_notification_roles: type: array items: type: string description: |- The role(s) to send global notification to. Note: ommitting this field will send to everyone Example: account_notification_roles: ["StudentEnrollment", "TeacherEnrollment"] application/x-www-form-urlencoded: schema: *id005 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/account_notifications.html delete: tags: - Account Notifications operationId: close_notification_for_user_destroy_notification_for_admin summary: Close notification for user. Destroy notification for admin description: |- If the current user no longer wants to see this account notification, it can be closed with this call. This affects the current user only. If the current user is an admin and they pass a remove parameter with a value of "true", the account notification will be destroyed. This affects all users. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: remove in: query schema: type: boolean required: false description: Destroy the account notification. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AccountNotification' externalDocs: url: https://canvas.instructure.com/doc/api/account_notifications.html /v1/accounts/{account_id}/reports: get: tags: - Account Reports operationId: list_available_reports summary: List Available Reports description: Returns a paginated list of reports for the current context. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - description_html - params_html required: false description: |- Array of additional information to include. "description_html":: an HTML description of the report, with example output "parameters_html":: an HTML form for the report parameters responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/account_reports.html /v1/accounts/{account_id}/reports/{report}: post: tags: - Account Reports operationId: start_report summary: Start a Report description: |- Generates a report instance for the account. Note that "report" in the request must match one of the available report names. To fetch a list of available report names and parameters for each report (including whether or not those parameters are required), see {api:AccountReportsController#available_reports List Available Reports}. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: report in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id006 type: object properties: parameters: type: array items: type: object additionalProperties: true description: |- The parameters will vary for each report. To fetch a list of available parameters for each report, see {api:AccountReportsController#available_reports List Available Reports}. A few example parameters have been provided below. Note that the example parameters provided below may not be valid for every report. parameters[skip_message]: type: boolean description: |- If true, no message will be sent to the user upon completion of the report. parameters[course_id]: type: integer format: int64 description: |- The id of the course to report on. Note: this parameter has been listed to serve as an example and may not be valid for every report. parameters[users]: type: boolean description: |- If true, user data will be included. If false, user data will be omitted. Note: this parameter has been listed to serve as an example and may not be valid for every report. application/x-www-form-urlencoded: schema: *id006 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Report__account_reports' externalDocs: url: https://canvas.instructure.com/doc/api/account_reports.html get: tags: - Account Reports operationId: index_of_reports summary: Index of Reports description: Shows all reports that have been run for the account of a specific type. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: report in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Report__account_reports' externalDocs: url: https://canvas.instructure.com/doc/api/account_reports.html /v1/accounts/{account_id}/reports/{report}/{id}: get: tags: - Account Reports operationId: status_of_report summary: Status of a Report description: Returns the status of a report. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: report in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Report__account_reports' externalDocs: url: https://canvas.instructure.com/doc/api/account_reports.html delete: tags: - Account Reports operationId: delete_report summary: Delete a Report description: Deletes a generated report instance. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: report in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Report__account_reports' externalDocs: url: https://canvas.instructure.com/doc/api/account_reports.html /v1/accounts/{account_id}/reports/{report}/{id}/abort: put: tags: - Account Reports operationId: abort_report summary: Abort a Report description: Abort a report in progress parameters: - name: account_id in: path schema: type: string required: true description: ID - name: report in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Report__account_reports' externalDocs: url: https://canvas.instructure.com/doc/api/account_reports.html /v1/accounts: get: tags: - Accounts operationId: list_accounts summary: List accounts description: |- A paginated list of accounts that the current user can view or manage. Typically, students and even teachers will get an empty list in response, only account admins can view the accounts that they are in. parameters: - name: include in: query schema: type: array items: type: string enum: - lti_guid - registration_settings - services - course_count - sub_account_count required: false description: |- Array of additional information to include. "lti_guid":: the 'tool_consumer_instance_guid' that will be sent for this account on LTI launches "registration_settings":: returns info about the privacy policy and terms of use "services":: returns services and whether they are enabled (requires account management permissions) "course_count":: returns the number of courses directly under each account "sub_account_count":: returns the number of sub-accounts directly under each account responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/horizon_accounts: get: tags: - Accounts operationId: list_horizon_accounts summary: List horizon accounts description: |- A paginated list of horizon accounts that the current user can view or manage. Returns all accounts with the horizon_account setting enabled. If there are any horizon accounts and the user has access to Site Admin, Site Admin will also be included in the results. Typically, students and even teachers will get an empty list in response, only account admins can view the accounts that they are in. parameters: - name: include in: query schema: type: array items: type: string enum: - lti_guid - registration_settings - services - course_count - sub_account_count - site_admin required: false description: |- Array of additional information to include. "lti_guid":: the 'tool_consumer_instance_guid' that will be sent for this account on LTI launches "registration_settings":: returns info about the privacy policy and terms of use "services":: returns services and whether they are enabled (requires account management permissions) "course_count":: returns the number of courses directly under each account "sub_account_count":: returns the number of sub-accounts directly under each account "site_admin":: returns true if the account is the Site Admin account (only included if true) responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/manageable_accounts: get: tags: - Accounts operationId: get_accounts_that_admins_can_manage summary: Get accounts that admins can manage description: |- A paginated list of accounts where the current user has permission to create or manage courses. List will be empty for students and teachers as only admins can view which accounts they are in. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/course_creation_accounts: get: tags: - Accounts operationId: get_accounts_that_users_can_create_courses_in summary: Get accounts that users can create courses in description: |- A paginated list of accounts where the current user has permission to create courses. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/course_accounts: get: tags: - Accounts operationId: list_accounts_for_course_admins summary: List accounts for course admins description: |- A paginated list of accounts that the current user can view through their admin course enrollments. (Teacher, TA, or designer enrollments). Only returns "id", "name", "workflow_state", "root_account_id" and "parent_account_id" responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{id}: get: tags: - Accounts operationId: get_single_account summary: Get a single account description: |- Retrieve information on an individual account, given by id or sis sis_account_id. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html put: tags: - Accounts operationId: update_account summary: Update an account description: Update an existing account. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id007 type: object properties: account[name]: type: string description: Updates the account name account[sis_account_id]: type: string description: |- Updates the account sis_account_id Must have manage_sis permission and must not be a root_account. account[default_time_zone]: type: string description: |- The default time zone of the account. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. account[default_storage_quota_mb]: type: integer format: int64 description: The default course storage quota to be used, if not otherwise specified. account[default_user_storage_quota_mb]: type: integer format: int64 description: The default user storage quota to be used, if not otherwise specified. account[default_group_storage_quota_mb]: type: integer format: int64 description: The default group storage quota to be used, if not otherwise specified. account[course_template_id]: type: integer format: int64 description: |- The ID of a course to be used as a template for all newly created courses. Empty means to inherit the setting from parent account, 0 means to not use a template even if a parent account has one set. The course must be marked as a template. account[parent_account_id]: type: integer format: int64 description: |- The ID of a parent account to move the account to. The new parent account must be in the same root account as the original. The hierarchy of sub-accounts will be preserved in the new parent account. The caller must be an administrator in both the original parent account and the new parent account. account[settings][restrict_student_past_view][value]: type: boolean description: Restrict students from viewing courses after end date account[settings][restrict_student_past_view][locked]: type: boolean description: Lock this setting for sub-accounts and courses account[settings][restrict_student_future_view][value]: type: boolean description: Restrict students from viewing courses before start date account[settings][microsoft_sync_enabled]: type: boolean description: |- Determines whether this account has Microsoft Teams Sync enabled or not. Note that if you are altering Microsoft Teams sync settings you must enable the Microsoft Group enrollment syncing feature flag. In addition, if you are enabling Microsoft Teams sync, you must also specify a tenant, login attribute, and a remote attribute. Specifying a suffix to use is optional. account[settings][microsoft_sync_tenant]: type: string description: |- The tenant this account should use when using Microsoft Teams Sync. This should be an Azure Active Directory domain name. account[settings][microsoft_sync_login_attribute]: type: string description: |- The attribute this account should use to lookup users when using Microsoft Teams Sync. Must be one of "sub", "email", "oid", "preferred_username", or "integration_id". account[settings][microsoft_sync_login_attribute_suffix]: type: string description: |- A suffix that will be appended to the result of the login attribute when associating Canvas users with Microsoft users. Must be under 255 characters and contain no whitespace. This field is optional. account[settings][microsoft_sync_remote_attribute]: type: string description: |- The Active Directory attribute to use when associating Canvas users with Microsoft users. Must be one of "mail", "mailNickname", or "userPrincipalName". account[settings][restrict_student_future_view][locked]: type: boolean description: Lock this setting for sub-accounts and courses account[settings][lock_all_announcements][value]: type: boolean description: Disable comments on announcements account[settings][lock_all_announcements][locked]: type: boolean description: Lock this setting for sub-accounts and courses account[settings][usage_rights_required][value]: type: boolean description: Copyright and license information must be provided for files before they are published. account[settings][usage_rights_required][locked]: type: boolean description: Lock this setting for sub-accounts and courses account[settings][restrict_student_future_listing][value]: type: boolean description: Restrict students from viewing future enrollments in course list account[settings][restrict_student_future_listing][locked]: type: boolean description: Lock this setting for sub-accounts and courses account[settings][conditional_release][value]: type: boolean description: Enable or disable individual learning paths for students based on assessment account[settings][conditional_release][locked]: type: boolean description: Lock this setting for sub-accounts and courses account[settings][enable_course_paces][value]: type: boolean description: Enable or disable course pacing account[settings][enable_course_paces][locked]: type: boolean description: Lock this setting for sub-accounts and courses account[settings][suppress_notifications]: type: boolean description: |- Suppress notification messages from being created and sent. When set to +true+, all notifications are suppressed. When set to an array of notification category slugs (e.g. +["grading", "announcement"]+), only notifications in those categories are suppressed. Set to +false+ to allow all notifications. Root account setting only. account[settings][password_policy]: type: object additionalProperties: true description: |- Hash of optional password policy configuration parameters for a root account +allow_login_suspension+ boolean:: Allow suspension of user logins upon reaching maximum_login_attempts +require_number_characters+ boolean:: Require the use of number characters when setting up a new password +require_symbol_characters+ boolean:: Require the use of symbol characters when setting up a new password +minimum_character_length+ integer:: Minimum number of characters required for a new password +maximum_login_attempts+ integer:: Maximum number of login attempts before a user is locked out _Required_ feature option: Enhance password options account[settings][enable_as_k5_account][value]: type: boolean description: Enable or disable Canvas for Elementary for this account account[settings][use_classic_font_in_k5][value]: type: boolean description: Whether or not the classic font is used on the dashboard. Only applies if enable_as_k5_account is true. account[settings][horizon_account][value]: type: boolean description: Enable or disable Canvas Career for this account override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness account[settings][lock_outcome_proficiency][value]: type: boolean description: '[DEPRECATED] Restrict instructors from changing mastery scale' account[lock_outcome_proficiency][locked]: type: boolean description: '[DEPRECATED] Lock this setting for sub-accounts and courses' account[settings][lock_proficiency_calculation][value]: type: boolean description: '[DEPRECATED] Restrict instructors from changing proficiency calculation method' account[lock_proficiency_calculation][locked]: type: boolean description: '[DEPRECATED] Lock this setting for sub-accounts and courses' account[services]: type: object additionalProperties: true description: Give this a set of keys and boolean values to enable or disable services matching the keys application/x-www-form-urlencoded: schema: *id007 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/settings: get: tags: - Accounts operationId: settings summary: Settings description: |- Returns a JSON object containing a subset of settings for the specified account. It's possible an empty set will be returned if no settings are applicable. The caller must be an Account admin with the manage_account_settings permission. parameters: - name: account_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/accounts.html /v1/settings/environment: get: tags: - Accounts operationId: list_environment_settings summary: List environment settings description: |- Return a hash of global settings for the root account This is the same information supplied to the web interface as +ENV.SETTINGS+. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/permissions: get: tags: - Accounts operationId: permissions summary: Permissions description: |- Returns permission information for the calling user and the given account. You may use `self` as the account id to check permissions against the domain root account. The caller must have an account role or admin (teacher/TA/designer) enrollment in a course in the account. See also the {api:CoursesController#permissions Course} and {api:GroupsController#permissions Group} counterparts. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: permissions in: query schema: type: array items: type: string required: false description: |- List of permissions to check against the authenticated user. Permission names are documented in the {api:RoleOverridesController#manageable_permissions List assignable permissions} endpoint. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/sub_accounts: get: tags: - Accounts operationId: get_sub_accounts_of_account summary: Get the sub-accounts of an account description: List accounts that are sub-accounts of the given account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: recursive in: query schema: type: boolean required: false description: |- If true, the entire account tree underneath this account will be returned (though still paginated). If false, only direct sub-accounts of this account will be returned. Defaults to false. - name: order in: query schema: type: string enum: - id - name required: false description: |- Sorts the accounts by id or name. Only applies when recursive is false. Defaults to id. - name: include in: query schema: type: array items: type: string enum: - course_count - sub_account_count required: false description: |- Array of additional information to include. "course_count":: returns the number of courses directly under each account "sub_account_count":: returns the number of sub-accounts directly under each account responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html post: tags: - Accounts operationId: create_new_sub_account summary: Create a new sub-account description: Add a new sub-account to a given account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id008 type: object properties: account[name]: type: string description: The name of the new sub-account. account[sis_account_id]: type: string description: The account's identifier in the Student Information System. account[default_storage_quota_mb]: type: integer format: int64 description: The default course storage quota to be used, if not otherwise specified. account[default_user_storage_quota_mb]: type: integer format: int64 description: The default user storage quota to be used, if not otherwise specified. account[default_group_storage_quota_mb]: type: integer format: int64 description: The default group storage quota to be used, if not otherwise specified. required: - account[name] application/x-www-form-urlencoded: schema: *id008 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/terms_of_service: get: tags: - Accounts operationId: get_terms_of_service summary: Get the Terms of Service description: Returns the terms of service for that account parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TermsOfService' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/help_links: get: tags: - Accounts operationId: get_help_links summary: Get help links description: Returns the help links for that account parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/HelpLinks' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/manually_created_courses_account: get: tags: - Accounts operationId: get_manually_created_courses_sub_account_for_domain_root_account summary: Get the manually-created courses sub-account for the domain root account description: Returns the sub-account that contains manually created courses for the domain root account. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/courses: get: tags: - Accounts operationId: list_active_courses_in_account summary: List active courses in an account description: Retrieve a paginated list of courses in this account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: with_enrollments in: query schema: type: boolean required: false description: |- If true, include only courses with at least one enrollment. If false, include only courses with no enrollments. If not present, do not filter on course enrollment status. - name: enrollment_type in: query schema: type: array items: type: string enum: - teacher - student - ta - observer - designer required: false description: |- If set, only return courses that have at least one user enrolled in in the course with one of the specified enrollment types. - name: enrollment_workflow_state in: query schema: type: array items: type: string enum: - active - completed - deleted - invited - pending - creation_pending - rejected - inactive required: false description: |- If set, only return courses that have at least one user enrolled in in the course with one of the specified enrollment workflow states. - name: published in: query schema: type: boolean required: false description: |- If true, include only published courses. If false, exclude published courses. If not present, do not filter on published status. - name: completed in: query schema: type: boolean required: false description: |- If true, include only completed courses (these may be in state 'completed', or their enrollment term may have ended). If false, exclude completed courses. If not present, do not filter on completed status. - name: blueprint in: query schema: type: boolean required: false description: |- If true, include only blueprint courses. If false, exclude them. If not present, do not filter on this basis. - name: blueprint_associated in: query schema: type: boolean required: false description: |- If true, include only courses that inherit content from a blueprint course. If false, exclude them. If not present, do not filter on this basis. - name: public in: query schema: type: boolean required: false description: |- If true, include only public courses. If false, exclude them. If not present, do not filter on this basis. - name: by_teachers in: query schema: type: array items: type: integer required: false description: |- List of User IDs of teachers; if supplied, include only courses taught by one of the referenced users. - name: by_subaccounts in: query schema: type: array items: type: integer required: false description: |- List of Account IDs; if supplied, include only courses associated with one of the referenced subaccounts. - name: hide_enrollmentless_courses in: query schema: type: boolean required: false description: |- If present, only return courses that have at least one enrollment. Equivalent to 'with_enrollments=true'; retained for compatibility. - name: state in: query schema: type: array items: type: string enum: - created - claimed - available - completed - deleted - all required: false description: |- If set, only return courses that are in the given state(s). By default, all states but "deleted" are returned. - name: enrollment_term_id in: query schema: type: array items: type: integer required: false description: |- If set, only includes courses from the specified terms. Can be either a single ID or an array of enrollment term IDs. - name: search_term in: query schema: type: string required: false description: The partial course name, code, or full ID to match and return in the results list. Must be at least 3 characters. - name: include in: query schema: type: array items: type: string enum: - syllabus_body - term - course_progress - storage_quota_used_mb - total_students - teachers - account_name - concluded - post_manually required: false description: |- - All explanations can be seen in the {api:CoursesController#index Course API index documentation} - "sections", "needs_grading_count" and "total_scores" are not valid options at the account level - name: sort in: query schema: type: string enum: - course_status - course_name - sis_course_id - teacher - account_name required: false description: The column to sort results by. - name: order in: query schema: type: string enum: - asc - desc required: false description: The order to sort the given column by. - name: search_by in: query schema: type: string enum: - course - teacher required: false description: |- The filter to search by. "course" searches for course names, course codes, and SIS IDs. "teacher" searches for teacher names - name: starts_before in: query schema: type: string format: date required: false description: |- If set, only return courses that start before the value (inclusive) or their enrollment term starts before the value (inclusive) or both the course's start_at and the enrollment term's start_at are set to null. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: ends_after in: query schema: type: string format: date required: false description: |- If set, only return courses that end after the value (inclusive) or their enrollment term ends after the value (inclusive) or both the course's end_at and the enrollment term's end_at are set to null. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: homeroom in: query schema: type: boolean required: false description: If set, only return homeroom courses. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Course externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html post: tags: - Courses operationId: create_new_course summary: Create a new course description: Create a new course parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id009 type: object properties: course[name]: type: string description: |- The name of the course. If omitted, the course will be named "Unnamed Course." course[course_code]: type: string description: The course code for the course. course[start_at]: type: string format: date-time description: |- Course start date in ISO8601 format, e.g. 2011-01-01T01:00Z This value is ignored unless 'restrict_enrollments_to_course_dates' is set to true. course[end_at]: type: string format: date-time description: |- Course end date in ISO8601 format. e.g. 2011-01-01T01:00Z This value is ignored unless 'restrict_enrollments_to_course_dates' is set to true. course[license]: type: string description: |- The name of the licensing. Should be one of the following abbreviations (a descriptive name is included in parenthesis for reference): - 'private' (Private Copyrighted) - 'cc_by_nc_nd' (CC Attribution Non-Commercial No Derivatives) - 'cc_by_nc_sa' (CC Attribution Non-Commercial Share Alike) - 'cc_by_nc' (CC Attribution Non-Commercial) - 'cc_by_nd' (CC Attribution No Derivatives) - 'cc_by_sa' (CC Attribution Share Alike) - 'cc_by' (CC Attribution) - 'public_domain' (Public Domain). course[is_public]: type: boolean description: Set to true if course is public to both authenticated and unauthenticated users. course[is_public_to_auth_users]: type: boolean description: Set to true if course is public only to authenticated users. course[public_syllabus]: type: boolean description: Set to true to make the course syllabus public. course[public_syllabus_to_auth]: type: boolean description: Set to true to make the course syllabus public for authenticated users. course[public_description]: type: string description: A publicly visible description of the course. course[allow_student_wiki_edits]: type: boolean description: If true, students will be able to modify the course wiki. course[allow_wiki_comments]: type: boolean description: If true, course members will be able to comment on wiki pages. course[allow_student_forum_attachments]: type: boolean description: If true, students can attach files to forum posts. course[open_enrollment]: type: boolean description: Set to true if the course is open enrollment. course[self_enrollment]: type: boolean description: Set to true if the course is self enrollment. course[restrict_enrollments_to_course_dates]: type: boolean description: |- Set to true to restrict user enrollments to the start and end dates of the course. This value must be set to true in order to specify a course start date and/or end date. course[term_id]: type: string description: The unique ID of the term to create to course in. course[sis_course_id]: type: string description: The unique SIS identifier. course[integration_id]: type: string description: The unique Integration identifier. course[hide_final_grades]: type: boolean description: |- If this option is set to true, the totals in student grades summary will be hidden. course[apply_assignment_group_weights]: type: boolean description: Set to true to weight final grade based on assignment groups percentages. course[time_zone]: type: string description: |- The time zone for the course. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. offer: type: boolean description: |- If this option is set to true, the course will be available to students immediately. enroll_me: type: boolean description: Set to true to enroll the current user as the teacher. skip_course_template: type: boolean description: |- If this option is set to true, the template of the account will not be applied to this course It means copy_from_course_template will not be executed. This option is thought for a course copy. course[default_view]: type: string enum: - feed - wiki - modules - syllabus - assignments description: |- The type of page that users will see when they first visit the course * 'feed' Recent Activity Dashboard * 'modules' Course Modules/Sections Page * 'assignments' Course Assignments List * 'syllabus' Course Syllabus Page other types may be added in the future course[syllabus_body]: type: string description: The syllabus body for the course course[grading_standard_id]: type: integer format: int64 description: The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. course[grade_passback_setting]: type: string description: Optional. The grade_passback_setting for the course. Only 'nightly_sync', 'disabled', and '' are allowed course[course_format]: type: string description: Optional. Specifies the format of the course. (Should be 'on_campus', 'online', or 'blended') course[post_manually]: type: boolean description: |- Default is false. When true, all grades in the course must be posted manually, and will not be automatically posted. When false, all grades in the course will be automatically posted. enable_sis_reactivation: type: boolean description: When true, will first try to re-activate a deleted course with matching sis_course_id if possible. application/x-www-form-urlencoded: schema: *id009 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Course' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html put: tags: - Courses operationId: update_courses summary: Update courses description: |- Update multiple courses in an account. Operates asynchronously; use the {api:ProgressController#show progress endpoint} to query the status of an operation. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id010 type: object properties: course_ids: type: array items: type: string description: List of ids of courses to update. At most 500 courses may be updated in one call. event: type: string enum: - offer - conclude - delete - undelete description: |- The action to take on each course. Must be one of 'offer', 'conclude', 'delete', or 'undelete'. * 'offer' makes a course visible to students. This action is also called "publish" on the web site. * 'conclude' prevents future enrollments and makes a course read-only for all participants. The course still appears in prior-enrollment lists. * 'delete' completely removes the course from the web site (including course menus and prior-enrollment lists). All enrollments are deleted. Course content may be physically deleted at a future date. * 'undelete' attempts to recover a course that has been deleted. (Recovery is not guaranteed; please conclude rather than delete a course if there is any possibility the course will be used again.) The recovered course will be unpublished. Deleted enrollments will not be recovered. required: - course_ids - event application/x-www-form-urlencoded: schema: *id010 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/accounts/{account_id}/users/{user_id}: delete: tags: - Accounts operationId: delete_user_from_root_account summary: Delete a user from the root account description: |- Delete a user record from a Canvas root account. If a user is associated with multiple root accounts (in a multi-tenant instance of Canvas), this action will NOT remove them from the other accounts. WARNING: This API will allow a user to remove themselves from the account. If they do this, they won't be able to make API calls or log into Canvas at that account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/users: delete: tags: - Accounts operationId: delete_multiple_users_from_root_account summary: Delete multiple users from the root account description: |- Delete multiple users from a Canvas root account. If a user is associated with multiple root accounts (in a multi-tenant instance of Canvas), this action will NOT remove them from the other accounts. WARNING: This API will allow a user to remove themselves from the account. If they do this, they won't be able to make API calls or log into Canvas at that account. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html get: tags: - Users operationId: list_users_in_account summary: List users in account description: |- A paginated list of users associated with this account. @example_request curl https:///api/v1/accounts/self/users?search_term= \ -X GET \ -H 'Authorization: Bearer ' parameters: - name: account_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: |- The partial name or full ID of the users to match and return in the results list. Must be at least 3 characters. Note that the API will prefer matching on canonical user ID if the ID has a numeric form. It will only search against other fields if non-numeric in form, or if the numeric value doesn't yield any matches. Queries by administrative users will search on SIS ID, Integration ID, login ID, name, or email address - name: enrollment_type in: query schema: type: string required: false description: |- When set, only return users enrolled with the specified course-level base role. This can be a base role type of 'student', 'teacher', 'ta', 'observer', or 'designer'. - name: sort in: query schema: type: string enum: - username - email - sis_id - integration_id - last_login - id required: false description: |- The column to sort results by. For efficiency, use +id+ if you intend to retrieve many pages of results. In the future, other sort options may be rate-limited after 50 pages. - name: order in: query schema: type: string enum: - asc - desc required: false description: The order to sort the given column by. - name: include_deleted_users in: query schema: type: boolean required: false description: |- When set to true and used with an account context, returns users who have deleted pseudonyms for the context - name: uuids in: query schema: type: array items: {} required: false description: |- When set, only return users with the specified UUIDs. UUIDs after the first 100 are ignored. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html post: tags: - Users operationId: create_user summary: Create a user description: |- Create and return a new user and pseudonym for an account. [DEPRECATED (for self-registration only)] If you don't have the "Modify login details for users" permission, but self-registration is enabled on the account, you can still use this endpoint to register new users. Certain fields will be required, and others will be ignored (see below). parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id011 type: object properties: user[name]: type: string description: |- The full name of the user. This name will be used by teacher for grading. Required if this is a self-registration. user[short_name]: type: string description: User's name as it will be displayed in discussions, messages, and comments. user[sortable_name]: type: string description: User's name as used to sort alphabetically in lists. user[time_zone]: type: string description: |- The time zone for the user. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. user[locale]: type: string description: |- The user's preferred language, from the list of languages Canvas supports. This is in RFC-5646 format. user[terms_of_use]: type: boolean description: |- Whether the user accepts the terms of use. Required if this is a self-registration and this canvas instance requires users to accept the terms (on by default). If this is true, it will mark the user as having accepted the terms of use. user[skip_registration]: type: boolean description: |- Automatically mark the user as registered. If this is true, it is recommended to set "pseudonym[send_confirmation]" to true as well. Otherwise, the user will not receive any messages about their account creation. The users communication channel confirmation can be skipped by setting "communication_channel[skip_confirmation]" to true as well. pseudonym[unique_id]: type: string description: |- User's login ID. If this is a self-registration, it must be a valid email address. pseudonym[password]: type: string description: User's password. Cannot be set during self-registration. pseudonym[sis_user_id]: type: string description: |- SIS ID for the user's account. To set this parameter, the caller must be able to manage SIS permissions. pseudonym[integration_id]: type: string description: |- Integration ID for the login. To set this parameter, the caller must be able to manage SIS permissions. The Integration ID is a secondary identifier useful for more complex SIS integrations. pseudonym[send_confirmation]: type: boolean description: |- Send user notification of account creation if true. Automatically set to true during self-registration. pseudonym[force_self_registration]: type: boolean description: |- Send user a self-registration style email if true. Setting it means the users will get a notification asking them to "complete the registration process" by clicking it, setting a password, and letting them in. Will only be executed on if the user does not need admin approval. Defaults to false unless explicitly provided. pseudonym[authentication_provider_id]: type: string description: |- The authentication provider this login is associated with. Logins associated with a specific provider can only be used with that provider. Legacy providers (LDAP, CAS, SAML) will search for logins associated with them, or unassociated logins. New providers will only search for logins explicitly associated with them. This can be the integer ID of the provider, or the type of the provider (in which case, it will find the first matching provider). communication_channel[type]: type: string description: The communication channel type, e.g. 'email' or 'sms'. communication_channel[address]: type: string description: The communication channel address, e.g. the user's email address. communication_channel[confirmation_url]: type: boolean description: |- Only valid for account admins. If true, returns the new user account confirmation URL in the response. communication_channel[skip_confirmation]: type: boolean description: |- Only valid for site admins and account admins making requests; If true, the channel is automatically validated and no confirmation email or SMS is sent. Otherwise, the user must respond to a confirmation message to confirm the channel. If this is true, it is recommended to set "pseudonym[send_confirmation]" to true as well. Otherwise, the user will not receive any messages about their account creation. force_validations: type: boolean description: |- If true, validations are performed on the newly created user (and their associated pseudonym) even if the request is made by a privileged user like an admin. When set to false, or not included in the request parameters, any newly created users are subject to validations unless the request is made by a user with a 'manage_user_logins' right. In which case, certain validations such as 'require_acceptance_of_terms' and 'require_presence_of_name' are not enforced. Use this parameter to return helpful json errors while building users with an admin request. enable_sis_reactivation: type: boolean description: |- When true, will first try to re-activate a deleted user with matching sis_user_id if possible. This is commonly done with +user[skip_registration]+ and +communication_channel[skip_confirmation]+ so that the default communication_channel is also restored. destination: type: string format: uri description: |- If you're setting the password for the newly created user, you can provide this param with a valid URL pointing into this Canvas installation, and the response will include a destination field that's a URL that you can redirect a browser to and have the newly created user automatically logged in. The URL is only valid for a short time, and must match the domain this request is directed to, and be for a well-formed path that Canvas can recognize. initial_enrollment_type: type: string description: |- `observer` if doing a self-registration with a pairing code. This allows setting the password during user creation. pairing_code[code]: type: string description: |- If provided and valid, will link the new user as an observer to the student's whose pairing code is given. required: - pseudonym[unique_id] application/x-www-form-urlencoded: schema: *id011 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/accounts/{account_id}/users/bulk_update: put: tags: - Accounts operationId: update_multiple_users summary: Update multiple users description: Updates multiple users in bulk. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id012 type: object properties: user_ids: type: string description: |- [Array] The IDs of the users to update. user: type: object additionalProperties: true description: The attributes to update for each user. application/x-www-form-urlencoded: schema: *id012 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/users/{user_id}/restore: put: tags: - Accounts operationId: restore_deleted_user_from_root_account summary: Restore a deleted user from a root account description: |- Restore a user record along with the most recently deleted pseudonym from a Canvas root account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /v1/accounts/{account_id}/sub_accounts/{id}: delete: tags: - Accounts operationId: delete_sub_account summary: Delete a sub-account description: |- Cannot delete an account with active courses or active sub_accounts. Cannot delete a root_account parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Account__accounts' externalDocs: url: https://canvas.instructure.com/doc/api/accounts.html /lti/accounts/{account_id}: get: tags: - Accounts (Lti) operationId: get_account summary: Get account description: Retrieve information on an individual account, given by local or global ID. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Account__accounts_(lti)' externalDocs: url: https://canvas.instructure.com/doc/api/accounts_(lti).html /v1/accounts/{account_id}/admins: get: tags: - Admins operationId: list_account_admins summary: List account admins description: A paginated list of the admins in the account parameters: - name: account_id in: path schema: type: string required: true description: ID - name: user_id in: query schema: type: array items: type: array items: type: integer required: false description: Scope the results to those with user IDs equal to any of the IDs specified here. - name: search_term in: query schema: type: string required: false description: |- The partial name or full ID of the admins to match and return in the results list. Must be at least 2 characters. - name: include_deleted in: query schema: type: boolean required: false description: When set to true, returns admins who have been deleted responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Admin' externalDocs: url: https://canvas.instructure.com/doc/api/admins.html post: tags: - Admins operationId: make_account_admin summary: Make an account admin description: Flag an existing user as an admin within the account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id013 type: object properties: user_id: type: integer format: int64 description: The id of the user to promote. role: type: string description: |- [DEPRECATED] The user's admin relationship with the account will be created with the given role. Defaults to 'AccountAdmin'. role_id: type: integer format: int64 description: The user's admin relationship with the account will be created with the given role. Defaults to the built-in role for 'AccountAdmin'. send_confirmation: type: boolean description: |- Send a notification email to the new admin if true. Default is true. required: - user_id application/x-www-form-urlencoded: schema: *id013 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Admin' externalDocs: url: https://canvas.instructure.com/doc/api/admins.html /v1/accounts/{account_id}/admins/{user_id}: delete: tags: - Admins operationId: remove_account_admin summary: Remove account admin description: Remove the rights associated with an account admin role from a user. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID - name: role in: query schema: type: string required: false description: '[DEPRECATED] Account role to remove from the user.' - name: role_id in: query schema: type: integer format: int64 required: true description: The id of the role representing the user's admin relationship with the account. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Admin' externalDocs: url: https://canvas.instructure.com/doc/api/admins.html /v1/accounts/{account_id}/admins/self: get: tags: - Admins operationId: list_my_admin_roles summary: List my admin roles description: |- A paginated list of the current user's roles in the account. The results are the same as those returned by the {api:AdminsController#index List account admins} endpoint with +user_id+ set to +self+, except the "Admins - Add / Remove" permission is not required. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Admin' externalDocs: url: https://canvas.instructure.com/doc/api/admins.html /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}: get: tags: - Ai Conversations operationId: show_conversation summary: Show conversation description: Get a specific conversation by ID (for teachers viewing student conversations) parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_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 content: application/json: schema: type: string x-canvas-declared-type: '{Object} Hash with conversation details including messages' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html delete: tags: - Ai Conversations operationId: delete_ai_conversation summary: Delete AI conversation description: End the current conversation session parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_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 content: application/json: schema: type: string x-canvas-declared-type: '{Object} Success message' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations: get: tags: - Ai Conversations operationId: get_active_conversation summary: Get active conversation description: Get the active conversation for the current user and AI experience parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{Object} Hash with id and messages array, or empty object if no active conversation' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html post: tags: - Ai Conversations operationId: create_ai_conversation summary: Create AI conversation description: Initialize a new conversation with the AI experience parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{Object} Hash with conversation_id and initial messages array' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages: post: tags: - Ai Conversations operationId: post_message_to_conversation summary: Post message to conversation description: Send a message to an existing conversation and get the AI response parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_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: &id014 type: object properties: message: type: string description: The user's message to send to the AI required: - message application/x-www-form-urlencoded: schema: *id014 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{Object} Hash with id and updated messages array' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/evaluation: get: tags: - Ai Conversations operationId: get_conversation_evaluation summary: Get conversation evaluation description: |- Fetch the latest stored evaluation for a conversation from the llm-conversation service. Reads only — does not run the LLM and is not rate-limited. `evaluation` is null when none has been generated yet (llma returns 200 + null, never 404, so this is distinguishable from an outage). `stale` is true when the AI experience was edited after the stored evaluation was generated. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_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 content: application/json: schema: type: string x-canvas-declared-type: '{Object} Hash with { id, evaluation, stale }' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html post: tags: - Ai Conversations operationId: generate_conversation_evaluation summary: Generate conversation evaluation description: |- Run the LLM to (re)generate an evaluation for a conversation and persist it in the llm-conversation service. Rate-limited. Also the Reset path — a fresh run replaces any prior stored evaluation. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_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 content: application/json: schema: type: string x-canvas-declared-type: '{Object} Hash with { id, evaluation }' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback: post: tags: - Ai Conversations operationId: create_feedback_on_conversation_message summary: Create feedback on a conversation message description: |- Submit a like or dislike vote on an AI-generated message. Ownership: load_conversation gates this action — only the conversation owner or a course manager reaches here. Sub-resource (message_id within the conversation) scoping is delegated to llma. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: message_id in: path schema: type: string required: true description: llm-conversation message UUID requestBody: required: false content: application/json: schema: &id015 type: object properties: vote: type: string description: '"liked" or "disliked"' feedback_message: type: string description: optional text for dislike required: - vote application/x-www-form-urlencoded: schema: *id015 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{Object} Hash with feedback record' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html /v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback/{feedback_id}: delete: tags: - Ai Conversations operationId: delete_feedback_on_conversation_message summary: Delete feedback on a conversation message description: |- Remove a previously submitted vote (toggling off like/dislike). Ownership: load_conversation gates this action — only the conversation owner or a course manager reaches here. Sub-resource (message_id, feedback_id within the conversation) scoping is delegated to llma. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: ai_experience_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: message_id in: path schema: type: string required: true description: ID - name: feedback_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{Object} Success response' externalDocs: url: https://canvas.instructure.com/doc/api/ai_conversations.html /v1/courses/{course_id}/ai_experiences: get: tags: - Ai Experiences operationId: list_ai_experiences summary: List AI experiences description: Retrieve the paginated list of AI experiences for a course parameters: - name: course_id in: path schema: type: string required: true description: ID - name: workflow_state in: query schema: type: string required: false description: |- Only return experiences with the specified workflow state. Allowed values: published, unpublished, deleted responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AiExperience' externalDocs: url: https://canvas.instructure.com/doc/api/ai_experiences.html post: tags: - Ai Experiences operationId: create_ai_experience summary: Create an AI experience description: Create a new AI experience for the specified course parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id016 type: object properties: title: type: string description: The title of the AI experience. description: type: string description: The description of the AI experience. facts: type: string description: The AI facts for the experience. learning_objective: type: string description: The learning objectives for this experience. pedagogical_guidance: type: string description: The pedagogical guidance for the experience. workflow_state: type: string description: |- The initial state of the experience. Defaults to 'unpublished'. Allowed values: published, unpublished required: - title - learning_objective - pedagogical_guidance application/x-www-form-urlencoded: schema: *id016 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AiExperience' externalDocs: url: https://canvas.instructure.com/doc/api/ai_experiences.html /v1/courses/{course_id}/ai_experiences/{id}: get: tags: - Ai Experiences operationId: show_ai_experience summary: Show an AI experience description: Retrieve an AI experience by ID parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/AiExperience' externalDocs: url: https://canvas.instructure.com/doc/api/ai_experiences.html put: tags: - Ai Experiences operationId: update_ai_experience summary: Update an AI experience description: Update an existing AI experience parameters: - name: course_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: &id017 type: object properties: title: type: string description: The title of the AI experience. description: type: string description: The description of the AI experience. facts: type: string description: The AI facts for the experience. learning_objective: type: string description: The learning objectives for this experience. pedagogical_guidance: type: string description: The pedagogical guidance for the experience. workflow_state: type: string description: |- The state of the experience. Allowed values: published, unpublished required: - learning_objective - pedagogical_guidance application/x-www-form-urlencoded: schema: *id017 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AiExperience' externalDocs: url: https://canvas.instructure.com/doc/api/ai_experiences.html delete: tags: - Ai Experiences operationId: delete_ai_experience summary: Delete an AI experience description: Delete an AI experience (soft delete - marks as deleted) parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/AiExperience' externalDocs: url: https://canvas.instructure.com/doc/api/ai_experiences.html /v1/courses/{course_id}/ai_experiences/new: get: tags: - Ai Experiences operationId: show_new_ai_experience_form summary: Show new AI experience form description: Display the form for creating a new AI experience parameters: - name: course_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/ai_experiences.html /v1/courses/{course_id}/ai_experiences/{id}/edit: get: tags: - Ai Experiences operationId: show_edit_ai_experience_form summary: Show edit AI experience form description: Display the form for editing an existing AI experience parameters: - name: course_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/ai_experiences.html /v1/courses/{course_id}/ai_experiences/{id}/ai_conversations: get: tags: - Ai Experiences operationId: list_student_ai_conversations summary: List student AI conversations description: |- Retrieve the latest AI conversation for each student in the course for this AI experience. Only available to teachers and course managers. parameters: - name: course_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 content: application/json: schema: type: array items: type: string x-canvas-declared-type: AiConversation externalDocs: url: https://canvas.instructure.com/doc/api/ai_experiences.html /v1/courses/{course_id}/ai_experiences/{id}/ai_conversations/{conversation_id}: get: tags: - Ai Experiences operationId: show_student_ai_conversation summary: Show student AI conversation description: |- Retrieve a specific student's AI conversation with full message history. Only available to teachers and course managers. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: conversation_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: AiConversation externalDocs: url: https://canvas.instructure.com/doc/api/ai_experiences.html /v1/accounts/{account_id}/analytics/terms/{term_id}/activity: get: tags: - Analytics operationId: get_department_level_participation_data_terms summary: Get department-level participation data description: |- Returns page view hits summed across all courses in the department. Two groupings of these counts are returned; one by day (+by_date+), the other by category (+by_category+). The possible categories are announcements, assignments, collaborations, conferences, discussions, files, general, grades, groups, modules, other, pages, and quizzes. This and the other department-level endpoints have three variations which all return the same style of data but for different subsets of courses. All share the prefix /api/v1/accounts//analytics. The possible suffixes are: * /current: includes all available courses in the default term * /completed: includes all concluded courses in the default term * /terms/: includes all available or concluded courses in the given term. Courses not yet offered or which have been deleted are never included. /current and /completed are intended for use when the account has only one term. /terms/ is intended for use when the account has multiple terms. The action follows the suffix. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: term_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/analytics.html /v1/accounts/{account_id}/analytics/current/activity: get: tags: - Analytics operationId: get_department_level_participation_data_current summary: Get department-level participation data description: |- Returns page view hits summed across all courses in the department. Two groupings of these counts are returned; one by day (+by_date+), the other by category (+by_category+). The possible categories are announcements, assignments, collaborations, conferences, discussions, files, general, grades, groups, modules, other, pages, and quizzes. This and the other department-level endpoints have three variations which all return the same style of data but for different subsets of courses. All share the prefix /api/v1/accounts//analytics. The possible suffixes are: * /current: includes all available courses in the default term * /completed: includes all concluded courses in the default term * /terms/: includes all available or concluded courses in the given term. Courses not yet offered or which have been deleted are never included. /current and /completed are intended for use when the account has only one term. /terms/ is intended for use when the account has multiple terms. The action follows the suffix. parameters: - name: account_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/analytics.html /v1/accounts/{account_id}/analytics/completed/activity: get: tags: - Analytics operationId: get_department_level_participation_data_completed summary: Get department-level participation data description: |- Returns page view hits summed across all courses in the department. Two groupings of these counts are returned; one by day (+by_date+), the other by category (+by_category+). The possible categories are announcements, assignments, collaborations, conferences, discussions, files, general, grades, groups, modules, other, pages, and quizzes. This and the other department-level endpoints have three variations which all return the same style of data but for different subsets of courses. All share the prefix /api/v1/accounts//analytics. The possible suffixes are: * /current: includes all available courses in the default term * /completed: includes all concluded courses in the default term * /terms/: includes all available or concluded courses in the given term. Courses not yet offered or which have been deleted are never included. /current and /completed are intended for use when the account has only one term. /terms/ is intended for use when the account has multiple terms. The action follows the suffix. parameters: - name: account_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/analytics.html /v1/accounts/{account_id}/analytics/terms/{term_id}/grades: get: tags: - Analytics operationId: get_department_level_grade_data_terms summary: Get department-level grade data description: |- Returns the distribution of grades for students in courses in the department. Each data point is one student's current grade in one course; if a student is in multiple courses, he contributes one value per course, but if he's enrolled multiple times in the same course (e.g. a lecture section and a lab section), he only constributes on value for that course. Grades are binned to the nearest integer score; anomalous grades outside the 0 to 100 range are ignored. The raw counts are returned, not yet normalized by the total count. Shares the same variations on endpoint as the participation data. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: term_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/analytics.html /v1/accounts/{account_id}/analytics/current/grades: get: tags: - Analytics operationId: get_department_level_grade_data_current summary: Get department-level grade data description: |- Returns the distribution of grades for students in courses in the department. Each data point is one student's current grade in one course; if a student is in multiple courses, he contributes one value per course, but if he's enrolled multiple times in the same course (e.g. a lecture section and a lab section), he only constributes on value for that course. Grades are binned to the nearest integer score; anomalous grades outside the 0 to 100 range are ignored. The raw counts are returned, not yet normalized by the total count. Shares the same variations on endpoint as the participation data. parameters: - name: account_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/analytics.html /v1/accounts/{account_id}/analytics/completed/grades: get: tags: - Analytics operationId: get_department_level_grade_data_completed summary: Get department-level grade data description: |- Returns the distribution of grades for students in courses in the department. Each data point is one student's current grade in one course; if a student is in multiple courses, he contributes one value per course, but if he's enrolled multiple times in the same course (e.g. a lecture section and a lab section), he only constributes on value for that course. Grades are binned to the nearest integer score; anomalous grades outside the 0 to 100 range are ignored. The raw counts are returned, not yet normalized by the total count. Shares the same variations on endpoint as the participation data. parameters: - name: account_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/analytics.html /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics: get: tags: - Analytics operationId: get_department_level_statistics_terms summary: Get department-level statistics description: |- Returns numeric statistics about the department and term (or filter). Shares the same variations on endpoint as the participation data. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: term_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/analytics.html /v1/accounts/{account_id}/analytics/current/statistics: get: tags: - Analytics operationId: get_department_level_statistics_current summary: Get department-level statistics description: |- Returns numeric statistics about the department and term (or filter). Shares the same variations on endpoint as the participation data. parameters: - name: account_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/analytics.html /v1/accounts/{account_id}/analytics/completed/statistics: get: tags: - Analytics operationId: get_department_level_statistics_completed summary: Get department-level statistics description: |- Returns numeric statistics about the department and term (or filter). Shares the same variations on endpoint as the participation data. parameters: - name: account_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/analytics.html /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics_by_subaccount: get: tags: - Analytics operationId: get_department_level_statistics_broken_down_by_subaccount_terms summary: Get department-level statistics, broken down by subaccount description: |- Returns numeric statistics about the department subaccounts and term (or filter). Shares the same variations on endpoint as the participation data. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: term_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/analytics.html /v1/accounts/{account_id}/analytics/current/statistics_by_subaccount: get: tags: - Analytics operationId: get_department_level_statistics_broken_down_by_subaccount_current summary: Get department-level statistics, broken down by subaccount description: |- Returns numeric statistics about the department subaccounts and term (or filter). Shares the same variations on endpoint as the participation data. parameters: - name: account_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/analytics.html /v1/accounts/{account_id}/analytics/completed/statistics_by_subaccount: get: tags: - Analytics operationId: get_department_level_statistics_broken_down_by_subaccount_completed summary: Get department-level statistics, broken down by subaccount description: |- Returns numeric statistics about the department subaccounts and term (or filter). Shares the same variations on endpoint as the participation data. parameters: - name: account_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/analytics.html /v1/courses/{course_id}/analytics/activity: get: tags: - Analytics operationId: get_course_level_participation_data summary: Get course-level participation data description: |- Returns page view hits and participation numbers grouped by day through the entire history of the course. Page views is returned as a hash, where the hash keys are dates in the format "YYYY-MM-DD". The page_views result set includes page views broken out by access category. Participations is returned as an array of dates in the format "YYYY-MM-DD". parameters: - name: course_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/analytics.html /v1/courses/{course_id}/analytics/assignments: get: tags: - Analytics operationId: get_course_level_assignment_data summary: Get course-level assignment data description: |- Returns a list of assignments for the course sorted by due date. For each assignment returns basic assignment information, the grade breakdown, and a breakdown of on-time/late status of homework submissions. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: async in: query schema: type: boolean required: false description: |- If async is true, then the course_assignments call can happen asynch- ronously and MAY return a response containing a progress_url key instead of an assignments array. If it does, then it is the caller's responsibility to poll the API again to see if the progress is complete. If the data is ready (possibly even on the first async call) then it will be passed back normally, as documented in the example response. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/analytics.html /v1/courses/{course_id}/analytics/student_summaries: get: tags: - Analytics operationId: get_course_level_student_summary_data summary: Get course-level student summary data description: |- Returns a summary of per-user access information for all students in a course. This includes total page views, total participations, and a breakdown of on-time/late status for all homework submissions in the course. Each student's summary also includes the maximum number of page views and participations by any student in the course, which may be useful for some visualizations (since determining maximums client side can be tricky with pagination). parameters: - name: course_id in: path schema: type: string required: true description: ID - name: sort_column in: query schema: type: string enum: - name - name_descending - score - score_descending - participations - participations_descending - page_views - page_views_descending required: false description: The order results in which results are returned. Defaults to "name". - name: student_id in: query schema: type: string required: false description: If set, returns only the specified student. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/analytics.html /v1/courses/{course_id}/analytics/users/{student_id}/activity: get: tags: - Analytics operationId: get_user_in_a_course_level_participation_data summary: Get user-in-a-course-level participation data description: |- Returns page view hits grouped by hour, and participation details through the entire history of the course. `page_views` are returned as a hash, where the keys are iso8601 dates, bucketed by the hour. `participations` are returned as an array of hashes, sorted oldest to newest. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: student_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/analytics.html /v1/courses/{course_id}/analytics/users/{student_id}/assignments: get: tags: - Analytics operationId: get_user_in_a_course_level_assignment_data summary: Get user-in-a-course-level assignment data description: |- Returns a list of assignments for the course sorted by due date. For each assignment returns basic assignment information, the grade breakdown (including the student's actual grade), and the basic submission information for the student's submission if it exists. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: student_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/analytics.html /v1/courses/{course_id}/analytics/users/{student_id}/communication: get: tags: - Analytics operationId: get_user_in_a_course_level_messaging_data summary: Get user-in-a-course-level messaging data description: |- Returns messaging "hits" grouped by day through the entire history of the course. Returns a hash containing the number of instructor-to-student messages, and student-to-instructor messages, where the hash keys are dates in the format "YYYY-MM-DD". Message hits include Conversation messages and comments on homework submissions. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: student_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/analytics.html /v1/courses/{course_id}/external_feeds: get: tags: - Announcement External Feeds operationId: list_external_feeds_courses summary: List external feeds description: Returns the paginated list of External Feeds this course or group. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ExternalFeed' externalDocs: url: https://canvas.instructure.com/doc/api/announcement_external_feeds.html post: tags: - Announcement External Feeds operationId: create_external_feed_courses summary: Create an external feed description: Create a new external feed for the course or group. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id018 type: object properties: url: type: string description: The url to the external rss or atom feed header_match: type: boolean description: If given, only feed entries that contain this string in their title will be imported verbosity: type: string enum: - full - truncate - link_only description: Defaults to "full" required: - url application/x-www-form-urlencoded: schema: *id018 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ExternalFeed' externalDocs: url: https://canvas.instructure.com/doc/api/announcement_external_feeds.html /v1/groups/{group_id}/external_feeds: get: tags: - Announcement External Feeds operationId: list_external_feeds_groups summary: List external feeds description: Returns the paginated list of External Feeds this course or group. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ExternalFeed' externalDocs: url: https://canvas.instructure.com/doc/api/announcement_external_feeds.html post: tags: - Announcement External Feeds operationId: create_external_feed_groups summary: Create an external feed description: Create a new external feed for the course or group. parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id019 type: object properties: url: type: string description: The url to the external rss or atom feed header_match: type: boolean description: If given, only feed entries that contain this string in their title will be imported verbosity: type: string enum: - full - truncate - link_only description: Defaults to "full" required: - url application/x-www-form-urlencoded: schema: *id019 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ExternalFeed' externalDocs: url: https://canvas.instructure.com/doc/api/announcement_external_feeds.html /v1/courses/{course_id}/external_feeds/{external_feed_id}: delete: tags: - Announcement External Feeds operationId: delete_external_feed_courses summary: Delete an external feed description: Deletes the external feed. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: external_feed_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ExternalFeed' externalDocs: url: https://canvas.instructure.com/doc/api/announcement_external_feeds.html /v1/groups/{group_id}/external_feeds/{external_feed_id}: delete: tags: - Announcement External Feeds operationId: delete_external_feed_groups summary: Delete an external feed description: Deletes the external feed. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: external_feed_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ExternalFeed' externalDocs: url: https://canvas.instructure.com/doc/api/announcement_external_feeds.html /v1/announcements: get: tags: - Announcements operationId: list_announcements summary: List announcements description: |- Returns the paginated list of announcements for the given courses and date range. Note that a +context_code+ field is added to the responses so you can tell which course each announcement belongs to. parameters: - name: context_codes in: query schema: type: array items: type: string required: true description: |- List of context_codes to retrieve announcements for (for example, +course_123+). Only courses are presently supported. The call will fail unless the caller has View Announcements permission in all listed courses. - name: start_date in: query schema: type: string format: date required: false description: |- Only return announcements posted since the start_date (inclusive). Defaults to 14 days ago. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: end_date in: query schema: type: string format: date required: false description: |- Only return announcements posted before the end_date (inclusive). Defaults to 28 days from start_date. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. Announcements scheduled for future posting will only be returned to course administrators. - name: available_after in: query schema: type: string format: date required: false description: |- Only return announcements having locked_at nil or after available_after (exclusive). The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. Effective only for students (who don't have moderate forum right). - name: active_only in: query schema: type: boolean required: false description: |- Only return active announcements that have been published. Applies only to requesting users that have permission to view unpublished items. Defaults to false for users with access to view unpublished items, otherwise true and unmodifiable. - name: latest_only in: query schema: type: boolean required: false description: |- Only return the latest announcement for each associated context. The response will include at most one announcement for each specified context in the context_codes[] parameter. Defaults to false. - name: include in: query schema: type: array items: {} required: false description: |- Optional list of resources to include with the response. May include a string of the name of the resource. Possible values are: "sections", "sections_user_count" if "sections" is passed, includes the course sections that are associated with the topic, if the topic is specific to certain sections of the course. If "sections_user_count" is passed, then: (a) If sections were asked for *and* the topic is specific to certain course sections sections, includes the number of users in each section. (as part of the section json asked for above) (b) Else, includes at the root level the total number of users in the topic's context (group or course) that the topic applies to. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: DiscussionTopic externalDocs: url: https://canvas.instructure.com/doc/api/announcements.html /v1/accounts/{account_id}/scopes: get: tags: - Api Token Scopes operationId: list_scopes summary: List scopes description: A list of scopes that can be applied to developer keys and access tokens. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: group_by in: query schema: type: string enum: - resource_name required: false description: The attribute to group the scopes by. By default no grouping is done. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Scope' externalDocs: url: https://canvas.instructure.com/doc/api/api_token_scopes.html /v1/appointment_groups: get: tags: - Appointment Groups operationId: list_appointment_groups summary: List appointment groups description: |- Retrieve the paginated list of appointment groups that can be reserved or managed by the current user. parameters: - name: scope in: query schema: type: string enum: - reservable - manageable required: false description: Defaults to "reservable" - name: context_codes in: query schema: type: array items: type: string required: false description: Array of context codes used to limit returned results. - name: include_past_appointments in: query schema: type: boolean required: false description: Defaults to false. If true, includes past appointment groups - name: include in: query schema: type: array items: type: string enum: - appointments - child_events - participant_count - reserved_times - all_context_codes required: false description: |- Array of additional information to include. "appointments":: calendar event time slots for this appointment group "child_events":: reservations of those time slots "participant_count":: number of reservations "reserved_times":: the event id, start time and end time of reservations the current user has made) "all_context_codes":: all context codes associated with this appointment group responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html post: tags: - Appointment Groups operationId: create_appointment_group summary: Create an appointment group description: |- Create and return a new appointment group. If new_appointments are specified, the response will return a new_appointments array (same format as appointments array, see "List appointment groups" action) requestBody: required: false content: application/json: schema: &id020 type: object properties: appointment_group[context_codes]: type: array items: type: string description: |- Array of context codes (courses, e.g. course_1) this group should be linked to (1 or more). Users in the course(s) with appropriate permissions will be able to sign up for this appointment group. appointment_group[sub_context_codes]: type: array items: type: string description: |- Array of sub context codes (course sections or a single group category) this group should be linked to. Used to limit the appointment group to particular sections. If a group category is specified, students will sign up in groups and the participant_type will be "Group" instead of "User". appointment_group[title]: type: string description: Short title for the appointment group. appointment_group[description]: type: string description: Longer text description of the appointment group. appointment_group[location_name]: type: string description: Location name of the appointment group. appointment_group[location_address]: type: string description: Location address. appointment_group[publish]: type: boolean description: |- Indicates whether this appointment group should be published (i.e. made available for signup). Once published, an appointment group cannot be unpublished. Defaults to false. appointment_group[participants_per_appointment]: type: integer format: int64 description: |- Maximum number of participants that may register for each time slot. Defaults to null (no limit). appointment_group[min_appointments_per_participant]: type: integer format: int64 description: |- Minimum number of time slots a user must register for. If not set, users do not need to sign up for any time slots. appointment_group[max_appointments_per_participant]: type: integer format: int64 description: Maximum number of time slots a user may register for. appointment_group[new_appointments][X]: type: array items: type: string description: |- Nested array of start time/end time pairs indicating time slots for this appointment group. Refer to the example request. appointment_group[participant_visibility]: type: string enum: - private - protected description: |- "private":: participants cannot see who has signed up for a particular time slot "protected":: participants can see who has signed up. Defaults to "private". appointment_group[allow_observer_signup]: type: boolean description: Whether observer users can sign-up for an appointment. Defaults to false. required: - appointment_group[context_codes] - appointment_group[title] application/x-www-form-urlencoded: schema: *id020 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html /v1/appointment_groups/{id}: get: tags: - Appointment Groups operationId: get_single_appointment_group summary: Get a single appointment group description: Returns information for a single appointment group parameters: - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - child_events - appointments - all_context_codes required: false description: |- Array of additional information to include. See include[] argument of "List appointment groups" action. "child_events":: reservations of time slots time slots "appointments":: will always be returned "all_context_codes":: all context codes associated with this appointment group responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html put: tags: - Appointment Groups operationId: update_appointment_group summary: Update an appointment group description: |- Update and return an appointment group. If new_appointments are specified, the response will return a new_appointments array (same format as appointments array, see "List appointment groups" action). parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id021 type: object properties: appointment_group[context_codes]: type: array items: type: string description: |- Array of context codes (courses, e.g. course_1) this group should be linked to (1 or more). Users in the course(s) with appropriate permissions will be able to sign up for this appointment group. appointment_group[sub_context_codes]: type: array items: type: string description: |- Array of sub context codes (course sections or a single group category) this group should be linked to. Used to limit the appointment group to particular sections. If a group category is specified, students will sign up in groups and the participant_type will be "Group" instead of "User". appointment_group[title]: type: string description: Short title for the appointment group. appointment_group[description]: type: string description: Longer text description of the appointment group. appointment_group[location_name]: type: string description: Location name of the appointment group. appointment_group[location_address]: type: string description: Location address. appointment_group[publish]: type: boolean description: |- Indicates whether this appointment group should be published (i.e. made available for signup). Once published, an appointment group cannot be unpublished. Defaults to false. appointment_group[participants_per_appointment]: type: integer format: int64 description: |- Maximum number of participants that may register for each time slot. Defaults to null (no limit). appointment_group[min_appointments_per_participant]: type: integer format: int64 description: |- Minimum number of time slots a user must register for. If not set, users do not need to sign up for any time slots. appointment_group[max_appointments_per_participant]: type: integer format: int64 description: Maximum number of time slots a user may register for. appointment_group[new_appointments][X]: type: array items: type: string description: |- Nested array of start time/end time pairs indicating time slots for this appointment group. Refer to the example request. appointment_group[participant_visibility]: type: string enum: - private - protected description: |- "private":: participants cannot see who has signed up for a particular time slot "protected":: participants can see who has signed up. Defaults to "private". appointment_group[allow_observer_signup]: type: boolean description: Whether observer users can sign-up for an appointment. required: - appointment_group[context_codes] application/x-www-form-urlencoded: schema: *id021 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html delete: tags: - Appointment Groups operationId: delete_appointment_group summary: Delete an appointment group description: |- Delete an appointment group (and associated time slots and reservations) and return the deleted group parameters: - name: id in: path schema: type: string required: true description: ID - name: cancel_reason in: query schema: type: string required: false description: Reason for deleting/canceling the appointment group. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html /v1/appointment_groups/{id}/users: get: tags: - Appointment Groups operationId: list_user_participants summary: List user participants description: |- A paginated list of users that are (or may be) participating in this appointment group. Refer to the Users API for the response fields. Returns no results for appointment groups with the "Group" participant_type. parameters: - name: id in: path schema: type: string required: true description: ID - name: registration_status in: query schema: type: string enum: - all - registered - registered required: false description: Limits results to the a given participation status, defaults to "all" responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html /v1/appointment_groups/{id}/groups: get: tags: - Appointment Groups operationId: list_student_group_participants summary: List student group participants description: |- A paginated list of student groups that are (or may be) participating in this appointment group. Refer to the Groups API for the response fields. Returns no results for appointment groups with the "User" participant_type. parameters: - name: id in: path schema: type: string required: true description: ID - name: registration_status in: query schema: type: string enum: - all - registered - registered required: false description: Limits results to the a given participation status, defaults to "all" responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html /v1/appointment_groups/next_appointment: get: tags: - Appointment Groups operationId: get_next_appointment summary: Get next appointment description: |- Return the next appointment available to sign up for. The appointment is returned in a one-element array. If no future appointments are available, an empty array is returned. parameters: - name: appointment_group_ids in: query schema: type: array items: type: string required: false description: List of ids of appointment groups to search. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: CalendarEvent externalDocs: url: https://canvas.instructure.com/doc/api/appointment_groups.html /v1/question_banks: get: tags: - Assessment Question Banks operationId: list_question_banks summary: List question banks description: Returns the paginated list of question banks for a given context. parameters: - name: context_type in: query schema: type: string enum: - Course - Account required: true description: The type of context. Must be either "Course" or "Account". - name: context_id in: query schema: type: integer format: int64 required: true description: The id of the context. - name: include_question_count in: query schema: type: boolean required: false description: Whether to include the number of questions in each bank. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssessmentQuestionBank' externalDocs: url: https://canvas.instructure.com/doc/api/assessment_question_banks.html /v1/question_banks/{id}: get: tags: - Assessment Question Banks operationId: get_single_question_bank summary: Get a single question bank description: Returns the question bank with the given id parameters: - name: id in: path schema: type: integer format: int64 required: true description: The question bank unique identifier. - name: include_question_count in: query schema: type: boolean required: false description: Whether to include the number of questions in the bank. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssessmentQuestionBank' externalDocs: url: https://canvas.instructure.com/doc/api/assessment_question_banks.html /v1/question_banks/{id}/questions: get: tags: - Assessment Question Banks operationId: list_assessment_questions_for_question_bank summary: List assessment questions for a question bank description: Returns the paginated list of assessment questions in this bank. parameters: - name: id in: path schema: type: integer format: int64 required: true description: The question bank unique identifier. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssessmentQuestion' externalDocs: url: https://canvas.instructure.com/doc/api/assessment_question_banks.html /lti/asset_processors/{asset_processor_id}/reports: post: tags: - Asset Processor operationId: create_asset_report summary: Create an Asset Report description: |- Creates a report for a given Canvas-managed asset (such as a submission attachment). Returns an HTTP 201 (Created) on success. parameters: - name: asset_processor_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id022 type: object properties: assetId: type: string description: |- The UUID of the asset to which the report applies. Canvas will supply this to the tool in the the `LtiAssetProcessorSubmissionNotice`. errorCode: type: string description: |- A machine-readable code indicating the cause of the failure, for reports with a processingProgress value of `Failed`. The following standard error codes are available, but tools may use their own (in which case the tool may provide human-readable information in the `comment` field): UNSUPPORTED_ASSET_TYPE, ASSET_TOO_LARGE, ASSET_TOO_SMALL, EULA_NOT_ACCEPTED, DOWNLOAD_FAILED indicationAlt: type: string description: |- Alternate text representing the meaning of the indicationColor for screen readers or as a tooltip over the indication color. indicationColor: type: string description: |- A hex (#RRGGBB) color code the tool wishes to use indicating the outcome of an asset's report. priority: type: integer format: int64 description: |- A number from 0 (meaning "good" or "success") to 5 (meaning urgent or time-critical notable features) indicating the tool's perceived priority of the report. If a priority is not known or applicable, the tool should use the value 0. processingProgress: type: string description: |- Indicates the status of the report. Should be one of the following: Processed, Processing, PendingManual, Failed, NotProcessed, NotReady. If an unrecognized value is given, the value will be stored, but will be treated by Canvas as `NotReady`. result: type: string description: |- A short string (16 characters or fewer) that briefly describes the successful result of the processing. This should be provided if processingProgress is Processed, and not provided otherwise. timestamp: type: string description: |- An ISO8601 date time value with microsecond precision. Reports with newer timestamps for the same asset and report type supersede previously submitted reports with older (or equal) timestamps. Likewise, if the timestamp provided is older than the latest timestamp for an existing report (of same asset and type), the new report will be ignored and the endpoint will return an HTTP 409 (Conflict). title: type: string description: A human-readable title for the report, to be displayed to the user. type: type: string description: An opaque value representing the type of report. visibleToOwner: type: boolean description: |- A boolean value indicates whether the indicator and report should be visible to the user who owns the asset being reported on. If no value is provided, the platform should assume a default value of false application/x-www-form-urlencoded: schema: *id022 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: the input arguments, as accepted and stored in the database. externalDocs: url: https://canvas.instructure.com/doc/api/asset_processor.html /lti/asset_processor_eulas/{context_external_tool_id}/deployment: put: tags: - Asset Processor operationId: update_eula_deployment_configuration summary: Update Eula Deployment Configuration description: |- Provides a mechanism by which a platform can enable or disable the requirement for users to accept a EULA within the scope of an entire deployment parameters: - name: context_external_tool_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id023 type: object properties: eulaRequired: type: boolean description: A boolean value representing whether or not the EULA is required for the deployment. application/x-www-form-urlencoded: schema: *id023 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: the input arguments as accepted and stored in the database externalDocs: url: https://canvas.instructure.com/doc/api/asset_processor.html /lti/asset_processor_eulas/{context_external_tool_id}/user: post: tags: - Asset Processor operationId: create_eula_acceptance summary: Create an Eula Acceptance description: |- The EULA user acceptance service provides a mechanism by which a tool can notify a platform of whether or not a user has accepted a EULA. parameters: - name: context_external_tool_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id024 type: object properties: userId: type: string description: |- The userId represents the user who has accepted or declined the EULA, `lti_id` of the Canvas User. accepted: type: boolean description: A boolean value representing whether or not the user has accepted the EULA timestamp: type: string description: |- The timestamp represents the time at which the user accepted or declined the EULA. This timestamp must be formatted as an ISO 8601 date time. application/x-www-form-urlencoded: schema: *id024 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: the input arguments as accepted and stored in the database externalDocs: url: https://canvas.instructure.com/doc/api/asset_processor.html delete: tags: - Asset Processor operationId: delete_eula_acceptances_for_deployment summary: Delete Eula Acceptances for deployment description: |- Remove the EULA acceptance status for all users within the current deployment. This will allow a tool to reset the EULA acceptance status for all users, and force them to accept the EULA again in the case that the EULA has changed. parameters: - name: context_external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: 204 No Content externalDocs: url: https://canvas.instructure.com/doc/api/asset_processor.html /v1/courses/{course_id}/assignments/{assignment_id}/extensions: post: tags: - Assignment Extensions operationId: set_extensions_for_student_assignment_submissions summary: Set extensions for student assignment submissions description: |- Responses * 200 OK if the request was successful * 403 Forbidden if you are not allowed to extend assignments for this course * 400 Bad Request if any of the extensions are invalid parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id025 type: object properties: assignment_extensions[user_id]: type: array items: type: integer description: The ID of the user we want to add assignment extensions for. assignment_extensions[extra_attempts]: type: array items: type: integer description: |- Number of times the student is allowed to re-take the assignment over the limit. required: - assignment_extensions[user_id] - assignment_extensions[extra_attempts] application/x-www-form-urlencoded: schema: *id025 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/assignment_extensions.html /v1/courses/{course_id}/assignment_groups: get: tags: - Assignment Groups operationId: list_assignment_groups summary: List assignment groups description: |- Returns the paginated list of assignment groups for the current context. The returned groups are sorted by their position field. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - assignments - discussion_topic - all_dates - assignment_visibility - overrides - submission - observed_users - can_edit - score_statistics - peer_review required: false description: |- Associations to include with the group. "discussion_topic", "all_dates", "can_edit", "assignment_visibility" & "submission" are only valid if "assignments" is also included. "score_statistics" requires that the "assignments" and "submission" options are included. The "assignment_visibility" option additionally requires that the Differentiated Assignments course feature be turned on. If "observed_users" is passed along with "assignments" and "submission", submissions for observed users will also be included as an array. The "peer_review" option requires that the Peer Review Grading course feature be turned on and that "assignments" is included. - name: assignment_ids in: query schema: type: array items: type: string required: false description: |- If "assignments" are included, optionally return only assignments having their ID in this array. This argument may also be passed as a comma separated string. - name: exclude_assignment_submission_types in: query schema: type: array items: type: string enum: - online_quiz - discussion_topic - wiki_page - external_tool required: false description: |- If "assignments" are included, those with the specified submission types will be excluded from the assignment groups. - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides for each assignment, defaults to true. - name: grading_period_id in: query schema: type: integer format: int64 required: false description: |- The id of the grading period in which assignment groups are being requested (Requires grading periods to exist.) - name: scope_assignments_to_student in: query schema: type: boolean required: false description: |- If true, all assignments returned will apply to the current user in the specified grading period. If assignments apply to other students in the specified grading period, but not the current user, they will not be returned. (Requires the grading_period_id argument and grading periods to exist. In addition, the current user must be a student.) responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentGroup' externalDocs: url: https://canvas.instructure.com/doc/api/assignment_groups.html post: tags: - Assignment Groups operationId: create_assignment_group summary: Create an Assignment Group description: Create a new assignment group for this course. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id026 type: object properties: name: type: string description: The assignment group's name position: type: integer format: int64 description: The position of this assignment group in relation to the other assignment groups group_weight: type: number description: The percent of the total grade that this assignment group represents sis_source_id: type: string description: The sis source id of the Assignment Group integration_data: type: object additionalProperties: true description: The integration data of the Assignment Group application/x-www-form-urlencoded: schema: *id026 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentGroup' externalDocs: url: https://canvas.instructure.com/doc/api/assignment_groups.html /v1/courses/{course_id}/assignment_groups/{assignment_group_id}: get: tags: - Assignment Groups operationId: get_assignment_group summary: Get an Assignment Group description: Returns the assignment group with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_group_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - assignments - discussion_topic - assignment_visibility - submission - score_statistics required: false description: |- Associations to include with the group. "discussion_topic" and "assignment_visibility" and "submission" are only valid if "assignments" is also included. "score_statistics" is only valid if "submission" and "assignments" are also included. The "assignment_visibility" option additionally requires that the Differentiated Assignments course feature be turned on. - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides for each assignment, defaults to true. - name: grading_period_id in: query schema: type: integer format: int64 required: false description: |- The id of the grading period in which assignment groups are being requested (Requires grading periods to exist on the account) responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentGroup' externalDocs: url: https://canvas.instructure.com/doc/api/assignment_groups.html put: tags: - Assignment Groups operationId: edit_assignment_group summary: Edit an Assignment Group description: Modify an existing Assignment Group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id027 type: object properties: name: type: string description: The assignment group's name position: type: integer format: int64 description: The position of this assignment group in relation to the other assignment groups group_weight: type: number description: The percent of the total grade that this assignment group represents sis_source_id: type: string description: The sis source id of the Assignment Group integration_data: type: object additionalProperties: true description: The integration data of the Assignment Group rules: type: string description: |- The grading rules that are applied within this assignment group See the Assignment Group object definition for format application/x-www-form-urlencoded: schema: *id027 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentGroup' externalDocs: url: https://canvas.instructure.com/doc/api/assignment_groups.html delete: tags: - Assignment Groups operationId: destroy_assignment_group summary: Destroy an Assignment Group description: Deletes the assignment group with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_group_id in: path schema: type: string required: true description: ID - name: move_assignments_to in: query schema: type: integer format: int64 required: false description: |- The ID of an active Assignment Group to which the assignments that are currently assigned to the destroyed Assignment Group will be assigned. NOTE: If this argument is not provided, any assignments in this Assignment Group will be deleted. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentGroup' externalDocs: url: https://canvas.instructure.com/doc/api/assignment_groups.html /v1/courses/{course_id}/assignments/{id}: delete: tags: - Assignments operationId: delete_assignment summary: Delete an assignment description: Delete the given assignment. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html get: tags: - Assignments operationId: get_single_assignment summary: Get a single assignment description: Returns the assignment with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - assignment_visibility - overrides - observed_users - can_edit - score_statistics - ab_guid - peer_review - academic_integrity_pledge required: false description: |- Associations to include with the assignment. The "assignment_visibility" option requires that the Differentiated Assignments course feature be turned on. If "observed_users" is passed, submissions for observed users will also be included. For "score_statistics" to be included, the "submission" option must also be set. The "peer_review" option returns peer review sub assignment data if it exists, regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. The "academic_integrity_pledge" option returns the account-level academic integrity pledge text a student must accept before submitting this assignment. The key is only present when the pledge is enabled for the account; when present but the pledge does not apply to this assignment (e.g. external tool assignments or Canvas Career courses) the value is null. - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides to the assignment, defaults to true. - name: needs_grading_count_by_section in: query schema: type: boolean required: false description: Split up "needs_grading_count" by sections into the "needs_grading_count_by_section" key, defaults to false - name: all_dates in: query schema: type: boolean required: false description: All dates associated with the assignment, if applicable responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html put: tags: - Assignments operationId: edit_assignment summary: Edit an assignment description: Modify an existing assignment. parameters: - name: course_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: &id028 type: object properties: assignment[name]: type: string description: The assignment name. assignment[position]: type: integer format: int64 description: |- The position of this assignment in the group when displaying assignment lists. assignment[submission_types]: type: array items: type: string description: Only applies if the assignment doesn't have student submissions. deprecated: true assignment[allowed_extensions]: type: array items: type: string description: |- Allowed extensions if submission_types includes "online_upload" Example: allowed_extensions: ["docx","ppt"] assignment[turnitin_enabled]: type: boolean description: |- Only applies when the Turnitin plugin is enabled for a course and the submission_types array includes "online_upload". Toggles Turnitin submissions for the assignment. Will be ignored if Turnitin is not available for the course. assignment[vericite_enabled]: type: boolean description: |- Only applies when the VeriCite plugin is enabled for a course and the submission_types array includes "online_upload". Toggles VeriCite submissions for the assignment. Will be ignored if VeriCite is not available for the course. assignment[turnitin_settings]: type: string description: |- Settings to send along to turnitin. See Assignment object definition for format. assignment[sis_assignment_id]: type: string description: The sis id of the Assignment assignment[integration_data]: type: string description: Data used for SIS integrations. Requires admin-level token with the "Manage SIS" permission. JSON string required. assignment[integration_id]: type: string description: Unique ID from third party integrations assignment[peer_reviews]: type: boolean description: |- If submission_types does not include external_tool,discussion_topic, online_quiz, or on_paper, determines whether or not peer reviews will be turned on for the assignment. assignment[automatic_peer_reviews]: type: boolean description: |- Whether peer reviews will be assigned automatically by Canvas or if teachers must manually assign peer reviews. Does not apply if peer reviews are not enabled. assignment[notify_of_update]: type: boolean description: |- If true, Canvas will send a notification to students in the class notifying them that the content has changed. assignment[group_category_id]: type: integer format: int64 description: |- If present, the assignment will become a group assignment assigned to the group. assignment[grade_group_students_individually]: type: integer format: int64 description: |- If this is a group assignment, teachers have the options to grade students individually. If false, Canvas will apply the assignment's score to each member of the group. If true, the teacher can manually assign scores to each member of the group. assignment[external_tool_tag_attributes]: type: string description: |- Hash of external tool parameters if submission_types is ["external_tool"]. See Assignment object definition for format. assignment[points_possible]: type: number description: The maximum points possible on the assignment. assignment[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points - not_graded description: |- The strategy used for grading the assignment. The assignment defaults to "points" if this field is omitted. assignment[due_at]: type: string format: date-time description: |- The day/time the assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. assignment[lock_at]: type: string format: date-time description: |- The day/time the assignment is locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. assignment[unlock_at]: type: string format: date-time description: |- The day/time the assignment is unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. assignment[description]: type: string description: The assignment's description, supports HTML. assignment[assignment_group_id]: type: integer format: int64 description: |- The assignment group id to put the assignment in. Defaults to the top assignment group in the course. assignment[assignment_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: |- List of overrides for the assignment. If the +assignment[assignment_overrides]+ key is absent, any existing overrides are kept as is. If the +assignment[assignment_overrides]+ key is present, existing overrides are updated or deleted (and new ones created, as necessary) to match the provided list. assignment[only_visible_to_overrides]: type: boolean description: |- Whether this assignment is only visible to overrides (Only useful if 'differentiated assignments' account setting is on) assignment[published]: type: boolean description: |- Whether this assignment is published. (Only useful if 'draft state' account setting is on) Unpublished assignments are not visible to students. assignment[grading_standard_id]: type: integer format: int64 description: |- The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. This will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'. assignment[omit_from_final_grade]: type: boolean description: Whether this assignment is counted towards a student's final grade. assignment[hide_in_gradebook]: type: boolean description: Whether this assignment is shown in the gradebook. assignment[moderated_grading]: type: boolean description: Whether this assignment is moderated. assignment[grader_count]: type: integer format: int64 description: |- The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors. assignment[final_grader_id]: type: integer format: int64 description: |- The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments. assignment[grader_comments_visible_to_graders]: type: boolean description: |- Boolean indicating if provisional graders' comments are visible to other provisional graders. Only relevant for moderated assignments. assignment[graders_anonymous_to_graders]: type: boolean description: |- Boolean indicating if provisional graders' identities are hidden from other provisional graders. Only relevant for moderated assignments. assignment[graders_names_visible_to_final_grader]: type: boolean description: |- Boolean indicating if provisional grader identities are visible to the the final grader. Only relevant for moderated assignments. assignment[anonymous_grading]: type: boolean description: |- Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities. assignment[allowed_attempts]: type: integer format: int64 description: |- The number of submission attempts allowed for this assignment. Set to -1 or null for unlimited attempts. assignment[annotatable_attachment_id]: type: integer format: int64 description: |- The Attachment ID of the document being annotated. Only applies when submission_types includes "student_annotation". assignment[asset_processors]: type: array items: type: array items: {} description: |- Document processors for this assignment. New document processors can only be added via the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication. Deletion of document processors (passing an empty array) is allowed via API. assignment[force_updated_at]: type: boolean description: If true, updated_at will be set even if no changes were made. assignment[peer_review][points_possible]: type: number description: The maximum points possible for peer reviews. assignment[peer_review][grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: |- The strategy used for grading peer reviews. Defaults to "points" if this field is omitted. assignment[peer_review][due_at]: type: string format: date-time description: |- The day/time the peer reviews are due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z. assignment[peer_review][lock_at]: type: string format: date-time description: |- The day/time the peer reviews are locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z. assignment[peer_review][unlock_at]: type: string format: date-time description: |- The day/time the peer reviews are unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z. assignment[peer_review][peer_review_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: |- List of overrides for the peer reviews. When updating overrides: - Include "id" to update an existing override - Omit "id" to create a new override - Omit an override from the list to delete it application/x-www-form-urlencoded: schema: *id028 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments: get: tags: - Assignments operationId: list_assignments_assignments summary: List assignments description: Returns the paginated list of assignments for the current course or assignment group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - assignment_visibility - all_dates - overrides - observed_users - can_edit - score_statistics - ab_guid required: false description: |- Optional information to include with each assignment: submission:: The current user's current +Submission+ assignment_visibility:: An array of ids of students who can see the assignment all_dates:: An array of +AssignmentDate+ structures, one for each override, and also a +base+ if the assignment has an "Everyone" / "Everyone Else" date overrides:: An array of +AssignmentOverride+ structures observed_users:: An array of submissions for observed users can_edit:: an extra Boolean value will be included with each +Assignment+ (and +AssignmentDate+ if +all_dates+ is supplied) to indicate whether the caller can edit the assignment or date. Moderated grading and closed grading periods may restrict a user's ability to edit an assignment. score_statistics:: An object containing min, max, and mean score on this assignment. This will not be included for students if there are less than 5 graded assignments or if disabled by the instructor. Only valid if 'submission' is also included. ab_guid:: An array of guid strings for academic benchmarks - name: search_term in: query schema: type: string required: false description: The partial title of the assignments to match and return. - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides for each assignment, defaults to true. - name: needs_grading_count_by_section in: query schema: type: boolean required: false description: Split up "needs_grading_count" by sections into the "needs_grading_count_by_section" key, defaults to false - name: bucket in: query schema: type: string enum: - past - overdue - undated - ungraded - unsubmitted - upcoming - future required: false description: If included, only return certain assignments depending on due date and submission status. - name: assignment_ids in: query schema: type: array items: type: string required: false description: if set, return only assignments specified - name: order_by in: query schema: type: string enum: - position - name - due_at required: false description: Determines the order of the assignments. Defaults to "position". - name: post_to_sis in: query schema: type: boolean required: false description: Return only assignments that have post_to_sis set or not set. - name: new_quizzes in: query schema: type: boolean required: false description: Return only New Quizzes assignments responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html post: tags: - Assignments operationId: create_assignment summary: Create an assignment description: |- Create a new assignment for this course. The assignment is created in the active state. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id029 type: object properties: assignment[name]: type: string description: The assignment name. assignment[position]: type: integer format: int64 description: |- The position of this assignment in the group when displaying assignment lists. assignment[submission_types]: type: array items: type: string enum: - online_quiz - none - on_paper - discussion_topic - external_tool - online_upload - online_text_entry - online_url - media_recording - student_annotation description: |- List of supported submission types for the assignment. Unless the assignment is allowing online submissions, the array should only have one element. If not allowing online submissions, your options are: "online_quiz" "none" "on_paper" "discussion_topic" "external_tool" If you are allowing online submissions, you can have one or many allowed submission types: "online_upload" "online_text_entry" "online_url" "media_recording" (Only valid when the Kaltura plugin is enabled) "student_annotation" assignment[allowed_extensions]: type: array items: type: string description: |- Allowed extensions if submission_types includes "online_upload" Example: allowed_extensions: ["docx","ppt"] assignment[turnitin_enabled]: type: boolean description: |- Only applies when the Turnitin plugin is enabled for a course and the submission_types array includes "online_upload". Toggles Turnitin submissions for the assignment. Will be ignored if Turnitin is not available for the course. assignment[vericite_enabled]: type: boolean description: |- Only applies when the VeriCite plugin is enabled for a course and the submission_types array includes "online_upload". Toggles VeriCite submissions for the assignment. Will be ignored if VeriCite is not available for the course. assignment[turnitin_settings]: type: string description: |- Settings to send along to turnitin. See Assignment object definition for format. assignment[integration_data]: type: string description: Data used for SIS integrations. Requires admin-level token with the "Manage SIS" permission. JSON string required. assignment[integration_id]: type: string description: Unique ID from third party integrations assignment[peer_reviews]: type: boolean description: |- If submission_types does not include external_tool,discussion_topic, online_quiz, or on_paper, determines whether or not peer reviews will be turned on for the assignment. assignment[automatic_peer_reviews]: type: boolean description: |- Whether peer reviews will be assigned automatically by Canvas or if teachers must manually assign peer reviews. Does not apply if peer reviews are not enabled. assignment[notify_of_update]: type: boolean description: |- If true, Canvas will send a notification to students in the class notifying them that the content has changed. assignment[group_category_id]: type: integer format: int64 description: |- If present, the assignment will become a group assignment assigned to the group. assignment[grade_group_students_individually]: type: integer format: int64 description: |- If this is a group assignment, teachers have the options to grade students individually. If false, Canvas will apply the assignment's score to each member of the group. If true, the teacher can manually assign scores to each member of the group. assignment[external_tool_tag_attributes]: type: string description: |- Hash of external tool parameters if submission_types is ["external_tool"]. See Assignment object definition for format. assignment[points_possible]: type: number description: The maximum points possible on the assignment. assignment[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points - not_graded description: |- The strategy used for grading the assignment. The assignment defaults to "points" if this field is omitted. assignment[due_at]: type: string format: date-time description: |- The day/time the assignment is due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. assignment[lock_at]: type: string format: date-time description: |- The day/time the assignment is locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. assignment[unlock_at]: type: string format: date-time description: |- The day/time the assignment is unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. assignment[description]: type: string description: The assignment's description, supports HTML. assignment[assignment_group_id]: type: integer format: int64 description: |- The assignment group id to put the assignment in. Defaults to the top assignment group in the course. assignment[assignment_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: List of overrides for the assignment. assignment[only_visible_to_overrides]: type: boolean description: |- Whether this assignment is only visible to overrides (Only useful if 'differentiated assignments' account setting is on) assignment[published]: type: boolean description: |- Whether this assignment is published. (Only useful if 'draft state' account setting is on) Unpublished assignments are not visible to students. assignment[grading_standard_id]: type: integer format: int64 description: |- The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. This will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'. assignment[omit_from_final_grade]: type: boolean description: Whether this assignment is counted towards a student's final grade. assignment[hide_in_gradebook]: type: boolean description: Whether this assignment is shown in the gradebook. assignment[quiz_lti]: type: boolean description: |- Whether this assignment should use the Quizzes 2 LTI tool. Sets the submission type to 'external_tool' and configures the external tool attributes to use the Quizzes 2 LTI tool configured for this course. Has no effect if no Quizzes 2 LTI tool is configured. assignment[moderated_grading]: type: boolean description: Whether this assignment is moderated. assignment[grader_count]: type: integer format: int64 description: |- The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors. assignment[final_grader_id]: type: integer format: int64 description: |- The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments. assignment[grader_comments_visible_to_graders]: type: boolean description: |- Boolean indicating if provisional graders' comments are visible to other provisional graders. Only relevant for moderated assignments. assignment[graders_anonymous_to_graders]: type: boolean description: |- Boolean indicating if provisional graders' identities are hidden from other provisional graders. Only relevant for moderated assignments. assignment[graders_names_visible_to_final_grader]: type: boolean description: |- Boolean indicating if provisional grader identities are visible to the the final grader. Only relevant for moderated assignments. assignment[anonymous_grading]: type: boolean description: |- Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities. assignment[allowed_attempts]: type: integer format: int64 description: The number of submission attempts allowed for this assignment. Set to -1 for unlimited attempts. assignment[annotatable_attachment_id]: type: integer format: int64 description: |- The Attachment ID of the document being annotated. Only applies when submission_types includes "student_annotation". assignment[asset_processors]: type: array items: type: array items: {} description: |- Document processors for this assignment. New document processors can only be added via the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication. Deletion of document processors (passing an empty array) is allowed via API. assignment[peer_review][points_possible]: type: number description: The maximum points possible for peer reviews. assignment[peer_review][grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: |- The strategy used for grading peer reviews. Defaults to "points" if this field is omitted. assignment[peer_review][due_at]: type: string format: date-time description: |- The day/time the peer reviews are due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z. assignment[peer_review][lock_at]: type: string format: date-time description: |- The day/time the peer reviews are locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z. assignment[peer_review][unlock_at]: type: string format: date-time description: |- The day/time the peer reviews are unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z. assignment[peer_review][peer_review_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: List of overrides for the peer reviews. required: - assignment[name] application/x-www-form-urlencoded: schema: *id029 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignment_groups/{assignment_group_id}/assignments: get: tags: - Assignments operationId: list_assignments_assignment_groups summary: List assignments description: Returns the paginated list of assignments for the current course or assignment group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_group_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - assignment_visibility - all_dates - overrides - observed_users - can_edit - score_statistics - ab_guid required: false description: |- Optional information to include with each assignment: submission:: The current user's current +Submission+ assignment_visibility:: An array of ids of students who can see the assignment all_dates:: An array of +AssignmentDate+ structures, one for each override, and also a +base+ if the assignment has an "Everyone" / "Everyone Else" date overrides:: An array of +AssignmentOverride+ structures observed_users:: An array of submissions for observed users can_edit:: an extra Boolean value will be included with each +Assignment+ (and +AssignmentDate+ if +all_dates+ is supplied) to indicate whether the caller can edit the assignment or date. Moderated grading and closed grading periods may restrict a user's ability to edit an assignment. score_statistics:: An object containing min, max, and mean score on this assignment. This will not be included for students if there are less than 5 graded assignments or if disabled by the instructor. Only valid if 'submission' is also included. ab_guid:: An array of guid strings for academic benchmarks - name: search_term in: query schema: type: string required: false description: The partial title of the assignments to match and return. - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides for each assignment, defaults to true. - name: needs_grading_count_by_section in: query schema: type: boolean required: false description: Split up "needs_grading_count" by sections into the "needs_grading_count_by_section" key, defaults to false - name: bucket in: query schema: type: string enum: - past - overdue - undated - ungraded - unsubmitted - upcoming - future required: false description: If included, only return certain assignments depending on due date and submission status. - name: assignment_ids in: query schema: type: array items: type: string required: false description: if set, return only assignments specified - name: order_by in: query schema: type: string enum: - position - name - due_at required: false description: Determines the order of the assignments. Defaults to "position". - name: post_to_sis in: query schema: type: boolean required: false description: Return only assignments that have post_to_sis set or not set. - name: new_quizzes in: query schema: type: boolean required: false description: Return only New Quizzes assignments responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/users/{user_id}/courses/{course_id}/assignments: get: tags: - Assignments operationId: list_assignments_for_user summary: List assignments for user description: |- Returns the paginated list of assignments for the specified user if the current user has rights to view. See {api:AssignmentsApiController#index List assignments} for valid arguments. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: course_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/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/duplicate: post: tags: - Assignments operationId: duplicate_assignment summary: Duplicate assignment description: Duplicate an assignment and return a json based on result_type argument. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id030 type: object properties: result_type: type: string enum: - Quiz description: |- Optional information: When the root account has the feature `newquizzes_on_quiz_page` enabled and this argument is set to "Quiz" the response will be serialized into a {file:quizzes.html#Quiz quiz format}; When this argument isn't specified the response will be serialized into an assignment format; application/x-www-form-urlencoded: schema: *id030 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/users/{user_id}/group_members: get: tags: - Assignments operationId: list_group_members_for_student_on_assignment summary: List group members for a student on an assignment description: Returns student ids and names for the group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BasicUser' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/bulk_update: put: tags: - Assignments operationId: bulk_update_assignment_dates summary: Bulk update assignment dates description: |- Update due dates and availability dates for multiple assignments in a course. Accepts a JSON array of objects containing two keys each: +id+, the assignment id, and +all_dates+, an array of +AssignmentDate+ structures containing the base and/or override dates for the assignment, as returned from the {api:AssignmentsApiController#index List assignments} endpoint with +include[]=all_dates+. This endpoint cannot create or destroy assignment overrides; any existing assignment overrides that are not referenced in the arguments will be left alone. If an override is given, any dates that are not supplied with it will be defaulted. To clear a date, specify null explicitly. All referenced assignments will be validated before any are saved. A list of errors will be returned if any provided dates are invalid, and no changes will be saved. The bulk update is performed in a background job, use the {api:ProgressController#show Progress API} to check its status. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/overrides: get: tags: - Assignments operationId: list_assignment_overrides summary: List assignment overrides description: |- Returns the paginated list of overrides for this assignment that target sections/groups/students visible to the current user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html post: tags: - Assignments operationId: create_assignment_override summary: Create an assignment override description: |- One of student_ids, group_id, or course_section_id must be present. At most one should be present; if multiple are present only the most specific (student_ids first, then group_id, then course_section_id) is used and any others are ignored. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id031 type: object properties: assignment_override[student_ids]: type: array items: type: integer description: |- The IDs of the override's target students. If present, the IDs must each identify a user with an active student enrollment in the course that is not already targetted by a different adhoc override. assignment_override[title]: type: string description: |- The title of the adhoc assignment override. Required if student_ids is present, ignored otherwise (the title is set to the name of the targetted group or section instead). assignment_override[group_id]: type: integer format: int64 description: |- The ID of the override's target group. If present, the following conditions must be met for the override to be successful: 1. the assignment MUST be a group assignment (a group_category_id is assigned to it) 2. the ID must identify an active group in the group set the assignment is in 3. the ID must not be targetted by a different override See {Appendix: Group assignments} for more info. assignment_override[course_section_id]: type: integer format: int64 description: |- The ID of the override's target section. If present, must identify an active section of the assignment's course not already targetted by a different override. assignment_override[due_at]: type: string format: date-time description: |- The day/time the overridden assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect due date. May be present but null to indicate the override removes any previous due date. assignment_override[unlock_at]: type: string format: date-time description: |- The day/time the overridden assignment becomes unlocked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the unlock date. May be present but null to indicate the override removes any previous unlock date. assignment_override[lock_at]: type: string format: date-time description: |- The day/time the overridden assignment becomes locked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the lock date. May be present but null to indicate the override removes any previous lock date. application/x-www-form-urlencoded: schema: *id031 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}: get: tags: - Assignments operationId: get_single_assignment_override summary: Get a single assignment override description: Returns details of the the override with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_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 content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html put: tags: - Assignments operationId: update_assignment_override summary: Update an assignment override description: |- All current overridden values must be supplied if they are to be retained; e.g. if due_at was overridden, but this PUT omits a value for due_at, due_at will no longer be overridden. If the override is adhoc and student_ids is not supplied, the target override set is unchanged. Target override sets cannot be changed for group or section overrides. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_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: &id032 type: object properties: assignment_override[student_ids]: type: array items: type: integer description: |- The IDs of the override's target students. If present, the IDs must each identify a user with an active student enrollment in the course that is not already targetted by a different adhoc override. Ignored unless the override being updated is adhoc. assignment_override[title]: type: string description: |- The title of an adhoc assignment override. Ignored unless the override being updated is adhoc. assignment_override[due_at]: type: string format: date-time description: |- The day/time the overridden assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect due date. May be present but null to indicate the override removes any previous due date. assignment_override[unlock_at]: type: string format: date-time description: |- The day/time the overridden assignment becomes unlocked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the unlock date. May be present but null to indicate the override removes any previous unlock date. assignment_override[lock_at]: type: string format: date-time description: |- The day/time the overridden assignment becomes locked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the lock date. May be present but null to indicate the override removes any previous lock date. application/x-www-form-urlencoded: schema: *id032 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html delete: tags: - Assignments operationId: delete_assignment_override summary: Delete an assignment override description: Deletes an override and returns its former details. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_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 content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/groups/{group_id}/assignments/{assignment_id}/override: get: tags: - Assignments operationId: redirect_to_assignment_override_for_group summary: Redirect to the assignment override for a group description: |- Responds with a redirect to the override for the given group, if any (404 otherwise). parameters: - name: group_id in: path schema: type: string required: true description: ID - name: assignment_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/assignments.html /v1/sections/{course_section_id}/assignments/{assignment_id}/override: get: tags: - Assignments operationId: redirect_to_assignment_override_for_section summary: Redirect to the assignment override for a section description: |- Responds with a redirect to the override for the given section, if any (404 otherwise). parameters: - name: course_section_id in: path schema: type: string required: true description: ID - name: assignment_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/assignments.html /v1/courses/{course_id}/assignments/overrides: get: tags: - Assignments operationId: batch_retrieve_overrides_in_course summary: Batch retrieve overrides in a course description: |- Returns a list of specified overrides in this course, providing they target sections/groups/students visible to the current user. Returns null elements in the list for requests that were not found. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_overrides[id] in: query schema: type: array items: type: string required: true description: Ids of overrides to retrieve - name: assignment_overrides[assignment_id] in: query schema: type: array items: type: string required: true description: Ids of assignments for each override responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html post: tags: - Assignments operationId: batch_create_overrides_in_course summary: Batch create overrides in a course description: |- Creates the specified overrides for each assignment. Handles creation in a transaction, so all records are created or none are. One of student_ids, group_id, or course_section_id must be present. At most one should be present; if multiple are present only the most specific (student_ids first, then group_id, then course_section_id) is used and any others are ignored. Errors are reported in an errors attribute, an array of errors corresponding to inputs. Global errors will be reported as a single element errors array parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id033 type: object properties: assignment_overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: |- Attributes for the new assignment overrides. See {api:AssignmentOverridesController#create Create an assignment override} for available attributes required: - assignment_overrides application/x-www-form-urlencoded: schema: *id033 responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html put: tags: - Assignments operationId: batch_update_overrides_in_course summary: Batch update overrides in a course description: |- Updates a list of specified overrides for each assignment. Handles overrides in a transaction, so either all updates are applied or none. See {api:AssignmentOverridesController#update Update an assignment override} for available attributes. All current overridden values must be supplied if they are to be retained; e.g. if due_at was overridden, but this PUT omits a value for due_at, due_at will no longer be overridden. If the override is adhoc and student_ids is not supplied, the target override set is unchanged. Target override sets cannot be changed for group or section overrides. Errors are reported in an errors attribute, an array of errors corresponding to inputs. Global errors will be reported as a single element errors array parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id034 type: object properties: assignment_overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: Attributes for the updated overrides. required: - assignment_overrides application/x-www-form-urlencoded: schema: *id034 responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/accounts/{account_id}/authentication_providers: get: tags: - Authentication Providers operationId: list_authentication_providers summary: List authentication providers description: Returns a paginated list of authentication providers parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AuthenticationProvider' externalDocs: url: https://canvas.instructure.com/doc/api/authentication_providers.html post: tags: - Authentication Providers operationId: add_authentication_provider summary: Add authentication provider description: |- Add external authentication provider(s) for the account. Services may be Apple, CAS, Facebook, GitHub, Google, LDAP, LinkedIn, Microsoft, OpenID Connect, or SAML. Each authentication provider is specified as a set of parameters as described below. A provider specification must include an 'auth_type' parameter with a value of 'apple', 'canvas', 'cas', 'clever', 'facebook', 'github', 'google', 'ldap', 'linkedin', 'microsoft', 'openid_connect', or 'saml'. The other recognized parameters depend on this auth_type; unrecognized parameters are discarded. Provider specifications not specifying a valid auth_type are ignored. You can set the 'position' for any provider. The config in the 1st position is considered the default. You can set 'jit_provisioning' for any provider besides Canvas. You can set 'mfa_required' for any provider. For Apple, the additional recognized parameters are: - client_id [Required] The developer’s client identifier, as provided by WWDR. Not available if configured globally for Canvas. - login_attribute [Optional] The attribute to use to look up the user's login in Canvas. Either 'sub' (the default), or 'email' - federated_attributes [Optional] See FederatedAttributesConfig. Valid provider attributes are 'email', 'firstName', 'lastName', and 'sub'. For Canvas, the additional recognized parameter is: - self_registration 'all', 'none', or 'observer' - who is allowed to register as a new user For CAS, the additional recognized parameters are: - auth_base The CAS server's URL. - log_in_url [Optional] An alternate SSO URL for logging into CAS. You probably should not set this. For Clever, the additional recognized parameters are: - client_id [Required] The Clever application's Client ID. Not available if configured globally for Canvas. - client_secret [Required] The Clever application's Client Secret. Not available if configured globally for Canvas. - district_id [Optional] A district's Clever ID. Leave this blank to let Clever handle the details with its District Picker. This is required for Clever Instant Login to work in a multi-tenant environment. - login_attribute [Optional] The attribute to use to look up the user's login in Canvas. Either 'id' (the default), 'sis_id', 'email', 'student_number', or 'teacher_number'. Note that some fields may not be populated for all users at Clever. - federated_attributes [Optional] See FederatedAttributesConfig. Valid provider attributes are 'id', 'sis_id', 'email', 'student_number', and 'teacher_number'. For Facebook, the additional recognized parameters are: - app_id [Required] The Facebook App ID. Not available if configured globally for Canvas. - app_secret [Required] The Facebook App Secret. Not available if configured globally for Canvas. - login_attribute [Optional] The attribute to use to look up the user's login in Canvas. Either 'id' (the default), or 'email' - federated_attributes [Optional] See FederatedAttributesConfig. Valid provider attributes are 'email', 'first_name', 'id', 'last_name', 'locale', and 'name'. For GitHub, the additional recognized parameters are: - domain [Optional] The domain of a GitHub Enterprise installation. I.e. github.mycompany.com. If not set, it will default to the public github.com. - client_id [Required] The GitHub application's Client ID. Not available if configured globally for Canvas. - client_secret [Required] The GitHub application's Client Secret. Not available if configured globally for Canvas. - login_attribute [Optional] The attribute to use to look up the user's login in Canvas. Either 'id' (the default), or 'login' - federated_attributes [Optional] See FederatedAttributesConfig. Valid provider attributes are 'email', 'id', 'login', and 'name'. For Google, the additional recognized parameters are: - client_id [Required] The Google application's Client ID. Not available if configured globally for Canvas. - client_secret [Required] The Google application's Client Secret. Not available if configured globally for Canvas. - hosted_domain [Optional] A Google Apps domain to restrict logins to. See https://developers.google.com/identity/protocols/OpenIDConnect?hl=en#hd-param - login_attribute [Optional] The attribute to use to look up the user's login in Canvas. Either 'sub' (the default), or 'email' - federated_attributes [Optional] See FederatedAttributesConfig. Valid provider attributes are 'email', 'family_name', 'given_name', 'locale', 'name', and 'sub'. For LDAP, the additional recognized parameters are: - auth_host The LDAP server's URL. - auth_port [Optional, Integer] The LDAP server's TCP port. (default: 389) - auth_over_tls [Optional] Whether to use TLS. Can be 'simple_tls', or 'start_tls'. For backwards compatibility, booleans are also accepted, with true meaning simple_tls. If not provided, it will default to start_tls. - auth_base [Optional] A default treebase parameter for searches performed against the LDAP server. - auth_filter LDAP search filter. Use !{{login}} as a placeholder for the username supplied by the user. For example: "(sAMAccountName=!{{login}})". - identifier_format [Optional] The LDAP attribute to use to look up the Canvas login. Omit to use the username supplied by the user. - auth_username Username - auth_password Password For LinkedIn, the additional recognized parameters are: - client_id [Required] The LinkedIn application's Client ID. Not available if configured globally for Canvas. - client_secret [Required] The LinkedIn application's Client Secret. Not available if configured globally for Canvas. - login_attribute [Optional] The attribute to use to look up the user's login in Canvas. Either 'id' (the default), or 'emailAddress' - federated_attributes [Optional] See FederatedAttributesConfig. Valid provider attributes are 'emailAddress', 'firstName', 'id', 'formattedName', and 'lastName'. For Microsoft, the additional recognized parameters are: - application_id [Required] The application's ID. - application_secret [Required] The application's Client Secret (Password) - tenant [Optional] See https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2-protocols/ Valid values are 'common', 'organizations', 'consumers', or an Azure Active Directory Tenant (as either a UUID or domain, such as contoso.onmicrosoft.com). Defaults to 'common' - login_attribute [Optional] See https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2-tokens/#idtokens Valid values are 'sub', 'email', 'oid', or 'preferred_username'. Note that email may not always be populated in the user's profile at Microsoft. Oid will not be populated for personal Microsoft accounts. Defaults to 'sub' - federated_attributes [Optional] See FederatedAttributesConfig. Valid provider attributes are 'email', 'name', 'preferred_username', 'oid', and 'sub'. For OpenID Connect, the additional recognized parameters are: - client_id [Required] The application's Client ID. - client_secret [Required] The application's Client Secret. - authorize_url [Required] The URL for getting starting the OAuth 2.0 web flow - token_url [Required] The URL for exchanging the OAuth 2.0 authorization code for an Access Token and ID Token - scope [Optional] Space separated additional scopes to request for the token. Note that you need not specify the 'openid' scope, or any scopes that can be automatically inferred by the rules defined at http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims - end_session_endpoint [Optional] URL to send the end user to after logging out of Canvas. See https://openid.net/specs/openid-connect-session-1_0.html#RPLogout - userinfo_endpoint [Optional] URL to request additional claims from. If the initial ID Token received from the provider cannot be used to satisfy the login_attribute and all federated_attributes, this endpoint will be queried for additional information. - login_attribute [Optional] The attribute of the ID Token to look up the user's login in Canvas. Defaults to 'sub'. - federated_attributes [Optional] See FederatedAttributesConfig. Any value is allowed for the provider attribute names, but standard claims are listed at http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims For SAML, the additional recognized parameters are: - metadata [Optional] An XML document to parse as SAML metadata, and automatically populate idp_entity_id, log_in_url, log_out_url, certificate_fingerprint, and identifier_format - metadata_uri [Optional] A URI to download the SAML metadata from, and automatically populate idp_entity_id, log_in_url, log_out_url, certificate_fingerprint, and identifier_format. This URI will also be saved, and the metadata periodically refreshed, automatically. If the metadata contains multiple entities, also supply idp_entity_id to distinguish which one you want (otherwise the only entity in the metadata will be inferred). If you provide the URI 'urn:mace:incommon' or 'http://ukfederation.org.uk', the InCommon or UK Access Management Federation metadata aggregate, respectively, will be used instead, and additional validation checks will happen (including validating that the metadata has been properly signed with the appropriate key). - idp_entity_id The SAML IdP's entity ID - log_in_url The SAML service's SSO target URL - log_out_url [Optional] The SAML service's SLO target URL - certificate_fingerprint The SAML service's certificate fingerprint. - identifier_format The SAML service's identifier format. Must be one of: - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress - urn:oasis:names:tc:SAML:2.0:nameid-format:entity - urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent - urn:oasis:names:tc:SAML:2.0:nameid-format:transient - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName - requested_authn_context [Optional] The SAML AuthnContext - sig_alg [Optional] If set, +AuthnRequest+, +LogoutRequest+, and +LogoutResponse+ messages are signed with the corresponding algorithm. Supported algorithms are: - {http://www.w3.org/2000/09/xmldsig#rsa-sha1} - {http://www.w3.org/2001/04/xmldsig-more#rsa-sha256} RSA-SHA1 and RSA-SHA256 are acceptable aliases. - federated_attributes [Optional] See FederatedAttributesConfig. Any value is allowed for the provider attribute names. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AuthenticationProvider' externalDocs: url: https://canvas.instructure.com/doc/api/authentication_providers.html /v1/accounts/{account_id}/authentication_providers/{id}: get: tags: - Authentication Providers operationId: get_authentication_provider summary: Get authentication provider description: Get the specified authentication provider parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/AuthenticationProvider' externalDocs: url: https://canvas.instructure.com/doc/api/authentication_providers.html put: tags: - Authentication Providers operationId: update_authentication_provider summary: Update authentication provider description: |- Update an authentication provider using the same options as the {api:AuthenticationProvidersController#create Add authentication provider} endpoint. You cannot update an existing provider to a new authentication type. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/AuthenticationProvider' externalDocs: url: https://canvas.instructure.com/doc/api/authentication_providers.html delete: tags: - Authentication Providers operationId: delete_authentication_provider summary: Delete authentication provider description: Delete the config parameters: - name: account_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/authentication_providers.html /v1/accounts/{account_id}/authentication_providers/{id}/restore: put: tags: - Authentication Providers operationId: restore_deleted_authentication_provider summary: Restore a deleted authentication provider description: |- Restore an authentication provider back to active that was previously deleted. Only available to admins who can manage_authentication_provider for given root account. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/AuthenticationProvider' externalDocs: url: https://canvas.instructure.com/doc/api/authentication_providers.html /v1/accounts/{account_id}/sso_settings: get: tags: - Authentication Providers operationId: show_account_auth_settings summary: Show account auth settings description: |- The way to get the current state of each account level setting that's relevant to Single Sign On configuration You can list the current state of each setting with "update_sso_settings" parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SSOSettings' externalDocs: url: https://canvas.instructure.com/doc/api/authentication_providers.html put: tags: - Authentication Providers operationId: update_account_auth_settings summary: Update account auth settings description: |- For various cases of mixed SSO configurations, you may need to set some configuration at the account level to handle the particulars of your setup. This endpoint accepts a PUT request to set several possible account settings. All setting are optional on each request, any that are not provided at all are simply retained as is. Any that provide the key but a null-ish value (blank string, null, undefined) will be UN-set. You can list the current state of each setting with "show_sso_settings" parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SSOSettings' externalDocs: url: https://canvas.instructure.com/doc/api/authentication_providers.html /v1/accounts/{account_id}/authentication_providers/force_password_reset: post: tags: - Authentication Providers operationId: force_password_reset summary: Force password reset description: |- Enqueues a job to set the must_reset_password flag on all active Canvas login pseudonyms for the account. Affected users will be required to change their password on next login. Only available for accounts that have Canvas authentication enabled. parameters: - name: account_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/authentication_providers.html /v1/audit/authentication/logins/{login_id}: get: tags: - Authentications Log operationId: query_by_login summary: Query by login. description: List authentication events for a given login. parameters: - name: login_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: |- The beginning of the time range from which you want events. Events are stored for one year. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/authentications_log.html /v1/audit/authentication/accounts/{account_id}: get: tags: - Authentications Log operationId: query_by_account summary: Query by account. description: List authentication events for a given account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: |- The beginning of the time range from which you want events. Events are stored for one year. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. - name: user_id in: query schema: type: string required: false description: Only include events for this user. Defaults to all users in the account. - name: auth_provider_id in: query schema: type: string required: false description: |- Only include events for logins tied to this authentication provider. Accepts an authentication provider id, or the string "unknown" to match logins that have no explicit provider. Defaults to all providers in the account. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/authentications_log.html /v1/audit/authentication/users/{user_id}: get: tags: - Authentications Log operationId: query_by_user summary: Query by user. description: List authentication events for a given user. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: |- The beginning of the time range from which you want events. Events are stored for one year. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/authentications_log.html /v1/courses/{course_id}/blackout_dates: get: tags: - Blackout Dates operationId: list_blackout_dates_courses summary: List blackout dates description: Returns the list of blackout dates for the current context. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html post: tags: - Blackout Dates operationId: create_blackout_date_courses summary: Create Blackout Date description: Create a blackout date for the given context. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id035 type: object properties: start_date: type: string format: date description: The start date of the blackout date. end_date: type: string format: date description: The end date of the blackout date. event_title: type: string description: The title of the blackout date. application/x-www-form-urlencoded: schema: *id035 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html put: tags: - Blackout Dates operationId: update_list_of_blackout_dates summary: Update a list of Blackout Dates description: Create, update, and delete blackout dates to sync the db with the incoming data. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id036 type: object properties: 'blackout_dates:': type: string description: |- [blackout_date, ...] An object containing the array of BlackoutDates we want to exist after this operation. For array entries, if it has an id it will be updated, if not created, and if an existing BlackoutDate id is missing from the array, it will be deleted. application/x-www-form-urlencoded: schema: *id036 responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: BlackoutDate The result (which should match the input with maybe some different IDs). externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html /v1/accounts/{account_id}/blackout_dates: get: tags: - Blackout Dates operationId: list_blackout_dates_accounts summary: List blackout dates description: Returns the list of blackout dates for the current context. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html post: tags: - Blackout Dates operationId: create_blackout_date_accounts summary: Create Blackout Date description: Create a blackout date for the given context. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id037 type: object properties: start_date: type: string format: date description: The start date of the blackout date. end_date: type: string format: date description: The end date of the blackout date. event_title: type: string description: The title of the blackout date. application/x-www-form-urlencoded: schema: *id037 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html /v1/courses/{course_id}/blackout_dates/{id}: get: tags: - Blackout Dates operationId: get_single_blackout_date_courses summary: Get a single blackout date description: Returns the blackout date with the given id. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html put: tags: - Blackout Dates operationId: update_blackout_date_courses summary: Update Blackout Date description: Update a blackout date for the given context. parameters: - name: course_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: &id038 type: object properties: start_date: type: string format: date description: The start date of the blackout date. end_date: type: string format: date description: The end date of the blackout date. event_title: type: string description: The title of the blackout date. application/x-www-form-urlencoded: schema: *id038 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html delete: tags: - Blackout Dates operationId: delete_blackout_date_courses summary: Delete Blackout Date description: Delete a blackout date for the given context. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html /v1/accounts/{account_id}/blackout_dates/{id}: get: tags: - Blackout Dates operationId: get_single_blackout_date_accounts summary: Get a single blackout date description: Returns the blackout date with the given id. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html put: tags: - Blackout Dates operationId: update_blackout_date_accounts summary: Update Blackout Date description: Update a blackout date for the given context. parameters: - name: account_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: &id039 type: object properties: start_date: type: string format: date description: The start date of the blackout date. end_date: type: string format: date description: The end date of the blackout date. event_title: type: string description: The title of the blackout date. application/x-www-form-urlencoded: schema: *id039 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html delete: tags: - Blackout Dates operationId: delete_blackout_date_accounts summary: Delete Blackout Date description: Delete a blackout date for the given context. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html /v1/courses/{course_id}/blackout_dates/new: get: tags: - Blackout Dates operationId: new_blackout_date_courses summary: New Blackout Date description: Initialize an unsaved Blackout Date for the given context. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html /v1/accounts/{account_id}/blackout_dates/new: get: tags: - Blackout Dates operationId: new_blackout_date_accounts summary: New Blackout Date description: Initialize an unsaved Blackout Date for the given context. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlackoutDate' externalDocs: url: https://canvas.instructure.com/doc/api/blackout_dates.html /v1/courses/{course_id}/block_editor_templates: get: tags: - Block Editor Template operationId: list_block_templates summary: List block templates description: A list of the block templates available to the current user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - name - created_at - updated_at required: false description: Sort results by this field. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. - name: drafts in: query schema: type: boolean required: false description: |- If true, include draft templates. If false or omitted only published templates will be returned. - name: type in: query schema: type: array items: type: string enum: - page - section - block required: false description: What type of templates should be returned. - name: include in: query schema: type: array items: type: string enum: - node_tree - thumbnail required: false description: no description responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BlockEditorTemplate' externalDocs: url: https://canvas.instructure.com/doc/api/block_editor_template.html /v1/courses/{course_id}/blueprint_templates/{template_id}: get: tags: - Blueprint Courses operationId: get_blueprint_information summary: Get blueprint information description: |- Using 'default' as the template_id should suffice for the current implmentation (as there should be only one template per course). However, using specific template ids may become necessary in the future parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlueprintTemplate' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_templates/{template_id}/associated_courses: get: tags: - Blueprint Courses operationId: get_associated_course_information summary: Get associated course information description: Returns a list of courses that are configured to receive updates from this blueprint parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Course externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_templates/{template_id}/update_associations: put: tags: - Blueprint Courses operationId: update_associated_courses summary: Update associated courses description: |- Send a list of course ids to add or remove new associations for the template. Cannot add courses that do not belong to the blueprint course's account. Also cannot add other blueprint courses or courses that already have an association with another blueprint course. After associating new courses, {api:MasterCourses::MasterTemplatesController#queue_migration start a sync} to populate their contents from the blueprint. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id040 type: object properties: course_ids_to_add: type: array items: {} description: Courses to add as associated courses course_ids_to_remove: type: array items: {} description: Courses to remove as associated courses application/x-www-form-urlencoded: schema: *id040 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_templates/{template_id}/migrations: post: tags: - Blueprint Courses operationId: begin_migration_to_push_to_associated_courses summary: Begin a migration to push to associated courses description: |- Begins a migration to push recently updated content to all associated courses. Only one migration can be running at a time. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id041 type: object properties: comment: type: string description: An optional comment to be included in the sync history. send_notification: type: boolean description: Send a notification to the calling user when the sync completes. copy_settings: type: boolean description: |- Whether course settings should be copied over to associated courses. Defaults to true for newly associated courses. send_item_notifications: type: boolean description: |- By default, new-item notifications are suppressed in blueprint syncs. If this option is set, teachers and students may receive notifications for items such as announcements and assignments that are created in associated courses (subject to the usual notification settings). This option requires the Blueprint Item Notifications feature to be enabled. publish_after_initial_sync: type: boolean description: If set, newly associated courses will be automatically published after the sync completes application/x-www-form-urlencoded: schema: *id041 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/BlueprintMigration' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html get: tags: - Blueprint Courses operationId: list_blueprint_migrations summary: List blueprint migrations description: |- Shows a paginated list of migrations for the template, starting with the most recent. This endpoint can be called on a blueprint course. See also {api:MasterCourses::MasterTemplatesController#imports_index the associated course side}. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BlueprintMigration' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_templates/{template_id}/restrict_item: put: tags: - Blueprint Courses operationId: set_or_remove_restrictions_on_blueprint_course_object summary: Set or remove restrictions on a blueprint course object description: If a blueprint course object is restricted, editing will be limited for copies in associated courses. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id042 type: object properties: content_type: type: string description: |- [String, "assignment"|"attachment"|"discussion_topic"|"external_tool"|"lti-quiz"|"quiz"|"wiki_page"] The type of the object. content_id: type: integer format: int64 description: The ID of the object. restricted: type: boolean description: Whether to apply restrictions. restrictions: $ref: '#/components/schemas/BlueprintRestriction' description: |- (Optional) If the object is restricted, this specifies a set of restrictions. If not specified, the course-level restrictions will be used. See {api:CoursesController#update Course API update documentation} application/x-www-form-urlencoded: schema: *id042 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_templates/{template_id}/unsynced_changes: get: tags: - Blueprint Courses operationId: get_unsynced_changes summary: Get unsynced changes description: |- Retrieve a list of learning objects that have changed since the last blueprint sync operation. If no syncs have been completed, a ChangeRecord with a change_type of +initial_sync+ is returned. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ChangeRecord' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id}: get: tags: - Blueprint Courses operationId: show_blueprint_migration summary: Show a blueprint migration description: |- Shows the status of a migration. This endpoint can be called on a blueprint course. See also {api:MasterCourses::MasterTemplatesController#imports_show the associated course side}. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_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 content: application/json: schema: $ref: '#/components/schemas/BlueprintMigration' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_templates/{template_id}/migrations/{id}/details: get: tags: - Blueprint Courses operationId: get_migration_details summary: Get migration details description: |- Show the changes that were propagated in a blueprint migration. This endpoint can be called on a blueprint course. See also {api:MasterCourses::MasterTemplatesController#import_details the associated course side}. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: template_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 content: application/json: schema: type: array items: $ref: '#/components/schemas/ChangeRecord' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_subscriptions: get: tags: - Blueprint Courses operationId: list_blueprint_subscriptions summary: List blueprint subscriptions description: Returns a list of blueprint subscriptions for the given course. (Currently a course may have no more than one.) parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BlueprintSubscription' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations: get: tags: - Blueprint Courses operationId: list_blueprint_imports summary: List blueprint imports description: |- Shows a paginated list of migrations imported into a course associated with a blueprint, starting with the most recent. See also {api:MasterCourses::MasterTemplatesController#migrations_index the blueprint course side}. Use 'default' as the subscription_id to use the currently active blueprint subscription. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: subscription_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BlueprintMigration' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id}: get: tags: - Blueprint Courses operationId: show_blueprint_import summary: Show a blueprint import description: |- Shows the status of an import into a course associated with a blueprint. See also {api:MasterCourses::MasterTemplatesController#migrations_show the blueprint course side}. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: subscription_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 content: application/json: schema: $ref: '#/components/schemas/BlueprintMigration' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/courses/{course_id}/blueprint_subscriptions/{subscription_id}/migrations/{id}/details: get: tags: - Blueprint Courses operationId: get_import_details summary: Get import details description: |- Show the changes that were propagated to a course associated with a blueprint. See also {api:MasterCourses::MasterTemplatesController#migration_details the blueprint course side}. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: subscription_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 content: application/json: schema: type: array items: $ref: '#/components/schemas/ChangeRecord' externalDocs: url: https://canvas.instructure.com/doc/api/blueprint_courses.html /v1/users/self/bookmarks: get: tags: - Bookmarks operationId: list_bookmarks summary: List bookmarks description: Returns the paginated list of bookmarks. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Bookmark' externalDocs: url: https://canvas.instructure.com/doc/api/bookmarks.html post: tags: - Bookmarks operationId: create_bookmark summary: Create bookmark description: Creates a bookmark. requestBody: required: false content: application/json: schema: &id043 type: object properties: name: type: string description: The name of the bookmark url: type: string description: The url of the bookmark position: type: integer format: int64 description: The position of the bookmark. Defaults to the bottom. data: type: string description: The data associated with the bookmark application/x-www-form-urlencoded: schema: *id043 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Bookmark' externalDocs: url: https://canvas.instructure.com/doc/api/bookmarks.html /v1/users/self/bookmarks/{id}: get: tags: - Bookmarks operationId: get_bookmark summary: Get bookmark description: Returns the details for a bookmark. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Bookmark' externalDocs: url: https://canvas.instructure.com/doc/api/bookmarks.html put: tags: - Bookmarks operationId: update_bookmark summary: Update bookmark description: Updates a bookmark parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id044 type: object properties: name: type: string description: The name of the bookmark url: type: string description: The url of the bookmark position: type: integer format: int64 description: The position of the bookmark. Defaults to the bottom. data: type: string description: The data associated with the bookmark application/x-www-form-urlencoded: schema: *id044 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Folder externalDocs: url: https://canvas.instructure.com/doc/api/bookmarks.html delete: tags: - Bookmarks operationId: delete_bookmark summary: Delete bookmark description: Deletes a bookmark parameters: - 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/bookmarks.html /v1/brand_variables: get: tags: - Brand Configs operationId: get_brand_config_variables_that_should_be_used_for_this_domain summary: Get the brand config variables that should be used for this domain description: |- Will redirect to a static json file that has all of the brand variables used by this account. Even though this is a redirect, do not store the redirected url since if the account makes any changes it will redirect to a new url. Needs no authentication. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/brand_configs.html /v1/accounts/{account_id}/brand_variables: get: tags: - Brand Configs operationId: get_brand_config_variables_for_sub_account_or_course_accounts summary: Get the brand config variables for a sub-account or course description: |- Will redirect to a static json file that has all of the brand variables used by the provided context. Even though this is a redirect, do not store the redirected url since if the sub-account makes any changes it will redirect to a new url. parameters: - name: account_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/brand_configs.html /v1/courses/{course_id}/brand_variables: get: tags: - Brand Configs operationId: get_brand_config_variables_for_sub_account_or_course_courses summary: Get the brand config variables for a sub-account or course description: |- Will redirect to a static json file that has all of the brand variables used by the provided context. Even though this is a redirect, do not store the redirected url since if the sub-account makes any changes it will redirect to a new url. parameters: - name: course_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/brand_configs.html /v1/calendar_events: get: tags: - Calendar Events operationId: list_calendar_events summary: List calendar events description: Retrieve the paginated list of calendar events or assignments for the current user parameters: - name: type in: query schema: type: string enum: - event - assignment - sub_assignment required: false description: Defaults to "event" - name: start_date in: query schema: type: string format: date required: false description: |- Only return events since the start_date (inclusive). Defaults to today. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: end_date in: query schema: type: string format: date required: false description: |- Only return events before the end_date (inclusive). Defaults to start_date. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. If end_date is the same as start_date, then only events on that day are returned. - name: undated in: query schema: type: boolean required: false description: |- Defaults to false (dated events only). If true, only return undated events and ignore start_date and end_date. - name: all_events in: query schema: type: boolean required: false description: |- Defaults to false (uses start_date, end_date, and undated criteria). If true, all events are returned, ignoring start_date, end_date, and undated criteria. - name: context_codes in: query schema: type: array items: type: string required: false description: |- List of context codes of courses, groups, users, or accounts whose events you want to see. If not specified, defaults to the current user (i.e personal calendar, no course/group events). Limited to 10 context codes, additional ones are ignored. The format of this field is the context type, followed by an underscore, followed by the context id. For example: course_42 - name: excludes in: query schema: type: array items: type: array items: {} required: false description: Array of attributes to exclude. Possible values are "description", "child_events" and "assignment" - name: includes in: query schema: type: array items: type: array items: {} required: false description: Array of optional attributes to include. Possible values are "web_conference" and "series_natural_language" - name: important_dates in: query schema: type: boolean required: false description: |- Defaults to false. If true, only events with important dates set to true will be returned. - name: blackout_date in: query schema: type: boolean required: false description: |- Defaults to false. If true, only events with blackout date set to true will be returned. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CalendarEvent' externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html post: tags: - Calendar Events operationId: create_calendar_event summary: Create a calendar event description: Create and return a new calendar event requestBody: required: false content: application/json: schema: &id045 type: object properties: calendar_event[context_code]: type: string description: |- Context code of the course, group, user, or account whose calendar this event should be added to. calendar_event[title]: type: string description: Short title for the calendar event. calendar_event[description]: type: string description: Longer HTML description of the event. calendar_event[start_at]: type: string format: date-time description: Start date/time of the event. calendar_event[end_at]: type: string format: date-time description: End date/time of the event. calendar_event[location_name]: type: string description: Location name of the event. calendar_event[location_address]: type: string description: Location address calendar_event[time_zone_edited]: type: string description: |- Time zone of the user editing the event. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. calendar_event[all_day]: type: boolean description: When true event is considered to span the whole day and times are ignored. calendar_event[child_event_data][X][start_at]: type: string format: date-time description: |- Section-level start time(s) if this is a course event. X can be any identifier, provided that it is consistent across the start_at, end_at and context_code calendar_event[child_event_data][X][end_at]: type: string format: date-time description: Section-level end time(s) if this is a course event. calendar_event[child_event_data][X][context_code]: type: string description: Context code(s) corresponding to the section-level start and end time(s). calendar_event[duplicate][count]: type: number description: Number of times to copy/duplicate the event. Count cannot exceed 200. calendar_event[duplicate][interval]: type: number description: Defaults to 1 if duplicate `count` is set. The interval between the duplicated events. calendar_event[duplicate][frequency]: type: string enum: - daily - weekly - monthly description: Defaults to "weekly". The frequency at which to duplicate the event calendar_event[duplicate][append_iterator]: type: boolean description: |- Defaults to false. If set to `true`, an increasing counter number will be appended to the event title when the event is duplicated. (e.g. Event 1, Event 2, Event 3, etc) calendar_event[rrule]: type: string description: |- The recurrence rule to create a series of recurring events. Its value is the {https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html iCalendar RRULE} defining how the event repeats. Unending series not supported. calendar_event[blackout_date]: type: boolean description: |- If the blackout_date is true, this event represents a holiday or some other special day that does not count in course pacing. required: - calendar_event[context_code] application/x-www-form-urlencoded: schema: *id045 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html /v1/users/{user_id}/calendar_events: get: tags: - Calendar Events operationId: list_calendar_events_for_user summary: List calendar events for a user description: |- Retrieve the paginated list of calendar events or assignments for the specified user. To view calendar events for a user other than yourself, you must either be an observer of that user or an administrator. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: type in: query schema: type: string enum: - event - assignment required: false description: Defaults to "event" - name: start_date in: query schema: type: string format: date required: false description: |- Only return events since the start_date (inclusive). Defaults to today. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: end_date in: query schema: type: string format: date required: false description: |- Only return events before the end_date (inclusive). Defaults to start_date. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. If end_date is the same as start_date, then only events on that day are returned. - name: undated in: query schema: type: boolean required: false description: |- Defaults to false (dated events only). If true, only return undated events and ignore start_date and end_date. - name: all_events in: query schema: type: boolean required: false description: |- Defaults to false (uses start_date, end_date, and undated criteria). If true, all events are returned, ignoring start_date, end_date, and undated criteria. - name: context_codes in: query schema: type: array items: type: string required: false description: |- List of context codes of courses, groups, users, or accounts whose events you want to see. If not specified, defaults to the current user (i.e personal calendar, no course/group events). Limited to 10 context codes, additional ones are ignored. The format of this field is the context type, followed by an underscore, followed by the context id. For example: course_42 - name: excludes in: query schema: type: array items: type: array items: {} required: false description: Array of attributes to exclude. Possible values are "description", "child_events" and "assignment" - name: submission_types in: query schema: type: array items: type: array items: {} required: false description: |- When type is "assignment", specifies the allowable submission types for returned assignments. Ignored if type is not "assignment" or if exclude_submission_types is provided. - name: exclude_submission_types in: query schema: type: array items: type: array items: {} required: false description: |- When type is "assignment", specifies the submission types to be excluded from the returned assignments. Ignored if type is not "assignment". - name: includes in: query schema: type: array items: type: array items: {} required: false description: Array of optional attributes to include. Possible values are "web_conference" and "series_natural_language" - name: important_dates in: query schema: type: boolean required: false description: |- Defaults to false If true, only events with important dates set to true will be returned. - name: blackout_date in: query schema: type: boolean required: false description: |- Defaults to false If true, only events with blackout date set to true will be returned. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CalendarEvent' externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html /v1/calendar_events/{id}: get: tags: - Calendar Events operationId: get_single_calendar_event_or_assignment summary: Get a single calendar event or assignment description: Returns detailed information about a specific calendar event or assignment. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html put: tags: - Calendar Events operationId: update_calendar_event summary: Update a calendar event description: Update and return a calendar event parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id046 type: object properties: calendar_event[context_code]: type: string description: |- Context code of the course, group, user, or account to move this event to. Scheduler appointments and events with section-specific times cannot be moved between calendars. calendar_event[title]: type: string description: Short title for the calendar event. calendar_event[description]: type: string description: Longer HTML description of the event. calendar_event[start_at]: type: string format: date-time description: Start date/time of the event. calendar_event[end_at]: type: string format: date-time description: End date/time of the event. calendar_event[location_name]: type: string description: Location name of the event. calendar_event[location_address]: type: string description: Location address calendar_event[time_zone_edited]: type: string description: |- Time zone of the user editing the event. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. calendar_event[all_day]: type: boolean description: When true event is considered to span the whole day and times are ignored. calendar_event[child_event_data][X][start_at]: type: string format: date-time description: |- Section-level start time(s) if this is a course event. X can be any identifier, provided that it is consistent across the start_at, end_at and context_code calendar_event[child_event_data][X][end_at]: type: string format: date-time description: Section-level end time(s) if this is a course event. calendar_event[child_event_data][X][context_code]: type: string description: Context code(s) corresponding to the section-level start and end time(s). calendar_event[rrule]: type: string description: |- Valid if the event whose ID is in the URL is part of a series. This defines the shape of the recurring event series after it's updated. Its value is the iCalendar RRULE. Unending series are not supported. which: type: string enum: - one - all - following description: |- Valid if the event whose ID is in the URL is part of a series. Update just the event whose ID is in in the URL, all events in the series, or the given event and all those following. Some updates may create a new series. For example, changing the start time of this and all following events from the middle of a series. calendar_event[blackout_date]: type: boolean description: |- If the blackout_date is true, this event represents a holiday or some other special day that does not count in course pacing. application/x-www-form-urlencoded: schema: *id046 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html delete: tags: - Calendar Events operationId: delete_calendar_event summary: Delete a calendar event description: Delete an event from the calendar and return the deleted event parameters: - name: id in: path schema: type: string required: true description: ID - name: cancel_reason in: query schema: type: string required: false description: Reason for deleting/canceling the event. - name: which in: query schema: type: string enum: - one - all - following required: false description: |- Valid if the event whose ID is in the URL is part of a series. Delete just the event whose ID is in in the URL, all events in the series, or the given event and all those following. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html /v1/calendar_events/{id}/reservations: post: tags: - Calendar Events operationId: reserve_time_slot summary: Reserve a time slot description: Reserves a particular time slot and return the new reservation parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id047 type: object properties: participant_id: type: string description: |- User or group id for whom you are making the reservation (depends on the participant type). Defaults to the current user (or user's candidate group). comments: type: string description: Comments to associate with this reservation cancel_existing: type: boolean description: |- Defaults to false. If true, cancel any previous reservation(s) for this participant and appointment group. application/x-www-form-urlencoded: schema: *id047 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html /v1/calendar_events/{id}/reservations/{participant_id}: post: tags: - Calendar Events operationId: reserve_time_slot_participant_id summary: Reserve a time slot description: Reserves a particular time slot and return the new reservation parameters: - name: id in: path schema: type: string required: true description: ID - name: participant_id in: path schema: type: string required: true description: |- User or group id for whom you are making the reservation (depends on the participant type). Defaults to the current user (or user's candidate group). requestBody: required: false content: application/json: schema: &id048 type: object properties: comments: type: string description: Comments to associate with this reservation cancel_existing: type: boolean description: |- Defaults to false. If true, cancel any previous reservation(s) for this participant and appointment group. application/x-www-form-urlencoded: schema: *id048 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html /v1/calendar_events/save_enabled_account_calendars: post: tags: - Calendar Events operationId: save_enabled_account_calendars summary: Save enabled account calendars description: Creates and updates the enabled_account_calendars and mark_feature_as_seen user preferences requestBody: required: false content: application/json: schema: &id049 type: object properties: mark_feature_as_seen: type: boolean description: Flag to mark account calendars feature as seen enabled_account_calendars: type: array items: type: array items: {} description: An array of account Ids to remember in the calendars list of the user application/x-www-form-urlencoded: schema: *id049 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html /v1/courses/{course_id}/calendar_events/timetable: post: tags: - Calendar Events operationId: set_course_timetable summary: Set a course timetable description: |- Creates and updates "timetable" events for a course. Can automaticaly generate a series of calendar events based on simple schedules (e.g. "Monday and Wednesday at 2:00pm" ) Existing timetable events for the course and course sections will be updated if they still are part of the timetable. Otherwise, they will be deleted. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id050 type: object properties: timetables[course_section_id]: type: array items: type: array items: {} description: |- An array of timetable objects for the course section specified by course_section_id. If course_section_id is set to "all", events will be created for the entire course. timetables[course_section_id][weekdays]: type: array items: type: string description: |- A comma-separated list of abbreviated weekdays (Mon-Monday, Tue-Tuesday, Wed-Wednesday, Thu-Thursday, Fri-Friday, Sat-Saturday, Sun-Sunday) timetables[course_section_id][start_time]: type: array items: type: string description: Time to start each event at (e.g. "9:00 am") timetables[course_section_id][end_time]: type: array items: type: string description: Time to end each event at (e.g. "9:00 am") timetables[course_section_id][location_name]: type: array items: type: string description: A location name to set for each event application/x-www-form-urlencoded: schema: *id050 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html get: tags: - Calendar Events operationId: get_course_timetable summary: Get course timetable description: |- Returns the last timetable set by the {api:CalendarEventsApiController#set_course_timetable Set a course timetable} endpoint parameters: - name: course_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/calendar_events.html /v1/courses/{course_id}/calendar_events/timetable_events: post: tags: - Calendar Events operationId: create_or_update_events_directly_for_course_timetable summary: Create or update events directly for a course timetable description: |- Creates and updates "timetable" events for a course or course section. Similar to {api:CalendarEventsApiController#set_course_timetable setting a course timetable}, but instead of generating a list of events based on a timetable schedule, this endpoint expects a complete list of events. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id051 type: object properties: course_section_id: type: string description: |- Events will be created for the course section specified by course_section_id. If not present, events will be created for the entire course. events: type: array items: type: array items: {} description: An array of event objects to use. events[start_at]: type: array items: type: string format: date-time description: Start time for the event events[end_at]: type: array items: type: string format: date-time description: End time for the event events[location_name]: type: array items: type: string description: Location name for the event events[code]: type: array items: type: string description: |- A unique identifier that can be used to update the event at a later time If one is not specified, an identifier will be generated based on the start and end times events[title]: type: array items: type: string description: Title for the meeting. If not present, will default to the associated course's name application/x-www-form-urlencoded: schema: *id051 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/calendar_events.html /v1/career/enabled: get: tags: - Canvas Career Experiences operationId: check_if_canvas_career_is_enabled summary: Check if Canvas Career is enabled description: |- Returns whether the root account has Canvas Career (Horizon) enabled in at least one subaccount. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{enabled: boolean}' externalDocs: url: https://canvas.instructure.com/doc/api/canvas_career_experiences.html /v1/career/experience_summary: get: tags: - Canvas Career Experiences operationId: get_current_and_available_experiences summary: Get current and available experiences description: |- Returns the current user's active experience and available experiences they can switch to. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ExperienceSummary' externalDocs: url: https://canvas.instructure.com/doc/api/canvas_career_experiences.html /v1/career/switch_experience: post: tags: - Canvas Career Experiences operationId: switch_experience summary: Switch experience description: Switch the current user's active experience to the specified one. requestBody: required: false content: application/json: schema: &id052 type: object properties: experience: type: string enum: - academic - career description: The experience to switch to. required: - experience application/x-www-form-urlencoded: schema: *id052 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{experience: String} The newly set experience' externalDocs: url: https://canvas.instructure.com/doc/api/canvas_career_experiences.html /v1/career/switch_role: post: tags: - Canvas Career Experiences operationId: switch_role summary: Switch role description: Switch the current user's role within the current experience. requestBody: required: false content: application/json: schema: &id053 type: object properties: role: type: string enum: - learner - learning_provider description: The role to switch to. required: - role application/x-www-form-urlencoded: schema: *id053 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{role: String} The newly set role' externalDocs: url: https://canvas.instructure.com/doc/api/canvas_career_experiences.html /v1/career/user_context: get: tags: - Canvas Career User Context operationId: get_career_user_context summary: Get career user context description: |- Returns consolidated user context data for Journey, combining account permissions, career experience info, enrollment types, admin roles, and site admin status in a single response. parameters: - name: account_id in: query schema: type: string required: false description: |- Canvas account ID for permission and subaccount admin checks. Defaults to the domain root account ("self"). Other fields (experience, enrollment_types, admin_roles, is_site_admin) always resolve against the domain root. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CareerUserContext' externalDocs: url: https://canvas.instructure.com/doc/api/canvas_career_user_context.html /v1/courses/{course_id}/collaborations: get: tags: - Collaborations operationId: list_collaborations_courses summary: List collaborations description: |- A paginated list of collaborations the current user has access to in the context of the course provided in the url. NOTE: this only returns ExternalToolCollaboration type collaborations. curl https:///api/v1/courses/1/collaborations/ parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Collaboration' externalDocs: url: https://canvas.instructure.com/doc/api/collaborations.html /v1/groups/{group_id}/collaborations: get: tags: - Collaborations operationId: list_collaborations_groups summary: List collaborations description: |- A paginated list of collaborations the current user has access to in the context of the course provided in the url. NOTE: this only returns ExternalToolCollaboration type collaborations. curl https:///api/v1/courses/1/collaborations/ parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Collaboration' externalDocs: url: https://canvas.instructure.com/doc/api/collaborations.html /v1/collaborations/{id}/members: get: tags: - Collaborations operationId: list_members_of_collaboration summary: List members of a collaboration. description: A paginated list of the collaborators of a given collaboration parameters: - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - collaborator_lti_id - avatar_image_url required: false description: |- - "collaborator_lti_id": Optional information to include with each member. Represents an identifier to be used for the member in an LTI context. - "avatar_image_url": Optional information to include with each member. The url for the avatar of a collaborator with type 'user'. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Collaborator' externalDocs: url: https://canvas.instructure.com/doc/api/collaborations.html /v1/courses/{course_id}/potential_collaborators: get: tags: - Collaborations operationId: list_potential_members_courses summary: List potential members description: |- A paginated list of the users who can potentially be added to a collaboration in the given context. For courses, this consists of all enrolled users. For groups, it is comprised of the group members plus the admins of the course containing the group. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/collaborations.html /v1/groups/{group_id}/potential_collaborators: get: tags: - Collaborations operationId: list_potential_members_groups summary: List potential members description: |- A paginated list of the users who can potentially be added to a collaboration in the given context. For courses, this consists of all enrolled users. For groups, it is comprised of the group members plus the admins of the course containing the group. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/collaborations.html /v1/comm_messages: get: tags: - Comm Messages operationId: list_of_commmessages_for_user summary: List of CommMessages for a user description: Retrieve a paginated list of messages sent to a user. parameters: - name: user_id in: query schema: type: string required: true description: The user id for whom you want to retrieve CommMessages - name: start_time in: query schema: type: string format: date-time required: false description: |- The beginning of the time range you want to retrieve message from. Up to a year prior to the current date is available. - name: end_time in: query schema: type: string format: date-time required: false description: |- The end of the time range you want to retrieve messages for. Up to a year prior to the current date is available. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CommMessage' externalDocs: url: https://canvas.instructure.com/doc/api/comm_messages.html /v1/users/{user_id}/communication_channels: get: tags: - Communication Channels operationId: list_user_communication_channels summary: List user communication channels description: |- Returns a paginated list of communication channels for the specified user, sorted by position. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CommunicationChannel' externalDocs: url: https://canvas.instructure.com/doc/api/communication_channels.html post: tags: - Communication Channels operationId: create_communication_channel summary: Create a communication channel description: Creates a new communication channel for the specified user. parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id054 type: object properties: communication_channel[address]: type: string description: An email address or SMS number. Not required for "push" type channels. communication_channel[type]: type: string enum: - email - sms - push description: |- The type of communication channel. In order to enable push notification support, the server must be properly configured (via `sns_creds` in Vault) to communicate with Amazon Simple Notification Services, and the developer key used to create the access token from this request must have an SNS ARN configured on it. communication_channel[token]: type: string description: |- A registration id, device token, or equivalent token given to an app when registering with a push notification provider. Only valid for "push" type channels. skip_confirmation: type: boolean description: |- Only valid for site admins and account admins making requests; If true, the channel is automatically validated and no confirmation email or SMS is sent. Otherwise, the user must respond to a confirmation message to confirm the channel. required: - communication_channel[address] - communication_channel[type] application/x-www-form-urlencoded: schema: *id054 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CommunicationChannel' externalDocs: url: https://canvas.instructure.com/doc/api/communication_channels.html /v1/users/{user_id}/communication_channels/{id}: delete: tags: - Communication Channels operationId: delete_communication_channel_id summary: Delete a communication channel description: Delete an existing communication channel. 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 content: application/json: schema: $ref: '#/components/schemas/CommunicationChannel' externalDocs: url: https://canvas.instructure.com/doc/api/communication_channels.html /v1/users/{user_id}/communication_channels/{type}/{address}: delete: tags: - Communication Channels operationId: delete_communication_channel_type summary: Delete a communication channel description: Delete an existing communication channel. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: type in: path schema: type: string required: true description: ID - name: address in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CommunicationChannel' externalDocs: url: https://canvas.instructure.com/doc/api/communication_channels.html /v1/users/self/communication_channels/push: delete: tags: - Communication Channels operationId: delete_push_notification_endpoint summary: Delete a push notification endpoint responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{success: true}' externalDocs: url: https://canvas.instructure.com/doc/api/communication_channels.html /v1/courses/{course_id}/conferences: get: tags: - Conferences operationId: list_conferences_courses summary: List conferences description: |- Retrieve the paginated list of conferences for this context This API returns a JSON object containing the list of conferences, the key for the list of conferences is "conferences" parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Conference' externalDocs: url: https://canvas.instructure.com/doc/api/conferences.html /v1/groups/{group_id}/conferences: get: tags: - Conferences operationId: list_conferences_groups summary: List conferences description: |- Retrieve the paginated list of conferences for this context This API returns a JSON object containing the list of conferences, the key for the list of conferences is "conferences" parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Conference' externalDocs: url: https://canvas.instructure.com/doc/api/conferences.html /v1/conferences: get: tags: - Conferences operationId: list_conferences_for_current_user summary: List conferences for the current user description: |- Retrieve the paginated list of conferences for all courses and groups the current user belongs to This API returns a JSON object containing the list of conferences. The key for the list of conferences is "conferences". parameters: - name: state in: query schema: type: string required: false description: |- If set to "live", returns only conferences that are live (i.e., have started and not finished yet). If omitted, returns all conferences for this user's groups and courses. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Conference' externalDocs: url: https://canvas.instructure.com/doc/api/conferences.html /v1/courses/{course_id}/content_exports: get: tags: - Content Exports operationId: list_content_exports_courses summary: List content exports description: |- A paginated list of the past and pending content export jobs for a course, group, or user. Exports are returned newest first. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html post: tags: - Content Exports operationId: export_content_courses summary: Export content description: |- Begin a content export job for a course, group, or user. You can use the {api:ProgressController#show Progress API} to track the progress of the export. The migration's progress is linked to with the _progress_url_ value. When the export completes, use the {api:ContentExportsApiController#show Show content export} endpoint to retrieve a download URL for the exported content. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id055 type: object properties: export_type: type: string enum: - common_cartridge - qti - zip description: |- "common_cartridge":: Export the contents of the course in the Common Cartridge (.imscc) format "qti":: Export quizzes from a course in the QTI format "zip":: Export files from a course, group, or user in a zip file skip_notifications: type: boolean description: 'Don''t send the notifications about the export to the user. Default: false' select: type: object additionalProperties: true enum: - folders - files - attachments - quizzes - assignments - announcements - calendar_events - discussion_topics - modules - module_items - pages - rubrics description: |- The select parameter allows exporting specific data. The keys are object types like 'files', 'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an integer or a string. Multiple object types can be selected in the same call. However, not all object types are valid for every export_type. Common Cartridge supports all object types. Zip and QTI only support the object types as described below. "folders":: Also supported for zip export_type. "files":: Also supported for zip export_type. "quizzes":: Also supported for qti export_type. required: - export_type application/x-www-form-urlencoded: schema: *id055 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html /v1/groups/{group_id}/content_exports: get: tags: - Content Exports operationId: list_content_exports_groups summary: List content exports description: |- A paginated list of the past and pending content export jobs for a course, group, or user. Exports are returned newest first. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html post: tags: - Content Exports operationId: export_content_groups summary: Export content description: |- Begin a content export job for a course, group, or user. You can use the {api:ProgressController#show Progress API} to track the progress of the export. The migration's progress is linked to with the _progress_url_ value. When the export completes, use the {api:ContentExportsApiController#show Show content export} endpoint to retrieve a download URL for the exported content. parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id056 type: object properties: export_type: type: string enum: - common_cartridge - qti - zip description: |- "common_cartridge":: Export the contents of the course in the Common Cartridge (.imscc) format "qti":: Export quizzes from a course in the QTI format "zip":: Export files from a course, group, or user in a zip file skip_notifications: type: boolean description: 'Don''t send the notifications about the export to the user. Default: false' select: type: object additionalProperties: true enum: - folders - files - attachments - quizzes - assignments - announcements - calendar_events - discussion_topics - modules - module_items - pages - rubrics description: |- The select parameter allows exporting specific data. The keys are object types like 'files', 'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an integer or a string. Multiple object types can be selected in the same call. However, not all object types are valid for every export_type. Common Cartridge supports all object types. Zip and QTI only support the object types as described below. "folders":: Also supported for zip export_type. "files":: Also supported for zip export_type. "quizzes":: Also supported for qti export_type. required: - export_type application/x-www-form-urlencoded: schema: *id056 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html /v1/users/{user_id}/content_exports: get: tags: - Content Exports operationId: list_content_exports_users summary: List content exports description: |- A paginated list of the past and pending content export jobs for a course, group, or user. Exports are returned newest first. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html post: tags: - Content Exports operationId: export_content_users summary: Export content description: |- Begin a content export job for a course, group, or user. You can use the {api:ProgressController#show Progress API} to track the progress of the export. The migration's progress is linked to with the _progress_url_ value. When the export completes, use the {api:ContentExportsApiController#show Show content export} endpoint to retrieve a download URL for the exported content. parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id057 type: object properties: export_type: type: string enum: - common_cartridge - qti - zip description: |- "common_cartridge":: Export the contents of the course in the Common Cartridge (.imscc) format "qti":: Export quizzes from a course in the QTI format "zip":: Export files from a course, group, or user in a zip file skip_notifications: type: boolean description: 'Don''t send the notifications about the export to the user. Default: false' select: type: object additionalProperties: true enum: - folders - files - attachments - quizzes - assignments - announcements - calendar_events - discussion_topics - modules - module_items - pages - rubrics description: |- The select parameter allows exporting specific data. The keys are object types like 'files', 'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an integer or a string. Multiple object types can be selected in the same call. However, not all object types are valid for every export_type. Common Cartridge supports all object types. Zip and QTI only support the object types as described below. "folders":: Also supported for zip export_type. "files":: Also supported for zip export_type. "quizzes":: Also supported for qti export_type. required: - export_type application/x-www-form-urlencoded: schema: *id057 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html /v1/courses/{course_id}/content_exports/{id}: get: tags: - Content Exports operationId: show_content_export_courses summary: Show content export description: Get information about a single content export. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html /v1/groups/{group_id}/content_exports/{id}: get: tags: - Content Exports operationId: show_content_export_groups summary: Show content export description: Get information about a single content export. parameters: - name: group_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 content: application/json: schema: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html /v1/users/{user_id}/content_exports/{id}: get: tags: - Content Exports operationId: show_content_export_users summary: Show content export description: Get information about a single content export. 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 content: application/json: schema: $ref: '#/components/schemas/ContentExport' externalDocs: url: https://canvas.instructure.com/doc/api/content_exports.html /v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues: get: tags: - Content Migrations operationId: list_migration_issues_accounts summary: List migration issues description: Returns paginated migration issues parameters: - name: account_id in: path schema: type: string required: true description: ID - name: content_migration_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues: get: tags: - Content Migrations operationId: list_migration_issues_courses summary: List migration issues description: Returns paginated migration issues parameters: - name: course_id in: path schema: type: string required: true description: ID - name: content_migration_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues: get: tags: - Content Migrations operationId: list_migration_issues_groups summary: List migration issues description: Returns paginated migration issues parameters: - name: group_id in: path schema: type: string required: true description: ID - name: content_migration_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues: get: tags: - Content Migrations operationId: list_migration_issues_users summary: List migration issues description: Returns paginated migration issues parameters: - name: user_id in: path schema: type: string required: true description: ID - name: content_migration_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues/{id}: get: tags: - Content Migrations operationId: get_migration_issue_accounts summary: Get a migration issue description: Returns data on an individual migration issue parameters: - name: account_id in: path schema: type: string required: true description: ID - name: content_migration_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 content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_migration_issue_accounts summary: Update a migration issue description: Update the workflow_state of a migration issue parameters: - name: account_id in: path schema: type: string required: true description: ID - name: content_migration_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: &id058 type: object properties: workflow_state: type: string enum: - active - resolved description: Set the workflow_state of the issue. required: - workflow_state application/x-www-form-urlencoded: schema: *id058 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues/{id}: get: tags: - Content Migrations operationId: get_migration_issue_courses summary: Get a migration issue description: Returns data on an individual migration issue parameters: - name: course_id in: path schema: type: string required: true description: ID - name: content_migration_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 content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_migration_issue_courses summary: Update a migration issue description: Update the workflow_state of a migration issue parameters: - name: course_id in: path schema: type: string required: true description: ID - name: content_migration_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: &id059 type: object properties: workflow_state: type: string enum: - active - resolved description: Set the workflow_state of the issue. required: - workflow_state application/x-www-form-urlencoded: schema: *id059 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues/{id}: get: tags: - Content Migrations operationId: get_migration_issue_groups summary: Get a migration issue description: Returns data on an individual migration issue parameters: - name: group_id in: path schema: type: string required: true description: ID - name: content_migration_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 content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_migration_issue_groups summary: Update a migration issue description: Update the workflow_state of a migration issue parameters: - name: group_id in: path schema: type: string required: true description: ID - name: content_migration_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: &id060 type: object properties: workflow_state: type: string enum: - active - resolved description: Set the workflow_state of the issue. required: - workflow_state application/x-www-form-urlencoded: schema: *id060 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues/{id}: get: tags: - Content Migrations operationId: get_migration_issue_users summary: Get a migration issue description: Returns data on an individual migration issue parameters: - name: user_id in: path schema: type: string required: true description: ID - name: content_migration_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 content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_migration_issue_users summary: Update a migration issue description: Update the workflow_state of a migration issue parameters: - name: user_id in: path schema: type: string required: true description: ID - name: content_migration_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: &id061 type: object properties: workflow_state: type: string enum: - active - resolved description: Set the workflow_state of the issue. required: - workflow_state application/x-www-form-urlencoded: schema: *id061 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MigrationIssue' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/accounts/{account_id}/content_migrations: get: tags: - Content Migrations operationId: list_content_migrations_accounts summary: List content migrations description: Returns paginated content migrations parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html post: tags: - Content Migrations operationId: create_content_migration_accounts summary: Create a content migration description: |- Create a content migration. If the migration requires a file to be uploaded the actual processing of the file will start once the file upload process is completed. File uploading works as described in the {file:file.file_uploads.html File Upload Documentation} except that the values are set on a *pre_attachment* sub-hash. For migrations that don't require a file to be uploaded, like course copy, the processing will begin as soon as the migration is created. You can use the {api:ProgressController#show Progress API} to track the progress of the migration. The migration's progress is linked to with the _progress_url_ value. The two general workflows are: If no file upload is needed: 1. POST to create 2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress For file uploading: 1. POST to create with file info in *pre_attachment* 2. Do {file:file.file_uploads.html file upload processing} using the data in the *pre_attachment* data 3. {api:ContentMigrationsController#show GET} the ContentMigration 4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress (required if doing .zip file upload) parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id062 type: object properties: migration_type: type: string description: |- The type of the migration. Use the {api:ContentMigrationsController#available_migrators Migrator} endpoint to see all available migrators. Default allowed values: canvas_cartridge_importer, common_cartridge_importer, course_copy_importer, zip_file_importer, qti_converter, moodle_converter pre_attachment[name]: type: string description: |- Required if uploading a file. This is the first step in uploading a file to the content migration. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. pre_attachment[*]: type: string description: |- Other file upload properties, See {file:file.file_uploads.html File Upload Documentation} settings[file_url]: type: string description: A URL to download the file from. Must not require authentication. settings[content_export_id]: type: string description: |- The id of a ContentExport to import. This allows you to import content previously exported from Canvas without needing to download and re-upload it. settings[source_course_id]: type: string description: |- The course to copy from for a course copy migration. (required if doing course copy) settings[folder_id]: type: string description: The folder to unzip the .zip file into for a zip_file_import. settings[overwrite_quizzes]: type: boolean description: |- Whether to overwrite quizzes with the same identifiers between content packages. settings[question_bank_id]: type: integer format: int64 description: |- The existing question bank ID to import questions into if not specified in the content package. settings[question_bank_name]: type: string description: |- The question bank to import questions into if not specified in the content package, if both bank id and name are set, id will take precedence. settings[insert_into_module_id]: type: integer format: int64 description: |- The id of a module in the target course. This will add all imported items (that can be added to a module) to the given module. settings[insert_into_module_type]: type: string enum: - assignment - discussion_topic - file - page - quiz description: |- If provided (and +insert_into_module_id+ is supplied), only add objects of the specified type to the module. settings[insert_into_module_position]: type: integer format: int64 description: |- The (1-based) position to insert the imported items into the course (if +insert_into_module_id+ is supplied). If this parameter is omitted, items will be added to the end of the module. settings[move_to_assignment_group_id]: type: integer format: int64 description: |- The id of an assignment group in the target course. If provided, all imported assignments will be moved to the given assignment group. settings[importer_skips]: type: array items: type: string enum: - all_course_settings - visibility_settings description: Set of importers to skip, even if otherwise selected by migration settings. settings[import_blueprint_settings]: type: boolean description: |- Import the "use as blueprint course" setting as well as the list of locked items from the source course or package. The destination course must not be associated with an existing blueprint course and cannot have any student or observer enrollments. date_shift_options[shift_dates]: type: boolean description: Whether to shift dates in the copied course date_shift_options[old_start_date]: type: string format: date description: The original start date of the source content/course date_shift_options[old_end_date]: type: string format: date description: The original end date of the source content/course date_shift_options[new_start_date]: type: string format: date description: The new start date for the content/course date_shift_options[new_end_date]: type: string format: date description: The new end date for the source content/course date_shift_options[day_substitutions][X]: type: integer format: int64 description: |- Move anything scheduled for day 'X' to the specified day. (0-Sunday, 1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday) date_shift_options[remove_dates]: type: boolean description: |- Whether to remove dates in the copied course. Cannot be used in conjunction with *shift_dates*. selective_import: type: boolean description: |- If set, perform a selective import instead of importing all content. The migration will identify the contents of the package and then stop in the +waiting_for_select+ workflow state. At this point, use the {api:ContentMigrationsController#content_list List items endpoint} to enumerate the contents of the package, identifying the copy parameters for the desired content. Then call the {api:ContentMigrationsController#update Update endpoint} and provide these copy parameters to start the import. select: type: object additionalProperties: true enum: - folders - files - attachments - quizzes - assignments - announcements - calendar_events - discussion_topics - modules - module_items - pages - rubrics description: |- For +course_copy_importer+ migrations, this parameter allows you to select the objects to copy without using the +selective_import+ argument and +waiting_for_select+ state as is required for uploaded imports (though that workflow is also supported for course copy migrations). The keys are object types like 'files', 'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an integer or a string. Multiple object types can be selected in the same call. required: - migration_type application/x-www-form-urlencoded: schema: *id062 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/courses/{course_id}/content_migrations: get: tags: - Content Migrations operationId: list_content_migrations_courses summary: List content migrations description: Returns paginated content migrations parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html post: tags: - Content Migrations operationId: create_content_migration_courses summary: Create a content migration description: |- Create a content migration. If the migration requires a file to be uploaded the actual processing of the file will start once the file upload process is completed. File uploading works as described in the {file:file.file_uploads.html File Upload Documentation} except that the values are set on a *pre_attachment* sub-hash. For migrations that don't require a file to be uploaded, like course copy, the processing will begin as soon as the migration is created. You can use the {api:ProgressController#show Progress API} to track the progress of the migration. The migration's progress is linked to with the _progress_url_ value. The two general workflows are: If no file upload is needed: 1. POST to create 2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress For file uploading: 1. POST to create with file info in *pre_attachment* 2. Do {file:file.file_uploads.html file upload processing} using the data in the *pre_attachment* data 3. {api:ContentMigrationsController#show GET} the ContentMigration 4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress (required if doing .zip file upload) parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id063 type: object properties: migration_type: type: string description: |- The type of the migration. Use the {api:ContentMigrationsController#available_migrators Migrator} endpoint to see all available migrators. Default allowed values: canvas_cartridge_importer, common_cartridge_importer, course_copy_importer, zip_file_importer, qti_converter, moodle_converter pre_attachment[name]: type: string description: |- Required if uploading a file. This is the first step in uploading a file to the content migration. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. pre_attachment[*]: type: string description: |- Other file upload properties, See {file:file.file_uploads.html File Upload Documentation} settings[file_url]: type: string description: A URL to download the file from. Must not require authentication. settings[content_export_id]: type: string description: |- The id of a ContentExport to import. This allows you to import content previously exported from Canvas without needing to download and re-upload it. settings[source_course_id]: type: string description: |- The course to copy from for a course copy migration. (required if doing course copy) settings[folder_id]: type: string description: The folder to unzip the .zip file into for a zip_file_import. settings[overwrite_quizzes]: type: boolean description: |- Whether to overwrite quizzes with the same identifiers between content packages. settings[question_bank_id]: type: integer format: int64 description: |- The existing question bank ID to import questions into if not specified in the content package. settings[question_bank_name]: type: string description: |- The question bank to import questions into if not specified in the content package, if both bank id and name are set, id will take precedence. settings[insert_into_module_id]: type: integer format: int64 description: |- The id of a module in the target course. This will add all imported items (that can be added to a module) to the given module. settings[insert_into_module_type]: type: string enum: - assignment - discussion_topic - file - page - quiz description: |- If provided (and +insert_into_module_id+ is supplied), only add objects of the specified type to the module. settings[insert_into_module_position]: type: integer format: int64 description: |- The (1-based) position to insert the imported items into the course (if +insert_into_module_id+ is supplied). If this parameter is omitted, items will be added to the end of the module. settings[move_to_assignment_group_id]: type: integer format: int64 description: |- The id of an assignment group in the target course. If provided, all imported assignments will be moved to the given assignment group. settings[importer_skips]: type: array items: type: string enum: - all_course_settings - visibility_settings description: Set of importers to skip, even if otherwise selected by migration settings. settings[import_blueprint_settings]: type: boolean description: |- Import the "use as blueprint course" setting as well as the list of locked items from the source course or package. The destination course must not be associated with an existing blueprint course and cannot have any student or observer enrollments. date_shift_options[shift_dates]: type: boolean description: Whether to shift dates in the copied course date_shift_options[old_start_date]: type: string format: date description: The original start date of the source content/course date_shift_options[old_end_date]: type: string format: date description: The original end date of the source content/course date_shift_options[new_start_date]: type: string format: date description: The new start date for the content/course date_shift_options[new_end_date]: type: string format: date description: The new end date for the source content/course date_shift_options[day_substitutions][X]: type: integer format: int64 description: |- Move anything scheduled for day 'X' to the specified day. (0-Sunday, 1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday) date_shift_options[remove_dates]: type: boolean description: |- Whether to remove dates in the copied course. Cannot be used in conjunction with *shift_dates*. selective_import: type: boolean description: |- If set, perform a selective import instead of importing all content. The migration will identify the contents of the package and then stop in the +waiting_for_select+ workflow state. At this point, use the {api:ContentMigrationsController#content_list List items endpoint} to enumerate the contents of the package, identifying the copy parameters for the desired content. Then call the {api:ContentMigrationsController#update Update endpoint} and provide these copy parameters to start the import. select: type: object additionalProperties: true enum: - folders - files - attachments - quizzes - assignments - announcements - calendar_events - discussion_topics - modules - module_items - pages - rubrics description: |- For +course_copy_importer+ migrations, this parameter allows you to select the objects to copy without using the +selective_import+ argument and +waiting_for_select+ state as is required for uploaded imports (though that workflow is also supported for course copy migrations). The keys are object types like 'files', 'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an integer or a string. Multiple object types can be selected in the same call. required: - migration_type application/x-www-form-urlencoded: schema: *id063 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/groups/{group_id}/content_migrations: get: tags: - Content Migrations operationId: list_content_migrations_groups summary: List content migrations description: Returns paginated content migrations parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html post: tags: - Content Migrations operationId: create_content_migration_groups summary: Create a content migration description: |- Create a content migration. If the migration requires a file to be uploaded the actual processing of the file will start once the file upload process is completed. File uploading works as described in the {file:file.file_uploads.html File Upload Documentation} except that the values are set on a *pre_attachment* sub-hash. For migrations that don't require a file to be uploaded, like course copy, the processing will begin as soon as the migration is created. You can use the {api:ProgressController#show Progress API} to track the progress of the migration. The migration's progress is linked to with the _progress_url_ value. The two general workflows are: If no file upload is needed: 1. POST to create 2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress For file uploading: 1. POST to create with file info in *pre_attachment* 2. Do {file:file.file_uploads.html file upload processing} using the data in the *pre_attachment* data 3. {api:ContentMigrationsController#show GET} the ContentMigration 4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress (required if doing .zip file upload) parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id064 type: object properties: migration_type: type: string description: |- The type of the migration. Use the {api:ContentMigrationsController#available_migrators Migrator} endpoint to see all available migrators. Default allowed values: canvas_cartridge_importer, common_cartridge_importer, course_copy_importer, zip_file_importer, qti_converter, moodle_converter pre_attachment[name]: type: string description: |- Required if uploading a file. This is the first step in uploading a file to the content migration. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. pre_attachment[*]: type: string description: |- Other file upload properties, See {file:file.file_uploads.html File Upload Documentation} settings[file_url]: type: string description: A URL to download the file from. Must not require authentication. settings[content_export_id]: type: string description: |- The id of a ContentExport to import. This allows you to import content previously exported from Canvas without needing to download and re-upload it. settings[source_course_id]: type: string description: |- The course to copy from for a course copy migration. (required if doing course copy) settings[folder_id]: type: string description: The folder to unzip the .zip file into for a zip_file_import. settings[overwrite_quizzes]: type: boolean description: |- Whether to overwrite quizzes with the same identifiers between content packages. settings[question_bank_id]: type: integer format: int64 description: |- The existing question bank ID to import questions into if not specified in the content package. settings[question_bank_name]: type: string description: |- The question bank to import questions into if not specified in the content package, if both bank id and name are set, id will take precedence. settings[insert_into_module_id]: type: integer format: int64 description: |- The id of a module in the target course. This will add all imported items (that can be added to a module) to the given module. settings[insert_into_module_type]: type: string enum: - assignment - discussion_topic - file - page - quiz description: |- If provided (and +insert_into_module_id+ is supplied), only add objects of the specified type to the module. settings[insert_into_module_position]: type: integer format: int64 description: |- The (1-based) position to insert the imported items into the course (if +insert_into_module_id+ is supplied). If this parameter is omitted, items will be added to the end of the module. settings[move_to_assignment_group_id]: type: integer format: int64 description: |- The id of an assignment group in the target course. If provided, all imported assignments will be moved to the given assignment group. settings[importer_skips]: type: array items: type: string enum: - all_course_settings - visibility_settings description: Set of importers to skip, even if otherwise selected by migration settings. settings[import_blueprint_settings]: type: boolean description: |- Import the "use as blueprint course" setting as well as the list of locked items from the source course or package. The destination course must not be associated with an existing blueprint course and cannot have any student or observer enrollments. date_shift_options[shift_dates]: type: boolean description: Whether to shift dates in the copied course date_shift_options[old_start_date]: type: string format: date description: The original start date of the source content/course date_shift_options[old_end_date]: type: string format: date description: The original end date of the source content/course date_shift_options[new_start_date]: type: string format: date description: The new start date for the content/course date_shift_options[new_end_date]: type: string format: date description: The new end date for the source content/course date_shift_options[day_substitutions][X]: type: integer format: int64 description: |- Move anything scheduled for day 'X' to the specified day. (0-Sunday, 1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday) date_shift_options[remove_dates]: type: boolean description: |- Whether to remove dates in the copied course. Cannot be used in conjunction with *shift_dates*. selective_import: type: boolean description: |- If set, perform a selective import instead of importing all content. The migration will identify the contents of the package and then stop in the +waiting_for_select+ workflow state. At this point, use the {api:ContentMigrationsController#content_list List items endpoint} to enumerate the contents of the package, identifying the copy parameters for the desired content. Then call the {api:ContentMigrationsController#update Update endpoint} and provide these copy parameters to start the import. select: type: object additionalProperties: true enum: - folders - files - attachments - quizzes - assignments - announcements - calendar_events - discussion_topics - modules - module_items - pages - rubrics description: |- For +course_copy_importer+ migrations, this parameter allows you to select the objects to copy without using the +selective_import+ argument and +waiting_for_select+ state as is required for uploaded imports (though that workflow is also supported for course copy migrations). The keys are object types like 'files', 'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an integer or a string. Multiple object types can be selected in the same call. required: - migration_type application/x-www-form-urlencoded: schema: *id064 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/users/{user_id}/content_migrations: get: tags: - Content Migrations operationId: list_content_migrations_users summary: List content migrations description: Returns paginated content migrations parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html post: tags: - Content Migrations operationId: create_content_migration_users summary: Create a content migration description: |- Create a content migration. If the migration requires a file to be uploaded the actual processing of the file will start once the file upload process is completed. File uploading works as described in the {file:file.file_uploads.html File Upload Documentation} except that the values are set on a *pre_attachment* sub-hash. For migrations that don't require a file to be uploaded, like course copy, the processing will begin as soon as the migration is created. You can use the {api:ProgressController#show Progress API} to track the progress of the migration. The migration's progress is linked to with the _progress_url_ value. The two general workflows are: If no file upload is needed: 1. POST to create 2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress For file uploading: 1. POST to create with file info in *pre_attachment* 2. Do {file:file.file_uploads.html file upload processing} using the data in the *pre_attachment* data 3. {api:ContentMigrationsController#show GET} the ContentMigration 4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress (required if doing .zip file upload) parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id065 type: object properties: migration_type: type: string description: |- The type of the migration. Use the {api:ContentMigrationsController#available_migrators Migrator} endpoint to see all available migrators. Default allowed values: canvas_cartridge_importer, common_cartridge_importer, course_copy_importer, zip_file_importer, qti_converter, moodle_converter pre_attachment[name]: type: string description: |- Required if uploading a file. This is the first step in uploading a file to the content migration. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. pre_attachment[*]: type: string description: |- Other file upload properties, See {file:file.file_uploads.html File Upload Documentation} settings[file_url]: type: string description: A URL to download the file from. Must not require authentication. settings[content_export_id]: type: string description: |- The id of a ContentExport to import. This allows you to import content previously exported from Canvas without needing to download and re-upload it. settings[source_course_id]: type: string description: |- The course to copy from for a course copy migration. (required if doing course copy) settings[folder_id]: type: string description: The folder to unzip the .zip file into for a zip_file_import. settings[overwrite_quizzes]: type: boolean description: |- Whether to overwrite quizzes with the same identifiers between content packages. settings[question_bank_id]: type: integer format: int64 description: |- The existing question bank ID to import questions into if not specified in the content package. settings[question_bank_name]: type: string description: |- The question bank to import questions into if not specified in the content package, if both bank id and name are set, id will take precedence. settings[insert_into_module_id]: type: integer format: int64 description: |- The id of a module in the target course. This will add all imported items (that can be added to a module) to the given module. settings[insert_into_module_type]: type: string enum: - assignment - discussion_topic - file - page - quiz description: |- If provided (and +insert_into_module_id+ is supplied), only add objects of the specified type to the module. settings[insert_into_module_position]: type: integer format: int64 description: |- The (1-based) position to insert the imported items into the course (if +insert_into_module_id+ is supplied). If this parameter is omitted, items will be added to the end of the module. settings[move_to_assignment_group_id]: type: integer format: int64 description: |- The id of an assignment group in the target course. If provided, all imported assignments will be moved to the given assignment group. settings[importer_skips]: type: array items: type: string enum: - all_course_settings - visibility_settings description: Set of importers to skip, even if otherwise selected by migration settings. settings[import_blueprint_settings]: type: boolean description: |- Import the "use as blueprint course" setting as well as the list of locked items from the source course or package. The destination course must not be associated with an existing blueprint course and cannot have any student or observer enrollments. date_shift_options[shift_dates]: type: boolean description: Whether to shift dates in the copied course date_shift_options[old_start_date]: type: string format: date description: The original start date of the source content/course date_shift_options[old_end_date]: type: string format: date description: The original end date of the source content/course date_shift_options[new_start_date]: type: string format: date description: The new start date for the content/course date_shift_options[new_end_date]: type: string format: date description: The new end date for the source content/course date_shift_options[day_substitutions][X]: type: integer format: int64 description: |- Move anything scheduled for day 'X' to the specified day. (0-Sunday, 1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday) date_shift_options[remove_dates]: type: boolean description: |- Whether to remove dates in the copied course. Cannot be used in conjunction with *shift_dates*. selective_import: type: boolean description: |- If set, perform a selective import instead of importing all content. The migration will identify the contents of the package and then stop in the +waiting_for_select+ workflow state. At this point, use the {api:ContentMigrationsController#content_list List items endpoint} to enumerate the contents of the package, identifying the copy parameters for the desired content. Then call the {api:ContentMigrationsController#update Update endpoint} and provide these copy parameters to start the import. select: type: object additionalProperties: true enum: - folders - files - attachments - quizzes - assignments - announcements - calendar_events - discussion_topics - modules - module_items - pages - rubrics description: |- For +course_copy_importer+ migrations, this parameter allows you to select the objects to copy without using the +selective_import+ argument and +waiting_for_select+ state as is required for uploaded imports (though that workflow is also supported for course copy migrations). The keys are object types like 'files', 'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an integer or a string. Multiple object types can be selected in the same call. required: - migration_type application/x-www-form-urlencoded: schema: *id065 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/accounts/{account_id}/content_migrations/{id}: get: tags: - Content Migrations operationId: get_content_migration_accounts summary: Get a content migration description: Returns data on an individual content migration parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_content_migration_accounts summary: Update a content migration description: |- Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you can't change the migration type. However, changing most settings after the migration process has started will not do anything. Generally updating the content migration will be used when there is a file upload problem, or when importing content selectively. If the first upload has a problem you can supply new _pre_attachment_ values to start the process again. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/courses/{course_id}/content_migrations/{id}: get: tags: - Content Migrations operationId: get_content_migration_courses summary: Get a content migration description: Returns data on an individual content migration parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_content_migration_courses summary: Update a content migration description: |- Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you can't change the migration type. However, changing most settings after the migration process has started will not do anything. Generally updating the content migration will be used when there is a file upload problem, or when importing content selectively. If the first upload has a problem you can supply new _pre_attachment_ values to start the process again. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/groups/{group_id}/content_migrations/{id}: get: tags: - Content Migrations operationId: get_content_migration_groups summary: Get a content migration description: Returns data on an individual content migration parameters: - name: group_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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_content_migration_groups summary: Update a content migration description: |- Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you can't change the migration type. However, changing most settings after the migration process has started will not do anything. Generally updating the content migration will be used when there is a file upload problem, or when importing content selectively. If the first upload has a problem you can supply new _pre_attachment_ values to start the process again. parameters: - name: group_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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/users/{user_id}/content_migrations/{id}: get: tags: - Content Migrations operationId: get_content_migration_users summary: Get a content migration description: Returns data on an individual content migration 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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html put: tags: - Content Migrations operationId: update_content_migration_users summary: Update a content migration description: |- Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you can't change the migration type. However, changing most settings after the migration process has started will not do anything. Generally updating the content migration will be used when there is a file upload problem, or when importing content selectively. If the first upload has a problem you can supply new _pre_attachment_ values to start the process again. 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 content: application/json: schema: $ref: '#/components/schemas/ContentMigration' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/accounts/{account_id}/content_migrations/migrators: get: tags: - Content Migrations operationId: list_migration_systems_accounts summary: List Migration Systems description: Lists the currently available migration types. These values may change. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Migrator' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/courses/{course_id}/content_migrations/migrators: get: tags: - Content Migrations operationId: list_migration_systems_courses summary: List Migration Systems description: Lists the currently available migration types. These values may change. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Migrator' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/groups/{group_id}/content_migrations/migrators: get: tags: - Content Migrations operationId: list_migration_systems_groups summary: List Migration Systems description: Lists the currently available migration types. These values may change. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Migrator' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/users/{user_id}/content_migrations/migrators: get: tags: - Content Migrations operationId: list_migration_systems_users summary: List Migration Systems description: Lists the currently available migration types. These values may change. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Migrator' externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/accounts/{account_id}/content_migrations/{id}/selective_data: get: tags: - Content Migrations operationId: list_items_for_selective_import_accounts summary: List items for selective import description: |- Enumerates the content available for selective import in a tree structure. Each node provides a +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint} to selectively copy the content associated with that tree node and its children. Each node may also provide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters for a subset of the resources in a given node. If no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this: [{ "type": "course_settings", "property": "copy[all_course_settings]", "title": "Course Settings" }, { "type": "context_modules", "property": "copy[all_context_modules]", "title": "Modules", "count": 5, "sub_items_url": "http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules" }, { "type": "assignments", "property": "copy[all_assignments]", "title": "Assignments", "count": 2, "sub_items_url": "http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments" }] When a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+ results in a node for each assignment group and a sub_item for each assignment, like this: [{ "type": "assignment_groups", "title": "An Assignment Group", "property": "copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]", "sub_items": [{ "type": "assignments", "title": "Assignment 1", "property": "copy[assignments][id_i2102a7fa93b29226774949298626719d]" }, { "type": "assignments", "title": "Assignment 2", "property": "copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]" }] }] To import the items corresponding to a particular tree node, use the +property+ as a parameter to the {api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example: copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1 You can include multiple copy parameters to selectively import multiple items or groups of items. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: type in: query schema: type: string enum: - context_modules - assignments - quizzes - assessment_question_banks - discussion_topics - wiki_pages - context_external_tools - tool_profiles - announcements - calendar_events - rubrics - groups - learning_outcomes - attachments required: false description: The type of content to enumerate. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: list of content items externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/courses/{course_id}/content_migrations/{id}/selective_data: get: tags: - Content Migrations operationId: list_items_for_selective_import_courses summary: List items for selective import description: |- Enumerates the content available for selective import in a tree structure. Each node provides a +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint} to selectively copy the content associated with that tree node and its children. Each node may also provide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters for a subset of the resources in a given node. If no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this: [{ "type": "course_settings", "property": "copy[all_course_settings]", "title": "Course Settings" }, { "type": "context_modules", "property": "copy[all_context_modules]", "title": "Modules", "count": 5, "sub_items_url": "http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules" }, { "type": "assignments", "property": "copy[all_assignments]", "title": "Assignments", "count": 2, "sub_items_url": "http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments" }] When a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+ results in a node for each assignment group and a sub_item for each assignment, like this: [{ "type": "assignment_groups", "title": "An Assignment Group", "property": "copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]", "sub_items": [{ "type": "assignments", "title": "Assignment 1", "property": "copy[assignments][id_i2102a7fa93b29226774949298626719d]" }, { "type": "assignments", "title": "Assignment 2", "property": "copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]" }] }] To import the items corresponding to a particular tree node, use the +property+ as a parameter to the {api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example: copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1 You can include multiple copy parameters to selectively import multiple items or groups of items. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: type in: query schema: type: string enum: - context_modules - assignments - quizzes - assessment_question_banks - discussion_topics - wiki_pages - context_external_tools - tool_profiles - announcements - calendar_events - rubrics - groups - learning_outcomes - attachments required: false description: The type of content to enumerate. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: list of content items externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/groups/{group_id}/content_migrations/{id}/selective_data: get: tags: - Content Migrations operationId: list_items_for_selective_import_groups summary: List items for selective import description: |- Enumerates the content available for selective import in a tree structure. Each node provides a +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint} to selectively copy the content associated with that tree node and its children. Each node may also provide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters for a subset of the resources in a given node. If no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this: [{ "type": "course_settings", "property": "copy[all_course_settings]", "title": "Course Settings" }, { "type": "context_modules", "property": "copy[all_context_modules]", "title": "Modules", "count": 5, "sub_items_url": "http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules" }, { "type": "assignments", "property": "copy[all_assignments]", "title": "Assignments", "count": 2, "sub_items_url": "http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments" }] When a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+ results in a node for each assignment group and a sub_item for each assignment, like this: [{ "type": "assignment_groups", "title": "An Assignment Group", "property": "copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]", "sub_items": [{ "type": "assignments", "title": "Assignment 1", "property": "copy[assignments][id_i2102a7fa93b29226774949298626719d]" }, { "type": "assignments", "title": "Assignment 2", "property": "copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]" }] }] To import the items corresponding to a particular tree node, use the +property+ as a parameter to the {api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example: copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1 You can include multiple copy parameters to selectively import multiple items or groups of items. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: type in: query schema: type: string enum: - context_modules - assignments - quizzes - assessment_question_banks - discussion_topics - wiki_pages - context_external_tools - tool_profiles - announcements - calendar_events - rubrics - groups - learning_outcomes - attachments required: false description: The type of content to enumerate. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: list of content items externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/users/{user_id}/content_migrations/{id}/selective_data: get: tags: - Content Migrations operationId: list_items_for_selective_import_users summary: List items for selective import description: |- Enumerates the content available for selective import in a tree structure. Each node provides a +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint} to selectively copy the content associated with that tree node and its children. Each node may also provide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters for a subset of the resources in a given node. If no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this: [{ "type": "course_settings", "property": "copy[all_course_settings]", "title": "Course Settings" }, { "type": "context_modules", "property": "copy[all_context_modules]", "title": "Modules", "count": 5, "sub_items_url": "http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules" }, { "type": "assignments", "property": "copy[all_assignments]", "title": "Assignments", "count": 2, "sub_items_url": "http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments" }] When a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+ results in a node for each assignment group and a sub_item for each assignment, like this: [{ "type": "assignment_groups", "title": "An Assignment Group", "property": "copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]", "sub_items": [{ "type": "assignments", "title": "Assignment 1", "property": "copy[assignments][id_i2102a7fa93b29226774949298626719d]" }, { "type": "assignments", "title": "Assignment 2", "property": "copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]" }] }] To import the items corresponding to a particular tree node, use the +property+ as a parameter to the {api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example: copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1 You can include multiple copy parameters to selectively import multiple items or groups of items. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: type in: query schema: type: string enum: - context_modules - assignments - quizzes - assessment_question_banks - discussion_topics - wiki_pages - context_external_tools - tool_profiles - announcements - calendar_events - rubrics - groups - learning_outcomes - attachments required: false description: The type of content to enumerate. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: list of content items externalDocs: url: https://canvas.instructure.com/doc/api/content_migrations.html /v1/courses/{course_id}/content_migrations/{id}/asset_id_mapping: get: tags: - Content Migrations operationId: get_asset_id_mapping summary: Get asset id mapping description: |- Given a complete course copy or blueprint import content migration, return a mapping of asset ids from the source course to the destination course that were copied in this migration or an earlier one with the same course pair and migration_type (course copy or blueprint). The returned object's keys are asset types as they appear in API URLs (+announcements+, +assignments+, +discussion_topics+, +files+, +module_items+, +modules+, +pages+, and +quizzes+). The values are a mapping from id in source course to id in destination course for objects of this type. parameters: - name: course_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/content_migrations.html /v1/courses/{course_id}/csp_settings: get: tags: - Content Security Policy Settings operationId: get_current_settings_for_account_or_course_courses summary: Get current settings for account or course description: Update multiple modules in an account. parameters: - name: course_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/content_security_policy_settings.html put: tags: - Content Security Policy Settings operationId: enable_disable_or_clear_explicit_csp_setting_courses summary: Enable, disable, or clear explicit CSP setting description: |- Either explicitly sets CSP to be on or off for courses and sub-accounts, or clear the explicit settings to default to those set by a parent account Note: If "inherited" and "settings_locked" are both true for this account or course, then the CSP setting cannot be modified. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id066 type: object properties: status: type: string enum: - enabled - disabled - inherited description: |- If set to "enabled" for an account, CSP will be enabled for all its courses and sub-accounts (that have not explicitly enabled or disabled it), using the allowed domains set on this account. If set to "disabled", CSP will be disabled for this account or course and for all sub-accounts that have not explicitly re-enabled it. If set to "inherited", this account or course will reset to the default state where CSP settings are inherited from the first parent account to have them explicitly set. required: - status application/x-www-form-urlencoded: schema: *id066 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/content_security_policy_settings.html /v1/accounts/{account_id}/csp_settings: get: tags: - Content Security Policy Settings operationId: get_current_settings_for_account_or_course_accounts summary: Get current settings for account or course description: Update multiple modules in an account. parameters: - name: account_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/content_security_policy_settings.html put: tags: - Content Security Policy Settings operationId: enable_disable_or_clear_explicit_csp_setting_accounts summary: Enable, disable, or clear explicit CSP setting description: |- Either explicitly sets CSP to be on or off for courses and sub-accounts, or clear the explicit settings to default to those set by a parent account Note: If "inherited" and "settings_locked" are both true for this account or course, then the CSP setting cannot be modified. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id067 type: object properties: status: type: string enum: - enabled - disabled - inherited description: |- If set to "enabled" for an account, CSP will be enabled for all its courses and sub-accounts (that have not explicitly enabled or disabled it), using the allowed domains set on this account. If set to "disabled", CSP will be disabled for this account or course and for all sub-accounts that have not explicitly re-enabled it. If set to "inherited", this account or course will reset to the default state where CSP settings are inherited from the first parent account to have them explicitly set. required: - status application/x-www-form-urlencoded: schema: *id067 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/content_security_policy_settings.html /v1/accounts/{account_id}/csp_settings/lock: put: tags: - Content Security Policy Settings operationId: lock_or_unlock_current_csp_settings_for_sub_accounts_and_courses summary: Lock or unlock current CSP settings for sub-accounts and courses description: Can only be set if CSP is explicitly enabled or disabled on this account (i.e. "inherited" is false). parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id068 type: object properties: settings_locked: type: boolean description: Whether sub-accounts and courses will be prevented from overriding settings inherited from this account. required: - settings_locked application/x-www-form-urlencoded: schema: *id068 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/content_security_policy_settings.html /v1/accounts/{account_id}/csp_settings/domains: post: tags: - Content Security Policy Settings operationId: add_allowed_domain_to_account summary: Add an allowed domain to account description: |- Adds an allowed domain for the current account. Note: this will not take effect unless CSP is explicitly enabled on this account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id069 type: object properties: domain: type: string description: no description required: - domain application/x-www-form-urlencoded: schema: *id069 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/content_security_policy_settings.html delete: tags: - Content Security Policy Settings operationId: remove_domain_from_account summary: Remove a domain from account description: Removes an allowed domain from the current account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: domain in: query schema: type: string required: true description: no description responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/content_security_policy_settings.html /v1/accounts/{account_id}/csp_settings/domains/batch_create: post: tags: - Content Security Policy Settings operationId: add_multiple_allowed_domains_to_account summary: Add multiple allowed domains to an account description: |- Adds multiple allowed domains for the current account. Note: this will not take effect unless CSP is explicitly enabled on this account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id070 type: object properties: domains: type: array items: {} description: no description required: - domains application/x-www-form-urlencoded: schema: *id070 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/content_security_policy_settings.html /v1/users/{user_id}/content_shares: post: tags: - Content Shares operationId: create_content_share summary: Create a content share description: Share content directly between two or more users parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id071 type: object properties: receiver_ids: type: array items: {} description: IDs of users to share the content with. content_type: type: string enum: - assignment - discussion_topic - page - quiz - module - module_item description: Type of content you are sharing. content_id: type: integer format: int64 description: The id of the content that you are sharing required: - receiver_ids - content_type - content_id application/x-www-form-urlencoded: schema: *id071 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentShare' externalDocs: url: https://canvas.instructure.com/doc/api/content_shares.html /v1/users/{user_id}/content_shares/sent: get: tags: - Content Shares operationId: list_content_shares_sent summary: List content shares description: |- Return a paginated list of content shares a user has sent or received. Use +self+ as the user_id to retrieve your own content shares. Only linked observers and administrators may view other users' content shares. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentShare' externalDocs: url: https://canvas.instructure.com/doc/api/content_shares.html /v1/users/{user_id}/content_shares/received: get: tags: - Content Shares operationId: list_content_shares_received summary: List content shares description: |- Return a paginated list of content shares a user has sent or received. Use +self+ as the user_id to retrieve your own content shares. Only linked observers and administrators may view other users' content shares. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentShare' externalDocs: url: https://canvas.instructure.com/doc/api/content_shares.html /v1/users/{user_id}/content_shares/unread_count: get: tags: - Content Shares operationId: get_unread_shares_count summary: Get unread shares count description: |- Return the number of content shares a user has received that have not yet been read. Use +self+ as the user_id to retrieve your own content shares. Only linked observers and administrators may view other users' content shares. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{ "unread_count": "integer" }' externalDocs: url: https://canvas.instructure.com/doc/api/content_shares.html /v1/users/{user_id}/content_shares/{id}: get: tags: - Content Shares operationId: get_content_share summary: Get content share description: Return information about a single content share. You may use +self+ as the user_id to retrieve your own content share. 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 content: application/json: schema: $ref: '#/components/schemas/ContentShare' externalDocs: url: https://canvas.instructure.com/doc/api/content_shares.html delete: tags: - Content Shares operationId: remove_content_share summary: Remove content share description: |- Remove a content share from your list. Use +self+ as the user_id. Note that this endpoint does not delete other users' copies of the content share. 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/content_shares.html put: tags: - Content Shares operationId: update_content_share summary: Update a content share description: Mark a content share read or unread 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: &id072 type: object properties: read_state: type: string enum: - read - unread description: Read state for the content share application/x-www-form-urlencoded: schema: *id072 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentShare' externalDocs: url: https://canvas.instructure.com/doc/api/content_shares.html /v1/users/{user_id}/content_shares/{id}/add_users: post: tags: - Content Shares operationId: add_users_to_content_share summary: Add users to content share description: Send a previously created content share to additional users 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: &id073 type: object properties: receiver_ids: type: array items: {} description: IDs of users to share the content with. application/x-www-form-urlencoded: schema: *id073 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContentShare' externalDocs: url: https://canvas.instructure.com/doc/api/content_shares.html /v1/conversations: get: tags: - Conversations operationId: list_conversations summary: List conversations description: |- Returns the paginated list of conversations for the current user, most recent ones first. "uuid:W9GQIcdoDTqwX8mxIunDQQVL6WZTaGmpa5xovmCB", or "course_456". For users, you can use either their numeric ID or UUID prefixed with "uuid:". Can be an array (by setting "filter[]") or single value (by setting "filter") parameters: - name: scope in: query schema: type: string enum: - unread - starred - archived - sent required: false description: |- When set, only return conversations of the specified type. For example, set to "unread" to return only conversations that haven't been read. The default behavior is to return all non-archived conversations (i.e. read and unread). - name: filter in: query schema: type: array items: type: string required: false description: |- When set, only return conversations for the specified courses, groups or users. The id should be prefixed with its type, e.g. "user_123", - name: filter_mode in: query schema: type: string enum: - and - or - default or required: false description: |- When filter[] contains multiple filters, combine them with this mode, filtering conversations that at have at least all of the contexts ("and") or at least one of the contexts ("or") - name: interleave_submissions in: query schema: type: boolean required: false description: |- (Obsolete) Submissions are no longer linked to conversations. This parameter is ignored. - name: include_all_conversation_ids in: query schema: type: boolean required: false description: |- Default is false. If true, the top-level element of the response will be an object rather than an array, and will have the keys "conversations" which will contain the paged conversation data, and "conversation_ids" which will contain the ids of all conversations under this scope/filter in the same order. - name: include in: query schema: type: array items: type: string enum: - participant_avatars - uuid required: false description: |- "participant_avatars":: Optionally include an "avatar_url" key for each user participating in the conversation "uuid":: Optionally include an "uuid" key for each user participating in the conversation responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Conversation' externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html post: tags: - Conversations operationId: create_conversation summary: Create a conversation description: |- Create a new conversation with one or more recipients. If there is already an existing private conversation with the given recipients, it will be reused. (either numeric IDs or UUIDs prefixed with "uuid:"), or course/group ids prefixed with "course_" or "group_" respectively, e.g. recipients[]=1&recipients[]=uuid:W9GQIcdoDTqwX8mxIunDQQVL6WZTaGmpa5xovmCBx&recipients[]=course_3. If the course/group has over 100 enrollments, 'bulk_message' and 'group_conversation' must be set to true. requestBody: required: false content: application/json: schema: &id074 type: object properties: recipients: type: array items: type: string description: An array of recipient ids. These may be user ids subject: type: string description: |- The subject of the conversation. This is ignored when reusing a conversation. Maximum length is 255 characters. body: type: string description: The message to be sent force_new: type: boolean description: Forces a new message to be created, even if there is an existing private conversation. group_conversation: type: boolean description: |- Defaults to false. When false, individual private conversations will be created with each recipient. If true, this will be a group conversation (i.e. all recipients may see all messages and replies). Must be set true if the number of recipients is over the set maximum (default is 100). attachment_ids: type: array items: type: string description: |- An array of attachments ids. These must be files that have been previously uploaded to the sender's "conversation attachments" folder. media_comment_id: type: string description: |- Media comment id of an audio or video file to be associated with this message. media_comment_type: type: string enum: - audio - video description: Type of the associated media file mode: type: string enum: - sync - async description: |- Determines whether the messages will be created/sent synchronously or asynchronously. Defaults to sync, and this option is ignored if this is a group conversation or there is just one recipient (i.e. it must be a bulk private message). When sent async, the response will be an empty array (batch status can be queried via the {api:ConversationsController#batches batches API}) scope: type: string enum: - unread - starred - archived description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} filter: type: array items: type: string description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} filter_mode: type: string enum: - and - or - default or description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} context_code: type: string description: |- The course or group that is the context for this conversation. Same format as courses or groups in the recipients argument. display_from: type: string description: |- Display name to show as the message sender instead of the authenticated user's name. Only honored when the request is authenticated with a site admin service user token. include: type: array items: type: string enum: - uuid description: '"uuid":: Optionally include an "uuid" key for each user participating in the conversation' required: - recipients - body application/x-www-form-urlencoded: schema: *id074 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html put: tags: - Conversations operationId: batch_update_conversations summary: Batch update conversations description: |- Perform a change on a set of conversations. Operates asynchronously; use the {api:ProgressController#show progress endpoint} to query the status of an operation. requestBody: required: false content: application/json: schema: &id075 type: object properties: conversation_ids: type: array items: type: string description: List of conversations to update. Limited to 500 conversations. event: type: string enum: - mark_as_read - mark_as_unread - star - unstar - archive - destroy description: The action to take on each conversation. required: - conversation_ids - event application/x-www-form-urlencoded: schema: *id075 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html /v1/conversations/batches: get: tags: - Conversations operationId: get_running_batches summary: Get running batches description: |- Returns any currently running conversation batches for the current user. Conversation batches are created when a bulk private message is sent asynchronously (see the mode argument to the {api:ConversationsController#create create API action}). responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html /v1/conversations/{id}: get: tags: - Conversations operationId: get_single_conversation summary: Get a single conversation description: |- Returns information for a single conversation for the current user. Response includes all fields that are present in the list/index action as well as messages and extended participant information. parameters: - name: id in: path schema: type: string required: true description: ID - name: interleave_submissions in: query schema: type: boolean required: false description: |- (Obsolete) Submissions are no longer linked to conversations. This parameter is ignored. - name: scope in: query schema: type: string enum: - unread - starred - archived required: false description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} - name: filter in: query schema: type: array items: type: string required: false description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} - name: filter_mode in: query schema: type: string enum: - and - or - default or required: false description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} - name: auto_mark_as_read in: query schema: type: boolean required: false description: |- Default true. If true, unread conversations will be automatically marked as read. This will default to false in a future API release, so clients should explicitly send true if that is the desired behavior. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html put: tags: - Conversations operationId: edit_conversation summary: Edit a conversation description: Updates attributes for a single conversation. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id076 type: object properties: conversation[workflow_state]: type: string enum: - read - unread - archived description: Change the state of this conversation conversation[subscribed]: type: boolean description: |- Toggle the current user's subscription to the conversation (only valid for group conversations). If unsubscribed, the user will still have access to the latest messages, but the conversation won't be automatically flagged as unread, nor will it jump to the top of the inbox. conversation[starred]: type: boolean description: Toggle the starred state of the current user's view of the conversation. scope: type: string enum: - unread - starred - archived description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} filter: type: array items: type: string description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} filter_mode: type: string enum: - and - or - default or description: |- Used when generating "visible" in the API response. See the explanation under the {api:ConversationsController#index index API action} application/x-www-form-urlencoded: schema: *id076 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html delete: tags: - Conversations operationId: delete_conversation summary: Delete a conversation description: |- Delete this conversation and its messages. Note that this only deletes this user's view of the conversation. Response includes same fields as UPDATE action parameters: - 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/conversations.html /v1/conversations/mark_all_as_read: post: tags: - Conversations operationId: mark_all_as_read summary: Mark all as read description: Mark all conversations as read. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html /v1/conversations/{id}/add_recipients: post: tags: - Conversations operationId: add_recipients summary: Add recipients description: |- Add recipients to an existing group conversation. Response is similar to the GET/show action, except that only includes the latest message (e.g. "joe was added to the conversation by bob") parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id077 type: object properties: recipients: type: array items: type: string description: |- An array of recipient ids. These may be user ids or course/group ids prefixed with "course_" or "group_" respectively, e.g. recipients[]=1&recipients[]=2&recipients[]=course_3 required: - recipients application/x-www-form-urlencoded: schema: *id077 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html /v1/conversations/{id}/add_message: post: tags: - Conversations operationId: add_message summary: Add a message description: |- Add a message to an existing conversation. Response is similar to the GET/show action, except that only includes the latest message (i.e. what we just sent) An array of user ids. Defaults to all of the current conversation recipients. To explicitly send a message to no other recipients, this array should consist of the logged-in user id. An array of message ids from this conversation to send to recipients of the new message. Recipients who already had a copy of included messages will not be affected. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id078 type: object properties: body: type: string description: The message to be sent. attachment_ids: type: array items: type: string description: |- An array of attachments ids. These must be files that have been previously uploaded to the sender's "conversation attachments" folder. media_comment_id: type: string description: |- Media comment id of an audio of video file to be associated with this message. media_comment_type: type: string enum: - audio - video description: Type of the associated media file. recipients: type: array items: type: string description: no description included_messages: type: array items: type: string description: no description required: - body application/x-www-form-urlencoded: schema: *id078 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html /v1/conversations/{id}/remove_messages: post: tags: - Conversations operationId: delete_message summary: Delete a message description: |- Delete messages from this conversation. Note that this only affects this user's view of the conversation. If all messages are deleted, the conversation will be as well (equivalent to DELETE) parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id079 type: object properties: remove: type: array items: type: string description: Array of message ids to be deleted required: - remove application/x-www-form-urlencoded: schema: *id079 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html /v1/conversations/find_recipients: get: tags: - Search operationId: find_recipients_conversations summary: Find recipients description: |- Find valid recipients (users, courses and groups) that the current user can send messages to. The /api/v1/search/recipients path is the preferred endpoint, /api/v1/conversations/find_recipients is deprecated. Pagination is supported. parameters: - name: search in: query schema: type: string required: false description: |- Search terms used for matching users/courses/groups (e.g. "bob smith"). If multiple terms are given (separated via whitespace), only results matching all terms will be returned. - name: context in: query schema: type: string required: false description: Limit the search to a particular course/group (e.g. "course_3" or "group_4"). - name: exclude in: query schema: type: array items: type: string required: false description: |- Array of ids to exclude from the search. These may be user ids or course/group ids prefixed with "course_" or "group_" respectively, e.g. exclude[]=1&exclude[]=2&exclude[]=course_3 - name: type in: query schema: type: string enum: - user - context required: false description: Limit the search just to users or contexts (groups/courses). - name: user_id in: query schema: type: integer format: int64 required: false description: |- Search for a specific user id. This ignores the other above parameters, and will never return more than one result. - name: from_conversation_id in: query schema: type: integer format: int64 required: false description: |- When searching by user_id, only users that could be normally messaged by this user will be returned. This parameter allows you to specify a conversation that will be referenced for a shared context -- if both the current user and the searched user are in the conversation, the user will be returned. This is used to start new side conversations. - name: permissions in: query schema: type: array items: type: string required: false description: |- Array of permission strings to be checked for each matched context (e.g. "send_messages"). This argument determines which permissions may be returned in the response; it won't prevent contexts from being returned if they don't grant the permission(s). responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/search.html /v1/conversations/unread_count: get: tags: - Conversations operationId: unread_count summary: Unread count description: Get the number of unread conversations for the current user responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/conversations.html /v1/audit/course/courses/{course_id}: get: tags: - Course Audit Log operationId: query_by_course summary: Query by course. description: List course change events for a given course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want events. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CourseEvent' externalDocs: url: https://canvas.instructure.com/doc/api/course_audit_log.html /v1/audit/course/accounts/{account_id}: get: tags: - Course Audit Log operationId: query_by_account_course_audit_log summary: Query by account. description: List course change events for a given account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want events. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CourseEvent' externalDocs: url: https://canvas.instructure.com/doc/api/course_audit_log.html /v1/courses/{course_id}/course_pacing/{id}: get: tags: - Course Pace operationId: show_course_pace summary: Show a Course pace description: Returns a course pace for the course and pace id provided parameters: - name: id in: path schema: type: string required: true description: ID - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course - name: course_pace_id in: query schema: type: integer format: int64 required: true description: The id of the course_pace responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CoursePace' externalDocs: url: https://canvas.instructure.com/doc/api/course_pace.html put: tags: - Course Pace operationId: update_course_pace summary: Update a Course pace description: Returns the updated course pace parameters: - name: id in: path schema: type: string required: true description: ID - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course requestBody: required: false content: application/json: schema: &id080 type: object properties: course_pace_id: type: integer format: int64 description: The id of the course pace end_date: type: string format: date-time description: End date of the course pace exclude_weekends: type: boolean description: Course pace dates excludes weekends if true selected_days_to_skip: type: string description: |- [Array] Course pace dates excludes weekends if true hard_end_dates: type: boolean description: Course pace uess hard end dates if true workflow_state: type: string description: The state of the course pace course_pace_module_item_attributes: type: array items: type: string description: Module Items attributes required: - course_pace_id application/x-www-form-urlencoded: schema: *id080 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CoursePace' externalDocs: url: https://canvas.instructure.com/doc/api/course_pace.html delete: tags: - Course Pace operationId: delete_course_pace summary: Delete a Course pace description: Returns the updated course pace parameters: - name: id in: path schema: type: string required: true description: ID - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course - name: course_pace_id in: query schema: type: integer format: int64 required: true description: The id of the course_pace responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CoursePace' externalDocs: url: https://canvas.instructure.com/doc/api/course_pace.html /v1/courses/{course_id}/course_pacing: post: tags: - Course Pace operationId: create_course_pace summary: Create a Course pace description: Creates a new course pace with specified parameters. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course requestBody: required: false content: application/json: schema: &id081 type: object properties: end_date: type: string format: date-time description: End date of the course pace end_date_context: type: string description: End date context (course, section, hupothetical) start_date: type: string format: date-time description: Start date of the course pace start_date_context: type: string description: Start date context (course, section, hupothetical) exclude_weekends: type: boolean description: Course pace dates excludes weekends if true selected_days_to_skip: type: string description: |- [Array] Course pace dates excludes weekends if true hard_end_dates: type: boolean description: Course pace uess hard end dates if true workflow_state: type: string description: The state of the course pace course_pace_module_item_attributes: type: array items: type: string description: Module Items attributes context_id: type: integer format: int64 description: Pace Context ID context_type: type: string description: Pace Context Type (Course, Section, User) application/x-www-form-urlencoded: schema: *id081 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CoursePace' externalDocs: url: https://canvas.instructure.com/doc/api/course_pace.html /v1/courses/{course_id}/quiz_extensions: post: tags: - Course Quiz Extensions operationId: set_extensions_for_student_quiz_submissions summary: Set extensions for student quiz submissions description: |- Responses * 200 OK if the request was successful * 403 Forbidden if you are not allowed to extend quizzes for this course parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id082 type: object properties: user_id: type: integer format: int64 description: The ID of the user we want to add quiz extensions for. extra_attempts: type: integer format: int64 description: |- Number of times the student is allowed to re-take the quiz over the multiple-attempt limit. This is limited to 1000 attempts or less. extra_time: type: integer format: int64 description: |- The number of extra minutes to allow for all attempts. This will add to the existing time limit on the submission. This is limited to 10080 minutes (1 week) manually_unlocked: type: boolean description: |- Allow the student to take the quiz even if it's locked for everyone else. extend_from_now: type: integer format: int64 description: |- The number of minutes to extend the quiz from the current time. This is mutually exclusive to extend_from_end_at. This is limited to 1440 minutes (24 hours) extend_from_end_at: type: integer format: int64 description: |- The number of minutes to extend the quiz beyond the quiz's current ending time. This is mutually exclusive to extend_from_now. This is limited to 1440 minutes (24 hours) required: - user_id application/x-www-form-urlencoded: schema: *id082 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/course_quiz_extensions.html /v1/courses/{course_id}/reports/{report_type}/{id}: get: tags: - Course Reports operationId: status_of_report_course_reports summary: Status of a Report description: Returns the status of a report. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: report_type in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Report__course_reports' externalDocs: url: https://canvas.instructure.com/doc/api/course_reports.html /v1/courses/{course_id}/reports/{report_type}: post: tags: - Course Reports operationId: start_report_course_reports summary: Start a Report description: |- Generates a report instance for the account. Note that "report" in the request must match one of the available report names. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course to report on. - name: report_type in: path schema: type: string required: true description: The type of report to generate. requestBody: required: false content: application/json: schema: &id083 type: object properties: parameters: type: array items: type: object additionalProperties: true description: |- The parameters will vary for each report. A few example parameters have been provided below. Note: the example parameters provided below may not be valid for every report. parameters[section_ids]: type: array items: type: integer description: |- The sections of the course to report on. Note: this parameter has been listed to serve as an example and may not be valid for every report. application/x-www-form-urlencoded: schema: *id083 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Report__course_reports' externalDocs: url: https://canvas.instructure.com/doc/api/course_reports.html get: tags: - Course Reports operationId: status_of_last_report summary: Status of last Report description: Returns the status of the last report initiated by the current user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: report_type in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Report__course_reports' externalDocs: url: https://canvas.instructure.com/doc/api/course_reports.html /v1/courses: get: tags: - Courses operationId: list_your_courses summary: List your courses description: Returns the paginated list of active courses for the current user. parameters: - name: enrollment_type in: query schema: type: string enum: - teacher - student - ta - observer - designer required: false description: |- When set, only return courses where the user is enrolled as this type. For example, set to "teacher" to return only courses where the user is enrolled as a Teacher. This argument is ignored if enrollment_role is given. - name: enrollment_role in: query schema: type: string required: false description: |- Deprecated When set, only return courses where the user is enrolled with the specified course-level role. This can be a role created with the {api:RoleOverridesController#add_role Add Role API} or a base role type of 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'ObserverEnrollment', or 'DesignerEnrollment'. - name: enrollment_role_id in: query schema: type: integer format: int64 required: false description: |- When set, only return courses where the user is enrolled with the specified course-level role. This can be a role created with the {api:RoleOverridesController#add_role Add Role API} or a built_in role type of 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'ObserverEnrollment', or 'DesignerEnrollment'. - name: enrollment_state in: query schema: type: string enum: - active - invited_or_pending - completed required: false description: |- When set, only return courses where the user has an enrollment with the given state. This will respect section/course/term date overrides. - name: exclude_blueprint_courses in: query schema: type: boolean required: false description: When set, only return courses that are not configured as blueprint courses. - name: include in: query schema: type: array items: type: string enum: - needs_grading_count - syllabus_body - syllabus_versions - public_description - total_scores - current_grading_period_scores - grading_periods - term - account - course_progress - sections - storage_quota_used_mb - total_students - passback_status - favorites - teachers - observed_users - course_image - banner_image - concluded - post_manually required: false description: |- - "needs_grading_count": Optional information to include with each Course. When needs_grading_count is given, and the current user has grading rights, the total number of submissions needing grading for all assignments is returned. - "syllabus_body": Optional information to include with each Course. When syllabus_body is given the user-generated html for the course syllabus is returned. - "public_description": Optional information to include with each Course. When public_description is given the user-generated text for the course public description is returned. - "total_scores": Optional information to include with each Course. When total_scores is given, any student enrollments will also include the fields 'computed_current_score', 'computed_final_score', 'computed_current_grade', and 'computed_final_grade', as well as (if the user has permission) 'unposted_current_score', 'unposted_final_score', 'unposted_current_grade', and 'unposted_final_grade' (see Enrollment documentation for more information on these fields). This argument is ignored if the course is configured to hide final grades. - "current_grading_period_scores": Optional information to include with each Course. When current_grading_period_scores is given and total_scores is given, any student enrollments will also include the fields 'has_grading_periods', 'totals_for_all_grading_periods_option', 'current_grading_period_title', 'current_grading_period_id', current_period_computed_current_score', 'current_period_computed_final_score', 'current_period_computed_current_grade', and 'current_period_computed_final_grade', as well as (if the user has permission) 'current_period_unposted_current_score', 'current_period_unposted_final_score', 'current_period_unposted_current_grade', and 'current_period_unposted_final_grade' (see Enrollment documentation for more information on these fields). In addition, when this argument is passed, the course will have a 'has_grading_periods' attribute on it. This argument is ignored if the total_scores argument is not included. If the course is configured to hide final grades, the following fields are not returned: 'totals_for_all_grading_periods_option', 'current_period_computed_current_score', 'current_period_computed_final_score', 'current_period_computed_current_grade', 'current_period_computed_final_grade', 'current_period_unposted_current_score', 'current_period_unposted_final_score', 'current_period_unposted_current_grade', and 'current_period_unposted_final_grade' - "grading_periods": Optional information to include with each Course. When grading_periods is given, a list of the grading periods associated with each course is returned. - "term": Optional information to include with each Course. When term is given, the information for the enrollment term for each course is returned. - "account": Optional information to include with each Course. When account is given, the account json for each course is returned. - "course_progress": Optional information to include with each Course. When course_progress is given, each course will include a 'course_progress' object with the fields: 'requirement_count', an integer specifying the total number of requirements in the course, 'requirement_completed_count', an integer specifying the total number of requirements in this course that have been completed, and 'next_requirement_url', a string url to the next requirement item, and 'completed_at', the date the course was completed (null if incomplete). 'next_requirement_url' will be null if all requirements have been completed or the current module does not require sequential progress. "course_progress" will return an error message if the course is not module based or the user is not enrolled as a student in the course. - "sections": Section enrollment information to include with each Course. Returns an array of hashes containing the section ID (id), section name (name), start and end dates (start_at, end_at), as well as the enrollment type (enrollment_role, e.g. 'StudentEnrollment'). - "storage_quota_used_mb": The amount of storage space used by the files in this course - "total_students": Optional information to include with each Course. Returns an integer for the total amount of active and invited students. - "passback_status": Include the grade passback_status - "favorites": Optional information to include with each Course. Indicates if the user has marked the course as a favorite course. - "teachers": Teacher information to include with each Course. Returns an array of hashes containing the {api:Users:UserDisplay UserDisplay} information for each teacher in the course. - "observed_users": Optional information to include with each Course. Will include data for observed users if the current user has an observer enrollment. - "tabs": Optional information to include with each Course. Will include the list of tabs configured for each course. See the {api:TabsController#index List available tabs API} for more information. - "course_image": Optional information to include with each Course. Returns course image url if a course image has been set. - "banner_image": Optional information to include with each Course. Returns course banner image url if the course is a Canvas for Elementary subject and a banner image has been set. - "concluded": Optional information to include with each Course. Indicates whether the course has been concluded, taking course and term dates into account. - "post_manually": Optional information to include with each Course. Returns true if the course post policy is set to Manually post grades. Returns false if the the course post policy is set to Automatically post grades. - "syllabus_versions": Optional information to include with each Course. Returns recent saved versions of the syllabus body. Requires the syllabus_versioning feature flag and permission to manage course content. Version numbers can be passed to the Restore course syllabus version API. - name: state in: query schema: type: array items: type: string enum: - unpublished - available - completed - deleted required: false description: |- If set, only return courses that are in the given state(s). By default, "available" is returned for students and observers, and anything except "deleted", for all other enrollment types responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Course' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/users/{user_id}/courses: get: tags: - Courses operationId: list_courses_for_user summary: List courses for a user description: Returns a paginated list of active courses for this user. To view the course list for a user other than yourself, you must be either an observer of that user or an administrator. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - needs_grading_count - syllabus_body - syllabus_versions - public_description - total_scores - current_grading_period_scores - grading_periods - term - account - course_progress - sections - storage_quota_used_mb - total_students - passback_status - favorites - teachers - observed_users - course_image - banner_image - concluded - post_manually required: false description: |- - "needs_grading_count": Optional information to include with each Course. When needs_grading_count is given, and the current user has grading rights, the total number of submissions needing grading for all assignments is returned. - "syllabus_body": Optional information to include with each Course. When syllabus_body is given the user-generated html for the course syllabus is returned. - "public_description": Optional information to include with each Course. When public_description is given the user-generated text for the course public description is returned. - "total_scores": Optional information to include with each Course. When total_scores is given, any student enrollments will also include the fields 'computed_current_score', 'computed_final_score', 'computed_current_grade', and 'computed_final_grade' (see Enrollment documentation for more information on these fields). This argument is ignored if the course is configured to hide final grades. - "current_grading_period_scores": Optional information to include with each Course. When current_grading_period_scores is given and total_scores is given, any student enrollments will also include the fields 'has_grading_periods', 'totals_for_all_grading_periods_option', 'current_grading_period_title', 'current_grading_period_id', current_period_computed_current_score', 'current_period_computed_final_score', 'current_period_computed_current_grade', and 'current_period_computed_final_grade', as well as (if the user has permission) 'current_period_unposted_current_score', 'current_period_unposted_final_score', 'current_period_unposted_current_grade', and 'current_period_unposted_final_grade' (see Enrollment documentation for more information on these fields). In addition, when this argument is passed, the course will have a 'has_grading_periods' attribute on it. This argument is ignored if the course is configured to hide final grades or if the total_scores argument is not included. - "grading_periods": Optional information to include with each Course. When grading_periods is given, a list of the grading periods associated with each course is returned. - "term": Optional information to include with each Course. When term is given, the information for the enrollment term for each course is returned. - "account": Optional information to include with each Course. When account is given, the account json for each course is returned. - "course_progress": Optional information to include with each Course. When course_progress is given, each course will include a 'course_progress' object with the fields: 'requirement_count', an integer specifying the total number of requirements in the course, 'requirement_completed_count', an integer specifying the total number of requirements in this course that have been completed, and 'next_requirement_url', a string url to the next requirement item, and 'completed_at', the date the course was completed (null if incomplete). 'next_requirement_url' will be null if all requirements have been completed or the current module does not require sequential progress. "course_progress" will return an error message if the course is not module based or the user is not enrolled as a student in the course. - "sections": Section enrollment information to include with each Course. Returns an array of hashes containing the section ID (id), section name (name), start and end dates (start_at, end_at), as well as the enrollment type (enrollment_role, e.g. 'StudentEnrollment'). - "storage_quota_used_mb": The amount of storage space used by the files in this course - "total_students": Optional information to include with each Course. Returns an integer for the total amount of active and invited students. - "passback_status": Include the grade passback_status - "favorites": Optional information to include with each Course. Indicates if the user has marked the course as a favorite course. - "teachers": Teacher information to include with each Course. Returns an array of hashes containing the {api:Users:UserDisplay UserDisplay} information for each teacher in the course. - "observed_users": Optional information to include with each Course. Will include data for observed users if the current user has an observer enrollment. - "tabs": Optional information to include with each Course. Will include the list of tabs configured for each course. See the {api:TabsController#index List available tabs API} for more information. - "course_image": Optional information to include with each Course. Returns course image url if a course image has been set. - "banner_image": Optional information to include with each Course. Returns course banner image url if the course is a Canvas for Elementary subject and a banner image has been set. - "concluded": Optional information to include with each Course. Indicates whether the course has been concluded, taking course and term dates into account. - "post_manually": Optional information to include with each Course. Returns true if the course post policy is set to "Manually". Returns false if the the course post policy is set to "Automatically". - "syllabus_versions": Optional information to include with each Course. Returns recent saved versions of the syllabus body. Requires the syllabus_versioning feature flag and permission to manage course content. Version numbers can be passed to the Restore course syllabus version API. - name: state in: query schema: type: array items: type: string enum: - unpublished - available - completed - deleted required: false description: |- If set, only return courses that are in the given state(s). By default, "available" is returned for students and observers, and anything except "deleted", for all other enrollment types - name: enrollment_state in: query schema: type: string enum: - active - invited_or_pending - completed required: false description: |- When set, only return courses where the user has an enrollment with the given state. This will respect section/course/term date overrides. - name: homeroom in: query schema: type: boolean required: false description: If set, only return homeroom courses. - name: account_id in: query schema: type: string required: false description: If set, only include courses associated with this account responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Course' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/users/{user_id}/progress: get: tags: - Courses operationId: get_user_progress summary: Get user progress description: |- Return progress information for the user and course You can supply +self+ as the user_id to query your own progress in a course. To query another user's progress, you must be a teacher in the course, an administrator, or a linked observer of the user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CourseProgress' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/files: post: tags: - Courses operationId: upload_file summary: Upload a file description: |- Upload a file to the course. This API endpoint is the first step in uploading a file to a course. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. Only those with the "Manage Files" permission on a course can upload files to the course. By default, this is Teachers, TAs and Designers. parameters: - name: course_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/courses.html get: tags: - Files operationId: list_files_courses summary: List files description: Returns the paginated list of files for the folder or course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: content_types in: query schema: type: array items: type: string required: false description: |- Filter results by content-type. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: exclude_content_types in: query schema: type: array items: type: string required: false description: |- Exclude given content-types from your results. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: search_term in: query schema: type: string required: false description: The partial name of the files to match and return. - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: only in: query schema: type: array items: type: array items: {} required: false description: |- Array of information to restrict to. Overrides include[] "names":: only returns file name information - name: sort in: query schema: type: string enum: - name - size - created_at - updated_at - content_type - user required: false description: Sort results by this field. Defaults to 'name'. Note that `sort=user` implies `include[]=user`. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/File__files' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/students: get: tags: - Courses operationId: list_students summary: List students description: |- Returns the paginated list of students enrolled in this course. DEPRECATED: Please use the {api:CoursesController#users course users} endpoint and pass "student" as the enrollment_type. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/users: get: tags: - Courses operationId: list_users_in_course_users summary: List users in course description: Returns the paginated list of users in this course. And optionally the user's enrollments in the course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: The partial name or full ID of the users to match and return in the results list. - name: sort in: query schema: type: string enum: - username - last_login - email - sis_id required: false description: When set, sort the results of the search based on the given field. - name: enrollment_type in: query schema: type: array items: type: string enum: - teacher - student - student_view - ta - observer - designer required: false description: |- When set, only return users where the user is enrolled as this type. "student_view" implies include[]=test_student. This argument is ignored if enrollment_role is given. - name: enrollment_role in: query schema: type: string required: false description: |- Deprecated When set, only return users enrolled with the specified course-level role. This can be a role created with the {api:RoleOverridesController#add_role Add Role API} or a base role type of 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'ObserverEnrollment', or 'DesignerEnrollment'. - name: enrollment_role_id in: query schema: type: integer format: int64 required: false description: |- When set, only return courses where the user is enrolled with the specified course-level role. This can be a role created with the {api:RoleOverridesController#add_role Add Role API} or a built_in role id with type 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'ObserverEnrollment', or 'DesignerEnrollment'. - name: section_ids in: query schema: type: array items: type: integer required: false description: When set, only return users who are enrolled in the given section(s). - name: include in: query schema: type: array items: type: string enum: - enrollments - locked - avatar_url - test_student - bio - custom_links - current_grading_period_scores - uuid required: false description: |- - "enrollments": Optionally include with each Course the user's current and invited enrollments. If the user is enrolled as a student, and the account has permission to manage or view all grades, each enrollment will include a 'grades' key with 'current_score', 'final_score', 'current_grade' and 'final_grade' values. - "locked": Optionally include whether an enrollment is locked. - "avatar_url": Optionally include avatar_url. - "bio": Optionally include each user's bio. - "test_student": Optionally include the course's Test Student, if present. Default is to not include Test Student. - "custom_links": Optionally include plugin-supplied custom links for each student, such as analytics information - "current_grading_period_scores": if enrollments is included as well as this directive, the scores returned in the enrollment will be for the current grading period if there is one. A 'grading_period_id' value will also be included with the scores. if grading_period_id is nil there is no current grading period and the score is a total score. - "uuid": Optionally include the users uuid - name: user_id in: query schema: type: string required: false description: |- If this parameter is given and it corresponds to a user in the course, the +page+ parameter will be ignored and the page containing the specified user will be returned instead. - name: user_ids in: query schema: type: array items: type: integer required: false description: |- If included, the course users set will only include users with IDs specified by the param. Note: this will not work in conjunction with the "user_id" argument but multiple user_ids can be included. - name: enrollment_state in: query schema: type: array items: type: string enum: - active - invited - rejected - completed - inactive required: false description: |- When set, only return users where the enrollment workflow state is of one of the given types. "active" and "invited" enrollments are returned by default. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/search_users: get: tags: - Courses operationId: list_users_in_course_search_users summary: List users in course description: Returns the paginated list of users in this course. And optionally the user's enrollments in the course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: The partial name or full ID of the users to match and return in the results list. - name: sort in: query schema: type: string enum: - username - last_login - email - sis_id required: false description: When set, sort the results of the search based on the given field. - name: enrollment_type in: query schema: type: array items: type: string enum: - teacher - student - student_view - ta - observer - designer required: false description: |- When set, only return users where the user is enrolled as this type. "student_view" implies include[]=test_student. This argument is ignored if enrollment_role is given. - name: enrollment_role in: query schema: type: string required: false description: |- Deprecated When set, only return users enrolled with the specified course-level role. This can be a role created with the {api:RoleOverridesController#add_role Add Role API} or a base role type of 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'ObserverEnrollment', or 'DesignerEnrollment'. - name: enrollment_role_id in: query schema: type: integer format: int64 required: false description: |- When set, only return courses where the user is enrolled with the specified course-level role. This can be a role created with the {api:RoleOverridesController#add_role Add Role API} or a built_in role id with type 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'ObserverEnrollment', or 'DesignerEnrollment'. - name: section_ids in: query schema: type: array items: type: integer required: false description: When set, only return users who are enrolled in the given section(s). - name: include in: query schema: type: array items: type: string enum: - enrollments - locked - avatar_url - test_student - bio - custom_links - current_grading_period_scores - uuid required: false description: |- - "enrollments": Optionally include with each Course the user's current and invited enrollments. If the user is enrolled as a student, and the account has permission to manage or view all grades, each enrollment will include a 'grades' key with 'current_score', 'final_score', 'current_grade' and 'final_grade' values. - "locked": Optionally include whether an enrollment is locked. - "avatar_url": Optionally include avatar_url. - "bio": Optionally include each user's bio. - "test_student": Optionally include the course's Test Student, if present. Default is to not include Test Student. - "custom_links": Optionally include plugin-supplied custom links for each student, such as analytics information - "current_grading_period_scores": if enrollments is included as well as this directive, the scores returned in the enrollment will be for the current grading period if there is one. A 'grading_period_id' value will also be included with the scores. if grading_period_id is nil there is no current grading period and the score is a total score. - "uuid": Optionally include the users uuid - name: user_id in: query schema: type: string required: false description: |- If this parameter is given and it corresponds to a user in the course, the +page+ parameter will be ignored and the page containing the specified user will be returned instead. - name: user_ids in: query schema: type: array items: type: integer required: false description: |- If included, the course users set will only include users with IDs specified by the param. Note: this will not work in conjunction with the "user_id" argument but multiple user_ids can be included. - name: enrollment_state in: query schema: type: array items: type: string enum: - active - invited - rejected - completed - inactive required: false description: |- When set, only return users where the enrollment workflow state is of one of the given types. "active" and "invited" enrollments are returned by default. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/recent_students: get: tags: - Courses operationId: list_recently_logged_in_students summary: List recently logged in students description: |- Returns the paginated list of users in this course, ordered by how recently they have logged in. The records include the 'last_login' field which contains a timestamp of the last time that user logged into canvas. The querying user must have the 'View usage reports' permission. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/users/{id}: get: tags: - Courses operationId: get_single_user summary: Get single user description: |- Return information on a single user. Accepts the same include[] parameters as the :users: action, and returns a single user with the same fields as that action. parameters: - name: course_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 content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/content_share_users: get: tags: - Courses operationId: search_for_content_share_users summary: Search for content share users description: |- Returns a paginated list of users you can share content with. Requires the content share feature and the user must have the manage content permission for the course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: true description: Term used to find users. Will search available share users with the search term in their name. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/preview_html: post: tags: - Courses operationId: preview_processed_html summary: Preview processed html description: Preview html content processed for this course parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id084 type: object properties: html: type: string description: The html content to process application/x-www-form-urlencoded: schema: *id084 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/activity_stream: get: tags: - Courses operationId: course_activity_stream summary: Course activity stream description: |- Returns the current user's course-specific activity stream, paginated. For full documentation, see the API documentation for the user activity stream, in the user api. parameters: - name: course_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/courses.html /v1/courses/{course_id}/activity_stream/summary: get: tags: - Courses operationId: course_activity_stream_summary summary: Course activity stream summary description: |- Returns a summary of the current user's course-specific activity stream. For full documentation, see the API documentation for the user activity stream summary, in the user api. parameters: - name: course_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/courses.html /v1/courses/{course_id}/todo: get: tags: - Courses operationId: course_todo_items summary: Course TODO items description: |- Returns the current user's course-specific todo items. For full documentation, see the API documentation for the user todo items, in the user api. parameters: - name: course_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/courses.html /v1/courses/{id}: delete: tags: - Courses operationId: delete_conclude_course summary: Delete/Conclude a course description: Delete or conclude an existing course parameters: - name: id in: path schema: type: string required: true description: ID - name: event in: query schema: type: string enum: - delete - conclude required: true description: The action to take on the course. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/courses.html get: tags: - Courses operationId: get_single_course_courses summary: Get a single course description: |- Return information on a single course. Accepts the same include[] parameters as the list action plus: parameters: - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - needs_grading_count - syllabus_body - syllabus_versions - public_description - total_scores - current_grading_period_scores - term - account - course_progress - sections - storage_quota_used_mb - total_students - passback_status - favorites - teachers - observed_users - all_courses - permissions - course_image - banner_image - concluded - lti_context_id - post_manually required: false description: |- - "all_courses": Also search recently deleted courses. - "permissions": Include permissions the current user has for the course. - "observed_users": Include observed users in the enrollments - "course_image": Include course image url if a course image has been set - "banner_image": Include course banner image url if the course is a Canvas for Elementary subject and a banner image has been set - "concluded": Optional information to include with Course. Indicates whether the course has been concluded, taking course and term dates into account. - "lti_context_id": Include course LTI tool id. - "post_manually": Include course post policy. If the post policy is manually post grades, the value will be true. If the post policy is automatically post grades, the value will be false. - "syllabus_versions": Optional information to include with each Course. Returns recent saved versions of the syllabus body. Requires the syllabus_versioning feature flag and permission to manage course content. Version numbers can be passed to the Restore course syllabus version API. - name: teacher_limit in: query schema: type: integer format: int64 required: false description: |- The maximum number of teacher enrollments to show. If the course contains more teachers than this, instead of giving the teacher enrollments, the count of teachers will be given under a _teacher_count_ key. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Course' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html put: tags: - Courses operationId: update_course summary: Update a course description: |- Update an existing course. Arguments are the same as Courses#create, with a few exceptions (enroll_me). If a user has content management rights, but not full course editing rights, the only attribute editable through this endpoint will be "syllabus_body" If an account has set prevent_course_availability_editing_by_teachers, a teacher cannot change +course[start_at]+, +course[conclude_at]+, or +course[restrict_enrollments_to_course_dates]+ here. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id085 type: object properties: course[account_id]: type: integer format: int64 description: The unique ID of the account to move the course to. course[name]: type: string description: |- The name of the course. If omitted, the course will be named "Unnamed Course." course[course_code]: type: string description: The course code for the course. course[start_at]: type: string format: date-time description: |- Course start date in ISO8601 format, e.g. 2011-01-01T01:00Z This value is ignored unless 'restrict_enrollments_to_course_dates' is set to true, or the course is already published. course[end_at]: type: string format: date-time description: |- Course end date in ISO8601 format. e.g. 2011-01-01T01:00Z This value is ignored unless 'restrict_enrollments_to_course_dates' is set to true. course[license]: type: string description: |- The name of the licensing. Should be one of the following abbreviations (a descriptive name is included in parenthesis for reference): - 'private' (Private Copyrighted) - 'cc_by_nc_nd' (CC Attribution Non-Commercial No Derivatives) - 'cc_by_nc_sa' (CC Attribution Non-Commercial Share Alike) - 'cc_by_nc' (CC Attribution Non-Commercial) - 'cc_by_nd' (CC Attribution No Derivatives) - 'cc_by_sa' (CC Attribution Share Alike) - 'cc_by' (CC Attribution) - 'public_domain' (Public Domain). course[is_public]: type: boolean description: Set to true if course is public to both authenticated and unauthenticated users. course[is_public_to_auth_users]: type: boolean description: Set to true if course is public only to authenticated users. course[public_syllabus]: type: boolean description: Set to true to make the course syllabus public. course[public_syllabus_to_auth]: type: boolean description: Set to true to make the course syllabus to public for authenticated users. course[public_description]: type: string description: A publicly visible description of the course. course[allow_student_wiki_edits]: type: boolean description: If true, students will be able to modify the course wiki. course[allow_wiki_comments]: type: boolean description: If true, course members will be able to comment on wiki pages. course[allow_student_forum_attachments]: type: boolean description: If true, students can attach files to forum posts. course[open_enrollment]: type: boolean description: Set to true if the course is open enrollment. course[self_enrollment]: type: boolean description: Set to true if the course is self enrollment. course[restrict_enrollments_to_course_dates]: type: boolean description: |- Set to true to restrict user enrollments to the start and end dates of the course. Setting this value to false will remove the course end date (if it exists), as well as the course start date (if the course is unpublished). course[term_id]: type: integer format: int64 description: The unique ID of the term to create to course in. course[sis_course_id]: type: string description: The unique SIS identifier. course[integration_id]: type: string description: The unique Integration identifier. course[hide_final_grades]: type: boolean description: |- If this option is set to true, the totals in student grades summary will be hidden. course[time_zone]: type: string description: |- The time zone for the course. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. course[apply_assignment_group_weights]: type: boolean description: Set to true to weight final grade based on assignment groups percentages. course[storage_quota_mb]: type: integer format: int64 description: |- Set the storage quota for the course, in megabytes. The caller must have the "Manage storage quotas" account permission. offer: type: boolean description: |- If this option is set to true, the course will be available to students immediately. course[event]: type: string enum: - claim - offer - conclude - delete - undelete description: |- The action to take on each course. * 'claim' makes a course no longer visible to students. This action is also called "unpublish" on the web site. A course cannot be unpublished if students have received graded submissions. * 'offer' makes a course visible to students. This action is also called "publish" on the web site. * 'conclude' prevents future enrollments and makes a course read-only for all participants. The course still appears in prior-enrollment lists. * 'delete' completely removes the course from the web site (including course menus and prior-enrollment lists). All enrollments are deleted. Course content may be physically deleted at a future date. * 'undelete' attempts to recover a course that has been deleted. This action requires account administrative rights. (Recovery is not guaranteed; please conclude rather than delete a course if there is any possibility the course will be used again.) The recovered course will be unpublished. Deleted enrollments will not be recovered. course[default_view]: type: string enum: - feed - wiki - modules - syllabus - assignments description: |- The type of page that users will see when they first visit the course * 'feed' Recent Activity Dashboard * 'wiki' Wiki Front Page * 'modules' Course Modules/Sections Page * 'assignments' Course Assignments List * 'syllabus' Course Syllabus Page other types may be added in the future course[syllabus_body]: type: string description: The syllabus body for the course course[syllabus_course_summary]: type: boolean description: Optional. Indicates whether the Course Summary (consisting of the course's assignments and calendar events) is displayed on the syllabus page. Defaults to +true+. course[grading_standard_id]: type: integer format: int64 description: The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. course[grade_passback_setting]: type: string description: Optional. The grade_passback_setting for the course. Only 'nightly_sync' and '' are allowed course[course_format]: type: string description: Optional. Specifies the format of the course. (Should be either 'on_campus' or 'online') course[image_id]: type: integer format: int64 description: |- This is a file ID corresponding to an image file in the course that will be used as the course image. This will clear the course's image_url setting if set. If you attempt to provide image_url and image_id in a request it will fail. course[image_url]: type: string description: |- This is a URL to an image to be used as the course image. This will clear the course's image_id setting if set. If you attempt to provide image_url and image_id in a request it will fail. course[remove_image]: type: boolean description: |- If this option is set to true, the course image url and course image ID are both set to nil course[remove_banner_image]: type: boolean description: |- If this option is set to true, the course banner image url and course banner image ID are both set to nil course[blueprint]: type: boolean description: Sets the course as a blueprint course. course[blueprint_restrictions]: type: string x-canvas-declared-type: BlueprintRestriction description: |- Sets a default set to apply to blueprint course objects when restricted, unless _use_blueprint_restrictions_by_object_type_ is enabled. See the {api:Blueprint_Courses:BlueprintRestriction Blueprint Restriction} documentation course[use_blueprint_restrictions_by_object_type]: type: boolean description: |- When enabled, the _blueprint_restrictions_ parameter will be ignored in favor of the _blueprint_restrictions_by_object_type_ parameter course[blueprint_restrictions_by_object_type]: type: string x-canvas-declared-type: multiple BlueprintRestrictions description: |- Allows setting multiple {api:Blueprint_Courses:BlueprintRestriction Blueprint Restriction} to apply to blueprint course objects of the matching type when restricted. The possible object types are "assignment", "attachment", "discussion_topic", "quiz" and "wiki_page". Example usage: course[blueprint_restrictions_by_object_type][assignment][content]=1 course[homeroom_course]: type: boolean description: |- Sets the course as a homeroom course. The setting takes effect only when the course is associated with a Canvas for Elementary-enabled account. course[sync_enrollments_from_homeroom]: type: string description: |- Syncs enrollments from the homeroom that is set in homeroom_course_id. The setting only takes effect when the course is associated with a Canvas for Elementary-enabled account and sync_enrollments_from_homeroom is enabled. course[homeroom_course_id]: type: string description: |- Sets the Homeroom Course id to be used with sync_enrollments_from_homeroom. The setting only takes effect when the course is associated with a Canvas for Elementary-enabled account and sync_enrollments_from_homeroom is enabled. course[template]: type: boolean description: Enable or disable the course as a template that can be selected by an account course[course_color]: type: string description: |- Sets a color in hex code format to be associated with the course. The setting takes effect only when the course is associated with a Canvas for Elementary-enabled account. course[friendly_name]: type: string description: |- Set a friendly name for the course. If this is provided and the course is associated with a Canvas for Elementary account, it will be shown instead of the course name. This setting takes priority over course nicknames defined by individual users. course[enable_course_paces]: type: boolean description: |- Enable or disable Course Pacing for the course. This setting only has an effect when the Course Pacing feature flag is enabled for the sub-account. Otherwise, Course Pacing are always disabled. course[conditional_release]: type: boolean description: Enable or disable individual learning paths for students based on assessment course[post_manually]: type: boolean description: |- When true, all grades in the course will be posted manually. When false, all grades in the course will be automatically posted. Use with caution as this setting will override any assignment level post policy. override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness application/x-www-form-urlencoded: schema: *id085 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/settings: get: tags: - Courses operationId: get_course_settings summary: Get course settings description: Returns some of a course's settings. parameters: - name: course_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/courses.html put: tags: - Courses operationId: update_course_settings summary: Update course settings description: 'Can update the following course settings:' parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id086 type: object properties: allow_final_grade_override: type: boolean description: Let student final grades for a grading period or the total grades for the course be overridden allow_student_discussion_topics: type: boolean description: Let students create discussion topics allow_student_forum_attachments: type: boolean description: Let students attach files to discussions allow_student_discussion_editing: type: boolean description: Let students edit or delete their own discussion replies allow_student_organized_groups: type: boolean description: Let students organize their own groups allow_student_discussion_reporting: type: boolean description: Let students report offensive discussion content allow_student_anonymous_discussion_topics: type: boolean description: Let students create anonymous discussion topics filter_speed_grader_by_student_group: type: boolean description: Filter SpeedGrader to only the selected student group hide_final_grades: type: boolean description: Hide totals in student grades summary hide_distribution_graphs: type: boolean description: Hide grade distribution graphs from students hide_sections_on_course_users_page: type: boolean description: Disallow students from viewing students in sections they do not belong to lock_all_announcements: type: boolean description: Disable comments on announcements usage_rights_required: type: boolean description: Copyright and license information must be provided for files before they are published. restrict_student_past_view: type: boolean description: Restrict students from viewing courses after end date restrict_student_future_view: type: boolean description: Restrict students from viewing courses before start date show_announcements_on_home_page: type: boolean description: |- Show the most recent announcements on the Course home page (if a Wiki, defaults to five announcements, configurable via home_page_announcement_limit). Canvas for Elementary subjects ignore this setting. home_page_announcement_limit: type: integer format: int64 description: Limit the number of announcements on the home page if enabled via show_announcements_on_home_page syllabus_course_summary: type: boolean description: Show the course summary (list of assignments and calendar events) on the syllabus page. Default is true. default_due_time: type: string description: |- Set the default due time for assignments. This is the time that will be pre-selected in the Canvas user interface when setting a due date for an assignment. It does not change when any existing assignment is due. It should be given in 24-hour HH:MM:SS format. The default is "23:59:59". Use "inherit" to inherit the account setting. conditional_release: type: boolean description: Enable or disable individual learning paths for students based on assessment application/x-www-form-urlencoded: schema: *id086 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/student_view_student: get: tags: - Courses operationId: return_test_student_for_course summary: Return test student for course description: |- Returns information for a test student in this course. Creates a test student if one does not already exist for the course. The caller must have permission to access the course's student view. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/accounts/{account_id}/courses/{id}: get: tags: - Courses operationId: get_single_course_accounts summary: Get a single course description: |- Return information on a single course. Accepts the same include[] parameters as the list action plus: parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - needs_grading_count - syllabus_body - syllabus_versions - public_description - total_scores - current_grading_period_scores - term - account - course_progress - sections - storage_quota_used_mb - total_students - passback_status - favorites - teachers - observed_users - all_courses - permissions - course_image - banner_image - concluded - lti_context_id - post_manually required: false description: |- - "all_courses": Also search recently deleted courses. - "permissions": Include permissions the current user has for the course. - "observed_users": Include observed users in the enrollments - "course_image": Include course image url if a course image has been set - "banner_image": Include course banner image url if the course is a Canvas for Elementary subject and a banner image has been set - "concluded": Optional information to include with Course. Indicates whether the course has been concluded, taking course and term dates into account. - "lti_context_id": Include course LTI tool id. - "post_manually": Include course post policy. If the post policy is manually post grades, the value will be true. If the post policy is automatically post grades, the value will be false. - "syllabus_versions": Optional information to include with each Course. Returns recent saved versions of the syllabus body. Requires the syllabus_versioning feature flag and permission to manage course content. Version numbers can be passed to the Restore course syllabus version API. - name: teacher_limit in: query schema: type: integer format: int64 required: false description: |- The maximum number of teacher enrollments to show. If the course contains more teachers than this, instead of giving the teacher enrollments, the count of teachers will be given under a _teacher_count_ key. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Course' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/reset_content: post: tags: - Courses operationId: reset_course summary: Reset a course description: |- Deletes the current course, and creates a new equivalent course with no content, but all sections and users moved over. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Course' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/effective_due_dates: get: tags: - Courses operationId: get_effective_due_dates summary: Get effective due dates description: |- For each assignment in the course, returns each assigned student's ID and their corresponding due date along with some grading period data. Returns a collection with keys representing assignment IDs and values as a collection containing keys representing student IDs and values representing the student's effective due_at, the grading_period_id of which the due_at falls in, and whether or not the grading period is closed (in_closed_grading_period) The list of assignment IDs for which effective student due dates are requested. If not provided, all assignments in the course will be used. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_ids in: query schema: type: array items: type: string required: false description: no description responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/permissions: get: tags: - Courses operationId: permissions_courses summary: Permissions description: |- Returns permission information for the calling user in the given course. See also the {api:AccountsController#permissions Account} and {api:GroupsController#permissions Group} counterparts. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: permissions in: query schema: type: array items: type: string required: false description: |- List of permissions to check against the authenticated user. Permission names are documented in the {api:RoleOverridesController#manageable_permissions List assignable permissions} endpoint. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/bulk_user_progress: get: tags: - Courses operationId: get_bulk_user_progress summary: Get bulk user progress description: |- Returns progress information for all users enrolled in the given course. You must be a user who has permission to view all grades in the course (such as a teacher or administrator). parameters: - name: course_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/courses.html /v1/courses/{id}/dismiss_migration_limitation_message: post: tags: - Courses operationId: remove_quiz_migration_alert summary: Remove quiz migration alert description: |- Remove alert about the limitations of quiz migrations that is displayed to a user in a course you must be logged in to use this endpoint parameters: - 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/courses.html /v1/courses/{course_id}/restore/{version_id}: post: tags: - Courses operationId: restore_course_syllabus_version summary: Restore course syllabus version description: |- Restore a course's syllabus body to a previously saved version. No other course content is affected. Requires the syllabus_versioning feature flag to be enabled on the account, and the caller must have permission to manage course content. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: version_id in: path schema: type: integer format: int64 required: true description: |- The version number to restore to. Available version numbers are returned by the Get a single course API when include[]=syllabus_versions is passed. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Course' externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/course_copy/{id}: get: tags: - Courses operationId: get_course_copy_status summary: Get course copy status description: |- DEPRECATED: Please use the {api:ContentMigrationsController#create Content Migrations API} Retrieve the status of a course copy parameters: - name: course_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/courses.html /v1/courses/{course_id}/course_copy: post: tags: - Courses operationId: copy_course_content summary: Copy course content description: |- DEPRECATED: Please use the {api:ContentMigrationsController#create Content Migrations API} Copies content from one course into another. The default is to copy all course content. You can control specific types to copy by using either the 'except' option or the 'only' option. The response is the same as the course copy status endpoint parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id087 type: object properties: source_course: type: string description: ID or SIS-ID of the course to copy the content from except: type: array items: type: string enum: - course_settings - assignments - external_tools - files - topics - calendar_events - quizzes - wiki_pages - modules - outcomes description: |- A list of the course content types to exclude, all areas not listed will be copied. only: type: array items: type: string enum: - course_settings - assignments - external_tools - files - topics - calendar_events - quizzes - wiki_pages - modules - outcomes description: |- A list of the course content types to copy, all areas not listed will not be copied. application/x-www-form-urlencoded: schema: *id087 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/courses.html /v1/courses/{course_id}/custom_gradebook_columns: get: tags: - Custom Gradebook Columns operationId: list_custom_gradebook_columns summary: List custom gradebook columns description: A paginated list of all custom gradebook columns for a course parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include_hidden in: query schema: type: boolean required: false description: Include hidden parameters (defaults to false) responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html post: tags: - Custom Gradebook Columns operationId: create_custom_gradebook_column summary: Create a custom gradebook column description: Create a custom gradebook column parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id088 type: object properties: column[title]: type: string description: no description column[position]: type: integer format: int64 description: The position of the column relative to other custom columns column[hidden]: type: boolean description: Hidden columns are not displayed in the gradebook column[teacher_notes]: type: boolean description: |- Set this if the column is created by a teacher. The gradebook only supports one teacher_notes column. column[read_only]: type: boolean description: Set this to prevent the column from being editable in the gradebook ui required: - column[title] application/x-www-form-urlencoded: schema: *id088 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/{id}: put: tags: - Custom Gradebook Columns operationId: update_custom_gradebook_column summary: Update a custom gradebook column description: Accepts the same parameters as custom gradebook column creation parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html delete: tags: - Custom Gradebook Columns operationId: delete_custom_gradebook_column summary: Delete a custom gradebook column description: Permanently deletes a custom column and its associated data parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/reorder: post: tags: - Custom Gradebook Columns operationId: reorder_custom_columns summary: Reorder custom columns description: |- Puts the given columns in the specified order 200 OK is returned if successful parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id089 type: object properties: order: type: array items: type: integer description: no description required: - order application/x-www-form-urlencoded: schema: *id089 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/{id}/data: get: tags: - Custom Gradebook Columns operationId: list_entries_for_column summary: List entries for a column description: This does not list entries for students without associated data. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include_hidden in: query schema: type: boolean required: false description: |- If true, hidden columns will be included in the result. If false or absent, only visible columns will be returned. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ColumnDatum' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/{id}/data/{user_id}: put: tags: - Custom Gradebook Columns operationId: update_column_data summary: Update column data description: Set the content of a custom column parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id090 type: object properties: column_data[content]: type: string description: Column content. Setting this to blank will delete the datum object. required: - column_data[content] application/x-www-form-urlencoded: schema: *id090 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ColumnDatum' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_column_data: put: tags: - Custom Gradebook Columns operationId: bulk_update_column_data summary: Bulk update column data description: |- Set the content of custom columns { "column_data": [ { "column_id": example_column_id, "user_id": example_student_id, "content": example_content }, { "column_id": example_column_id, "user_id": example_student_id, "content: example_content } ] } parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id091 type: object properties: column_data: type: array items: type: array items: {} description: Column content. Setting this to an empty string will delete the data object. required: - column_data application/x-www-form-urlencoded: schema: *id091 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/accounts/{account_id}/developer_keys/{developer_key_id}/developer_key_account_bindings: post: tags: - Developer Key Account Bindings operationId: create_developer_key_account_binding summary: Create a Developer Key Account Binding description: |- Create a new Developer Key Account Binding. The developer key specified in the request URL must be available in the requested account or the requested account's account chain. If the binding already exists for the specified account/key combination it will be updated. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: developer_key_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id092 type: object properties: workflow_state: type: string description: |- The workflow state for the binding. Must be one of "on", "off", or "allow". Defaults to "off". application/x-www-form-urlencoded: schema: *id092 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DeveloperKeyAccountBinding' externalDocs: url: https://canvas.instructure.com/doc/api/developer_key_account_bindings.html /v1/accounts/{account_id}/developer_keys: get: tags: - Developer Keys operationId: list_developer_keys summary: List Developer Keys description: List all developer keys created in the current account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: inherited in: query schema: type: boolean required: false description: |- Defaults to false. If true, lists keys inherited from Site Admin (and consortium parent account, if applicable). responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/DeveloperKey' externalDocs: url: https://canvas.instructure.com/doc/api/developer_keys.html post: tags: - Developer Keys operationId: create_developer_key summary: Create a Developer Key description: |- Create a new Canvas API key. Creating an LTI 1.3 registration is not supported here and should be done via the LTI Registration API. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id093 type: object properties: developer_key: type: object additionalProperties: true description: no description developer_key[auto_expire_tokens]: type: boolean description: |- Defaults to false. If true, access tokens generated by this key will expire after 1 hour. developer_key[email]: type: string description: Contact email for the key. developer_key[icon_url]: type: string description: URL for a small icon to display in key list. developer_key[name]: type: string description: The display name. developer_key[notes]: type: string description: User-provided notes about the key. developer_key[redirect_uri]: type: string description: Deprecated in favor of redirect_uris. Do not use. developer_key[redirect_uris]: type: array items: {} description: |- List of URLs used during OAuth2 flow to validate given redirect URI. developer_key[vendor_code]: type: string description: User-specified code representing the vendor that uses the key. developer_key[visible]: type: boolean description: Defaults to true. If false, key will not be visible in the UI. developer_key[test_cluster_only]: type: boolean description: |- Defaults to false. If true, key is only usable in non-production environments (test, beta). Avoids problems with beta refresh. developer_key[client_credentials_audience]: type: string description: |- Used in OAuth2 client credentials flow to specify the audience for the access token. developer_key[allowed_audiences]: type: array items: {} description: |- The registered audiences this key may request tokens for. Each value must appear in the environment's configured list of registered audiences. developer_key[authorized_flows]: type: array items: {} description: |- Additional OAuth2 flows this key is authorized to use. Allowed values: token_exchange, service_user_client_credentials. developer_key[client_type]: type: string description: |- Whether this is a confidential or public client. Public clients (SPAs, mobile apps) require PKCE in the authorization code flow, cannot use the client_credentials flow, and receive short-lived access tokens with rotating refresh tokens. Allowed values: confidential (default), public. Not applicable to LTI keys. Immutable after creation. developer_key[scopes]: type: array items: {} description: List of API endpoints key is allowed to access. developer_key[require_scopes]: type: boolean description: If true, then token requests with this key must include scopes. developer_key[allow_includes]: type: boolean description: |- If true, allows `includes` parameters in API requests that match the scopes of this key. required: - developer_key application/x-www-form-urlencoded: schema: *id093 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DeveloperKey' externalDocs: url: https://canvas.instructure.com/doc/api/developer_keys.html /v1/developer_keys/{id}: put: tags: - Developer Keys operationId: update_developer_key summary: Update a Developer Key description: |- Update an existing Canvas API key. Updating an LTI 1.3 registration is not supported here and should be done via the LTI Registration API. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id094 type: object properties: developer_key: type: object additionalProperties: true description: no description developer_key[auto_expire_tokens]: type: boolean description: |- Defaults to false. If true, access tokens generated by this key will expire after 1 hour. developer_key[email]: type: string description: Contact email for the key. developer_key[icon_url]: type: string description: URL for a small icon to display in key list. developer_key[name]: type: string description: The display name. developer_key[notes]: type: string description: User-provided notes about the key. developer_key[redirect_uri]: type: string description: Deprecated in favor of redirect_uris. Do not use. developer_key[redirect_uris]: type: array items: {} description: |- List of URLs used during OAuth2 flow to validate given redirect URI. developer_key[vendor_code]: type: string description: User-specified code representing the vendor that uses the key. developer_key[visible]: type: boolean description: Defaults to true. If false, key will not be visible in the UI. developer_key[test_cluster_only]: type: boolean description: |- Defaults to false. If true, key is only usable in non-production environments (test, beta). Avoids problems with beta refresh. developer_key[client_credentials_audience]: type: string description: |- Used in OAuth2 client credentials flow to specify the audience for the access token. developer_key[allowed_audiences]: type: array items: {} description: |- The registered audiences this key may request tokens for. Each value must appear in the environment's configured list of registered audiences. developer_key[authorized_flows]: type: array items: {} description: |- Additional OAuth2 flows this key is authorized to use. Allowed values: token_exchange, service_user_client_credentials. developer_key[scopes]: type: array items: {} description: List of API endpoints key is allowed to access. developer_key[require_scopes]: type: boolean description: If true, then token requests with this key must include scopes. developer_key[allow_includes]: type: boolean description: |- If true, allows `includes` parameters in API requests that match the scopes of this key. required: - developer_key application/x-www-form-urlencoded: schema: *id094 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DeveloperKey' externalDocs: url: https://canvas.instructure.com/doc/api/developer_keys.html delete: tags: - Developer Keys operationId: delete_developer_key summary: Delete a Developer Key description: Delete an existing Canvas API key. Deleting an LTI 1.3 registration should be done via the LTI Registration API. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DeveloperKey' externalDocs: url: https://canvas.instructure.com/doc/api/developer_keys.html /v1/developer_keys/{id}/regenerate_secret: post: tags: - Developer Keys operationId: regenerate_developer_key_secret summary: Regenerate Developer Key Secret description: |- Regenerate the secret (api_key) for an existing Canvas API key. This invalidates the existing secret. Any applications using the old secret will stop working. Regenerating a secret for an LTI key is not supported. This endpoint requires the developer_key_regenerate_secret feature flag to be enabled. This feature flag can only be turned on by Site Admins parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DeveloperKey' externalDocs: url: https://canvas.instructure.com/doc/api/developer_keys.html /v1/discovery_pages: get: tags: - Discovery Pages operationId: get_discovery_page summary: Get Discovery Page description: |- Get the discovery page configuration for the domain root account. Returns labels exactly as stored, with no HTML-escaping applied. Callers are responsible for escaping on render (the admin React UI does this via JSX auto-escaping). responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DiscoveryPage' externalDocs: url: https://canvas.instructure.com/doc/api/discovery_pages.html put: tags: - Discovery Pages operationId: update_discovery_page summary: Update Discovery Page description: |- Update or create the discovery page configuration for the domain root account. This is a full replacement - provide the complete configuration including primary, secondary, and active fields. Any fields omitted will be removed. requestBody: required: false content: application/json: schema: &id095 type: object properties: discovery_page[primary][authentication_provider_id]: type: array items: type: integer description: The ID of an active authentication provider for this account. discovery_page[primary][label]: type: array items: type: string description: The display label for this authentication provider button. discovery_page[primary][icon]: type: array items: type: string description: Icon key for this authentication provider button. discovery_page[secondary][authentication_provider_id]: type: array items: type: integer description: The ID of an active authentication provider for this account. discovery_page[secondary][label]: type: array items: type: string description: The display label for this authentication provider button. discovery_page[secondary][icon]: type: array items: type: string description: Icon key for this authentication provider button. discovery_page[active]: type: boolean description: Whether the discovery page is enabled. Defaults to false if not provided. required: - discovery_page[primary][authentication_provider_id] - discovery_page[primary][label] - discovery_page[secondary][authentication_provider_id] - discovery_page[secondary][label] application/x-www-form-urlencoded: schema: *id095 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DiscoveryPage' externalDocs: url: https://canvas.instructure.com/doc/api/discovery_pages.html /v1/discovery_pages/token: post: tags: - Discovery Pages operationId: generate_discovery_page_preview_token summary: Generate Discovery Page Preview Token description: |- Returns a short-lived RS256-signed JWT containing the discovery page button link configuration, suitable for sending to the identity service preview iframe via postMessage. A discovery_page configuration must be provided in the request body. Omitting it returns a 400 Bad Request. requestBody: required: false content: application/json: schema: &id096 type: object properties: discovery_page[primary][authentication_provider_id]: type: array items: type: integer description: The ID of an active authentication provider for this account. discovery_page[primary][label]: type: array items: type: string description: The display label for this authentication provider button. discovery_page[primary][icon]: type: array items: type: string description: Icon key for this authentication provider button. discovery_page[secondary][authentication_provider_id]: type: array items: type: integer description: The ID of an active authentication provider for this account. discovery_page[secondary][label]: type: array items: type: string description: The display label for this authentication provider button. discovery_page[secondary][icon]: type: array items: type: string description: Icon key for this authentication provider button. required: - discovery_page[primary][authentication_provider_id] application/x-www-form-urlencoded: schema: *id096 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{ "token": "eyJ..." }' externalDocs: url: https://canvas.instructure.com/doc/api/discovery_pages.html /v1/courses/{course_id}/discussion_topics: get: tags: - Discussion Topics operationId: list_discussion_topics_courses summary: List discussion topics description: Returns the paginated list of discussion topics for this course or group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - all_dates - sections - sections_user_count - overrides required: false description: |- If "all_dates" is passed, all dates associated with graded discussions' assignments will be included. if "sections" is passed, includes the course sections that are associated with the topic, if the topic is specific to certain sections of the course. If "sections_user_count" is passed, then: (a) If sections were asked for *and* the topic is specific to certain course sections, includes the number of users in each section. (as part of the section json asked for above) (b) Else, includes at the root level the total number of users in the topic's context (group or course) that the topic applies to. If "overrides" is passed, the overrides for the assignment will be included - name: order_by in: query schema: type: string enum: - position - recent_activity - title required: false description: Determines the order of the discussion topic list. Defaults to "position". - name: scope in: query schema: type: string enum: - locked - unlocked - pinned - unpinned required: false description: |- Only return discussion topics in the given state(s). Defaults to including all topics. Filtering is done after pagination, so pages may be smaller than requested if topics are filtered. Can pass multiple states as comma separated string. - name: only_announcements in: query schema: type: boolean required: false description: Return announcements instead of discussion topics. Defaults to false - name: filter_by in: query schema: type: string enum: - all - unread required: false description: The state of the discussion topic to return. Currently only supports unread state. - name: search_term in: query schema: type: string required: false description: The partial title of the discussion topics to match and return. - name: exclude_context_module_locked_topics in: query schema: type: boolean required: false description: |- For students, exclude topics that are locked by module progression. Defaults to false. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/DiscussionTopic' externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html post: tags: - Discussion Topics operationId: create_new_discussion_topic_courses summary: Create a new discussion topic description: Create an new discussion topic for the course or group. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id097 type: object properties: title: type: string description: no description message: type: string description: no description discussion_type: type: string enum: - side_comment - threaded - not_threaded description: The type of discussion. Defaults to side_comment or not_threaded if not value is given. Accepted values are 'side_comment', 'not_threaded' for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions. published: type: boolean description: |- Whether this topic is published (true) or draft state (false). Only teachers and TAs have the ability to create draft state topics. delayed_post_at: type: string format: date-time description: If a timestamp is given, the topic will not be published until that time. allow_rating: type: boolean description: Whether or not users can rate entries in this topic. lock_at: type: string format: date-time description: |- If a timestamp is given, the topic will be scheduled to lock at the provided timestamp. If the timestamp is in the past, the topic will be locked. podcast_enabled: type: boolean description: If true, the topic will have an associated podcast feed. podcast_has_student_posts: type: boolean description: |- If true, the podcast will include posts from students as well. Implies podcast_enabled. require_initial_post: type: boolean description: |- If true then a user may not respond to other replies until that user has made an initial reply. Defaults to false. assignment: type: string x-canvas-declared-type: Assignment description: |- To create an assignment discussion, pass the assignment parameters as a sub-object. See the {api:AssignmentsApiController#create Create an Assignment API} for the available parameters. The name parameter will be ignored, as it's taken from the discussion title. If you want to make a discussion that was an assignment NOT an assignment, pass set_assignment = false as part of the assignment object is_announcement: type: boolean description: |- If true, this topic is an announcement. It will appear in the announcement's section rather than the discussions section. This requires announcment-posting permissions. pinned: type: boolean description: If true, this topic will be listed in the "Pinned Discussion" section position_after: type: string description: |- By default, discussions are sorted chronologically by creation date, you can pass the id of another topic to have this one show up after the other when they are listed. group_category_id: type: integer format: int64 description: |- If present, the topic will become a group discussion assigned to the group. only_graders_can_rate: type: boolean description: If true, only graders will be allowed to rate entries. sort_order: type: string enum: - asc - desc description: Default sort order of the discussion. Accepted values are "asc", "desc". sort_order_locked: type: boolean description: If true, users cannot choose their prefered sort order expanded: type: boolean description: If true, thread will be expanded by default expanded_locked: type: boolean description: If true, users cannot choose their prefered thread expansion setting sort_by_rating: type: boolean description: (DEPRECATED) If true, entries will be sorted by rating. attachment: type: string format: binary description: |- A multipart/form-data form-field-style attachment. Attachments larger than 1 kilobyte are subject to quota restrictions. specific_sections: type: string description: |- A comma-separated list of sections ids to which the discussion topic should be made specific to. If it is not desired to make the discussion topic specific to sections, then this parameter may be omitted or set to "all". Can only be present only on announcements and only those that are for a course (as opposed to a group). lock_comment: type: boolean description: If is_announcement and lock_comment are true, ‘Allow Participants to Comment’ setting is disabled. application/x-www-form-urlencoded: schema: *id097 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics: get: tags: - Discussion Topics operationId: list_discussion_topics_groups summary: List discussion topics description: Returns the paginated list of discussion topics for this course or group. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - all_dates - sections - sections_user_count - overrides required: false description: |- If "all_dates" is passed, all dates associated with graded discussions' assignments will be included. if "sections" is passed, includes the course sections that are associated with the topic, if the topic is specific to certain sections of the course. If "sections_user_count" is passed, then: (a) If sections were asked for *and* the topic is specific to certain course sections, includes the number of users in each section. (as part of the section json asked for above) (b) Else, includes at the root level the total number of users in the topic's context (group or course) that the topic applies to. If "overrides" is passed, the overrides for the assignment will be included - name: order_by in: query schema: type: string enum: - position - recent_activity - title required: false description: Determines the order of the discussion topic list. Defaults to "position". - name: scope in: query schema: type: string enum: - locked - unlocked - pinned - unpinned required: false description: |- Only return discussion topics in the given state(s). Defaults to including all topics. Filtering is done after pagination, so pages may be smaller than requested if topics are filtered. Can pass multiple states as comma separated string. - name: only_announcements in: query schema: type: boolean required: false description: Return announcements instead of discussion topics. Defaults to false - name: filter_by in: query schema: type: string enum: - all - unread required: false description: The state of the discussion topic to return. Currently only supports unread state. - name: search_term in: query schema: type: string required: false description: The partial title of the discussion topics to match and return. - name: exclude_context_module_locked_topics in: query schema: type: boolean required: false description: |- For students, exclude topics that are locked by module progression. Defaults to false. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/DiscussionTopic' externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html post: tags: - Discussion Topics operationId: create_new_discussion_topic_groups summary: Create a new discussion topic description: Create an new discussion topic for the course or group. parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id098 type: object properties: title: type: string description: no description message: type: string description: no description discussion_type: type: string enum: - side_comment - threaded - not_threaded description: The type of discussion. Defaults to side_comment or not_threaded if not value is given. Accepted values are 'side_comment', 'not_threaded' for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions. published: type: boolean description: |- Whether this topic is published (true) or draft state (false). Only teachers and TAs have the ability to create draft state topics. delayed_post_at: type: string format: date-time description: If a timestamp is given, the topic will not be published until that time. allow_rating: type: boolean description: Whether or not users can rate entries in this topic. lock_at: type: string format: date-time description: |- If a timestamp is given, the topic will be scheduled to lock at the provided timestamp. If the timestamp is in the past, the topic will be locked. podcast_enabled: type: boolean description: If true, the topic will have an associated podcast feed. podcast_has_student_posts: type: boolean description: |- If true, the podcast will include posts from students as well. Implies podcast_enabled. require_initial_post: type: boolean description: |- If true then a user may not respond to other replies until that user has made an initial reply. Defaults to false. assignment: type: string x-canvas-declared-type: Assignment description: |- To create an assignment discussion, pass the assignment parameters as a sub-object. See the {api:AssignmentsApiController#create Create an Assignment API} for the available parameters. The name parameter will be ignored, as it's taken from the discussion title. If you want to make a discussion that was an assignment NOT an assignment, pass set_assignment = false as part of the assignment object is_announcement: type: boolean description: |- If true, this topic is an announcement. It will appear in the announcement's section rather than the discussions section. This requires announcment-posting permissions. pinned: type: boolean description: If true, this topic will be listed in the "Pinned Discussion" section position_after: type: string description: |- By default, discussions are sorted chronologically by creation date, you can pass the id of another topic to have this one show up after the other when they are listed. group_category_id: type: integer format: int64 description: |- If present, the topic will become a group discussion assigned to the group. only_graders_can_rate: type: boolean description: If true, only graders will be allowed to rate entries. sort_order: type: string enum: - asc - desc description: Default sort order of the discussion. Accepted values are "asc", "desc". sort_order_locked: type: boolean description: If true, users cannot choose their prefered sort order expanded: type: boolean description: If true, thread will be expanded by default expanded_locked: type: boolean description: If true, users cannot choose their prefered thread expansion setting sort_by_rating: type: boolean description: (DEPRECATED) If true, entries will be sorted by rating. attachment: type: string format: binary description: |- A multipart/form-data form-field-style attachment. Attachments larger than 1 kilobyte are subject to quota restrictions. specific_sections: type: string description: |- A comma-separated list of sections ids to which the discussion topic should be made specific to. If it is not desired to make the discussion topic specific to sections, then this parameter may be omitted or set to "all". Can only be present only on announcements and only those that are for a course (as opposed to a group). lock_comment: type: boolean description: If is_announcement and lock_comment are true, ‘Allow Participants to Comment’ setting is disabled. application/x-www-form-urlencoded: schema: *id098 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}: put: tags: - Discussion Topics operationId: update_topic_courses summary: Update a topic description: Update an existing discussion topic for the course or group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id099 type: object properties: title: type: string description: no description message: type: string description: no description discussion_type: type: string enum: - side_comment - threaded - not_threaded description: The type of discussion. Defaults to side_comment or not_threaded if not value is given. Accepted values are 'side_comment', 'not_threaded' for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions. published: type: boolean description: |- Whether this topic is published (true) or draft state (false). Only teachers and TAs have the ability to create draft state topics. delayed_post_at: type: string format: date-time description: If a timestamp is given, the topic will not be published until that time. lock_at: type: string format: date-time description: |- If a timestamp is given, the topic will be scheduled to lock at the provided timestamp. If the timestamp is in the past, the topic will be locked. podcast_enabled: type: boolean description: If true, the topic will have an associated podcast feed. podcast_has_student_posts: type: boolean description: |- If true, the podcast will include posts from students as well. Implies podcast_enabled. require_initial_post: type: boolean description: |- If true then a user may not respond to other replies until that user has made an initial reply. Defaults to false. assignment: type: string x-canvas-declared-type: Assignment description: |- To create an assignment discussion, pass the assignment parameters as a sub-object. See the {api:AssignmentsApiController#create Create an Assignment API} for the available parameters. The name parameter will be ignored, as it's taken from the discussion title. If you want to make a discussion that was an assignment NOT an assignment, pass set_assignment = false as part of the assignment object is_announcement: type: boolean description: |- If true, this topic is an announcement. It will appear in the announcement's section rather than the discussions section. This requires announcment-posting permissions. pinned: type: boolean description: If true, this topic will be listed in the "Pinned Discussion" section position_after: type: string description: |- By default, discussions are sorted chronologically by creation date, you can pass the id of another topic to have this one show up after the other when they are listed. group_category_id: type: integer format: int64 description: |- If present, the topic will become a group discussion assigned to the group. allow_rating: type: boolean description: If true, users will be allowed to rate entries. only_graders_can_rate: type: boolean description: If true, only graders will be allowed to rate entries. sort_order: type: string enum: - asc - desc description: Default sort order of the discussion. Accepted values are "asc", "desc". sort_order_locked: type: boolean description: If true, users cannot choose their prefered sort order expanded: type: boolean description: If true, thread will be expanded by default expanded_locked: type: boolean description: If true, users cannot choose their prefered thread expansion setting sort_by_rating: type: boolean description: (DEPRECATED) If true, entries will be sorted by rating. specific_sections: type: string description: |- A comma-separated list of sections ids to which the discussion topic should be made specific too. If it is not desired to make the discussion topic specific to sections, then this parameter may be omitted or set to "all". Can only be present only on announcements and only those that are for a course (as opposed to a group). lock_comment: type: boolean description: If is_announcement and lock_comment are true, ‘Allow Participants to Comment’ setting is disabled. application/x-www-form-urlencoded: schema: *id099 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: delete_topic_courses summary: Delete a topic description: |- Deletes the discussion topic. This will also delete the assignment, if it's an assignment discussion. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html get: tags: - Discussion Topics operationId: get_single_topic_courses summary: Get a single topic description: Returns data on an individual discussion topic. See the List action for the response formatting. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - all_dates - sections - sections_user_count - overrides required: false description: |- If "all_dates" is passed, all dates associated with graded discussions' assignments will be included. if "sections" is passed, includes the course sections that are associated with the topic, if the topic is specific to certain sections of the course. If "sections_user_count" is passed, then: (a) If sections were asked for *and* the topic is specific to certain course sections, includes the number of users in each section. (as part of the section json asked for above) (b) Else, includes at the root level the total number of users in the topic's context (group or course) that the topic applies to. If "overrides" is passed, the overrides for the assignment will be included responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}: put: tags: - Discussion Topics operationId: update_topic_groups summary: Update a topic description: Update an existing discussion topic for the course or group. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id100 type: object properties: title: type: string description: no description message: type: string description: no description discussion_type: type: string enum: - side_comment - threaded - not_threaded description: The type of discussion. Defaults to side_comment or not_threaded if not value is given. Accepted values are 'side_comment', 'not_threaded' for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions. published: type: boolean description: |- Whether this topic is published (true) or draft state (false). Only teachers and TAs have the ability to create draft state topics. delayed_post_at: type: string format: date-time description: If a timestamp is given, the topic will not be published until that time. lock_at: type: string format: date-time description: |- If a timestamp is given, the topic will be scheduled to lock at the provided timestamp. If the timestamp is in the past, the topic will be locked. podcast_enabled: type: boolean description: If true, the topic will have an associated podcast feed. podcast_has_student_posts: type: boolean description: |- If true, the podcast will include posts from students as well. Implies podcast_enabled. require_initial_post: type: boolean description: |- If true then a user may not respond to other replies until that user has made an initial reply. Defaults to false. assignment: type: string x-canvas-declared-type: Assignment description: |- To create an assignment discussion, pass the assignment parameters as a sub-object. See the {api:AssignmentsApiController#create Create an Assignment API} for the available parameters. The name parameter will be ignored, as it's taken from the discussion title. If you want to make a discussion that was an assignment NOT an assignment, pass set_assignment = false as part of the assignment object is_announcement: type: boolean description: |- If true, this topic is an announcement. It will appear in the announcement's section rather than the discussions section. This requires announcment-posting permissions. pinned: type: boolean description: If true, this topic will be listed in the "Pinned Discussion" section position_after: type: string description: |- By default, discussions are sorted chronologically by creation date, you can pass the id of another topic to have this one show up after the other when they are listed. group_category_id: type: integer format: int64 description: |- If present, the topic will become a group discussion assigned to the group. allow_rating: type: boolean description: If true, users will be allowed to rate entries. only_graders_can_rate: type: boolean description: If true, only graders will be allowed to rate entries. sort_order: type: string enum: - asc - desc description: Default sort order of the discussion. Accepted values are "asc", "desc". sort_order_locked: type: boolean description: If true, users cannot choose their prefered sort order expanded: type: boolean description: If true, thread will be expanded by default expanded_locked: type: boolean description: If true, users cannot choose their prefered thread expansion setting sort_by_rating: type: boolean description: (DEPRECATED) If true, entries will be sorted by rating. specific_sections: type: string description: |- A comma-separated list of sections ids to which the discussion topic should be made specific too. If it is not desired to make the discussion topic specific to sections, then this parameter may be omitted or set to "all". Can only be present only on announcements and only those that are for a course (as opposed to a group). lock_comment: type: boolean description: If is_announcement and lock_comment are true, ‘Allow Participants to Comment’ setting is disabled. application/x-www-form-urlencoded: schema: *id100 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: delete_topic_groups summary: Delete a topic description: |- Deletes the discussion topic. This will also delete the assignment, if it's an assignment discussion. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html get: tags: - Discussion Topics operationId: get_single_topic_groups summary: Get a single topic description: Returns data on an individual discussion topic. See the List action for the response formatting. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - all_dates - sections - sections_user_count - overrides required: false description: |- If "all_dates" is passed, all dates associated with graded discussions' assignments will be included. if "sections" is passed, includes the course sections that are associated with the topic, if the topic is specific to certain sections of the course. If "sections_user_count" is passed, then: (a) If sections were asked for *and* the topic is specific to certain course sections, includes the number of users in each section. (as part of the section json asked for above) (b) Else, includes at the root level the total number of users in the topic's context (group or course) that the topic applies to. If "overrides" is passed, the overrides for the assignment will be included responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/reorder: post: tags: - Discussion Topics operationId: reorder_pinned_topics_courses summary: Reorder pinned topics description: |- Puts the pinned discussion topics in the specified order. All pinned topics should be included. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id101 type: object properties: order: type: array items: type: integer description: |- The ids of the pinned discussion topics in the desired order. (For example, "order=104,102,103".) required: - order application/x-www-form-urlencoded: schema: *id101 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/reorder: post: tags: - Discussion Topics operationId: reorder_pinned_topics_groups summary: Reorder pinned topics description: |- Puts the pinned discussion topics in the specified order. All pinned topics should be included. parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id102 type: object properties: order: type: array items: type: integer description: |- The ids of the pinned discussion topics in the desired order. (For example, "order=104,102,103".) required: - order application/x-www-form-urlencoded: schema: *id102 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{id}: put: tags: - Discussion Topics operationId: update_entry_courses summary: Update an entry description: |- Update an existing discussion entry. The entry must have been created by the current user, or the current user must have admin rights to the discussion. If the edit is not allowed, a 401 will be returned. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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: &id103 type: object properties: message: type: string description: The updated body of the entry. application/x-www-form-urlencoded: schema: *id103 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: delete_entry_courses summary: Delete an entry description: |- Delete a discussion entry. The entry must have been created by the current user, or the current user must have admin rights to the discussion. If the delete is not allowed, a 401 will be returned. The discussion will be marked deleted, and the user_id and message will be cleared out. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{id}: put: tags: - Discussion Topics operationId: update_entry_groups summary: Update an entry description: |- Update an existing discussion entry. The entry must have been created by the current user, or the current user must have admin rights to the discussion. If the edit is not allowed, a 401 will be returned. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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: &id104 type: object properties: message: type: string description: The updated body of the entry. application/x-www-form-urlencoded: schema: *id104 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: delete_entry_groups summary: Delete an entry description: |- Delete a discussion entry. The entry must have been created by the current user, or the current user must have admin rights to the discussion. If the delete is not allowed, a 401 will be returned. The discussion will be marked deleted, and the user_id and message will be cleared out. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/summaries: get: tags: - Discussion Topics operationId: find_last_summary_courses summary: Find Last Summary description: |- Returns: (1) last userInput (what current user had keyed in to produce the last discussion summary), (2) last discussion summary generated by the current user for current discussion topic, based on userInput, (3) and some usage information. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html post: tags: - Discussion Topics operationId: find_or_create_summary_courses summary: Find or Create Summary description: Generates a summary for a discussion topic. Returns the summary text and usage information. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id105 type: object properties: userInput: type: string description: Areas or topics for the summary to focus on. application/x-www-form-urlencoded: schema: *id105 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/summaries: get: tags: - Discussion Topics operationId: find_last_summary_groups summary: Find Last Summary description: |- Returns: (1) last userInput (what current user had keyed in to produce the last discussion summary), (2) last discussion summary generated by the current user for current discussion topic, based on userInput, (3) and some usage information. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html post: tags: - Discussion Topics operationId: find_or_create_summary_groups summary: Find or Create Summary description: Generates a summary for a discussion topic. Returns the summary text and usage information. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id106 type: object properties: userInput: type: string description: Areas or topics for the summary to focus on. application/x-www-form-urlencoded: schema: *id106 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/summaries/disable: put: tags: - Discussion Topics operationId: disable_summary_courses summary: Disable summary description: |- Deprecated, to remove after VICE-5047 gets merged Disables the summary for a discussion topic. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/summaries/disable: put: tags: - Discussion Topics operationId: disable_summary_groups summary: Disable summary description: |- Deprecated, to remove after VICE-5047 gets merged Disables the summary for a discussion topic. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/summaries/{summary_id}/feedback: post: tags: - Discussion Topics operationId: summary_feedback_courses summary: Summary Feedback description: Persists feedback on a discussion topic summary. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: summary_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id107 type: object properties: _action: type: string description: |- Required The action to take on the summary. Possible values are: - "seen": Marks the summary as seen. This action saves the feedback if it's not already persisted. - "like": Marks the summary as liked. - "dislike": Marks the summary as disliked. - "add_comment": Adds a written comment to a disliked summary. Requires the "comment" parameter. - "reset_like": Resets the like status of the summary. - "regenerate": Regenerates the summary feedback. - "disable_summary": Disables the summary feedback. Any other value will result in an error response. comment: type: string description: |- Optional A written explanation for the dislike. Only used with the "add_comment" action. Maximum 1024 characters. application/x-www-form-urlencoded: schema: *id107 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/summaries/{summary_id}/feedback: post: tags: - Discussion Topics operationId: summary_feedback_groups summary: Summary Feedback description: Persists feedback on a discussion topic summary. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: summary_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id108 type: object properties: _action: type: string description: |- Required The action to take on the summary. Possible values are: - "seen": Marks the summary as seen. This action saves the feedback if it's not already persisted. - "like": Marks the summary as liked. - "dislike": Marks the summary as disliked. - "add_comment": Adds a written comment to a disliked summary. Requires the "comment" parameter. - "reset_like": Resets the like status of the summary. - "regenerate": Regenerates the summary feedback. - "disable_summary": Disables the summary feedback. Any other value will result in an error response. comment: type: string description: |- Optional A written explanation for the dislike. Only used with the "add_comment" action. Maximum 1024 characters. application/x-www-form-urlencoded: schema: *id108 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/view: get: tags: - Discussion Topics operationId: get_full_topic_courses summary: Get the full topic description: |- Return a cached structure of the discussion topic, containing all entries, their authors, and their message bodies. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. In some rare situations, this cached structure may not be available yet. In that case, the server will respond with a 503 error, and the caller should try again soon. The response is an object containing the following keys: * "participants": A list of summary information on users who have posted to the discussion. Each value is an object containing their id, display_name, and avatar_url. * "unread_entries": A list of entry ids that are unread by the current user. this implies that any entry not in this list is read. * "entry_ratings": A map of entry ids to ratings by the current user. Entries not in this list have no rating. Only populated if rating is enabled. * "forced_entries": A list of entry ids that have forced_read_state set to true. This flag is meant to indicate the entry's read_state has been manually set to 'unread' by the user, so the entry should not be automatically marked as read. * "view": A threaded view of all the entries in the discussion, containing the id, user_id, and message. * "new_entries": Because this view is eventually consistent, it's possible that newly created or updated entries won't yet be reflected in the view. If the application wants to also get a flat list of all entries not yet reflected in the view, pass include_new_entries=1 to the request and this array of entries will be returned. These entries are returned in a flat array, in ascending created_at order. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/view: get: tags: - Discussion Topics operationId: get_full_topic_groups summary: Get the full topic description: |- Return a cached structure of the discussion topic, containing all entries, their authors, and their message bodies. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. In some rare situations, this cached structure may not be available yet. In that case, the server will respond with a 503 error, and the caller should try again soon. The response is an object containing the following keys: * "participants": A list of summary information on users who have posted to the discussion. Each value is an object containing their id, display_name, and avatar_url. * "unread_entries": A list of entry ids that are unread by the current user. this implies that any entry not in this list is read. * "entry_ratings": A map of entry ids to ratings by the current user. Entries not in this list have no rating. Only populated if rating is enabled. * "forced_entries": A list of entry ids that have forced_read_state set to true. This flag is meant to indicate the entry's read_state has been manually set to 'unread' by the user, so the entry should not be automatically marked as read. * "view": A threaded view of all the entries in the discussion, containing the id, user_id, and message. * "new_entries": Because this view is eventually consistent, it's possible that newly created or updated entries won't yet be reflected in the view. If the application wants to also get a flat list of all entries not yet reflected in the view, pass include_new_entries=1 to the request and this array of entries will be returned. These entries are returned in a flat array, in ascending created_at order. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/entries: post: tags: - Discussion Topics operationId: post_entry_courses summary: Post an entry description: |- Create a new entry in a discussion topic. Returns a json representation of the created entry (see documentation for 'entries' method) on success. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id109 type: object properties: message: type: string description: The body of the entry. attachment: type: string description: |- a multipart/form-data form-field-style attachment. Attachments larger than 1 kilobyte are subject to quota restrictions. application/x-www-form-urlencoded: schema: *id109 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html get: tags: - Discussion Topics operationId: list_topic_entries_courses summary: List topic entries description: |- Retrieve the (paginated) top-level entries in a discussion topic. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. Will include the 10 most recent replies, if any, for each entry returned. If the topic is a root topic with children corresponding to groups of a group assignment, entries from those subtopics for which the user belongs to the corresponding group will be returned. Ordering of returned entries is newest-first by posting timestamp (reply activity is ignored). parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/entries: post: tags: - Discussion Topics operationId: post_entry_groups summary: Post an entry description: |- Create a new entry in a discussion topic. Returns a json representation of the created entry (see documentation for 'entries' method) on success. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id110 type: object properties: message: type: string description: The body of the entry. attachment: type: string description: |- a multipart/form-data form-field-style attachment. Attachments larger than 1 kilobyte are subject to quota restrictions. application/x-www-form-urlencoded: schema: *id110 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html get: tags: - Discussion Topics operationId: list_topic_entries_groups summary: List topic entries description: |- Retrieve the (paginated) top-level entries in a discussion topic. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. Will include the 10 most recent replies, if any, for each entry returned. If the topic is a root topic with children corresponding to groups of a group assignment, entries from those subtopics for which the user belongs to the corresponding group will be returned. Ordering of returned entries is newest-first by posting timestamp (reply activity is ignored). parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/duplicate: post: tags: - Discussion Topics operationId: duplicate_discussion_topic_courses summary: Duplicate discussion topic description: Duplicate a discussion topic according to context (Course/Group) parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DiscussionTopic' externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/duplicate: post: tags: - Discussion Topics operationId: duplicate_discussion_topic_groups summary: Duplicate discussion topic description: Duplicate a discussion topic according to context (Course/Group) parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DiscussionTopic' externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/replies: post: tags: - Discussion Topics operationId: post_reply_courses summary: Post a reply description: |- Add a reply to an entry in a discussion topic. Returns a json representation of the created reply (see documentation for 'replies' method) on success. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id111 type: object properties: message: type: string description: The body of the entry. attachment: type: string description: |- a multipart/form-data form-field-style attachment. Attachments larger than 1 kilobyte are subject to quota restrictions. application/x-www-form-urlencoded: schema: *id111 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html get: tags: - Discussion Topics operationId: list_entry_replies_courses summary: List entry replies description: |- Retrieve the (paginated) replies to a top-level entry in a discussion topic. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. Ordering of returned entries is newest-first by creation timestamp. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/replies: post: tags: - Discussion Topics operationId: post_reply_groups summary: Post a reply description: |- Add a reply to an entry in a discussion topic. Returns a json representation of the created reply (see documentation for 'replies' method) on success. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id112 type: object properties: message: type: string description: The body of the entry. attachment: type: string description: |- a multipart/form-data form-field-style attachment. Attachments larger than 1 kilobyte are subject to quota restrictions. application/x-www-form-urlencoded: schema: *id112 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html get: tags: - Discussion Topics operationId: list_entry_replies_groups summary: List entry replies description: |- Retrieve the (paginated) replies to a top-level entry in a discussion topic. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. Ordering of returned entries is newest-first by creation timestamp. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_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/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/entry_list: get: tags: - Discussion Topics operationId: list_entries_courses summary: List entries description: |- Retrieve a paginated list of discussion entries, given a list of ids. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: ids in: query schema: type: array items: type: string required: false description: |- A list of entry ids to retrieve. Entries will be returned in id order, smallest id first. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/entry_list: get: tags: - Discussion Topics operationId: list_entries_groups summary: List entries description: |- Retrieve a paginated list of discussion entries, given a list of ids. May require (depending on the topic) that the user has posted in the topic. If it is required, and the user has not posted, will respond with a 403 Forbidden status and the body 'require_initial_post'. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: ids in: query schema: type: array items: type: string required: false description: |- A list of entry ids to retrieve. Entries will be returned in id order, smallest id first. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/read: put: tags: - Discussion Topics operationId: mark_topic_as_read_courses summary: Mark topic as read description: |- Mark the initial text of the discussion topic as read. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html delete: tags: - Discussion Topics operationId: mark_topic_as_unread_courses summary: Mark topic as unread description: |- Mark the initial text of the discussion topic as unread. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/read: put: tags: - Discussion Topics operationId: mark_topic_as_read_groups summary: Mark topic as read description: |- Mark the initial text of the discussion topic as read. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html delete: tags: - Discussion Topics operationId: mark_topic_as_unread_groups summary: Mark topic as unread description: |- Mark the initial text of the discussion topic as unread. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/courses/{course_id}/discussion_topics/read_all: put: tags: - Discussion Topics operationId: mark_all_topic_as_read_courses summary: Mark all topic as read description: |- Mark the initial text of all the discussion topics as read in the context. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/read_all: put: tags: - Discussion Topics operationId: mark_all_topic_as_read_groups summary: Mark all topic as read description: |- Mark the initial text of all the discussion topics as read in the context. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: group_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/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/read_all: put: tags: - Discussion Topics operationId: mark_all_entries_as_read_courses summary: Mark all entries as read description: |- Mark the discussion topic and all its entries as read. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id113 type: object properties: forced_read_state: type: boolean description: |- A boolean value to set all of the entries' forced_read_state. No change is made if this argument is not specified. application/x-www-form-urlencoded: schema: *id113 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: mark_all_entries_as_unread_courses summary: Mark all entries as unread description: |- Mark the discussion topic and all its entries as unread. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: forced_read_state in: query schema: type: boolean required: false description: |- A boolean value to set all of the entries' forced_read_state. No change is made if this argument is not specified. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/read_all: put: tags: - Discussion Topics operationId: mark_all_entries_as_read_groups summary: Mark all entries as read description: |- Mark the discussion topic and all its entries as read. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id114 type: object properties: forced_read_state: type: boolean description: |- A boolean value to set all of the entries' forced_read_state. No change is made if this argument is not specified. application/x-www-form-urlencoded: schema: *id114 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: mark_all_entries_as_unread_groups summary: Mark all entries as unread description: |- Mark the discussion topic and all its entries as unread. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: forced_read_state in: query schema: type: boolean required: false description: |- A boolean value to set all of the entries' forced_read_state. No change is made if this argument is not specified. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/read: put: tags: - Discussion Topics operationId: mark_entry_as_read_courses summary: Mark entry as read description: |- Mark a discussion entry as read. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id115 type: object properties: forced_read_state: type: boolean description: |- A boolean value to set the entry's forced_read_state. No change is made if this argument is not specified. application/x-www-form-urlencoded: schema: *id115 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: mark_entry_as_unread_courses summary: Mark entry as unread description: |- Mark a discussion entry as unread. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID - name: forced_read_state in: query schema: type: boolean required: false description: |- A boolean value to set the entry's forced_read_state. No change is made if this argument is not specified. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/read: put: tags: - Discussion Topics operationId: mark_entry_as_read_groups summary: Mark entry as read description: |- Mark a discussion entry as read. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id116 type: object properties: forced_read_state: type: boolean description: |- A boolean value to set the entry's forced_read_state. No change is made if this argument is not specified. application/x-www-form-urlencoded: schema: *id116 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html delete: tags: - Discussion Topics operationId: mark_entry_as_unread_groups summary: Mark entry as unread description: |- Mark a discussion entry as unread. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID - name: forced_read_state in: query schema: type: boolean required: false description: |- A boolean value to set the entry's forced_read_state. No change is made if this argument is not specified. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/rating: post: tags: - Discussion Topics operationId: rate_entry_courses summary: Rate entry description: |- Rate a discussion entry. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id117 type: object properties: rating: type: integer format: int64 description: A rating to set on this entry. Only 0 and 1 are accepted. application/x-www-form-urlencoded: schema: *id117 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/rating: post: tags: - Discussion Topics operationId: rate_entry_groups summary: Rate entry description: |- Rate a discussion entry. On success, the response will be 204 No Content with an empty body. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_id in: path schema: type: string required: true description: ID - name: entry_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id118 type: object properties: rating: type: integer format: int64 description: A rating to set on this entry. Only 0 and 1 are accepted. application/x-www-form-urlencoded: schema: *id118 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/discussion_topics.html /v1/courses/{course_id}/discussion_topics/{topic_id}/subscribed: put: tags: - Discussion Topics operationId: subscribe_to_topic_courses summary: Subscribe to a topic description: |- Subscribe to a topic to receive notifications about new entries On success, the response will be 204 No Content with an empty body parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html delete: tags: - Discussion Topics operationId: unsubscribe_from_topic_courses summary: Unsubscribe from a topic description: |- Unsubscribe from a topic to stop receiving notifications about new entries On success, the response will be 204 No Content with an empty body parameters: - name: course_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/groups/{group_id}/discussion_topics/{topic_id}/subscribed: put: tags: - Discussion Topics operationId: subscribe_to_topic_groups summary: Subscribe to a topic description: |- Subscribe to a topic to receive notifications about new entries On success, the response will be 204 No Content with an empty body parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html delete: tags: - Discussion Topics operationId: unsubscribe_from_topic_groups summary: Unsubscribe from a topic description: |- Unsubscribe from a topic to stop receiving notifications about new entries On success, the response will be 204 No Content with an empty body parameters: - name: group_id in: path schema: type: string required: true description: ID - name: topic_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/discussion_topics.html /v1/users/{user_id}/eportfolios: get: tags: - E Portfolios operationId: get_all_eportfolios_for_user summary: Get all ePortfolios for a User description: Get a list of all ePortfolios for the specified user. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - deleted required: false description: |- deleted:: Include deleted ePortfolios. Only available to admins who can moderate_user_content. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ePortfolio' externalDocs: url: https://canvas.instructure.com/doc/api/e_portfolios.html put: tags: - E Portfolios operationId: moderate_all_eportfolios_for_user summary: Moderate all ePortfolios for a User description: |- Update the spam_status for all active eportfolios of a user. Only available to admins who can moderate_user_content. parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id119 type: object properties: spam_status: type: string enum: - marked_as_spam - marked_as_safe description: The spam status for all the ePortfolios application/x-www-form-urlencoded: schema: *id119 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/e_portfolios.html /v1/eportfolios/{id}: get: tags: - E Portfolios operationId: get_eportfolio summary: Get an ePortfolio description: Get details for a single ePortfolio. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ePortfolio' externalDocs: url: https://canvas.instructure.com/doc/api/e_portfolios.html delete: tags: - E Portfolios operationId: delete_eportfolio summary: Delete an ePortfolio description: Mark an ePortfolio as deleted. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ePortfolio' externalDocs: url: https://canvas.instructure.com/doc/api/e_portfolios.html /v1/eportfolios/{eportfolio_id}/pages: get: tags: - E Portfolios operationId: get_eportfolio_pages summary: Get ePortfolio Pages description: Get details for the pages of an ePortfolio parameters: - name: eportfolio_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ePortfolioPage' externalDocs: url: https://canvas.instructure.com/doc/api/e_portfolios.html /v1/eportfolios/{eportfolio_id}/moderate: put: tags: - E Portfolios operationId: moderate_eportfolio summary: Moderate an ePortfolio description: |- Update the spam_status of an eportfolio. Only available to admins who can moderate_user_content. parameters: - name: eportfolio_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id120 type: object properties: spam_status: type: string enum: - marked_as_spam - marked_as_safe description: The spam status for the ePortfolio application/x-www-form-urlencoded: schema: *id120 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ePortfolio' externalDocs: url: https://canvas.instructure.com/doc/api/e_portfolios.html /v1/eportfolios/{eportfolio_id}/restore: put: tags: - E Portfolios operationId: restore_deleted_eportfolio summary: Restore a deleted ePortfolio description: |- Restore an ePortfolio back to active that was previously deleted. Only available to admins who can moderate_user_content. parameters: - name: eportfolio_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ePortfolio' externalDocs: url: https://canvas.instructure.com/doc/api/e_portfolios.html /v1/epub_exports: get: tags: - E Pub Exports operationId: list_courses_with_their_latest_epub_export summary: List courses with their latest ePub export description: |- A paginated list of all courses a user is actively participating in, and the latest ePub export associated with the user & course. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CourseEpubExport' externalDocs: url: https://canvas.instructure.com/doc/api/e_pub_exports.html /v1/courses/{course_id}/epub_exports: post: tags: - E Pub Exports operationId: create_epub_export summary: Create ePub Export description: |- Begin an ePub export for a course. You can use the {api:ProgressController#show Progress API} to track the progress of the export. The export's progress is linked to with the _progress_url_ value. When the export completes, use the {api:EpubExportsController#show Show content export} endpoint to retrieve a download URL for the exported content. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/EpubExport' externalDocs: url: https://canvas.instructure.com/doc/api/e_pub_exports.html /v1/courses/{course_id}/epub_exports/{id}: get: tags: - E Pub Exports operationId: show_epub_export summary: Show ePub export description: Get information about a single ePub export. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/EpubExport' externalDocs: url: https://canvas.instructure.com/doc/api/e_pub_exports.html /v1/accounts/{account_id}/terms: post: tags: - Enrollment Terms operationId: create_enrollment_term summary: Create enrollment term description: Create a new enrollment term for the specified account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id121 type: object properties: enrollment_term[name]: type: string description: The name of the term. enrollment_term[start_at]: type: string format: date-time description: |- The day/time the term starts. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. enrollment_term[end_at]: type: string format: date-time description: |- The day/time the term ends. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. enrollment_term[sis_term_id]: type: string description: The unique SIS identifier for the term. enrollment_term[overrides][enrollment_type][start_at]: type: string format: date-time description: |- The day/time the term starts, overridden for the given enrollment type. *enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment enrollment_term[overrides][enrollment_type][end_at]: type: string format: date-time description: |- The day/time the term ends, overridden for the given enrollment type. *enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment application/x-www-form-urlencoded: schema: *id121 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/EnrollmentTerm' externalDocs: url: https://canvas.instructure.com/doc/api/enrollment_terms.html get: tags: - Enrollment Terms operationId: list_enrollment_terms summary: List enrollment terms description: An object with a paginated list of all of the terms in the account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: workflow_state in: query schema: type: array items: type: string enum: - active - deleted - all required: false description: |- If set, only returns terms that are in the given state. Defaults to 'active'. - name: include in: query schema: type: array items: type: string enum: - overrides required: false description: |- Array of additional information to include. "overrides":: term start/end dates overridden for different enrollment types "course_count":: the number of courses in each term - name: term_name in: query schema: type: string required: false description: |- If set, only returns terms that match the given search keyword. Search keyword is matched against term name. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/EnrollmentTermsList' externalDocs: url: https://canvas.instructure.com/doc/api/enrollment_terms.html /v1/accounts/{account_id}/terms/{id}: put: tags: - Enrollment Terms operationId: update_enrollment_term summary: Update enrollment term description: Update an existing enrollment term for the specified account. parameters: - name: account_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: &id122 type: object properties: enrollment_term[name]: type: string description: The name of the term. enrollment_term[start_at]: type: string format: date-time description: |- The day/time the term starts. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. enrollment_term[end_at]: type: string format: date-time description: |- The day/time the term ends. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. enrollment_term[sis_term_id]: type: string description: The unique SIS identifier for the term. enrollment_term[overrides][enrollment_type][start_at]: type: string format: date-time description: |- The day/time the term starts, overridden for the given enrollment type. *enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment enrollment_term[overrides][enrollment_type][end_at]: type: string format: date-time description: |- The day/time the term ends, overridden for the given enrollment type. *enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness application/x-www-form-urlencoded: schema: *id122 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/EnrollmentTerm' externalDocs: url: https://canvas.instructure.com/doc/api/enrollment_terms.html delete: tags: - Enrollment Terms operationId: delete_enrollment_term summary: Delete enrollment term description: Delete the specified enrollment term. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/EnrollmentTerm' externalDocs: url: https://canvas.instructure.com/doc/api/enrollment_terms.html get: tags: - Enrollment Terms operationId: retrieve_enrollment_term summary: Retrieve enrollment term description: Retrieves the details for an enrollment term in the account. Includes overrides by default. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/EnrollmentTerm' externalDocs: url: https://canvas.instructure.com/doc/api/enrollment_terms.html /v1/courses/{course_id}/enrollments: get: tags: - Enrollments operationId: list_enrollments_courses summary: List enrollments description: |- Depending on the URL given, return a paginated list of either (1) all of the enrollments in a course, (2) all of the enrollments in a section or (3) all of a user's enrollments. This includes student, teacher, TA, and observer enrollments. If a user has multiple enrollments in a context (e.g. as a teacher and a student or in multiple course sections), each enrollment will be listed separately. note: Currently, only a root level admin user can return other users' enrollments. A user can, however, return his/her own enrollments. Enrollments scoped to a course context will include inactive states by default if the caller has account admin authorization and the state[] parameter is omitted. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: type in: query schema: type: array items: type: string required: false description: |- A list of enrollment types to return. Accepted values are 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'DesignerEnrollment', and 'ObserverEnrollment.' If omitted, all enrollment types are returned. This argument is ignored if `role` is given. - name: role in: query schema: type: array items: type: string required: false description: |- A list of enrollment roles to return. Accepted values include course-level roles created by the {api:RoleOverridesController#add_role Add Role API} as well as the base enrollment types accepted by the `type` argument above. - name: state in: query schema: type: array items: type: string enum: - active - invited - creation_pending - deleted - rejected - completed - inactive - current_and_invited - current_and_future - current_future_and_restricted - current_and_concluded required: false description: |- Filter by enrollment state. If omitted, 'active' and 'invited' enrollments are returned. The following synthetic states are supported only when querying a user's enrollments (either via user_id argument or via user enrollments endpoint): +current_and_invited+, +current_and_future+, +current_future_and_restricted+, +current_and_concluded+ - name: include in: query schema: type: array items: type: string enum: - avatar_url - group_ids - locked - observed_users - can_be_removed - uuid - current_points required: false description: |- Array of additional information to include on the enrollment or user records. "avatar_url" and "group_ids" will be returned on the user record. If "current_points" is specified, the fields "current_points" and (if the caller has permissions to manage grades) "unposted_current_points" will be included in the "grades" hash for student enrollments. - name: user_id in: query schema: type: string required: false description: |- Filter by user_id (only valid for course or section enrollment queries). If set to the current user's id, this is a way to determine if the user has any enrollments in the course or section, independent of whether the user has permission to view other people on the roster. - name: grading_period_id in: query schema: type: integer format: int64 required: false description: |- Return grades for the given grading_period. If this parameter is not specified, the returned grades will be for the whole course. - name: enrollment_term_id in: query schema: type: integer format: int64 required: false description: |- Returns only enrollments for the specified enrollment term. This parameter only applies to the user enrollments path. May pass the ID from the enrollment terms api or the SIS id prepended with 'sis_term_id:'. - name: sis_account_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments for the specified SIS account ID(s). Does not look into sub_accounts. May pass in array or string. - name: sis_course_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments matching the specified SIS course ID(s). May pass in array or string. - name: sis_section_id in: query schema: type: array items: type: string required: false description: |- Returns only section enrollments matching the specified SIS section ID(s). May pass in array or string. - name: sis_user_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments for the specified SIS user ID(s). May pass in array or string. - name: created_for_sis_id in: query schema: type: array items: type: boolean required: false description: |- If sis_user_id is present and created_for_sis_id is true, Returns only enrollments for the specified SIS ID(s). If a user has two sis_id's, one enrollment may be created using one of the two ids. This would limit the enrollments returned from the endpoint to enrollments that were created from a sis_import with that sis_user_id responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html post: tags: - Enrollments operationId: enroll_user_courses summary: Enroll a user description: Create a new user enrollment for a course or section. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id123 type: object properties: enrollment[start_at]: type: string format: date-time description: The start time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z enrollment[end_at]: type: string format: date-time description: The end time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z enrollment[user_id]: type: string description: The ID of the user to be enrolled in the course. enrollment[type]: type: string enum: - StudentEnrollment - TeacherEnrollment - TaEnrollment - ObserverEnrollment - DesignerEnrollment description: |- Enroll the user as a student, teacher, TA, observer, or designer. If no value is given, the type will be inferred by +enrollment[role]+ if supplied, otherwise 'StudentEnrollment' will be used. enrollment[role]: type: string x-canvas-declared-type: Deprecated description: Assigns a custom course-level role to the user. enrollment[role_id]: type: integer format: int64 description: Assigns a custom course-level role to the user. enrollment[enrollment_state]: type: string enum: - active - invited - inactive description: |- If set to 'active,' student will be immediately enrolled in the course. Otherwise they will be required to accept a course invitation. Default is 'invited.'. If set to 'inactive', student will be listed in the course roster for teachers, but will not be able to participate in the course until their enrollment is activated. enrollment[course_section_id]: type: integer format: int64 description: |- The ID of the course section to enroll the student in. If the section-specific URL is used, this argument is redundant and will be ignored. enrollment[limit_privileges_to_course_section]: type: boolean description: |- If set, the enrollment will only allow the user to see and interact with users enrolled in the section given by course_section_id. * For teachers and TAs, this includes grading privileges. * Section-limited students will not see any users (including teachers and TAs) not enrolled in their sections. * Users may have other enrollments that grant privileges to multiple sections in the same course. enrollment[notify]: type: boolean description: |- If true, a notification will be sent to the enrolled user. Notifications are not sent by default. enrollment[self_enrollment_code]: type: string description: |- If the current user is not allowed to manage enrollments in this course, but the course allows self-enrollment, the user can self- enroll as a student in the default section by passing in a valid code. When self-enrolling, the user_id must be 'self'. The enrollment_state will be set to 'active' and all other arguments will be ignored. enrollment[self_enrolled]: type: boolean description: |- If true, marks the enrollment as a self-enrollment, which gives students the ability to drop the course if desired. Defaults to false. enrollment[associated_user_id]: type: integer format: int64 description: |- For an observer enrollment, the ID of a student to observe. This is a one-off operation; to automatically observe all a student's enrollments (for example, as a parent), please use the {api:UserObserveesController#create User Observees API}. enrollment[sis_user_id]: type: string description: |- Required if the user is being enrolled from another trusted account. The unique identifier for the user (sis_user_id) must also be accompanied by the root_account parameter. The user_id will be ignored. enrollment[integration_id]: type: string description: |- Required if the user is being enrolled from another trusted account. The unique identifier for the user (integration_id) must also be accompanied by the root_account parameter. The user_id will be ignored. root_account: type: string description: |- The domain of the account to search for the user. Will be a no-op unless the sis_user_id or integration_id parameter is also included. required: - enrollment[user_id] - enrollment[type] application/x-www-form-urlencoded: schema: *id123 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/sections/{section_id}/enrollments: get: tags: - Enrollments operationId: list_enrollments_sections summary: List enrollments description: |- Depending on the URL given, return a paginated list of either (1) all of the enrollments in a course, (2) all of the enrollments in a section or (3) all of a user's enrollments. This includes student, teacher, TA, and observer enrollments. If a user has multiple enrollments in a context (e.g. as a teacher and a student or in multiple course sections), each enrollment will be listed separately. note: Currently, only a root level admin user can return other users' enrollments. A user can, however, return his/her own enrollments. Enrollments scoped to a course context will include inactive states by default if the caller has account admin authorization and the state[] parameter is omitted. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: type in: query schema: type: array items: type: string required: false description: |- A list of enrollment types to return. Accepted values are 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'DesignerEnrollment', and 'ObserverEnrollment.' If omitted, all enrollment types are returned. This argument is ignored if `role` is given. - name: role in: query schema: type: array items: type: string required: false description: |- A list of enrollment roles to return. Accepted values include course-level roles created by the {api:RoleOverridesController#add_role Add Role API} as well as the base enrollment types accepted by the `type` argument above. - name: state in: query schema: type: array items: type: string enum: - active - invited - creation_pending - deleted - rejected - completed - inactive - current_and_invited - current_and_future - current_future_and_restricted - current_and_concluded required: false description: |- Filter by enrollment state. If omitted, 'active' and 'invited' enrollments are returned. The following synthetic states are supported only when querying a user's enrollments (either via user_id argument or via user enrollments endpoint): +current_and_invited+, +current_and_future+, +current_future_and_restricted+, +current_and_concluded+ - name: include in: query schema: type: array items: type: string enum: - avatar_url - group_ids - locked - observed_users - can_be_removed - uuid - current_points required: false description: |- Array of additional information to include on the enrollment or user records. "avatar_url" and "group_ids" will be returned on the user record. If "current_points" is specified, the fields "current_points" and (if the caller has permissions to manage grades) "unposted_current_points" will be included in the "grades" hash for student enrollments. - name: user_id in: query schema: type: string required: false description: |- Filter by user_id (only valid for course or section enrollment queries). If set to the current user's id, this is a way to determine if the user has any enrollments in the course or section, independent of whether the user has permission to view other people on the roster. - name: grading_period_id in: query schema: type: integer format: int64 required: false description: |- Return grades for the given grading_period. If this parameter is not specified, the returned grades will be for the whole course. - name: enrollment_term_id in: query schema: type: integer format: int64 required: false description: |- Returns only enrollments for the specified enrollment term. This parameter only applies to the user enrollments path. May pass the ID from the enrollment terms api or the SIS id prepended with 'sis_term_id:'. - name: sis_account_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments for the specified SIS account ID(s). Does not look into sub_accounts. May pass in array or string. - name: sis_course_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments matching the specified SIS course ID(s). May pass in array or string. - name: sis_section_id in: query schema: type: array items: type: string required: false description: |- Returns only section enrollments matching the specified SIS section ID(s). May pass in array or string. - name: sis_user_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments for the specified SIS user ID(s). May pass in array or string. - name: created_for_sis_id in: query schema: type: array items: type: boolean required: false description: |- If sis_user_id is present and created_for_sis_id is true, Returns only enrollments for the specified SIS ID(s). If a user has two sis_id's, one enrollment may be created using one of the two ids. This would limit the enrollments returned from the endpoint to enrollments that were created from a sis_import with that sis_user_id responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html post: tags: - Enrollments operationId: enroll_user_sections summary: Enroll a user description: Create a new user enrollment for a course or section. parameters: - name: section_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id124 type: object properties: enrollment[start_at]: type: string format: date-time description: The start time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z enrollment[end_at]: type: string format: date-time description: The end time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z enrollment[user_id]: type: string description: The ID of the user to be enrolled in the course. enrollment[type]: type: string enum: - StudentEnrollment - TeacherEnrollment - TaEnrollment - ObserverEnrollment - DesignerEnrollment description: |- Enroll the user as a student, teacher, TA, observer, or designer. If no value is given, the type will be inferred by +enrollment[role]+ if supplied, otherwise 'StudentEnrollment' will be used. enrollment[role]: type: string x-canvas-declared-type: Deprecated description: Assigns a custom course-level role to the user. enrollment[role_id]: type: integer format: int64 description: Assigns a custom course-level role to the user. enrollment[enrollment_state]: type: string enum: - active - invited - inactive description: |- If set to 'active,' student will be immediately enrolled in the course. Otherwise they will be required to accept a course invitation. Default is 'invited.'. If set to 'inactive', student will be listed in the course roster for teachers, but will not be able to participate in the course until their enrollment is activated. enrollment[course_section_id]: type: integer format: int64 description: |- The ID of the course section to enroll the student in. If the section-specific URL is used, this argument is redundant and will be ignored. enrollment[limit_privileges_to_course_section]: type: boolean description: |- If set, the enrollment will only allow the user to see and interact with users enrolled in the section given by course_section_id. * For teachers and TAs, this includes grading privileges. * Section-limited students will not see any users (including teachers and TAs) not enrolled in their sections. * Users may have other enrollments that grant privileges to multiple sections in the same course. enrollment[notify]: type: boolean description: |- If true, a notification will be sent to the enrolled user. Notifications are not sent by default. enrollment[self_enrollment_code]: type: string description: |- If the current user is not allowed to manage enrollments in this course, but the course allows self-enrollment, the user can self- enroll as a student in the default section by passing in a valid code. When self-enrolling, the user_id must be 'self'. The enrollment_state will be set to 'active' and all other arguments will be ignored. enrollment[self_enrolled]: type: boolean description: |- If true, marks the enrollment as a self-enrollment, which gives students the ability to drop the course if desired. Defaults to false. enrollment[associated_user_id]: type: integer format: int64 description: |- For an observer enrollment, the ID of a student to observe. This is a one-off operation; to automatically observe all a student's enrollments (for example, as a parent), please use the {api:UserObserveesController#create User Observees API}. enrollment[sis_user_id]: type: string description: |- Required if the user is being enrolled from another trusted account. The unique identifier for the user (sis_user_id) must also be accompanied by the root_account parameter. The user_id will be ignored. enrollment[integration_id]: type: string description: |- Required if the user is being enrolled from another trusted account. The unique identifier for the user (integration_id) must also be accompanied by the root_account parameter. The user_id will be ignored. root_account: type: string description: |- The domain of the account to search for the user. Will be a no-op unless the sis_user_id or integration_id parameter is also included. required: - enrollment[user_id] - enrollment[type] application/x-www-form-urlencoded: schema: *id124 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/users/{user_id}/enrollments: get: tags: - Enrollments operationId: list_enrollments_users summary: List enrollments description: |- Depending on the URL given, return a paginated list of either (1) all of the enrollments in a course, (2) all of the enrollments in a section or (3) all of a user's enrollments. This includes student, teacher, TA, and observer enrollments. If a user has multiple enrollments in a context (e.g. as a teacher and a student or in multiple course sections), each enrollment will be listed separately. note: Currently, only a root level admin user can return other users' enrollments. A user can, however, return his/her own enrollments. Enrollments scoped to a course context will include inactive states by default if the caller has account admin authorization and the state[] parameter is omitted. parameters: - name: type in: query schema: type: array items: type: string required: false description: |- A list of enrollment types to return. Accepted values are 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'DesignerEnrollment', and 'ObserverEnrollment.' If omitted, all enrollment types are returned. This argument is ignored if `role` is given. - name: role in: query schema: type: array items: type: string required: false description: |- A list of enrollment roles to return. Accepted values include course-level roles created by the {api:RoleOverridesController#add_role Add Role API} as well as the base enrollment types accepted by the `type` argument above. - name: state in: query schema: type: array items: type: string enum: - active - invited - creation_pending - deleted - rejected - completed - inactive - current_and_invited - current_and_future - current_future_and_restricted - current_and_concluded required: false description: |- Filter by enrollment state. If omitted, 'active' and 'invited' enrollments are returned. The following synthetic states are supported only when querying a user's enrollments (either via user_id argument or via user enrollments endpoint): +current_and_invited+, +current_and_future+, +current_future_and_restricted+, +current_and_concluded+ - name: include in: query schema: type: array items: type: string enum: - avatar_url - group_ids - locked - observed_users - can_be_removed - uuid - current_points required: false description: |- Array of additional information to include on the enrollment or user records. "avatar_url" and "group_ids" will be returned on the user record. If "current_points" is specified, the fields "current_points" and (if the caller has permissions to manage grades) "unposted_current_points" will be included in the "grades" hash for student enrollments. - name: user_id in: path schema: type: string required: true description: |- Filter by user_id (only valid for course or section enrollment queries). If set to the current user's id, this is a way to determine if the user has any enrollments in the course or section, independent of whether the user has permission to view other people on the roster. - name: grading_period_id in: query schema: type: integer format: int64 required: false description: |- Return grades for the given grading_period. If this parameter is not specified, the returned grades will be for the whole course. - name: enrollment_term_id in: query schema: type: integer format: int64 required: false description: |- Returns only enrollments for the specified enrollment term. This parameter only applies to the user enrollments path. May pass the ID from the enrollment terms api or the SIS id prepended with 'sis_term_id:'. - name: sis_account_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments for the specified SIS account ID(s). Does not look into sub_accounts. May pass in array or string. - name: sis_course_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments matching the specified SIS course ID(s). May pass in array or string. - name: sis_section_id in: query schema: type: array items: type: string required: false description: |- Returns only section enrollments matching the specified SIS section ID(s). May pass in array or string. - name: sis_user_id in: query schema: type: array items: type: string required: false description: |- Returns only enrollments for the specified SIS user ID(s). May pass in array or string. - name: created_for_sis_id in: query schema: type: array items: type: boolean required: false description: |- If sis_user_id is present and created_for_sis_id is true, Returns only enrollments for the specified SIS ID(s). If a user has two sis_id's, one enrollment may be created using one of the two ids. This would limit the enrollments returned from the endpoint to enrollments that were created from a sis_import with that sis_user_id responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/accounts/{account_id}/enrollments/{id}: get: tags: - Enrollments operationId: enrollment_by_id summary: Enrollment by ID description: Get an Enrollment object by Enrollment ID parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The ID of the enrollment object responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/accounts/{account_id}/bulk_enrollment: post: tags: - Enrollments operationId: enroll_multiple_users_to_one_or_more_courses summary: Enroll multiple users to one or more courses description: Enrolls multiple users in one or more courses in a single operation. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id125 type: object properties: user_ids: type: array items: type: integer description: The user IDs to enroll in the courses. course_ids: type: array items: type: integer description: The course IDs to enroll each user in. enrollment_type: type: string enum: - StudentEnrollment - TeacherEnrollment - TaEnrollment - ObserverEnrollment - DesignerEnrollment description: |- Enroll each user as a student, teacher, TA, observer, or designer. If no value is given, the type will be 'StudentEnrollment'. enrollment_role_id: type: integer format: int64 description: Optional custom course-level role id to apply to created enrollments. start_at: type: string format: date-time description: |- The start time of every created enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z. When provided, applies to all enrollments in the bulk creation. end_at: type: string format: date-time description: |- The end time of every created enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z. When provided, applies to all enrollments in the bulk creation. required: - user_ids - course_ids application/x-www-form-urlencoded: schema: *id125 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/courses/{course_id}/enrollments/{id}: delete: tags: - Enrollments operationId: conclude_deactivate_or_delete_enrollment summary: Conclude, deactivate, or delete an enrollment description: |- Conclude, deactivate, or delete an enrollment. If the +task+ argument isn't given, the enrollment will be concluded. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: task in: query schema: type: string enum: - conclude - delete - inactivate - deactivate required: false description: |- The action to take on the enrollment. When inactive, a user will still appear in the course roster to admins, but be unable to participate. ("inactivate" and "deactivate" are equivalent tasks) responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/courses/{course_id}/enrollments/{id}/accept: post: tags: - Enrollments operationId: accept_course_invitation summary: Accept Course Invitation description: accepts a pending course invitation for the current user parameters: - name: course_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/enrollments.html /v1/courses/{course_id}/enrollments/{id}/reject: post: tags: - Enrollments operationId: reject_course_invitation summary: Reject Course Invitation description: rejects a pending course invitation for the current user parameters: - name: course_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/enrollments.html /v1/courses/{course_id}/enrollments/{id}/reactivate: put: tags: - Enrollments operationId: re_activate_enrollment summary: Re-activate an enrollment description: Activates an inactive enrollment parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/courses/{course_id}/users/{user_id}/last_attended: put: tags: - Enrollments operationId: add_last_attended_date summary: Add last attended date description: Add last attended date to student enrollment in course parameters: - name: course_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id126 type: object properties: date: type: string format: date description: The last attended date of a student enrollment in a course. application/x-www-form-urlencoded: schema: *id126 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Enrollment' externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/users/{user_id}/temporary_enrollment_status: get: tags: - Enrollments operationId: show_temporary_enrollment_recipient_and_provider_status summary: Show Temporary Enrollment recipient and provider status description: Returns a JSON Object containing the temporary enrollment status for a user. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: account_id in: query schema: type: string required: false description: |- The ID of the account to check for temporary enrollment status. Defaults to the domain root account if not provided. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/temporary_enrollment_status: get: tags: - Enrollments operationId: bulk_temporary_enrollment_status summary: Bulk Temporary Enrollment Status description: Returns temporary enrollment statuses for multiple users at once. parameters: - name: user_ids in: query schema: type: array items: type: string required: true description: The IDs of the users to check temporary enrollment status for. - name: account_id in: query schema: type: string required: false description: The ID of the account to scope the check to. - name: limit in: query schema: type: integer format: int64 required: false description: The maximum number of user IDs to process. Defaults to 10, max 100. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/enrollments.html /v1/error_reports: post: tags: - Error Reports operationId: create_error_report summary: Create Error Report description: |- Create a new error report documenting an experienced problem Performs the same action as when a user uses the "help -> report a problem" dialog. requestBody: required: false content: application/json: schema: &id127 type: object properties: error[subject]: type: string description: The summary of the problem error[url]: type: string description: URL from which the report was issued error[email]: type: string description: Email address for the reporting user error[comments]: type: string description: The long version of the story from the user one what they experienced error[http_env]: type: object additionalProperties: true description: |- A collection of metadata about the users' environment. If not provided, canvas will collect it based on information found in the request. (Doesn't have to be HTTPENV info, could be anything JSON object that can be serialized as a hash, a mobile app might include relevant metadata for itself) required: - error[subject] application/x-www-form-urlencoded: schema: *id127 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/error_reports.html /v1/courses/{course_id}/external_tools: get: tags: - External Tools operationId: list_external_tools_courses summary: List external tools description: |- Returns the paginated list of external tools for the current context. See the get request docs for a single tool for a list of properties on an external tool. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: The partial name of the tools to match and return. - name: selectable in: query schema: type: boolean required: false description: If true, then only tools that are meant to be selectable are returned. - name: include_parents in: query schema: type: boolean required: false description: If true, then include tools installed in all accounts above the current context - name: placement in: query schema: type: string required: false description: |- The placement type to filter by. Return all tools at the current context as well as all tools from the parent, and filter the tools list to only those with a placement of 'editor_button' responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html post: tags: - External Tools operationId: create_external_tool_courses summary: Create an external tool description: |- Create an external tool in the specified course/account. The created tool will be returned, see the "show" endpoint for an example. If a client ID is supplied canvas will attempt to create a context external tool using the LTI 1.3 standard. See the Placements Documentation for more information on what placements are available, the possible fields, and their accepted values. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id128 type: object properties: client_id: type: string description: |- The client id is attached to the developer key. If supplied all other parameters are unnecessary and will be ignored name: type: string description: The name of the tool privacy_level: type: string enum: - anonymous - name_only - email_only - public description: How much user information to send to the external tool. consumer_key: type: string description: The consumer key for the external tool shared_secret: type: string description: The shared secret with the external tool description: type: string description: A description of the tool url: type: string description: |- The url to match links against. Either "url" or "domain" should be set, not both. domain: type: string description: |- The domain to match links against. Either "url" or "domain" should be set, not both. icon_url: type: string description: The url of the icon to show for this tool text: type: string description: The default text to show for this tool custom_fields[field_name]: type: string description: |- Custom fields that will be sent to the tool consumer; can be used multiple times is_rce_favorite: type: boolean description: |- (Deprecated in favor of {api:ExternalToolsController#mark_rce_favorite Mark tool to RCE Favorites} and {api:ExternalToolsController#unmark_rce_favorite Unmark tool from RCE Favorites}) Whether this tool should appear in a preferred location in the RCE. This only applies to tools in root account contexts that have an editor button placement. []: type: string x-canvas-declared-type: variable description: Set the value for a specific placement. config_type: type: string enum: - by_url - by_xml description: |- Configuration can be passed in as Common Cartridge XML instead of using query parameters. If this value is "by_url" or "by_xml" then an XML configuration will be expected in either the "config_xml" or "config_url" parameter. Note that the name parameter overrides the tool name provided in the XML. config_xml: type: string description: |- XML tool configuration, as specified in the Common Cartridge XML specification. This is required if "config_type" is set to "by_xml" config_url: type: string description: |- URL where the server can retrieve an XML tool configuration, as specified in the Common Cartridge XML specification. This is required if "config_type" is set to "by_url" not_selectable: type: boolean description: |- Default: false. If set to true, and if resource_selection is set to false, the tool won't show up in the external tool selection UI in modules and assignments oauth_compliant: type: boolean description: |- Default: false, if set to true LTI query params will not be copied to the post body. unified_tool_id: type: string description: The unique identifier for the tool in LearnPlatform required: - client_id - name - privacy_level - consumer_key - shared_secret application/x-www-form-urlencoded: schema: *id128 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/accounts/{account_id}/external_tools: get: tags: - External Tools operationId: list_external_tools_accounts summary: List external tools description: |- Returns the paginated list of external tools for the current context. See the get request docs for a single tool for a list of properties on an external tool. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: The partial name of the tools to match and return. - name: selectable in: query schema: type: boolean required: false description: If true, then only tools that are meant to be selectable are returned. - name: include_parents in: query schema: type: boolean required: false description: If true, then include tools installed in all accounts above the current context - name: placement in: query schema: type: string required: false description: |- The placement type to filter by. Return all tools at the current context as well as all tools from the parent, and filter the tools list to only those with a placement of 'editor_button' responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html post: tags: - External Tools operationId: create_external_tool_accounts summary: Create an external tool description: |- Create an external tool in the specified course/account. The created tool will be returned, see the "show" endpoint for an example. If a client ID is supplied canvas will attempt to create a context external tool using the LTI 1.3 standard. See the Placements Documentation for more information on what placements are available, the possible fields, and their accepted values. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id129 type: object properties: client_id: type: string description: |- The client id is attached to the developer key. If supplied all other parameters are unnecessary and will be ignored name: type: string description: The name of the tool privacy_level: type: string enum: - anonymous - name_only - email_only - public description: How much user information to send to the external tool. consumer_key: type: string description: The consumer key for the external tool shared_secret: type: string description: The shared secret with the external tool description: type: string description: A description of the tool url: type: string description: |- The url to match links against. Either "url" or "domain" should be set, not both. domain: type: string description: |- The domain to match links against. Either "url" or "domain" should be set, not both. icon_url: type: string description: The url of the icon to show for this tool text: type: string description: The default text to show for this tool custom_fields[field_name]: type: string description: |- Custom fields that will be sent to the tool consumer; can be used multiple times is_rce_favorite: type: boolean description: |- (Deprecated in favor of {api:ExternalToolsController#mark_rce_favorite Mark tool to RCE Favorites} and {api:ExternalToolsController#unmark_rce_favorite Unmark tool from RCE Favorites}) Whether this tool should appear in a preferred location in the RCE. This only applies to tools in root account contexts that have an editor button placement. []: type: string x-canvas-declared-type: variable description: Set the value for a specific placement. config_type: type: string enum: - by_url - by_xml description: |- Configuration can be passed in as Common Cartridge XML instead of using query parameters. If this value is "by_url" or "by_xml" then an XML configuration will be expected in either the "config_xml" or "config_url" parameter. Note that the name parameter overrides the tool name provided in the XML. config_xml: type: string description: |- XML tool configuration, as specified in the Common Cartridge XML specification. This is required if "config_type" is set to "by_xml" config_url: type: string description: |- URL where the server can retrieve an XML tool configuration, as specified in the Common Cartridge XML specification. This is required if "config_type" is set to "by_url" not_selectable: type: boolean description: |- Default: false. If set to true, and if resource_selection is set to false, the tool won't show up in the external tool selection UI in modules and assignments oauth_compliant: type: boolean description: |- Default: false, if set to true LTI query params will not be copied to the post body. unified_tool_id: type: string description: The unique identifier for the tool in LearnPlatform required: - client_id - name - privacy_level - consumer_key - shared_secret application/x-www-form-urlencoded: schema: *id129 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/groups/{group_id}/external_tools: get: tags: - External Tools operationId: list_external_tools_groups summary: List external tools description: |- Returns the paginated list of external tools for the current context. See the get request docs for a single tool for a list of properties on an external tool. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: The partial name of the tools to match and return. - name: selectable in: query schema: type: boolean required: false description: If true, then only tools that are meant to be selectable are returned. - name: include_parents in: query schema: type: boolean required: false description: If true, then include tools installed in all accounts above the current context - name: placement in: query schema: type: string required: false description: |- The placement type to filter by. Return all tools at the current context as well as all tools from the parent, and filter the tools list to only those with a placement of 'editor_button' responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/courses/{course_id}/external_tools/sessionless_launch: get: tags: - External Tools operationId: get_sessionless_launch_url_for_external_tool_courses summary: Get a sessionless launch url for an external tool. description: |- Returns a sessionless launch url for an external tool. Prefers the resource_link_lookup_uuid, but defaults to the other passed parameters id, url, and launch_type NOTE: Either the resource_link_lookup_uuid, id, or url must be provided unless launch_type is assessment or module_item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: query schema: type: string required: false description: The external id of the tool to launch. - name: url in: query schema: type: string required: false description: The LTI launch url for the external tool. - name: assignment_id in: query schema: type: string required: false description: The assignment id for an assignment launch. Required if launch_type is set to "assessment". - name: module_item_id in: query schema: type: string required: false description: The assignment id for a module item launch. Required if launch_type is set to "module_item". - name: launch_type in: query schema: type: string enum: - assessment - module_item required: false description: |- The type of launch to perform on the external tool. Placement names (eg. "course_navigation") can also be specified to use the custom launch url for that placement; if done, the tool id must be provided. - name: resource_link_lookup_uuid in: query schema: type: string required: false description: The identifier to lookup a resource link. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/accounts/{account_id}/external_tools/sessionless_launch: get: tags: - External Tools operationId: get_sessionless_launch_url_for_external_tool_accounts summary: Get a sessionless launch url for an external tool. description: |- Returns a sessionless launch url for an external tool. Prefers the resource_link_lookup_uuid, but defaults to the other passed parameters id, url, and launch_type NOTE: Either the resource_link_lookup_uuid, id, or url must be provided unless launch_type is assessment or module_item. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: query schema: type: string required: false description: The external id of the tool to launch. - name: url in: query schema: type: string required: false description: The LTI launch url for the external tool. - name: assignment_id in: query schema: type: string required: false description: The assignment id for an assignment launch. Required if launch_type is set to "assessment". - name: module_item_id in: query schema: type: string required: false description: The assignment id for a module item launch. Required if launch_type is set to "module_item". - name: launch_type in: query schema: type: string enum: - assessment - module_item required: false description: |- The type of launch to perform on the external tool. Placement names (eg. "course_navigation") can also be specified to use the custom launch url for that placement; if done, the tool id must be provided. - name: resource_link_lookup_uuid in: query schema: type: string required: false description: The identifier to lookup a resource link. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/courses/{course_id}/external_tools/{external_tool_id}: get: tags: - External Tools operationId: get_single_external_tool_courses summary: Get a single external tool description: Returns the specified external tool. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html put: tags: - External Tools operationId: edit_external_tool_courses summary: Edit an external tool description: |- Update the specified external tool. Uses same parameters as create. Returns the updated tool. NOTE: Any updates made to LTI 1.3 tools with this API will be overridden if any changes are made to the tool's associated LTI Registration/Developer Key configuration. In almost all cases, changes should be made to the tool's associated LTI Registration configuration, not individual tools. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html delete: tags: - External Tools operationId: delete_external_tool_courses summary: Delete an external tool description: Remove the specified external tool parameters: - name: course_id in: path schema: type: string required: true description: ID - name: external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/accounts/{account_id}/external_tools/{external_tool_id}: get: tags: - External Tools operationId: get_single_external_tool_accounts summary: Get a single external tool description: Returns the specified external tool. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html put: tags: - External Tools operationId: edit_external_tool_accounts summary: Edit an external tool description: |- Update the specified external tool. Uses same parameters as create. Returns the updated tool. NOTE: Any updates made to LTI 1.3 tools with this API will be overridden if any changes are made to the tool's associated LTI Registration/Developer Key configuration. In almost all cases, changes should be made to the tool's associated LTI Registration configuration, not individual tools. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html delete: tags: - External Tools operationId: delete_external_tool_accounts summary: Delete an external tool description: Remove the specified external tool parameters: - name: account_id in: path schema: type: string required: true description: ID - name: external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextExternalTool' externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/accounts/{account_id}/external_tools/rce_favorites/{id}: post: tags: - External Tools operationId: mark_tool_as_rce_favorite summary: Mark tool as RCE Favorite description: |- Mark the specified editor_button external tool as a favorite in the RCE editor for courses in the given account and its subaccounts (if the subaccounts haven't set their own RCE Favorites). This places the tool in a preferred location in the RCE. Cannot mark more than 2 tools as RCE Favorites. parameters: - name: account_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/external_tools.html delete: tags: - External Tools operationId: unmark_tool_as_rce_favorite summary: Unmark tool as RCE Favorite description: |- Unmark the specified external tool as a favorite in the RCE editor for the given account. The tool will remain available but will no longer appear in the preferred favorites location. parameters: - name: account_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/external_tools.html /v1/accounts/{account_id}/external_tools/top_nav_favorites/{id}: post: tags: - External Tools operationId: add_tool_to_top_navigation_favorites summary: Add tool to Top Navigation Favorites description: |- Adds a dedicated button in Top Navigation for the specified tool for the given account. Cannot set more than 2 top_navigation Favorites. parameters: - name: account_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/external_tools.html delete: tags: - External Tools operationId: remove_tool_from_top_navigation_favorites summary: Remove tool from Top Navigation Favorites description: Removes the dedicated button in Top Navigation for the specified tool for the given account. parameters: - name: account_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/external_tools.html /v1/external_tools/visible_course_nav_tools: get: tags: - External Tools operationId: get_visible_course_navigation_tools summary: Get visible course navigation tools description: |- Get a list of external tools with the course_navigation placement that have not been hidden in course settings and whose visibility settings apply to the requesting user. These tools are the same that appear in the course navigation. The response format is the same as for List external tools, but with additional context_id and context_name fields on each element in the array. parameters: - name: context_codes in: query schema: type: array items: type: string required: true description: |- List of context_codes to retrieve visible course nav tools for (for example, +course_123+). Only courses are presently supported. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/external_tools.html /v1/courses/{course_id}/external_tools/visible_course_nav_tools: get: tags: - External Tools operationId: get_visible_course_navigation_tools_for_single_course summary: Get visible course navigation tools for a single course description: |- Get a list of external tools with the course_navigation placement that have not been hidden in course settings and whose visibility settings apply to the requesting user. These tools are the same that appear in the course navigation. The response format is the same as Get visible course navigation tools. parameters: - name: course_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/external_tools.html /v1/users/self/favorites/courses: get: tags: - Favorites operationId: list_favorite_courses summary: List favorite courses description: |- Retrieve the paginated list of favorite courses for the current user. If the user has not chosen any favorites, then a selection of currently enrolled courses will be returned. See the {api:CoursesController#index List courses API} for details on accepted include[] parameters. parameters: - name: exclude_blueprint_courses in: query schema: type: boolean required: false description: When set, only return courses that are not configured as blueprint courses. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Course externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html delete: tags: - Favorites operationId: reset_course_favorites summary: Reset course favorites description: |- Reset the current user's course favorites to the default automatically generated list of enrolled courses responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html /v1/users/self/favorites/groups: get: tags: - Favorites operationId: list_favorite_groups summary: List favorite groups description: |- Retrieve the paginated list of favorite groups for the current user. If the user has not chosen any favorites, then a selection of groups that the user is a member of will be returned. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Group externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html delete: tags: - Favorites operationId: reset_group_favorites summary: Reset group favorites description: |- Reset the current user's group favorites to the default automatically generated list of enrolled group responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html /v1/users/self/favorites/courses/{id}: post: tags: - Favorites operationId: add_course_to_favorites summary: Add course to favorites description: |- Add a course to the current user's favorites. If the course is already in the user's favorites, nothing happens. Canvas for Elementary subject and homeroom courses can be added to favorites, but this has no effect in the UI. parameters: - name: id in: path schema: type: string required: true description: |- The ID or SIS ID of the course to add. The current user must be registered in the course. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Favorite' externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html delete: tags: - Favorites operationId: remove_course_from_favorites summary: Remove course from favorites description: Remove a course from the current user's favorites. parameters: - name: id in: path schema: type: string required: true description: the ID or SIS ID of the course to remove responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Favorite' externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html /v1/users/self/favorites/groups/{id}: post: tags: - Favorites operationId: add_group_to_favorites summary: Add group to favorites description: |- Add a group to the current user's favorites. If the group is already in the user's favorites, nothing happens. parameters: - name: id in: path schema: type: string required: true description: |- The ID or SIS ID of the group to add. The current user must be a member of the group. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Favorite' externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html delete: tags: - Favorites operationId: remove_group_from_favorites summary: Remove group from favorites description: Remove a group from the current user's favorites. parameters: - name: id in: path schema: type: string required: true description: the ID or SIS ID of the group to remove responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Favorite' externalDocs: url: https://canvas.instructure.com/doc/api/favorites.html /v1/courses/{course_id}/features: get: tags: - Feature Flags operationId: list_features_courses summary: List features description: A paginated list of all features that apply to a given Account, Course, or User. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: hide_inherited_enabled in: query schema: type: boolean required: false description: |- When true, feature flags that are enabled in a higher context and cannot be overridden will be omitted. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Feature' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html /v1/accounts/{account_id}/features: get: tags: - Feature Flags operationId: list_features_accounts summary: List features description: A paginated list of all features that apply to a given Account, Course, or User. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: hide_inherited_enabled in: query schema: type: boolean required: false description: |- When true, feature flags that are enabled in a higher context and cannot be overridden will be omitted. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Feature' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html /v1/users/{user_id}/features: get: tags: - Feature Flags operationId: list_features_users summary: List features description: A paginated list of all features that apply to a given Account, Course, or User. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: hide_inherited_enabled in: query schema: type: boolean required: false description: |- When true, feature flags that are enabled in a higher context and cannot be overridden will be omitted. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Feature' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html /v1/courses/{course_id}/features/enabled: get: tags: - Feature Flags operationId: list_enabled_features_courses summary: List enabled features description: |- A paginated list of all features that are enabled on a given Account, Course, or User. Only the feature names are returned. parameters: - name: course_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/feature_flags.html /v1/accounts/{account_id}/features/enabled: get: tags: - Feature Flags operationId: list_enabled_features_accounts summary: List enabled features description: |- A paginated list of all features that are enabled on a given Account, Course, or User. Only the feature names are returned. parameters: - name: account_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/feature_flags.html /v1/users/{user_id}/features/enabled: get: tags: - Feature Flags operationId: list_enabled_features_users summary: List enabled features description: |- A paginated list of all features that are enabled on a given Account, Course, or User. Only the feature names are returned. parameters: - name: user_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/feature_flags.html /v1/features/environment: get: tags: - Feature Flags operationId: list_environment_features summary: List environment features description: |- Return a hash of global feature options that pertain to the Canvas user interface. This is the same information supplied to the web interface as +ENV.FEATURES+. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html /v1/courses/{course_id}/features/flags/{feature}: get: tags: - Feature Flags operationId: get_feature_flag_courses summary: Get feature flag description: |- Get the feature flag that applies to a given Account, Course, or User. The flag may be defined on the object, or it may be inherited from a parent account. You can look at the context_id and context_type of the returned object to determine which is the case. If these fields are missing, then the object is the global Canvas default. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html put: tags: - Feature Flags operationId: set_feature_flag_courses summary: Set feature flag description: |- Set a feature flag for a given Account, Course, or User. This call will fail if a parent account sets a feature flag for the same feature in any state other than "allowed". parameters: - name: course_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id130 type: object properties: state: type: string enum: - 'off' - allowed - 'on' description: |- "off":: The feature is not available for the course, user, or account and sub-accounts. "allowed":: (valid only on accounts) The feature is off in the account, but may be enabled in sub-accounts and courses by setting a feature flag on the sub-account or course. "on":: The feature is turned on unconditionally for the user, course, or account and sub-accounts. application/x-www-form-urlencoded: schema: *id130 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html delete: tags: - Feature Flags operationId: remove_feature_flag_courses summary: Remove feature flag description: |- Remove feature flag for a given Account, Course, or User. (Note that the flag must be defined on the Account, Course, or User directly.) The object will then inherit the feature flags from a higher account, if any exist. If this flag was 'on' or 'off', then lower-level account flags that were masked by this one will apply again. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html /v1/accounts/{account_id}/features/flags/{feature}: get: tags: - Feature Flags operationId: get_feature_flag_accounts summary: Get feature flag description: |- Get the feature flag that applies to a given Account, Course, or User. The flag may be defined on the object, or it may be inherited from a parent account. You can look at the context_id and context_type of the returned object to determine which is the case. If these fields are missing, then the object is the global Canvas default. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html put: tags: - Feature Flags operationId: set_feature_flag_accounts summary: Set feature flag description: |- Set a feature flag for a given Account, Course, or User. This call will fail if a parent account sets a feature flag for the same feature in any state other than "allowed". parameters: - name: account_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id131 type: object properties: state: type: string enum: - 'off' - allowed - 'on' description: |- "off":: The feature is not available for the course, user, or account and sub-accounts. "allowed":: (valid only on accounts) The feature is off in the account, but may be enabled in sub-accounts and courses by setting a feature flag on the sub-account or course. "on":: The feature is turned on unconditionally for the user, course, or account and sub-accounts. application/x-www-form-urlencoded: schema: *id131 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html delete: tags: - Feature Flags operationId: remove_feature_flag_accounts summary: Remove feature flag description: |- Remove feature flag for a given Account, Course, or User. (Note that the flag must be defined on the Account, Course, or User directly.) The object will then inherit the feature flags from a higher account, if any exist. If this flag was 'on' or 'off', then lower-level account flags that were masked by this one will apply again. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html /v1/users/{user_id}/features/flags/{feature}: get: tags: - Feature Flags operationId: get_feature_flag_users summary: Get feature flag description: |- Get the feature flag that applies to a given Account, Course, or User. The flag may be defined on the object, or it may be inherited from a parent account. You can look at the context_id and context_type of the returned object to determine which is the case. If these fields are missing, then the object is the global Canvas default. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html put: tags: - Feature Flags operationId: set_feature_flag_users summary: Set feature flag description: |- Set a feature flag for a given Account, Course, or User. This call will fail if a parent account sets a feature flag for the same feature in any state other than "allowed". parameters: - name: user_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id132 type: object properties: state: type: string enum: - 'off' - allowed - 'on' description: |- "off":: The feature is not available for the course, user, or account and sub-accounts. "allowed":: (valid only on accounts) The feature is off in the account, but may be enabled in sub-accounts and courses by setting a feature flag on the sub-account or course. "on":: The feature is turned on unconditionally for the user, course, or account and sub-accounts. application/x-www-form-urlencoded: schema: *id132 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html delete: tags: - Feature Flags operationId: remove_feature_flag_users summary: Remove feature flag description: |- Remove feature flag for a given Account, Course, or User. (Note that the flag must be defined on the Account, Course, or User directly.) The object will then inherit the feature flags from a higher account, if any exist. If this flag was 'on' or 'off', then lower-level account flags that were masked by this one will apply again. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: feature in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/FeatureFlag' externalDocs: url: https://canvas.instructure.com/doc/api/feature_flags.html /v1/courses/{course_id}/files/quota: get: tags: - Files operationId: get_quota_information_courses summary: Get quota information description: Returns the total and used storage quota for the course, group, or user. parameters: - name: course_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/files.html /v1/groups/{group_id}/files/quota: get: tags: - Files operationId: get_quota_information_groups summary: Get quota information description: Returns the total and used storage quota for the course, group, or user. parameters: - name: group_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/files.html /v1/users/{user_id}/files/quota: get: tags: - Files operationId: get_quota_information_users summary: Get quota information description: Returns the total and used storage quota for the course, group, or user. parameters: - name: user_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/files.html /v1/users/{user_id}/files: get: tags: - Files operationId: list_files_users summary: List files description: Returns the paginated list of files for the folder or course. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: content_types in: query schema: type: array items: type: string required: false description: |- Filter results by content-type. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: exclude_content_types in: query schema: type: array items: type: string required: false description: |- Exclude given content-types from your results. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: search_term in: query schema: type: string required: false description: The partial name of the files to match and return. - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: only in: query schema: type: array items: type: array items: {} required: false description: |- Array of information to restrict to. Overrides include[] "names":: only returns file name information - name: sort in: query schema: type: string enum: - name - size - created_at - updated_at - content_type - user required: false description: Sort results by this field. Defaults to 'name'. Note that `sort=user` implies `include[]=user`. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/File__files' externalDocs: url: https://canvas.instructure.com/doc/api/files.html post: tags: - Users operationId: upload_file_users summary: Upload a file description: |- Upload a file to the user's personal files section. This API endpoint is the first step in uploading a file to a user's files. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. Note that typically users will only be able to upload files to their own files section. Passing a user_id of +self+ is an easy shortcut to specify the current user. parameters: - name: user_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/users.html /v1/groups/{group_id}/files: get: tags: - Files operationId: list_files_groups summary: List files description: Returns the paginated list of files for the folder or course. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: content_types in: query schema: type: array items: type: string required: false description: |- Filter results by content-type. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: exclude_content_types in: query schema: type: array items: type: string required: false description: |- Exclude given content-types from your results. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: search_term in: query schema: type: string required: false description: The partial name of the files to match and return. - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: only in: query schema: type: array items: type: array items: {} required: false description: |- Array of information to restrict to. Overrides include[] "names":: only returns file name information - name: sort in: query schema: type: string enum: - name - size - created_at - updated_at - content_type - user required: false description: Sort results by this field. Defaults to 'name'. Note that `sort=user` implies `include[]=user`. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/File__files' externalDocs: url: https://canvas.instructure.com/doc/api/files.html post: tags: - Groups operationId: upload_file_groups summary: Upload a file description: |- Upload a file to the group. This API endpoint is the first step in uploading a file to a group. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. Only those with the "Manage Files" permission on a group can upload files to the group. By default, this is anybody participating in the group, or any admin over the group. parameters: - name: group_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/groups.html /v1/folders/{id}/files: get: tags: - Files operationId: list_files_folders summary: List files description: Returns the paginated list of files for the folder or course. parameters: - name: id in: path schema: type: string required: true description: ID - name: content_types in: query schema: type: array items: type: string required: false description: |- Filter results by content-type. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: exclude_content_types in: query schema: type: array items: type: string required: false description: |- Exclude given content-types from your results. You can specify type/subtype pairs (e.g., 'image/jpeg'), or simply types (e.g., 'image', which will match 'image/gif', 'image/jpeg', etc.). - name: search_term in: query schema: type: string required: false description: The partial name of the files to match and return. - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: only in: query schema: type: array items: type: array items: {} required: false description: |- Array of information to restrict to. Overrides include[] "names":: only returns file name information - name: sort in: query schema: type: string enum: - name - size - created_at - updated_at - content_type - user required: false description: Sort results by this field. Defaults to 'name'. Note that `sort=user` implies `include[]=user`. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/File__files' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/files/{id}/public_url: get: tags: - Files operationId: get_public_inline_preview_url summary: Get public inline preview url description: Determine the URL that should be used for inline preview of the file. parameters: - name: id in: path schema: type: string required: true description: ID - name: submission_id in: query schema: type: integer format: int64 required: false description: |- The id of the submission the file is associated with. Provide this argument to gain access to a file that has been submitted to an assignment (Canvas will verify that the file belongs to the submission and the calling user has rights to view the submission). responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/files/{id}: get: tags: - Files operationId: get_file_files summary: Get file description: Returns the standard attachment json object parameters: - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: replacement_chain_context_type in: query schema: type: string required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Must be set to 'course' or 'account'. The "replacement_chain_context_id" parameter must also be included. - name: replacement_chain_context_id in: query schema: type: integer format: int64 required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Indicates the context ID Canvas should use when following the "replacement chain." The "replacement_chain_context_type" parameter must also be included. responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html put: tags: - Files operationId: update_file summary: Update file description: Update some settings on the specified file parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id133 type: object properties: name: type: string description: The new display name of the file, with a limit of 255 characters. parent_folder_id: type: string description: |- The id of the folder to move this file into. The new folder must be in the same context as the original parent folder. If the file is in a context without folders this does not apply. on_duplicate: type: string enum: - overwrite - rename description: |- If the file is moved to a folder containing a file with the same name, or renamed to a name matching an existing file, the API call will fail unless this parameter is supplied. "overwrite":: Replace the existing file with the same name "rename":: Add a qualifier to make the new filename unique lock_at: type: string format: date-time description: The datetime to lock the file at unlock_at: type: string format: date-time description: The datetime to unlock the file at locked: type: boolean description: Flag the file as locked hidden: type: boolean description: Flag the file as hidden visibility_level: type: string description: Configure which roles can access this file application/x-www-form-urlencoded: schema: *id133 responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html delete: tags: - Files operationId: delete_file summary: Delete file description: |- Remove the specified file. Unlike most other DELETE endpoints, using this endpoint will result in comprehensive, irretrievable destruction of the file. It should be used with the `replace` parameter set to true in cases where the file preview also needs to be destroyed (such as to remove files that violate privacy laws). parameters: - name: id in: path schema: type: string required: true description: ID - name: replace in: query schema: type: boolean required: false description: |- This action is irreversible. If replace is set to true the file contents will be replaced with a generic "file has been removed" file. This also destroys any previews that have been generated for the file. Must have manage files and become other users permissions responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/files/{id}: get: tags: - Files operationId: get_file_courses summary: Get file description: Returns the standard attachment json object parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: replacement_chain_context_type in: query schema: type: string required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Must be set to 'course' or 'account'. The "replacement_chain_context_id" parameter must also be included. - name: replacement_chain_context_id in: query schema: type: integer format: int64 required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Indicates the context ID Canvas should use when following the "replacement chain." The "replacement_chain_context_type" parameter must also be included. responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/files/{id}: get: tags: - Files operationId: get_file_groups summary: Get file description: Returns the standard attachment json object parameters: - name: group_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: replacement_chain_context_type in: query schema: type: string required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Must be set to 'course' or 'account'. The "replacement_chain_context_id" parameter must also be included. - name: replacement_chain_context_id in: query schema: type: integer format: int64 required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Indicates the context ID Canvas should use when following the "replacement chain." The "replacement_chain_context_type" parameter must also be included. responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/users/{user_id}/files/{id}: get: tags: - Files operationId: get_file_users summary: Get file description: Returns the standard attachment json object parameters: - name: user_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - user required: false description: |- Array of additional information to include. "user":: the user who uploaded the file or last edited its content "usage_rights":: copyright and license information for the file (see UsageRights) - name: replacement_chain_context_type in: query schema: type: string required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Must be set to 'course' or 'account'. The "replacement_chain_context_id" parameter must also be included. - name: replacement_chain_context_id in: query schema: type: integer format: int64 required: false description: |- [DEPRECATED] When a user replaces a file during upload, Canvas keeps track of the "replacement chain." Include this parameter if you wish Canvas to follow the replacement chain if the requested file was deleted and replaced by another. Indicates the context ID Canvas should use when following the "replacement chain." The "replacement_chain_context_type" parameter must also be included. responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/files/file_ref/{migration_id}: get: tags: - Files operationId: translate_file_reference summary: Translate file reference description: Get information about a file from a course copy file reference parameters: - name: course_id in: path schema: type: string required: true description: ID - name: migration_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/files/{id}/icon_metadata: get: tags: - Files operationId: get_icon_metadata summary: Get icon metadata description: Returns the icon maker file attachment metadata parameters: - 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/files.html /v1/files/{id}/reset_verifier: post: tags: - Files operationId: reset_link_verifier summary: Reset link verifier description: |- Resets the link verifier. Any existing links to the file using the previous hard-coded "verifier" parameter will no longer automatically grant access. Must have manage files and become other users permissions parameters: - name: id in: path schema: type: string required: true description: ID deprecated: true responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/files/update_word_count: post: tags: - Files operationId: update_word_count summary: Update word count description: |- Update the word count for a submission's attachment. This endpoint is designed to be called by external document viewers (like DocViewer) to report word counts back to Canvas. requestBody: required: false content: application/json: schema: &id134 type: object properties: attachment_jwt: type: string description: JWT token containing the id of the attachment word_count: type: integer format: int64 description: The word count to set on the attachment. required: - attachment_jwt - word_count application/x-www-form-urlencoded: schema: *id134 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/folders/{id}/folders: get: tags: - Files operationId: list_folders summary: List folders description: Returns the paginated list of folders in the folder. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/folders: get: tags: - Files operationId: list_all_folders_courses summary: List all folders description: |- Returns the paginated list of all folders for the given context. This will be returned as a flat list containing all subfolders as well. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html post: tags: - Files operationId: create_folder_courses summary: Create folder description: Creates a folder in the specified context parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id135 type: object properties: name: type: string description: The name of the folder parent_folder_id: type: string description: The id of the folder to store the new folder in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used. parent_folder_path: type: string description: The path of the folder to store the new folder in. The path separator is the forward slash `/`, never a back slash. The parent folder will be created if it does not already exist. This parameter only applies to new folders in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used. lock_at: type: string format: date-time description: The datetime to lock the folder at unlock_at: type: string format: date-time description: The datetime to unlock the folder at locked: type: boolean description: Flag the folder as locked hidden: type: boolean description: Flag the folder as hidden position: type: integer format: int64 description: Set an explicit sort position for the folder required: - name application/x-www-form-urlencoded: schema: *id135 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/users/{user_id}/folders: get: tags: - Files operationId: list_all_folders_users summary: List all folders description: |- Returns the paginated list of all folders for the given context. This will be returned as a flat list containing all subfolders as well. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html post: tags: - Files operationId: create_folder_users summary: Create folder description: Creates a folder in the specified context parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id136 type: object properties: name: type: string description: The name of the folder parent_folder_id: type: string description: The id of the folder to store the new folder in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used. parent_folder_path: type: string description: The path of the folder to store the new folder in. The path separator is the forward slash `/`, never a back slash. The parent folder will be created if it does not already exist. This parameter only applies to new folders in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used. lock_at: type: string format: date-time description: The datetime to lock the folder at unlock_at: type: string format: date-time description: The datetime to unlock the folder at locked: type: boolean description: Flag the folder as locked hidden: type: boolean description: Flag the folder as hidden position: type: integer format: int64 description: Set an explicit sort position for the folder required: - name application/x-www-form-urlencoded: schema: *id136 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/folders: get: tags: - Files operationId: list_all_folders_groups summary: List all folders description: |- Returns the paginated list of all folders for the given context. This will be returned as a flat list containing all subfolders as well. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html post: tags: - Files operationId: create_folder_groups summary: Create folder description: Creates a folder in the specified context parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id137 type: object properties: name: type: string description: The name of the folder parent_folder_id: type: string description: The id of the folder to store the new folder in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used. parent_folder_path: type: string description: The path of the folder to store the new folder in. The path separator is the forward slash `/`, never a back slash. The parent folder will be created if it does not already exist. This parameter only applies to new folders in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used. lock_at: type: string format: date-time description: The datetime to lock the folder at unlock_at: type: string format: date-time description: The datetime to unlock the folder at locked: type: boolean description: Flag the folder as locked hidden: type: boolean description: Flag the folder as hidden position: type: integer format: int64 description: Set an explicit sort position for the folder required: - name application/x-www-form-urlencoded: schema: *id137 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/folders/by_path/*full_path: get: tags: - Files operationId: resolve_path_courses_full_path summary: Resolve path description: |- Given the full path to a folder, returns a list of all Folders in the path hierarchy, starting at the root folder, and ending at the requested folder. The given path is relative to the context's root folder and does not include the root folder's name (e.g., "course files"). If an empty path is given, the context's root folder alone is returned. Otherwise, if no folder exists with the given full path, a Not Found error is returned. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/folders/by_path: get: tags: - Files operationId: resolve_path_courses summary: Resolve path description: |- Given the full path to a folder, returns a list of all Folders in the path hierarchy, starting at the root folder, and ending at the requested folder. The given path is relative to the context's root folder and does not include the root folder's name (e.g., "course files"). If an empty path is given, the context's root folder alone is returned. Otherwise, if no folder exists with the given full path, a Not Found error is returned. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/users/{user_id}/folders/by_path/*full_path: get: tags: - Files operationId: resolve_path_users_full_path summary: Resolve path description: |- Given the full path to a folder, returns a list of all Folders in the path hierarchy, starting at the root folder, and ending at the requested folder. The given path is relative to the context's root folder and does not include the root folder's name (e.g., "course files"). If an empty path is given, the context's root folder alone is returned. Otherwise, if no folder exists with the given full path, a Not Found error is returned. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/users/{user_id}/folders/by_path: get: tags: - Files operationId: resolve_path_users summary: Resolve path description: |- Given the full path to a folder, returns a list of all Folders in the path hierarchy, starting at the root folder, and ending at the requested folder. The given path is relative to the context's root folder and does not include the root folder's name (e.g., "course files"). If an empty path is given, the context's root folder alone is returned. Otherwise, if no folder exists with the given full path, a Not Found error is returned. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/folders/by_path/*full_path: get: tags: - Files operationId: resolve_path_groups_full_path summary: Resolve path description: |- Given the full path to a folder, returns a list of all Folders in the path hierarchy, starting at the root folder, and ending at the requested folder. The given path is relative to the context's root folder and does not include the root folder's name (e.g., "course files"). If an empty path is given, the context's root folder alone is returned. Otherwise, if no folder exists with the given full path, a Not Found error is returned. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/folders/by_path: get: tags: - Files operationId: resolve_path_groups summary: Resolve path description: |- Given the full path to a folder, returns a list of all Folders in the path hierarchy, starting at the root folder, and ending at the requested folder. The given path is relative to the context's root folder and does not include the root folder's name (e.g., "course files"). If an empty path is given, the context's root folder alone is returned. Otherwise, if no folder exists with the given full path, a Not Found error is returned. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/folders/{id}: get: tags: - Files operationId: get_folder_courses summary: Get folder description: |- Returns the details for a folder You can get the root folder from a context by using 'root' as the :id. For example, you could get the root folder for a course like: parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/users/{user_id}/folders/{id}: get: tags: - Files operationId: get_folder_users summary: Get folder description: |- Returns the details for a folder You can get the root folder from a context by using 'root' as the :id. For example, you could get the root folder for a course like: 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 content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/folders/{id}: get: tags: - Files operationId: get_folder_groups summary: Get folder description: |- Returns the details for a folder You can get the root folder from a context by using 'root' as the :id. For example, you could get the root folder for a course like: parameters: - name: group_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 content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/folders/{id}: get: tags: - Files operationId: get_folder_folders summary: Get folder description: |- Returns the details for a folder You can get the root folder from a context by using 'root' as the :id. For example, you could get the root folder for a course like: parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html put: tags: - Files operationId: update_folder summary: Update folder description: Updates a folder parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id138 type: object properties: name: type: string description: The new name of the folder parent_folder_id: type: string description: The id of the folder to move this folder into. The new folder must be in the same context as the original parent folder. lock_at: type: string format: date-time description: The datetime to lock the folder at unlock_at: type: string format: date-time description: The datetime to unlock the folder at locked: type: boolean description: Flag the folder as locked hidden: type: boolean description: Flag the folder as hidden position: type: integer format: int64 description: Set an explicit sort position for the folder application/x-www-form-urlencoded: schema: *id138 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html delete: tags: - Files operationId: delete_folder summary: Delete folder description: |- Remove the specified folder. You can only delete empty folders unless you set the 'force' flag parameters: - name: id in: path schema: type: string required: true description: ID - name: force in: query schema: type: boolean required: false description: Set to 'true' to allow deleting a non-empty folder responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/folders/{folder_id}/folders: post: tags: - Files operationId: create_folder_folders summary: Create folder description: Creates a folder in the specified context parameters: - name: folder_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id139 type: object properties: name: type: string description: The name of the folder parent_folder_id: type: string description: The id of the folder to store the new folder in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used. parent_folder_path: type: string description: The path of the folder to store the new folder in. The path separator is the forward slash `/`, never a back slash. The parent folder will be created if it does not already exist. This parameter only applies to new folders in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used. lock_at: type: string format: date-time description: The datetime to lock the folder at unlock_at: type: string format: date-time description: The datetime to unlock the folder at locked: type: boolean description: Flag the folder as locked hidden: type: boolean description: Flag the folder as hidden position: type: integer format: int64 description: Set an explicit sort position for the folder required: - name application/x-www-form-urlencoded: schema: *id139 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/accounts/{account_id}/folders: post: tags: - Files operationId: create_folder_accounts summary: Create folder description: Creates a folder in the specified context parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id140 type: object properties: name: type: string description: The name of the folder parent_folder_id: type: string description: The id of the folder to store the new folder in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used. parent_folder_path: type: string description: The path of the folder to store the new folder in. The path separator is the forward slash `/`, never a back slash. The parent folder will be created if it does not already exist. This parameter only applies to new folders in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used. lock_at: type: string format: date-time description: The datetime to lock the folder at unlock_at: type: string format: date-time description: The datetime to unlock the folder at locked: type: boolean description: Flag the folder as locked hidden: type: boolean description: Flag the folder as hidden position: type: integer format: int64 description: Set an explicit sort position for the folder required: - name application/x-www-form-urlencoded: schema: *id140 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/folders/{folder_id}/files: post: tags: - Files operationId: upload_file_files summary: Upload a file description: |- Upload a file to a folder. This API endpoint is the first step in uploading a file. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. Only those with the "Manage Files" permission on a course or group can upload files to a folder in that course or group. parameters: - name: folder_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/files.html /v1/folders/{dest_folder_id}/copy_file: post: tags: - Files operationId: copy_file summary: Copy a file description: |- Copy a file from elsewhere in Canvas into a folder. Copying a file across contexts (between courses and users) is permitted, but the source and destination must belong to the same institution. parameters: - name: dest_folder_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id141 type: object properties: source_file_id: type: string description: The id of the source file on_duplicate: type: string enum: - overwrite - rename description: |- What to do if a file with the same name already exists at the destination. If such a file exists and this parameter is not given, the call will fail. "overwrite":: Replace an existing file with the same name "rename":: Add a qualifier to make the new filename unique required: - source_file_id application/x-www-form-urlencoded: schema: *id141 responses: '200': description: Success content: application/json: schema: type: string format: binary externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/folders/{dest_folder_id}/copy_folder: post: tags: - Files operationId: copy_folder summary: Copy a folder description: |- Copy a folder (and its contents) from elsewhere in Canvas into a folder. Copying a folder across contexts (between courses and users) is permitted, but the source and destination must belong to the same institution. If the source and destination folders are in the same context, the source folder may not contain the destination folder. A folder will be renamed at its destination if another folder with the same name already exists. parameters: - name: dest_folder_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id142 type: object properties: source_folder_id: type: string description: The id of the source folder required: - source_folder_id application/x-www-form-urlencoded: schema: *id142 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/folders/media: get: tags: - Files operationId: get_uploaded_media_folder_for_user_courses summary: Get uploaded media folder for user description: |- Returns the details for a designated upload folder that the user has rights to upload to, and creates it if it doesn't exist. If the current user does not have the permissions to manage files in the course or group, the folder will belong to the current user directly. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/folders/media: get: tags: - Files operationId: get_uploaded_media_folder_for_user_groups summary: Get uploaded media folder for user description: |- Returns the details for a designated upload folder that the user has rights to upload to, and creates it if it doesn't exist. If the current user does not have the permissions to manage files in the course or group, the folder will belong to the current user directly. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Folder' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/usage_rights: put: tags: - Files operationId: set_usage_rights_courses summary: Set usage rights description: Sets copyright and license information for one or more files parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id143 type: object properties: file_ids: type: array items: type: string description: List of ids of files to set usage rights for. folder_ids: type: array items: type: string description: |- List of ids of folders to search for files to set usage rights for. Note that new files uploaded to these folders do not automatically inherit these rights. publish: type: boolean description: Whether the file(s) or folder(s) should be published on save, provided that usage rights have been specified (set to `true` to publish on save). usage_rights[use_justification]: type: string enum: - own_copyright - used_by_permission - fair_use - public_domain - creative_commons description: The intellectual property justification for using the files in Canvas usage_rights[legal_copyright]: type: string description: The legal copyright line for the files usage_rights[license]: type: string description: The license that applies to the files. See the {api:UsageRightsController#licenses List licenses endpoint} for the supported license types. required: - file_ids - usage_rights[use_justification] application/x-www-form-urlencoded: schema: *id143 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UsageRights' externalDocs: url: https://canvas.instructure.com/doc/api/files.html delete: tags: - Files operationId: remove_usage_rights_courses summary: Remove usage rights description: Removes copyright and license information associated with one or more files parameters: - name: course_id in: path schema: type: string required: true description: ID - name: file_ids in: query schema: type: array items: type: string required: true description: List of ids of files to remove associated usage rights from. - name: folder_ids in: query schema: type: array items: type: string required: false description: List of ids of folders. Usage rights will be removed from all files in these folders. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/usage_rights: put: tags: - Files operationId: set_usage_rights_groups summary: Set usage rights description: Sets copyright and license information for one or more files parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id144 type: object properties: file_ids: type: array items: type: string description: List of ids of files to set usage rights for. folder_ids: type: array items: type: string description: |- List of ids of folders to search for files to set usage rights for. Note that new files uploaded to these folders do not automatically inherit these rights. publish: type: boolean description: Whether the file(s) or folder(s) should be published on save, provided that usage rights have been specified (set to `true` to publish on save). usage_rights[use_justification]: type: string enum: - own_copyright - used_by_permission - fair_use - public_domain - creative_commons description: The intellectual property justification for using the files in Canvas usage_rights[legal_copyright]: type: string description: The legal copyright line for the files usage_rights[license]: type: string description: The license that applies to the files. See the {api:UsageRightsController#licenses List licenses endpoint} for the supported license types. required: - file_ids - usage_rights[use_justification] application/x-www-form-urlencoded: schema: *id144 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UsageRights' externalDocs: url: https://canvas.instructure.com/doc/api/files.html delete: tags: - Files operationId: remove_usage_rights_groups summary: Remove usage rights description: Removes copyright and license information associated with one or more files parameters: - name: group_id in: path schema: type: string required: true description: ID - name: file_ids in: query schema: type: array items: type: string required: true description: List of ids of files to remove associated usage rights from. - name: folder_ids in: query schema: type: array items: type: string required: false description: List of ids of folders. Usage rights will be removed from all files in these folders. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/users/{user_id}/usage_rights: put: tags: - Files operationId: set_usage_rights_users summary: Set usage rights description: Sets copyright and license information for one or more files parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id145 type: object properties: file_ids: type: array items: type: string description: List of ids of files to set usage rights for. folder_ids: type: array items: type: string description: |- List of ids of folders to search for files to set usage rights for. Note that new files uploaded to these folders do not automatically inherit these rights. publish: type: boolean description: Whether the file(s) or folder(s) should be published on save, provided that usage rights have been specified (set to `true` to publish on save). usage_rights[use_justification]: type: string enum: - own_copyright - used_by_permission - fair_use - public_domain - creative_commons description: The intellectual property justification for using the files in Canvas usage_rights[legal_copyright]: type: string description: The legal copyright line for the files usage_rights[license]: type: string description: The license that applies to the files. See the {api:UsageRightsController#licenses List licenses endpoint} for the supported license types. required: - file_ids - usage_rights[use_justification] application/x-www-form-urlencoded: schema: *id145 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UsageRights' externalDocs: url: https://canvas.instructure.com/doc/api/files.html delete: tags: - Files operationId: remove_usage_rights_users summary: Remove usage rights description: Removes copyright and license information associated with one or more files parameters: - name: user_id in: path schema: type: string required: true description: ID - name: file_ids in: query schema: type: array items: type: string required: true description: List of ids of files to remove associated usage rights from. - name: folder_ids in: query schema: type: array items: type: string required: false description: List of ids of folders. Usage rights will be removed from all files in these folders. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/courses/{course_id}/content_licenses: get: tags: - Files operationId: list_licenses_courses summary: List licenses description: A paginated list of licenses that can be applied parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/License' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/groups/{group_id}/content_licenses: get: tags: - Files operationId: list_licenses_groups summary: List licenses description: A paginated list of licenses that can be applied parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/License' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/users/{user_id}/content_licenses: get: tags: - Files operationId: list_licenses_users summary: List licenses description: A paginated list of licenses that can be applied parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/License' externalDocs: url: https://canvas.instructure.com/doc/api/files.html /v1/audit/grade_change/assignments/{assignment_id}: get: tags: - Grade Change Log operationId: query_by_assignment summary: Query by assignment description: List grade change events for a given assignment. parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want events. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GradeChangeEvent' externalDocs: url: https://canvas.instructure.com/doc/api/grade_change_log.html /v1/audit/grade_change/courses/{course_id}: get: tags: - Grade Change Log operationId: query_by_course_grade_change_log summary: Query by course description: List grade change events for a given course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want events. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GradeChangeEvent' externalDocs: url: https://canvas.instructure.com/doc/api/grade_change_log.html /v1/audit/grade_change/students/{student_id}: get: tags: - Grade Change Log operationId: query_by_student summary: Query by student description: List grade change events for a given student. parameters: - name: student_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want events. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GradeChangeEvent' externalDocs: url: https://canvas.instructure.com/doc/api/grade_change_log.html /v1/audit/grade_change/graders/{grader_id}: get: tags: - Grade Change Log operationId: query_by_grader summary: Query by grader description: List grade change events for a given grader. parameters: - name: grader_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want events. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GradeChangeEvent' externalDocs: url: https://canvas.instructure.com/doc/api/grade_change_log.html /v1/audit/grade_change: get: tags: - Grade Change Log operationId: advanced_query summary: Advanced query description: |- List grade change events satisfying all given parameters. Teachers may query for events in courses they teach. Queries without +course_id+ or +assignment_id+ require account administrator rights. At least one of +course_id+, +assignment_id+, +student_id+, or +grader_id+ must be specified. parameters: - name: course_id in: query schema: type: integer format: int64 required: false description: Restrict query to events in the specified course. - name: assignment_id in: query schema: type: integer format: int64 required: false description: Restrict query to the given assignment. If "override" is given, query the course final grade override instead. - name: student_id in: query schema: type: integer format: int64 required: false description: User id of a student to search grading events for. - name: grader_id in: query schema: type: integer format: int64 required: false description: User id of a grader to search grading events for. - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want events. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want events. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GradeChangeEvent' externalDocs: url: https://canvas.instructure.com/doc/api/grade_change_log.html /v1/courses/{course_id}/gradebook_history/days: get: tags: - Gradebook History operationId: days_in_gradebook_history_for_this_course summary: Days in gradebook history for this course description: Returns a map of dates to grader/assignment groups parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the contextual course for this API call responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Day' externalDocs: url: https://canvas.instructure.com/doc/api/gradebook_history.html /v1/courses/{course_id}/gradebook_history/{date}: get: tags: - Gradebook History operationId: details_for_given_date_in_gradebook_history_for_this_course summary: Details for a given date in gradebook history for this course description: |- Returns the graders who worked on this day, along with the assignments they worked on. More details can be obtained by selecting a grader and assignment and calling the 'submissions' api endpoint for a given date. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the contextual course for this API call - name: date in: path schema: type: string required: true description: The date for which you would like to see detailed information responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Grader' externalDocs: url: https://canvas.instructure.com/doc/api/gradebook_history.html /v1/courses/{course_id}/gradebook_history/{date}/graders/{grader_id}/assignments/{assignment_id}/submissions: get: tags: - Gradebook History operationId: lists_submissions summary: Lists submissions description: Gives a nested list of submission versions parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the contextual course for this API call - name: date in: path schema: type: string required: true description: The date for which you would like to see submissions - name: grader_id in: path schema: type: integer format: int64 required: true description: The ID of the grader for which you want to see submissions - name: assignment_id in: path schema: type: integer format: int64 required: true description: The ID of the assignment for which you want to see submissions responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/SubmissionHistory' externalDocs: url: https://canvas.instructure.com/doc/api/gradebook_history.html /v1/courses/{course_id}/gradebook_history/feed: get: tags: - Gradebook History operationId: list_uncollated_submission_versions summary: List uncollated submission versions description: |- Gives a paginated, uncollated list of submission versions for all matching submissions in the context. This SubmissionVersion objects will not include the +new_grade+ or +previous_grade+ keys, only the +grade+; same for +graded_at+ and +grader+. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the contextual course for this API call - name: assignment_id in: query schema: type: integer format: int64 required: false description: |- The ID of the assignment for which you want to see submissions. If absent, versions of submissions from any assignment in the course are included. - name: user_id in: query schema: type: integer format: int64 required: false description: |- The ID of the user for which you want to see submissions. If absent, versions of submissions from any user in the course are included. - name: ascending in: query schema: type: boolean required: false description: |- Returns submission versions in ascending date order (oldest first). If absent, returns submission versions in descending date order (newest first). responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/SubmissionVersion' externalDocs: url: https://canvas.instructure.com/doc/api/gradebook_history.html /v1/accounts/{account_id}/grading_period_sets: get: tags: - Grading Period Sets operationId: list_grading_period_sets summary: List grading period sets description: Returns the paginated list of grading period sets parameters: - name: account_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/grading_period_sets.html post: tags: - Grading Period Sets operationId: create_grading_period_set summary: Create a grading period set description: Create and return a new grading period set parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id146 type: object properties: enrollment_term_ids: type: array items: type: array items: {} description: A list of associated term ids for the grading period set grading_period_set[title]: type: string description: The title of the grading period set grading_period_set[weighted]: type: boolean description: A boolean to determine whether the grading periods in the set are weighted grading_period_set[display_totals_for_all_grading_periods]: type: boolean description: A boolean to determine whether the totals for all grading periods in the set are displayed required: - grading_period_set[title] application/x-www-form-urlencoded: schema: *id146 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/grading_period_sets.html /v1/accounts/{account_id}/grading_period_sets/{id}: patch: tags: - Grading Period Sets operationId: update_grading_period_set summary: Update a grading period set description: |- Update an existing grading period set 204 No Content response code is returned if the update was successful. parameters: - name: account_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: &id147 type: object properties: enrollment_term_ids: type: array items: type: array items: {} description: A list of associated term ids for the grading period set grading_period_set[title]: type: array items: type: string description: The title of the grading period set grading_period_set[weighted]: type: array items: type: boolean description: A boolean to determine whether the grading periods in the set are weighted grading_period_set[display_totals_for_all_grading_periods]: type: array items: type: boolean description: A boolean to determine whether the totals for all grading periods in the set are displayed required: - grading_period_set[title] application/x-www-form-urlencoded: schema: *id147 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/grading_period_sets.html delete: tags: - Grading Period Sets operationId: delete_grading_period_set summary: Delete a grading period set description: |- 204 No Content response code is returned if the deletion was successful. parameters: - name: account_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/grading_period_sets.html /v1/accounts/{account_id}/grading_periods: get: tags: - Grading Periods operationId: list_grading_periods_accounts summary: List grading periods description: Returns the paginated list of grading periods for the current course. parameters: - name: account_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/grading_periods.html /v1/courses/{course_id}/grading_periods: get: tags: - Grading Periods operationId: list_grading_periods_courses summary: List grading periods description: Returns the paginated list of grading periods for the current course. parameters: - name: course_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/grading_periods.html /v1/courses/{course_id}/grading_periods/{id}: get: tags: - Grading Periods operationId: get_single_grading_period summary: Get a single grading period description: Returns the grading period with the given id parameters: - name: course_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/grading_periods.html put: tags: - Grading Periods operationId: update_single_grading_period summary: Update a single grading period description: Update an existing grading period. parameters: - name: course_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: &id148 type: object properties: grading_periods[start_date]: type: array items: type: string format: date description: The date the grading period starts. grading_periods[end_date]: type: array items: type: string format: date description: no description grading_periods[weight]: type: array items: type: number description: A weight value that contributes to the overall weight of a grading period set which is used to calculate how much assignments in this period contribute to the total grade required: - grading_periods[start_date] - grading_periods[end_date] application/x-www-form-urlencoded: schema: *id148 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/grading_periods.html delete: tags: - Grading Periods operationId: delete_grading_period_courses summary: Delete a grading period description: |- 204 No Content response code is returned if the deletion was successful. parameters: - name: course_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/grading_periods.html /v1/accounts/{account_id}/grading_periods/{id}: delete: tags: - Grading Periods operationId: delete_grading_period_accounts summary: Delete a grading period description: |- 204 No Content response code is returned if the deletion was successful. parameters: - name: account_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/grading_periods.html /v1/courses/{course_id}/grading_periods/batch_update: patch: tags: - Grading Periods operationId: batch_update_grading_periods_courses summary: Batch update grading periods description: Update multiple grading periods parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id149 type: object properties: set_id: type: string description: The id of the grading period set. grading_periods[id]: type: array items: type: string description: The id of the grading period. If the id parameter does not exist, a new grading period will be created. grading_periods[title]: type: array items: type: string description: |- The title of the grading period. The title is required for creating a new grading period, but not for updating an existing grading period. grading_periods[start_date]: type: array items: type: string format: date description: |- The date the grading period starts. The start_date is required for creating a new grading period, but not for updating an existing grading period. grading_periods[end_date]: type: array items: type: string format: date description: |- The date the grading period ends. The end_date is required for creating a new grading period, but not for updating an existing grading period. grading_periods[close_date]: type: array items: type: string format: date description: |- The date after which grades can no longer be changed for a grading period. The close_date is required for creating a new grading period, but not for updating an existing grading period. grading_periods[weight]: type: array items: type: number description: A weight value that contributes to the overall weight of a grading period set which is used to calculate how much assignments in this period contribute to the total grade required: - set_id - grading_periods[title] - grading_periods[start_date] - grading_periods[end_date] - grading_periods[close_date] application/x-www-form-urlencoded: schema: *id149 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/grading_periods.html /v1/grading_period_sets/{set_id}/grading_periods/batch_update: patch: tags: - Grading Periods operationId: batch_update_grading_periods_grading_period_sets summary: Batch update grading periods description: Update multiple grading periods parameters: - name: set_id in: path schema: type: string required: true description: The id of the grading period set. requestBody: required: false content: application/json: schema: &id150 type: object properties: grading_periods[id]: type: array items: type: string description: The id of the grading period. If the id parameter does not exist, a new grading period will be created. grading_periods[title]: type: array items: type: string description: |- The title of the grading period. The title is required for creating a new grading period, but not for updating an existing grading period. grading_periods[start_date]: type: array items: type: string format: date description: |- The date the grading period starts. The start_date is required for creating a new grading period, but not for updating an existing grading period. grading_periods[end_date]: type: array items: type: string format: date description: |- The date the grading period ends. The end_date is required for creating a new grading period, but not for updating an existing grading period. grading_periods[close_date]: type: array items: type: string format: date description: |- The date after which grades can no longer be changed for a grading period. The close_date is required for creating a new grading period, but not for updating an existing grading period. grading_periods[weight]: type: array items: type: number description: A weight value that contributes to the overall weight of a grading period set which is used to calculate how much assignments in this period contribute to the total grade required: - grading_periods[title] - grading_periods[start_date] - grading_periods[end_date] - grading_periods[close_date] application/x-www-form-urlencoded: schema: *id150 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/grading_periods.html /v1/accounts/{account_id}/grading_standards: post: tags: - Grading Standards operationId: create_new_grading_standard_accounts summary: Create a new grading standard description: Create a new grading standard parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id151 type: object properties: title: type: string description: The title for the Grading Standard. points_based: type: boolean description: |- Whether or not a grading scheme is points based. Defaults to false. scaling_factor: type: integer format: int64 description: |- The factor by which to scale a percentage into a points based scheme grade. This is the maximum number of points possible in the grading scheme. Defaults to 1. Not required for percentage based grading schemes. grading_scheme_entry[name]: type: array items: type: string description: |- The name for an entry value within a GradingStandard that describes the range of the value e.g. A- grading_scheme_entry[value]: type: array items: type: integer description: |- The value for the name of the entry within a GradingStandard. The entry represents the lower bound of the range for the entry. This range includes the value up to the next entry in the GradingStandard, or 100 if there is no upper bound. The lowest value will have a lower bound range of 0. e.g. 93 required: - title - grading_scheme_entry[name] - grading_scheme_entry[value] application/x-www-form-urlencoded: schema: *id151 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html get: tags: - Grading Standards operationId: list_grading_standards_available_in_context_accounts summary: List the grading standards available in a context. description: Returns the paginated list of grading standards for the given context that are visible to the user. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html /v1/courses/{course_id}/grading_standards: post: tags: - Grading Standards operationId: create_new_grading_standard_courses summary: Create a new grading standard description: Create a new grading standard parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id152 type: object properties: title: type: string description: The title for the Grading Standard. points_based: type: boolean description: |- Whether or not a grading scheme is points based. Defaults to false. scaling_factor: type: integer format: int64 description: |- The factor by which to scale a percentage into a points based scheme grade. This is the maximum number of points possible in the grading scheme. Defaults to 1. Not required for percentage based grading schemes. grading_scheme_entry[name]: type: array items: type: string description: |- The name for an entry value within a GradingStandard that describes the range of the value e.g. A- grading_scheme_entry[value]: type: array items: type: integer description: |- The value for the name of the entry within a GradingStandard. The entry represents the lower bound of the range for the entry. This range includes the value up to the next entry in the GradingStandard, or 100 if there is no upper bound. The lowest value will have a lower bound range of 0. e.g. 93 required: - title - grading_scheme_entry[name] - grading_scheme_entry[value] application/x-www-form-urlencoded: schema: *id152 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html get: tags: - Grading Standards operationId: list_grading_standards_available_in_context_courses summary: List the grading standards available in a context. description: Returns the paginated list of grading standards for the given context that are visible to the user. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html /v1/courses/{course_id}/grading_standards/{grading_standard_id}: get: tags: - Grading Standards operationId: get_single_grading_standard_in_context_courses summary: Get a single grading standard in a context. description: Returns a grading standard for the given context that is visible to the user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: grading_standard_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html put: tags: - Grading Standards operationId: update_grading_standard_courses summary: Update a grading standard description: |- Updates the grading standard with the given id If the grading standard has been used for grading, only the title can be updated. The data, points_based, and scaling_factor cannot be modified once the grading standard has been used to grade assignments. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: grading_standard_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id153 type: object properties: title: type: string description: The title for the Grading Standard points_based: type: boolean description: |- Whether or not a grading scheme is points based. Defaults to false. scaling_factor: type: integer format: int64 description: |- The factor by which to scale a percentage into a points based scheme grade. This is the maximum number of points possible in the grading scheme. Defaults to 1. Not required for percentage based grading schemes. grading_scheme_entry[name]: type: array items: type: string description: |- The name for an entry value within a GradingStandard that describes the range of the value e.g. A- grading_scheme_entry[value]: type: array items: type: integer description: |- The value for the name of the entry within a GradingStandard. The entry represents the lower bound of the range for the entry. This range includes the value up to the next entry in the GradingStandard, or 100 if there is no upper bound. The lowest value will have a lower bound range of 0. e.g. 93 required: - grading_scheme_entry[value] application/x-www-form-urlencoded: schema: *id153 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html delete: tags: - Grading Standards operationId: delete_grading_standard_courses summary: Delete a grading standard description: Deletes the grading standard with the given id parameters: - name: course_id in: path schema: type: string required: true description: ID - name: grading_standard_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html /v1/accounts/{account_id}/grading_standards/{grading_standard_id}: get: tags: - Grading Standards operationId: get_single_grading_standard_in_context_accounts summary: Get a single grading standard in a context. description: Returns a grading standard for the given context that is visible to the user. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: grading_standard_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html put: tags: - Grading Standards operationId: update_grading_standard_accounts summary: Update a grading standard description: |- Updates the grading standard with the given id If the grading standard has been used for grading, only the title can be updated. The data, points_based, and scaling_factor cannot be modified once the grading standard has been used to grade assignments. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: grading_standard_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id154 type: object properties: title: type: string description: The title for the Grading Standard points_based: type: boolean description: |- Whether or not a grading scheme is points based. Defaults to false. scaling_factor: type: integer format: int64 description: |- The factor by which to scale a percentage into a points based scheme grade. This is the maximum number of points possible in the grading scheme. Defaults to 1. Not required for percentage based grading schemes. grading_scheme_entry[name]: type: array items: type: string description: |- The name for an entry value within a GradingStandard that describes the range of the value e.g. A- grading_scheme_entry[value]: type: array items: type: integer description: |- The value for the name of the entry within a GradingStandard. The entry represents the lower bound of the range for the entry. This range includes the value up to the next entry in the GradingStandard, or 100 if there is no upper bound. The lowest value will have a lower bound range of 0. e.g. 93 required: - grading_scheme_entry[value] application/x-www-form-urlencoded: schema: *id154 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html delete: tags: - Grading Standards operationId: delete_grading_standard_accounts summary: Delete a grading standard description: Deletes the grading standard with the given id parameters: - name: account_id in: path schema: type: string required: true description: ID - name: grading_standard_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GradingStandard' externalDocs: url: https://canvas.instructure.com/doc/api/grading_standards.html /v1/accounts/{account_id}/group_categories: get: tags: - Group Categories operationId: list_group_categories_for_context_accounts summary: List group categories for a context description: |- Returns a paginated list of group categories in a context. The list returned depends on the permissions of the current user and the specified collaboration state. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: collaboration_state in: query schema: type: string required: false description: |- Filter group categories by their collaboration state: - "all": Return both collaborative and non-collaborative group categories - "collaborative": Return only collaborative group categories (default) - "non_collaborative": Return only non-collaborative group categories responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupCategory' externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html post: tags: - Group Categories operationId: create_group_category_accounts summary: Create a Group Category description: Create a new group category parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id155 type: object properties: name: type: string description: Name of the group category non_collaborative: type: boolean description: |- Can only be set by users with the Differentiation Tag - Add permission If set to true, groups in this category will be only be visible to users with the Differentiation Tag - Manage permission. self_signup: type: string enum: - enabled - restricted description: |- Allow students to sign up for a group themselves (Course Only). valid values are: "enabled":: allows students to self sign up for any group in course "restricted":: allows students to self sign up only for groups in the same section null disallows self sign up auto_leader: type: string enum: - first - random description: |- Assigns group leaders automatically when generating and allocating students to groups Valid values are: "first":: the first student to be allocated to a group is the leader "random":: a random student from all members is chosen as the leader group_limit: type: integer format: int64 description: |- Limit the maximum number of users in each group (Course Only). Requires self signup. sis_group_category_id: type: string description: The unique SIS identifier. create_group_count: type: integer format: int64 description: Create this number of groups (Course Only). split_group_count: type: string description: |- (Deprecated) Create this number of groups, and evenly distribute students among them. not allowed with "enable_self_signup". because the group assignment happens synchronously, it's recommended that you instead use the assign_unassigned_members endpoint. (Course Only) required: - name application/x-www-form-urlencoded: schema: *id155 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupCategory' externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/courses/{course_id}/group_categories: get: tags: - Group Categories operationId: list_group_categories_for_context_courses summary: List group categories for a context description: |- Returns a paginated list of group categories in a context. The list returned depends on the permissions of the current user and the specified collaboration state. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: collaboration_state in: query schema: type: string required: false description: |- Filter group categories by their collaboration state: - "all": Return both collaborative and non-collaborative group categories - "collaborative": Return only collaborative group categories (default) - "non_collaborative": Return only non-collaborative group categories responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupCategory' externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html post: tags: - Group Categories operationId: create_group_category_courses summary: Create a Group Category description: Create a new group category parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id156 type: object properties: name: type: string description: Name of the group category non_collaborative: type: boolean description: |- Can only be set by users with the Differentiation Tag - Add permission If set to true, groups in this category will be only be visible to users with the Differentiation Tag - Manage permission. self_signup: type: string enum: - enabled - restricted description: |- Allow students to sign up for a group themselves (Course Only). valid values are: "enabled":: allows students to self sign up for any group in course "restricted":: allows students to self sign up only for groups in the same section null disallows self sign up auto_leader: type: string enum: - first - random description: |- Assigns group leaders automatically when generating and allocating students to groups Valid values are: "first":: the first student to be allocated to a group is the leader "random":: a random student from all members is chosen as the leader group_limit: type: integer format: int64 description: |- Limit the maximum number of users in each group (Course Only). Requires self signup. sis_group_category_id: type: string description: The unique SIS identifier. create_group_count: type: integer format: int64 description: Create this number of groups (Course Only). split_group_count: type: string description: |- (Deprecated) Create this number of groups, and evenly distribute students among them. not allowed with "enable_self_signup". because the group assignment happens synchronously, it's recommended that you instead use the assign_unassigned_members endpoint. (Course Only) required: - name application/x-www-form-urlencoded: schema: *id156 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupCategory' externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/group_categories/{group_category_id}: get: tags: - Group Categories operationId: get_single_group_category summary: Get a single group category description: |- Returns the data for a single group category, or a 401 if the caller doesn't have the rights to see it. parameters: - name: group_category_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupCategory' externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html put: tags: - Group Categories operationId: update_group_category summary: Update a Group Category description: Modifies an existing group category. parameters: - name: group_category_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id157 type: object properties: name: type: string description: Name of the group category self_signup: type: string enum: - enabled - restricted description: |- Allow students to sign up for a group themselves (Course Only). Valid values are: "enabled":: allows students to self sign up for any group in course "restricted":: allows students to self sign up only for groups in the same section null disallows self sign up auto_leader: type: string enum: - first - random description: |- Assigns group leaders automatically when generating and allocating students to groups Valid values are: "first":: the first student to be allocated to a group is the leader "random":: a random student from all members is chosen as the leader group_limit: type: integer format: int64 description: |- Limit the maximum number of users in each group (Course Only). Requires self signup. sis_group_category_id: type: string description: The unique SIS identifier. create_group_count: type: integer format: int64 description: Create this number of groups (Course Only). split_group_count: type: string description: |- (Deprecated) Create this number of groups, and evenly distribute students among them. not allowed with "enable_self_signup". because the group assignment happens synchronously, it's recommended that you instead use the assign_unassigned_members endpoint. (Course Only) application/x-www-form-urlencoded: schema: *id157 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupCategory' externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html delete: tags: - Group Categories operationId: delete_group_category summary: Delete a Group Category description: |- Deletes a group category and all groups under it. Protected group categories can not be deleted, i.e. "communities" and "student_organized". parameters: - name: group_category_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/group_categories.html /v1/courses/{course_id}/group_categories/bulk_manage_differentiation_tag: post: tags: - Group Categories operationId: bulk_manage_differentiation_tags summary: Bulk manage differentiation tags description: |- This API is only meant for Groups and GroupCategories where non_collaborative is true. Perform bulk operations on groups within a group category, or create a new group category along with the groups in one transaction. If creation of the GroupCategory or any Group fails, the entire operation will be rolled back. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id158 type: object properties: operations: type: object additionalProperties: true description: |- A hash containing arrays of create/update/delete operations: { "create": [ { "name": "New Group A" }, { "name": "New Group B" } ], "update": [ { "id": 123, "name": "Updated Group Name A" }, { "id": 456, "name": "Updated Group Name B" } ], "delete": [ { "id": 789 }, { "id": 101 } ] } group_category: type: object additionalProperties: true description: |- Attributes for the GroupCategory. May include: - id [Optional, Integer]: The ID of an existing GroupCategory. - name [Optional, String]: A new name for the GroupCategory. If provided with an ID, the category name will be updated. required: - operations - group_category application/x-www-form-urlencoded: schema: *id158 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: GroupCategory and groups operation results externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/courses/{course_id}/group_categories/differentiation_tag_candidate_count: get: tags: - Group Categories operationId: get_differentiation_tag_candidate_count summary: Get differentiation tag candidate count description: |- Returns the number of students in the course eligible for a differentiation tag bulk-membership action (see Create a membership's `all_in_group_course` option), optionally narrowed by enrollment role and/or existing differentiation tag membership. The count only includes students visible to the calling user, so a section-limited teacher only sees students in their own sections. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: enrollment_role_id in: query schema: type: array items: type: integer required: false description: Only count students holding one of these enrollment role ids. - name: differentiation_tag_id in: query schema: type: array items: type: integer required: false description: Only count students who are members of one of these differentiation tags. - name: exclude_user_ids in: query schema: type: array items: type: integer required: false description: Exclude these user ids from the count. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: '{ "count": "integer" }' externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/courses/{course_id}/group_categories/import_tags: post: tags: - Group Categories operationId: import_differentiation_tags summary: Import differentiation tags description: |- Create Differentiation Tags through a CSV import For more information on the format that's expected here, please see the "Differentiation Tag CSV" section in the API docs. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id159 type: object properties: attachment: type: string description: |- There are two ways to post differentiation tag import data - either via a multipart/form-data form-field-style attachment, or via a non-multipart raw post request. 'attachment' is required for multipart/form-data style posts. Assumed to be tag data from a file upload form field named 'attachment'. Examples: curl -F attachment=@ -H "Authorization: Bearer " \ 'https:///api/v1/group_categories/import_tags' If you decide to do a raw post, you can skip the 'attachment' argument, but you will then be required to provide a suitable Content-Type header. You are encouraged to also provide the 'extension' argument. Examples: curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ 'https:///api/v1/group_categories_tags' application/x-www-form-urlencoded: schema: *id159 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/group_categories/{group_category_id}/import: post: tags: - Group Categories operationId: import_category_groups summary: Import category groups description: |- Create Groups in a Group Category through a CSV import For more information on the format that's expected here, please see the "Group Category CSV" section in the API docs. parameters: - name: group_category_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id160 type: object properties: attachment: type: string description: |- There are two ways to post group category import data - either via a multipart/form-data form-field-style attachment, or via a non-multipart raw post request. 'attachment' is required for multipart/form-data style posts. Assumed to be outcome data from a file upload form field named 'attachment'. Examples: curl -F attachment=@ -H "Authorization: Bearer " \ 'https:///api/v1/group_categories//import' If you decide to do a raw post, you can skip the 'attachment' argument, but you will then be required to provide a suitable Content-Type header. You are encouraged to also provide the 'extension' argument. Examples: curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ 'https:///api/v1/group_categories//import' application/x-www-form-urlencoded: schema: *id160 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/group_categories/{group_category_id}/groups: get: tags: - Group Categories operationId: list_groups_in_group_category summary: List groups in group category description: Returns a paginated list of groups in a group category parameters: - name: group_category_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Group externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html post: tags: - Groups operationId: create_group_group_categories summary: Create a group description: |- Creates a new group. Groups created using the "/api/v1/groups/" endpoint will be community groups. parameters: - name: group_category_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id161 type: object properties: name: type: string description: The name of the group description: type: string description: A description of the group is_public: type: boolean description: whether the group is public (applies only to community groups) join_level: type: string enum: - parent_context_auto_join - parent_context_request - invitation_only description: no description storage_quota_mb: type: integer format: int64 description: |- The allowed file storage for the group, in megabytes. This parameter is ignored if the caller does not have the manage_storage_quotas permission. sis_group_id: type: string description: The sis ID of the group. Must have manage_sis permission to set. application/x-www-form-urlencoded: schema: *id161 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/group_categories/{group_category_id}/export: get: tags: - Group Categories operationId: export_groups_in_and_users_in_category summary: export groups in and users in category description: Returns a csv file of users in format ready to import. parameters: - name: group_category_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/group_categories.html /v1/courses/{course_id}/group_categories/export_tags: get: tags: - Group Categories operationId: export_tags_and_users_in_course summary: export tags and users in course description: Returns a csv file of users in format ready to import. parameters: - name: course_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/group_categories.html /v1/group_categories/{group_category_id}/users: get: tags: - Group Categories operationId: list_users_in_group_category summary: List users in group category description: Returns a paginated list of users in the group category. parameters: - name: group_category_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: |- The partial name or full ID of the users to match and return in the results list. Must be at least 3 characters. - name: unassigned in: query schema: type: boolean required: false description: |- Set this value to true if you wish only to search unassigned users in the group category. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/group_categories/{group_category_id}/assign_unassigned_members: post: tags: - Group Categories operationId: assign_unassigned_members summary: Assign unassigned members description: |- Assign all unassigned members as evenly as possible among the existing student groups. parameters: - name: group_category_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id162 type: object properties: sync: type: boolean description: |- The assigning is done asynchronously by default. If you would like to override this and have the assigning done synchronously, set this value to true. application/x-www-form-urlencoded: schema: *id162 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: GroupMembership | Progress externalDocs: url: https://canvas.instructure.com/doc/api/group_categories.html /v1/users/self/groups: get: tags: - Groups operationId: list_your_groups summary: List your groups description: Returns a paginated list of active groups for the current user. parameters: - name: context_type in: query schema: type: string enum: - Account - Course required: false description: Only include groups that are in this type of context. - name: include in: query schema: type: array items: type: string enum: - tabs required: false description: |- - "tabs": Include the list of tabs configured for each group. See the {api:TabsController#index List available tabs API} for more information. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/accounts/{account_id}/groups: get: tags: - Groups operationId: list_groups_available_in_context_accounts summary: List the groups available in a context. description: Returns the paginated list of active groups in the given context that are visible to user. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: only_own_groups in: query schema: type: boolean required: false description: Will only include groups that the user belongs to if this is set - name: include in: query schema: type: array items: type: string enum: - tabs required: false description: |- - "tabs": Include the list of tabs configured for each group. See the {api:TabsController#index List available tabs API} for more information. - name: collaboration_state in: query schema: type: string required: false description: |- Filter groups by their collaboration state: - "all": Return both collaborative and non-collaborative groups - "collaborative": Return only collaborative groups (default) - "non_collaborative": Return only non-collaborative groups responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/courses/{course_id}/groups: get: tags: - Groups operationId: list_groups_available_in_context_courses summary: List the groups available in a context. description: Returns the paginated list of active groups in the given context that are visible to user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: only_own_groups in: query schema: type: boolean required: false description: Will only include groups that the user belongs to if this is set - name: include in: query schema: type: array items: type: string enum: - tabs required: false description: |- - "tabs": Include the list of tabs configured for each group. See the {api:TabsController#index List available tabs API} for more information. - name: collaboration_state in: query schema: type: string required: false description: |- Filter groups by their collaboration state: - "all": Return both collaborative and non-collaborative groups - "collaborative": Return only collaborative groups (default) - "non_collaborative": Return only non-collaborative groups responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/courses/{course_id}/bulk_user_tags: get: tags: - Groups operationId: bulk_fetch_user_tags_for_multiple_users_in_course summary: Bulk fetch user tags for multiple users in a course description: Returns a mapping of user IDs to arrays of non-collaborative group (tag) IDs for each user in the given course. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The ID of the course context (from the route). - name: user_ids in: query schema: type: array items: type: integer required: false description: An array of user IDs to fetch tags for. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: 'Hash A mapping of user IDs to arrays of tag (group) IDs. Example: { "35": 5, "79": 3, 4, 5 }' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups/{group_id}: get: tags: - Groups operationId: get_single_group summary: Get a single group description: |- Returns the data for a single group, or a 401 if the caller doesn't have the rights to see it. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - permissions - tabs required: false description: |- - "permissions": Include permissions the current user has for the group. - "tabs": Include the list of tabs configured for each group. See the {api:TabsController#index List available tabs API} for more information. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html put: tags: - Groups operationId: edit_group summary: Edit a group description: |- Modifies an existing group. Note that to set an avatar image for the group, you must first upload the image file to the group, and the use the id in the response as the argument to this function. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id163 type: object properties: name: type: string description: The name of the group description: type: string description: A description of the group is_public: type: boolean description: |- Whether the group is public (applies only to community groups). Currently you cannot set a group back to private once it has been made public. join_level: type: string enum: - parent_context_auto_join - parent_context_request - invitation_only description: no description avatar_id: type: integer format: int64 description: |- The id of the attachment previously uploaded to the group that you would like to use as the avatar image for this group. storage_quota_mb: type: integer format: int64 description: |- The allowed file storage for the group, in megabytes. This parameter is ignored if the caller does not have the manage_storage_quotas permission. members: type: array items: type: string description: |- An array of user ids for users you would like in the group. Users not in the group will be sent invitations. Existing group members who aren't in the list will be removed from the group. sis_group_id: type: string description: The sis ID of the group. Must have manage_sis permission to set. override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness application/x-www-form-urlencoded: schema: *id163 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html delete: tags: - Groups operationId: delete_group summary: Delete a group description: Deletes a group and removes all members. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups: post: tags: - Groups operationId: create_group_groups summary: Create a group description: |- Creates a new group. Groups created using the "/api/v1/groups/" endpoint will be community groups. requestBody: required: false content: application/json: schema: &id164 type: object properties: name: type: string description: The name of the group description: type: string description: A description of the group is_public: type: boolean description: whether the group is public (applies only to community groups) join_level: type: string enum: - parent_context_auto_join - parent_context_request - invitation_only description: no description storage_quota_mb: type: integer format: int64 description: |- The allowed file storage for the group, in megabytes. This parameter is ignored if the caller does not have the manage_storage_quotas permission. sis_group_id: type: string description: The sis ID of the group. Must have manage_sis permission to set. application/x-www-form-urlencoded: schema: *id164 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Group' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups/{group_id}/invite: post: tags: - Groups operationId: invite_others_to_group summary: Invite others to a group description: |- Sends an invitation to all supplied email addresses which will allow the receivers to join the group. parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id165 type: object properties: invitees: type: array items: type: string description: An array of email addresses to be sent invitations. required: - invitees application/x-www-form-urlencoded: schema: *id165 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups/{group_id}/users: get: tags: - Groups operationId: list_group_s_users summary: List group's users description: Returns a paginated list of users in the group. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: |- The partial name or full ID of the users to match and return in the results list. Must be at least 2 characters. - name: include in: query schema: type: array items: type: string enum: - avatar_url required: false description: '"avatar_url": Include users'' avatar_urls.' - name: exclude_inactive in: query schema: type: boolean required: false description: |- Whether to filter out inactive users from the results. Defaults to false unless explicitly provided. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/groups.html delete: tags: - Groups operationId: bulk_delete_memberships_bulk_deletes_memberships_by_providing_array_of_user_ids_or_for_differentiation_tag_groups_by_providing_all_in_group_course_to_remove_every_course_student_matching_optional_role_tag_filter summary: |- Bulk delete memberships Bulk deletes memberships by providing an array of user IDs, or, for differentiation tag groups, by providing `all_in_group_course` to remove every course student matching an optional role/tag filter. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: user_ids in: query schema: type: array items: type: integer required: false description: '- An array of user IDs to delete memberships in bulk.' - name: all_in_group_course in: query schema: type: boolean required: false description: |- - If true, remove every enrolled student from the course that matches the filters below, instead of using user_ids. - name: exclude_user_ids in: query schema: type: array items: type: integer required: false description: '- An array of user IDs to exclude when using all_in_group_course.' - name: enrollment_role_id in: query schema: type: array items: type: integer required: false description: '- Restrict all_in_group_course to these enrollment roles.' - name: differentiation_tag_id in: query schema: type: array items: type: integer required: false description: '- Restrict all_in_group_course to members of these tags.' responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: 'JSON - For single deletion: `{ "ok": true }` - For bulk deletion: ```json { "message": "Bulk delete completed", "deleted_user_ids": 123, 456, "unauthorized_user_ids": 789 }' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups/{group_id}/preview_html: post: tags: - Groups operationId: preview_processed_html_groups summary: Preview processed html description: Preview html content processed for this group parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id166 type: object properties: html: type: string description: The html content to process application/x-www-form-urlencoded: schema: *id166 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups/{group_id}/activity_stream: get: tags: - Groups operationId: group_activity_stream summary: Group activity stream description: |- Returns the current user's group-specific activity stream, paginated. For full documentation, see the API documentation for the user activity stream, in the user api. parameters: - name: group_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/groups.html /v1/groups/{group_id}/activity_stream/summary: get: tags: - Groups operationId: group_activity_stream_summary summary: Group activity stream summary description: |- Returns a summary of the current user's group-specific activity stream. For full documentation, see the API documentation for the user activity stream summary, in the user api. parameters: - name: group_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/groups.html /v1/groups/{group_id}/permissions: get: tags: - Groups operationId: permissions_groups summary: Permissions description: |- Returns permission information for the calling user in the given group. See also the {api:AccountsController#permissions Account} and {api:CoursesController#permissions Course} counterparts. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: permissions in: query schema: type: array items: type: string required: false description: |- List of permissions to check against the authenticated user. Permission names are documented in the {api:RoleOverridesController#manageable_permissions List assignable permissions} endpoint. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups/{group_id}/memberships: get: tags: - Groups operationId: list_group_memberships summary: List group memberships description: A paginated list of the members of a group. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: filter_states in: query schema: type: array items: type: string enum: - accepted - invited - requested required: false description: |- Only list memberships with the given workflow_states. By default it will return all memberships. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupMembership' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html post: tags: - Groups operationId: create_membership summary: Create a membership description: |- Join, or request to join, a group, depending on the join_level of the group. If the membership or join request already exists, then it is simply returned. For differentiation tags, you can bulk add users using one of two methods: 1. Provide an array of user IDs via the `members[]` parameter. 2. Use the course-wide option with the following parameters: - `all_in_group_course` [Boolean]: If set to true, the endpoint will add every currently enrolled student (from the course context) to the differentiation tag. - `exclude_user_ids[]` [Integer]: When using `all_in_group_course`, you can optionally exclude specific users by providing their IDs in this parameter. - `enrollment_role_id[]` [Integer]: When using `all_in_group_course`, restrict the bulk add to students holding one of these enrollment roles. - `differentiation_tag_id[]` [Integer]: When using `all_in_group_course`, restrict the bulk add to students who are members of one of these differentiation tags. In this context, these parameters only apply to differentiation tag memberships. parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id167 type: object properties: user_id: type: string description: '- The ID of the user for individual membership creation.' members: type: array items: type: integer description: '- Bulk add multiple users to a differentiation tag.' all_in_group_course: type: boolean description: '- If true, add all enrolled students from the course.' exclude_user_ids: type: array items: type: integer description: '- An array of user IDs to exclude when using all_in_group_course.' enrollment_role_id: type: array items: type: integer description: '- Restrict all_in_group_course to these enrollment roles.' differentiation_tag_id: type: array items: type: integer description: '- Restrict all_in_group_course to members of these tags.' application/x-www-form-urlencoded: schema: *id167 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: GroupMembership or a JSON response detailing partial failures if some memberships could not be created. externalDocs: url: https://canvas.instructure.com/doc/api/groups.html /v1/groups/{group_id}/memberships/{membership_id}: get: tags: - Groups operationId: get_single_group_membership_memberships summary: Get a single group membership description: Returns the group membership with the given membership id or user id. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: membership_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupMembership' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html put: tags: - Groups operationId: update_membership_memberships summary: Update a membership description: Accept a membership request, or add/remove moderator rights. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: membership_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id168 type: object properties: workflow_state: type: string enum: - accepted description: Currently, the only allowed value is "accepted" moderator: type: string description: no description application/x-www-form-urlencoded: schema: *id168 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupMembership' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html delete: tags: - Groups operationId: leave_group_memberships summary: Leave a group description: |- Leave a group if you are allowed to leave (some groups, such as sets of course groups created by teachers, cannot be left). You may also use 'self' in place of a membership_id. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: membership_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/groups.html /v1/groups/{group_id}/users/{user_id}: get: tags: - Groups operationId: get_single_group_membership_users summary: Get a single group membership description: Returns the group membership with the given membership id or user id. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupMembership' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html put: tags: - Groups operationId: update_membership_users summary: Update a membership description: Accept a membership request, or add/remove moderator rights. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id169 type: object properties: workflow_state: type: string enum: - accepted description: Currently, the only allowed value is "accepted" moderator: type: string description: no description application/x-www-form-urlencoded: schema: *id169 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GroupMembership' externalDocs: url: https://canvas.instructure.com/doc/api/groups.html delete: tags: - Groups operationId: leave_group_users summary: Leave a group description: |- Leave a group if you are allowed to leave (some groups, such as sets of course groups created by teachers, cannot be left). You may also use 'self' in place of a membership_id. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: user_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/groups.html /v1/users/{user_id}/history: get: tags: - History operationId: list_recent_history_for_user summary: List recent history for a user description: |- Return a paginated list of the user's recent history. History entries are returned in descending order, newest to oldest. You may list history entries for yourself (use +self+ as the user_id), for a student you observe, or for a user you manage as an administrator. Note that the +per_page+ pagination argument is not supported and the number of history entries returned per page will vary. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/HistoryEntry' externalDocs: url: https://canvas.instructure.com/doc/api/history.html /v1/inst_access_tokens: post: tags: - Inst Access Tokens operationId: deprecated_create_instaccess_token summary: '[DEPRECATED] Create InstAccess token' description: |- Create a unique, encrypted InstAccess token. Generates a different InstAccess token each time it's called, each one expires after a short window (1 hour). responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/InstAccessToken' externalDocs: url: https://canvas.instructure.com/doc/api/inst_access_tokens.html /v1/jwts: post: tags: - Jw Ts operationId: create_jwt summary: Create JWT description: |- Create a unique JWT for use with other Canvas services Generates a different JWT each time it's called. Each JWT expires after a short window (1 hour) requestBody: required: false content: application/json: schema: &id170 type: object properties: workflows: type: array items: type: string description: Adds additional data to the JWT to be used by the consuming service workflow context_type: type: string enum: - Course - User - Account description: The type of the context to generate the JWT for, in case the workflow requires it. Case insensitive. context_id: type: integer format: int64 description: The id of the context to generate the JWT for, in case the workflow requires it. context_uuid: type: string description: |- The uuid of the context to generate the JWT for, in case the workflow requires it. Note that context_id and context_uuid are mutually exclusive. If both are provided, an error will be returned. canvas_audience: type: boolean description: |- Defaults to true. If false, the JWT will be signed, but not encrypted, for use in downstream services. The default encrypted behaviour can be used to talk to Canvas itself. application/x-www-form-urlencoded: schema: *id170 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/JWT' externalDocs: url: https://canvas.instructure.com/doc/api/jw_ts.html /v1/jwts/refresh: post: tags: - Jw Ts operationId: refresh_jwt summary: Refresh JWT description: |- Refresh a JWT for use with other canvas services Generates a different JWT each time it's called, each one expires after a short window (1 hour). requestBody: required: false content: application/json: schema: &id171 type: object properties: jwt: type: string description: |- An existing JWT token to be refreshed. The new token will have the same context and workflows as the existing token. required: - jwt application/x-www-form-urlencoded: schema: *id171 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/JWT' externalDocs: url: https://canvas.instructure.com/doc/api/jw_ts.html /v1/courses/{id}/late_policy: get: tags: - Late Policy operationId: get_late_policy summary: Get a late policy description: Returns the late policy for a course. parameters: - 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/late_policy.html post: tags: - Late Policy operationId: create_late_policy summary: Create a late policy description: |- Create a late policy. If the course already has a late policy, a bad_request is returned since there can only be one late policy per course. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id172 type: object properties: late_policy[missing_submission_deduction_enabled]: type: boolean description: Whether to enable the missing submission deduction late policy. late_policy[missing_submission_deduction]: type: number description: How many percentage points to deduct from a missing submission. late_policy[late_submission_deduction_enabled]: type: boolean description: Whether to enable the late submission deduction late policy. late_policy[late_submission_deduction]: type: number description: How many percentage points to deduct per the late submission interval. late_policy[late_submission_interval]: type: string description: The interval for late policies. late_policy[late_submission_minimum_percent_enabled]: type: boolean description: Whether to enable the late submission minimum percent for a late policy. late_policy[late_submission_minimum_percent]: type: number description: The minimum grade a submissions can have in percentage points. application/x-www-form-urlencoded: schema: *id172 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/late_policy.html patch: tags: - Late Policy operationId: patch_late_policy summary: Patch a late policy description: Patch a late policy. No body is returned upon success. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id173 type: object properties: late_policy[missing_submission_deduction_enabled]: type: boolean description: Whether to enable the missing submission deduction late policy. late_policy[missing_submission_deduction]: type: number description: How many percentage points to deduct from a missing submission. late_policy[late_submission_deduction_enabled]: type: boolean description: Whether to enable the late submission deduction late policy. late_policy[late_submission_deduction]: type: number description: How many percentage points to deduct per the late submission interval. late_policy[late_submission_interval]: type: string description: The interval for late policies. late_policy[late_submission_minimum_percent_enabled]: type: boolean description: Whether to enable the late submission minimum percent for a late policy. late_policy[late_submission_minimum_percent]: type: number description: The minimum grade a submissions can have in percentage points. application/x-www-form-urlencoded: schema: *id173 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/late_policy.html /v1/courses/{course_id}/modules/{context_module_id}/date_details: get: tags: - Learning Object Dates operationId: get_learning_object_s_date_information_modules summary: Get a learning object's date information description: |- Get a learning object's date-related information, including due date, availability dates, override status, and a paginated list of all assignment overrides for the item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: context_module_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what additional data to include in the response. Valid values: - "peer_review": includes peer review sub assignment information and overrides in the response. If a peer review sub assignment exists, it is returned regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. - "child_peer_review_override_dates": each assignment override will include a peer_review_dates field containing the matched peer review override data (id, due_at, unlock_at, lock_at) for that override. The field will be present as null if no matching peer review override exists. - name: exclude in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what data to exclude from the response. Valid values: - "peer_review_overrides": when include[]=peer_review is also specified, the peer_review_sub_assignment object will not include the overrides array, reducing the response payload size. This is useful when using include[]=child_peer_review_override_dates since the peer review override data is already embedded in the parent assignment overrides. - "child_override_due_dates": prevents the sub_assignment_due_dates field from being included in assignment override responses, even when discussion checkpoints are enabled. This reduces response payload size when checkpoint due date information is not needed. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LearningObjectDates' externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html /v1/courses/{course_id}/assignments/{assignment_id}/date_details: get: tags: - Learning Object Dates operationId: get_learning_object_s_date_information_assignments summary: Get a learning object's date information description: |- Get a learning object's date-related information, including due date, availability dates, override status, and a paginated list of all assignment overrides for the item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what additional data to include in the response. Valid values: - "peer_review": includes peer review sub assignment information and overrides in the response. If a peer review sub assignment exists, it is returned regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. - "child_peer_review_override_dates": each assignment override will include a peer_review_dates field containing the matched peer review override data (id, due_at, unlock_at, lock_at) for that override. The field will be present as null if no matching peer review override exists. - name: exclude in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what data to exclude from the response. Valid values: - "peer_review_overrides": when include[]=peer_review is also specified, the peer_review_sub_assignment object will not include the overrides array, reducing the response payload size. This is useful when using include[]=child_peer_review_override_dates since the peer review override data is already embedded in the parent assignment overrides. - "child_override_due_dates": prevents the sub_assignment_due_dates field from being included in assignment override responses, even when discussion checkpoints are enabled. This reduces response payload size when checkpoint due date information is not needed. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LearningObjectDates' externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html put: tags: - Learning Object Dates operationId: update_learning_object_s_date_information_assignments summary: Update a learning object's date information description: |- Updates date-related information for learning objects, including due date, availability dates, override status, and assignment overrides. Returns 204 No Content response code if successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id174 type: object properties: due_at: type: string format: date-time description: The learning object's due date. Not applicable for ungraded discussions, pages, and files. unlock_at: type: string format: date-time description: The learning object's unlock date. Must be before the due date if there is one. lock_at: type: string format: date-time description: The learning object's lock date. Must be after the due date if there is one. only_visible_to_overrides: type: boolean description: Whether the learning object is only assigned to students who are targeted by an override. assignment_overrides: type: array items: type: array items: {} description: |- List of overrides to apply to the learning object. Overrides that already exist should include an ID and will be updated if needed. New overrides will be created for overrides in the list without an ID. Overrides not included in the list will be deleted. Providing an empty list will delete all of the object's overrides. Keys for each override object can include: 'id', 'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id', 'noop_id', and 'unassign_item'. peer_review: type: object additionalProperties: true description: |- Optional peer review configuration for assignments with peer reviews enabled. Requires the peer_review_allocation_and_grading feature flag. Keys can include: 'due_at', 'unlock_at', 'lock_at', 'peer_review_overrides' peer_review[due_at]: type: string format: date-time description: The peer review due date peer_review[unlock_at]: type: string format: date-time description: The peer review unlock date (when peer reviews become available) peer_review[lock_at]: type: string format: date-time description: The peer review lock date (when peer reviews are no longer available) peer_review[peer_review_overrides]: type: array items: type: array items: {} description: |- List of peer review overrides. Each override can include: 'id', 'due_at', 'unlock_at', 'lock_at', 'student_ids', 'course_section_id', 'course_id', 'group_id', 'unassign_item' application/x-www-form-urlencoded: schema: *id174 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html /v1/courses/{course_id}/quizzes/{quiz_id}/date_details: get: tags: - Learning Object Dates operationId: get_learning_object_s_date_information_quizzes summary: Get a learning object's date information description: |- Get a learning object's date-related information, including due date, availability dates, override status, and a paginated list of all assignment overrides for the item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what additional data to include in the response. Valid values: - "peer_review": includes peer review sub assignment information and overrides in the response. If a peer review sub assignment exists, it is returned regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. - "child_peer_review_override_dates": each assignment override will include a peer_review_dates field containing the matched peer review override data (id, due_at, unlock_at, lock_at) for that override. The field will be present as null if no matching peer review override exists. - name: exclude in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what data to exclude from the response. Valid values: - "peer_review_overrides": when include[]=peer_review is also specified, the peer_review_sub_assignment object will not include the overrides array, reducing the response payload size. This is useful when using include[]=child_peer_review_override_dates since the peer review override data is already embedded in the parent assignment overrides. - "child_override_due_dates": prevents the sub_assignment_due_dates field from being included in assignment override responses, even when discussion checkpoints are enabled. This reduces response payload size when checkpoint due date information is not needed. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LearningObjectDates' externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html put: tags: - Learning Object Dates operationId: update_learning_object_s_date_information_quizzes summary: Update a learning object's date information description: |- Updates date-related information for learning objects, including due date, availability dates, override status, and assignment overrides. Returns 204 No Content response code if successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id175 type: object properties: due_at: type: string format: date-time description: The learning object's due date. Not applicable for ungraded discussions, pages, and files. unlock_at: type: string format: date-time description: The learning object's unlock date. Must be before the due date if there is one. lock_at: type: string format: date-time description: The learning object's lock date. Must be after the due date if there is one. only_visible_to_overrides: type: boolean description: Whether the learning object is only assigned to students who are targeted by an override. assignment_overrides: type: array items: type: array items: {} description: |- List of overrides to apply to the learning object. Overrides that already exist should include an ID and will be updated if needed. New overrides will be created for overrides in the list without an ID. Overrides not included in the list will be deleted. Providing an empty list will delete all of the object's overrides. Keys for each override object can include: 'id', 'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id', 'noop_id', and 'unassign_item'. peer_review: type: object additionalProperties: true description: |- Optional peer review configuration for assignments with peer reviews enabled. Requires the peer_review_allocation_and_grading feature flag. Keys can include: 'due_at', 'unlock_at', 'lock_at', 'peer_review_overrides' peer_review[due_at]: type: string format: date-time description: The peer review due date peer_review[unlock_at]: type: string format: date-time description: The peer review unlock date (when peer reviews become available) peer_review[lock_at]: type: string format: date-time description: The peer review lock date (when peer reviews are no longer available) peer_review[peer_review_overrides]: type: array items: type: array items: {} description: |- List of peer review overrides. Each override can include: 'id', 'due_at', 'unlock_at', 'lock_at', 'student_ids', 'course_section_id', 'course_id', 'group_id', 'unassign_item' application/x-www-form-urlencoded: schema: *id175 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html /v1/courses/{course_id}/discussion_topics/{discussion_topic_id}/date_details: get: tags: - Learning Object Dates operationId: get_learning_object_s_date_information_discussion_topics summary: Get a learning object's date information description: |- Get a learning object's date-related information, including due date, availability dates, override status, and a paginated list of all assignment overrides for the item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: discussion_topic_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what additional data to include in the response. Valid values: - "peer_review": includes peer review sub assignment information and overrides in the response. If a peer review sub assignment exists, it is returned regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. - "child_peer_review_override_dates": each assignment override will include a peer_review_dates field containing the matched peer review override data (id, due_at, unlock_at, lock_at) for that override. The field will be present as null if no matching peer review override exists. - name: exclude in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what data to exclude from the response. Valid values: - "peer_review_overrides": when include[]=peer_review is also specified, the peer_review_sub_assignment object will not include the overrides array, reducing the response payload size. This is useful when using include[]=child_peer_review_override_dates since the peer review override data is already embedded in the parent assignment overrides. - "child_override_due_dates": prevents the sub_assignment_due_dates field from being included in assignment override responses, even when discussion checkpoints are enabled. This reduces response payload size when checkpoint due date information is not needed. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LearningObjectDates' externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html put: tags: - Learning Object Dates operationId: update_learning_object_s_date_information_discussion_topics summary: Update a learning object's date information description: |- Updates date-related information for learning objects, including due date, availability dates, override status, and assignment overrides. Returns 204 No Content response code if successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: discussion_topic_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id176 type: object properties: due_at: type: string format: date-time description: The learning object's due date. Not applicable for ungraded discussions, pages, and files. unlock_at: type: string format: date-time description: The learning object's unlock date. Must be before the due date if there is one. lock_at: type: string format: date-time description: The learning object's lock date. Must be after the due date if there is one. only_visible_to_overrides: type: boolean description: Whether the learning object is only assigned to students who are targeted by an override. assignment_overrides: type: array items: type: array items: {} description: |- List of overrides to apply to the learning object. Overrides that already exist should include an ID and will be updated if needed. New overrides will be created for overrides in the list without an ID. Overrides not included in the list will be deleted. Providing an empty list will delete all of the object's overrides. Keys for each override object can include: 'id', 'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id', 'noop_id', and 'unassign_item'. peer_review: type: object additionalProperties: true description: |- Optional peer review configuration for assignments with peer reviews enabled. Requires the peer_review_allocation_and_grading feature flag. Keys can include: 'due_at', 'unlock_at', 'lock_at', 'peer_review_overrides' peer_review[due_at]: type: string format: date-time description: The peer review due date peer_review[unlock_at]: type: string format: date-time description: The peer review unlock date (when peer reviews become available) peer_review[lock_at]: type: string format: date-time description: The peer review lock date (when peer reviews are no longer available) peer_review[peer_review_overrides]: type: array items: type: array items: {} description: |- List of peer review overrides. Each override can include: 'id', 'due_at', 'unlock_at', 'lock_at', 'student_ids', 'course_section_id', 'course_id', 'group_id', 'unassign_item' application/x-www-form-urlencoded: schema: *id176 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html /v1/courses/{course_id}/pages/{url_or_id}/date_details: get: tags: - Learning Object Dates operationId: get_learning_object_s_date_information_pages summary: Get a learning object's date information description: |- Get a learning object's date-related information, including due date, availability dates, override status, and a paginated list of all assignment overrides for the item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what additional data to include in the response. Valid values: - "peer_review": includes peer review sub assignment information and overrides in the response. If a peer review sub assignment exists, it is returned regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. - "child_peer_review_override_dates": each assignment override will include a peer_review_dates field containing the matched peer review override data (id, due_at, unlock_at, lock_at) for that override. The field will be present as null if no matching peer review override exists. - name: exclude in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what data to exclude from the response. Valid values: - "peer_review_overrides": when include[]=peer_review is also specified, the peer_review_sub_assignment object will not include the overrides array, reducing the response payload size. This is useful when using include[]=child_peer_review_override_dates since the peer review override data is already embedded in the parent assignment overrides. - "child_override_due_dates": prevents the sub_assignment_due_dates field from being included in assignment override responses, even when discussion checkpoints are enabled. This reduces response payload size when checkpoint due date information is not needed. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LearningObjectDates' externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html put: tags: - Learning Object Dates operationId: update_learning_object_s_date_information_pages summary: Update a learning object's date information description: |- Updates date-related information for learning objects, including due date, availability dates, override status, and assignment overrides. Returns 204 No Content response code if successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id177 type: object properties: due_at: type: string format: date-time description: The learning object's due date. Not applicable for ungraded discussions, pages, and files. unlock_at: type: string format: date-time description: The learning object's unlock date. Must be before the due date if there is one. lock_at: type: string format: date-time description: The learning object's lock date. Must be after the due date if there is one. only_visible_to_overrides: type: boolean description: Whether the learning object is only assigned to students who are targeted by an override. assignment_overrides: type: array items: type: array items: {} description: |- List of overrides to apply to the learning object. Overrides that already exist should include an ID and will be updated if needed. New overrides will be created for overrides in the list without an ID. Overrides not included in the list will be deleted. Providing an empty list will delete all of the object's overrides. Keys for each override object can include: 'id', 'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id', 'noop_id', and 'unassign_item'. peer_review: type: object additionalProperties: true description: |- Optional peer review configuration for assignments with peer reviews enabled. Requires the peer_review_allocation_and_grading feature flag. Keys can include: 'due_at', 'unlock_at', 'lock_at', 'peer_review_overrides' peer_review[due_at]: type: string format: date-time description: The peer review due date peer_review[unlock_at]: type: string format: date-time description: The peer review unlock date (when peer reviews become available) peer_review[lock_at]: type: string format: date-time description: The peer review lock date (when peer reviews are no longer available) peer_review[peer_review_overrides]: type: array items: type: array items: {} description: |- List of peer review overrides. Each override can include: 'id', 'due_at', 'unlock_at', 'lock_at', 'student_ids', 'course_section_id', 'course_id', 'group_id', 'unassign_item' application/x-www-form-urlencoded: schema: *id177 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html /v1/courses/{course_id}/files/{attachment_id}/date_details: get: tags: - Learning Object Dates operationId: get_learning_object_s_date_information_files summary: Get a learning object's date information description: |- Get a learning object's date-related information, including due date, availability dates, override status, and a paginated list of all assignment overrides for the item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: attachment_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what additional data to include in the response. Valid values: - "peer_review": includes peer review sub assignment information and overrides in the response. If a peer review sub assignment exists, it is returned regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. - "child_peer_review_override_dates": each assignment override will include a peer_review_dates field containing the matched peer review override data (id, due_at, unlock_at, lock_at) for that override. The field will be present as null if no matching peer review override exists. - name: exclude in: query schema: type: array items: type: array items: {} required: false description: |- Array of strings indicating what data to exclude from the response. Valid values: - "peer_review_overrides": when include[]=peer_review is also specified, the peer_review_sub_assignment object will not include the overrides array, reducing the response payload size. This is useful when using include[]=child_peer_review_override_dates since the peer review override data is already embedded in the parent assignment overrides. - "child_override_due_dates": prevents the sub_assignment_due_dates field from being included in assignment override responses, even when discussion checkpoints are enabled. This reduces response payload size when checkpoint due date information is not needed. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LearningObjectDates' externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html put: tags: - Learning Object Dates operationId: update_learning_object_s_date_information_files summary: Update a learning object's date information description: |- Updates date-related information for learning objects, including due date, availability dates, override status, and assignment overrides. Returns 204 No Content response code if successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: attachment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id178 type: object properties: due_at: type: string format: date-time description: The learning object's due date. Not applicable for ungraded discussions, pages, and files. unlock_at: type: string format: date-time description: The learning object's unlock date. Must be before the due date if there is one. lock_at: type: string format: date-time description: The learning object's lock date. Must be after the due date if there is one. only_visible_to_overrides: type: boolean description: Whether the learning object is only assigned to students who are targeted by an override. assignment_overrides: type: array items: type: array items: {} description: |- List of overrides to apply to the learning object. Overrides that already exist should include an ID and will be updated if needed. New overrides will be created for overrides in the list without an ID. Overrides not included in the list will be deleted. Providing an empty list will delete all of the object's overrides. Keys for each override object can include: 'id', 'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id', 'noop_id', and 'unassign_item'. peer_review: type: object additionalProperties: true description: |- Optional peer review configuration for assignments with peer reviews enabled. Requires the peer_review_allocation_and_grading feature flag. Keys can include: 'due_at', 'unlock_at', 'lock_at', 'peer_review_overrides' peer_review[due_at]: type: string format: date-time description: The peer review due date peer_review[unlock_at]: type: string format: date-time description: The peer review unlock date (when peer reviews become available) peer_review[lock_at]: type: string format: date-time description: The peer review lock date (when peer reviews are no longer available) peer_review[peer_review_overrides]: type: array items: type: array items: {} description: |- List of peer review overrides. Each override can include: 'id', 'due_at', 'unlock_at', 'lock_at', 'student_ids', 'course_section_id', 'course_id', 'group_id', 'unassign_item' application/x-www-form-urlencoded: schema: *id178 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/learning_object_dates.html /lti/courses/{course_id}/line_items: post: tags: - Line Items operationId: create_line_item summary: Create a Line Item description: Create a new Line Item parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id179 type: object properties: scoreMaximum: type: number description: The maximum score for the line item. Scores created for the Line Item may exceed this value. label: type: string description: |- The label for the Line Item. If no resourceLinkId is specified this value will also be used as the name of the placeholder assignment. resourceId: type: string description: |- A Tool Provider specified id for the Line Item. Multiple line items may share the same resourceId within a given context. tag: type: string description: |- A value used to qualify a line Item beyond its ids. Line Items may be queried by this value in the List endpoint. Multiple line items can share the same tag within a given context. resourceLinkId: type: string description: |- The resource link id the Line Item should be attached to. This value should match the LTI id of the Canvas assignment associated with the tool. startDateTime: type: string description: |- The ISO8601 date and time when the line item is made available. Corresponds to the assignment's unlock_at date. endDateTime: type: string description: |- The ISO8601 date and time when the line item stops receiving submissions. Corresponds to the assignment's due_at date. https://canvas.instructure.com/lti/submission_type: type: object additionalProperties: true description: |- (EXTENSION) - Optional block to set Assignment Submission Type when creating a new assignment is created. type - 'none' or 'external_tool':: external_tool_url - Submission URL only used when type: 'external_tool':: required: - scoreMaximum - label application/x-www-form-urlencoded: schema: *id179 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LineItem' externalDocs: url: https://canvas.instructure.com/doc/api/line_items.html get: tags: - Line Items operationId: list_line_items summary: List line Items description: List all Line Items for a course parameters: - name: course_id in: path schema: type: string required: true description: ID - name: tag in: query schema: type: string required: false description: If specified only Line Items with this tag will be included. - name: resource_id in: query schema: type: string required: false description: If specified only Line Items with this resource_id will be included. - name: resource_link_id in: query schema: type: string required: false description: If specified only Line Items attached to the specified resource_link_id will be included. - name: limit in: query schema: type: string required: false description: May be used to limit the number of Line Items returned in a page - name: include in: query schema: type: array items: type: string enum: - launch_url required: false description: |- Array of additional information to include. "launch_url":: includes the launch URL for each line item using the "https\://canvas.instructure.com/lti/launch_url" extension responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LineItem' externalDocs: url: https://canvas.instructure.com/doc/api/line_items.html /lti/courses/{course_id}/line_items/{id}: put: tags: - Line Items operationId: update_line_item summary: Update a Line Item description: Update new Line Item parameters: - name: course_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: &id180 type: object properties: scoreMaximum: type: number description: The maximum score for the line item. Scores created for the Line Item may exceed this value. label: type: string description: |- The label for the Line Item. If no resourceLinkId is specified this value will also be used as the name of the placeholder assignment. resourceId: type: string description: |- A Tool Provider specified id for the Line Item. Multiple line items may share the same resourceId within a given context. tag: type: string description: |- A value used to qualify a line Item beyond its ids. Line Items may be queried by this value in the List endpoint. Multiple line items can share the same tag within a given context. startDateTime: type: string description: |- The ISO8601 date and time when the line item is made available. Corresponds to the assignment's unlock_at date. endDateTime: type: string description: |- The ISO8601 date and time when the line item stops receiving submissions. Corresponds to the assignment's due_at date. application/x-www-form-urlencoded: schema: *id180 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LineItem' externalDocs: url: https://canvas.instructure.com/doc/api/line_items.html get: tags: - Line Items operationId: show_line_item summary: Show a Line Item description: Show existing Line Item parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - launch_url required: false description: |- Array of additional information to include. "launch_url":: includes the launch URL for this line item using the "https\://canvas.instructure.com/lti/launch_url" extension responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LineItem' externalDocs: url: https://canvas.instructure.com/doc/api/line_items.html delete: tags: - Line Items operationId: delete_line_item summary: Delete a Line Item description: Delete an existing Line Item parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/LineItem' externalDocs: url: https://canvas.instructure.com/doc/api/line_items.html /v1/courses/{course_id}/live_assessments/{assessment_id}/results: post: tags: - Live Assessments operationId: create_live_assessment_results summary: Create live assessment results description: Creates live assessment results and adds them to a live assessment parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assessment_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/live_assessments.html get: tags: - Live Assessments operationId: list_live_assessment_results summary: List live assessment results description: Returns a paginated list of live assessment results parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assessment_id in: path schema: type: string required: true description: ID - name: user_id in: query schema: type: integer format: int64 required: false description: If set, restrict results to those for this user responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/live_assessments.html /v1/courses/{course_id}/live_assessments: post: tags: - Live Assessments operationId: create_or_find_live_assessment summary: Create or find a live assessment description: |- Creates or finds an existing live assessment with the given key and aligns it with the linked outcome parameters: - name: course_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/live_assessments.html get: tags: - Live Assessments operationId: list_live_assessments summary: List live assessments description: Returns a paginated list of live assessments. parameters: - name: course_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/live_assessments.html /v1/accounts/{account_id}/logins: get: tags: - Logins operationId: list_user_logins_accounts summary: List user logins description: Given a user ID, return a paginated list of that user's logins for the given account. parameters: - name: account_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/logins.html post: tags: - Logins operationId: create_user_login summary: Create a user login description: Create a new login for an existing user in the given account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id181 type: object properties: user[id]: type: string description: The ID of the user to create the login for. login[unique_id]: type: string description: The unique ID for the new login. login[password]: type: string description: The new login's password. login[sis_user_id]: type: string description: |- SIS ID for the login. To set this parameter, the caller must be able to manage SIS permissions on the account. login[integration_id]: type: string description: |- Integration ID for the login. To set this parameter, the caller must be able to manage SIS permissions on the account. The Integration ID is a secondary identifier useful for more complex SIS integrations. login[authentication_provider_id]: type: string description: |- The authentication provider this login is associated with. Logins associated with a specific provider can only be used with that provider. Legacy providers (LDAP, CAS, SAML) will search for logins associated with them, or unassociated logins. New providers will only search for logins explicitly associated with them. This can be the integer ID of the provider, or the type of the provider (in which case, it will find the first matching provider). login[declared_user_type]: type: string description: |- The declared intention of the user type. This can be set, but does not change any Canvas functionality with respect to their access. A user can still be a teacher, admin, student, etc. in any particular context without regard to this setting. This can be used for administrative purposes for integrations to be able to more easily identify why the user was created. Valid values are: * administrative * observer * staff * student * student_other * teacher login[must_reset_password]: type: boolean description: |- If true, the user will be required to change their password the next time they sign in with this login. Only valid for logins that support Canvas passwords. user[existing_user_id]: type: string description: |- A Canvas User ID to identify a user in a trusted account (alternative to `id`, `existing_sis_user_id`, or `existing_integration_id`). This parameter is not available in OSS Canvas. user[existing_integration_id]: type: string description: |- An Integration ID to identify a user in a trusted account (alternative to `id`, `existing_user_id`, or `existing_sis_user_id`). This parameter is not available in OSS Canvas. user[existing_sis_user_id]: type: string description: |- An SIS User ID to identify a user in a trusted account (alternative to `id`, `existing_integration_id`, or `existing_user_id`). This parameter is not available in OSS Canvas. user[trusted_account]: type: string description: |- The domain of the account to search for the user. This field is required when identifying a user in a trusted account. This parameter is not available in OSS Canvas. required: - user[id] - login[unique_id] application/x-www-form-urlencoded: schema: *id181 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/logins.html /v1/users/{user_id}/logins: get: tags: - Logins operationId: list_user_logins_users summary: List user logins description: Given a user ID, return a paginated list of that user's logins for the given account. parameters: - name: user_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/logins.html /v1/users/reset_password: post: tags: - Logins operationId: kickoff_password_recovery_flow summary: Kickoff password recovery flow description: Given a user email, generate a nonce and email it to the user responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/logins.html /v1/accounts/{account_id}/logins/{id}: put: tags: - Logins operationId: edit_user_login summary: Edit a user login description: Update an existing login for a user in the given account. parameters: - name: account_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: &id182 type: object properties: login[unique_id]: type: string description: The new unique ID for the login. login[password]: type: string description: |- The new password for the login. Admins can only set a password for another user if the "Password setting by admins" account setting is enabled. login[old_password]: type: string description: |- The prior password for the login. Required if the caller is changing their own password. login[sis_user_id]: type: string description: |- SIS ID for the login. To set this parameter, the caller must be able to manage SIS permissions on the account. login[integration_id]: type: string description: |- Integration ID for the login. To set this parameter, the caller must be able to manage SIS permissions on the account. The Integration ID is a secondary identifier useful for more complex SIS integrations. login[authentication_provider_id]: type: string description: |- The authentication provider this login is associated with. Logins associated with a specific provider can only be used with that provider. Legacy providers (LDAP, CAS, SAML) will search for logins associated with them, or unassociated logins. New providers will only search for logins explicitly associated with them. This can be the integer ID of the provider, or the type of the provider (in which case, it will find the first matching provider). To unassociate from a known provider, specify null or an empty string. login[workflow_state]: type: string enum: - active - suspended description: Used to suspend or re-activate a login. login[declared_user_type]: type: string description: |- The declared intention of the user type. This can be set, but does not change any Canvas functionality with respect to their access. A user can still be a teacher, admin, student, etc. in any particular context without regard to this setting. This can be used for administrative purposes for integrations to be able to more easily identify why the user was created. Valid values are: * administrative * observer * staff * student * student_other * teacher login[must_reset_password]: type: boolean description: |- If true, the user will be required to change their password the next time they sign in with this login. Cleared automatically when the password is changed. Only valid for logins that support Canvas passwords. override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness application/x-www-form-urlencoded: schema: *id182 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/logins.html /v1/users/{user_id}/logins/{id}: delete: tags: - Logins operationId: delete_user_login summary: Delete a user login description: Delete an existing login. 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/logins.html /v1/accounts/{account_id}/lti_registrations/{registration_id}/controls: get: tags: - Lti Context Controls operationId: list_all_context_controls summary: List All Context Controls description: |- List all LTI ContextControls for the given LTI Registration. These controls are partitioned by LTI Deployment, and have added calculated fields for display in the Canvas UI. This endpoint is used to populate the Availability page for an LTI Registration and may not be useful for general API Usage. For listing all ContextControls for a given Deployment, see the LTI Deployments - List Controls for Deployment endpoint. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: registration_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Lti::Deployment externalDocs: url: https://canvas.instructure.com/doc/api/lti_context_controls.html /v1/accounts/{account_id}/lti_registrations/{registration_id}/controls/{id}: get: tags: - Lti Context Controls operationId: show_lti_context_control summary: Show LTI Context Control description: Display details of the specified LTI ContextControl for the specified LTI registration in this context. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: registration_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 content: application/json: schema: $ref: '#/components/schemas/Lti::ContextControl' externalDocs: url: https://canvas.instructure.com/doc/api/lti_context_controls.html put: tags: - Lti Context Controls operationId: modify_context_control summary: Modify a Context Control description: |- Changes the availability of a context control. This endpoint can only be used to change the availability of a context control; no other attributes about the control (such as which course or account it belongs to) can be changed here. To change those values, the control should be deleted and a new one created instead. Returns the context control with its new availability value applied. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: registration_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: &id183 type: object properties: available: type: boolean description: the new value for this control's availability comment: type: string description: A comment to add the to the change-log entry explaining why the changes were made. required: - available application/x-www-form-urlencoded: schema: *id183 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::ContextControl' externalDocs: url: https://canvas.instructure.com/doc/api/lti_context_controls.html delete: tags: - Lti Context Controls operationId: delete_context_control summary: Delete a Context Control description: |- Deletes a context control. Returns the control that is now deleted. Note: Deleting the "primary" control for a deployment (the control associated with the context where the deployment is installed) is not allowed and will return an error. This prevents situations where a deployment cannot be managed from the Apps page. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: registration_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 content: application/json: schema: $ref: '#/components/schemas/Lti::ContextControl' externalDocs: url: https://canvas.instructure.com/doc/api/lti_context_controls.html /v1/accounts/{current_account_id}/lti_registrations/{registration_id}/controls: post: tags: - Lti Context Controls operationId: create_lti_context_control summary: Create LTI Context Control description: Create a new LTI ContextControl for the specified LTI registration in this context. parameters: - name: current_account_id in: path schema: type: string required: true description: ID - name: registration_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id184 type: object properties: account_id: type: integer format: int64 description: The Canvas ID of the Account that owns this. One of account_id or course_id must be present. Can also be a string. course_id: type: integer format: int64 description: The Canvas ID of the Course that owns this. One of account_id or course_id must be present. Can also be a string. deployment_id: type: integer format: int64 description: |- The Canvas ID of the ContextExternalTool that owns this, representing an LTI deployment. If absent, this ContextControl will be associated with the Deployment of this Registration at the Root Account level. If that is not present, this request will fail. available: type: boolean description: |- The state of this tool in this context. `true` shows the tool in this context and all contexts below it. `false` disables the tool for this context and all contexts below it. Defaults to true. comment: type: string description: A comment to add the to the change-log entry explaining why the changes were made. application/x-www-form-urlencoded: schema: *id184 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::ContextControl' externalDocs: url: https://canvas.instructure.com/doc/api/lti_context_controls.html /v1/accounts/{account_id}/lti_registrations/{registration_id}/controls/bulk: post: tags: - Lti Context Controls operationId: bulk_create_lti_context_controls summary: Bulk Create LTI Context Controls description: |- Create up to 100 new LTI ContextControls for the specified LTI registration in this context. Control parameters are sent as a JSON array of objects, each with the same parameters as the Create LTI Context Control endpoint. Note that if a control already exists for the specified context and deployment, it will be updated instead of created. parameters: - name: registration_id in: path schema: type: string required: true description: ID - name: account_id in: path schema: type: array items: type: integer required: true description: The Canvas ID of the Account that owns this. One of account_id or course_id must be present. Can also be a string. requestBody: required: false content: application/json: schema: &id185 type: object properties: comment: type: string description: A comment to add the to the change-log entry explaining why the changes were made. course_id: type: array items: type: integer description: The Canvas ID of the Course that owns this. One of account_id or course_id must be present. Can also be a string. deployment_id: type: array items: type: integer description: |- The Canvas ID of the ContextExternalTool that owns this, representing an LTI deployment. If absent, this ContextControl will be associated with the Deployment of this Registration at the Root Account level. If that is not present, this request will fail. available: type: array items: type: boolean description: |- The state of this tool in this context. `true` shows the tool in this context and all contexts below it. `false` disables the tool for this context and all contexts below it. Defaults to true. application/x-www-form-urlencoded: schema: *id185 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::ContextControl' externalDocs: url: https://canvas.instructure.com/doc/api/lti_context_controls.html /v1/courses/{course_id}/lti_apps/launch_definitions: get: tags: - Lti Launch Definitions operationId: list_lti_launch_definitions_courses summary: List LTI Launch Definitions description: |- List all tools available in this context for the given placements, in the form of Launch Definitions. Used primarily by the Canvas frontend. API users should consider using the External Tools API instead. This endpoint is cached for 10 minutes! parameters: - name: course_id in: path schema: type: string required: true description: ID - name: placements[Array] in: query schema: type: string required: false description: The placements to return launch definitions for. If not provided, an empty list will be returned. - name: only_visible[Boolean] in: query schema: type: string required: false description: If true, only return launch definitions that are visible to the current user. Defaults to true. - name: include_context_name[Boolean] in: query schema: type: string required: false description: If true, includes the deployment context name (account or course) of the tool definition in the response. This helps distinguish between tools with identical names deployed at different levels of the context hierarchy. Defaults to false. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/lti_launch_definitions.html /v1/accounts/{account_id}/lti_apps/launch_definitions: get: tags: - Lti Launch Definitions operationId: list_lti_launch_definitions_accounts summary: List LTI Launch Definitions description: |- List all tools available in this context for the given placements, in the form of Launch Definitions. Used primarily by the Canvas frontend. API users should consider using the External Tools API instead. This endpoint is cached for 10 minutes! parameters: - name: account_id in: path schema: type: string required: true description: ID - name: placements[Array] in: query schema: type: string required: false description: The placements to return launch definitions for. If not provided, an empty list will be returned. - name: only_visible[Boolean] in: query schema: type: string required: false description: If true, only return launch definitions that are visible to the current user. Defaults to true. - name: include_context_name[Boolean] in: query schema: type: string required: false description: If true, includes the deployment context name (account or course) of the tool definition in the response. This helps distinguish between tools with identical names deployed at different levels of the context hierarchy. Defaults to false. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/lti_launch_definitions.html /v1/accounts/{account_id}/lti_registrations: get: tags: - Lti Registrations operationId: list_lti_registrations_in_account_lti_registrations summary: List LTI Registrations in an account description: |- Returns all LTI registrations in the specified account. Includes registrations created in this account, those set to 'allow' from a parent root account (like Site Admin) and 'on' for this account, and those enabled 'on' at the parent root account level. parameters: - name: account_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 registrations to return per page. Defaults to 15. - name: page in: query schema: type: integer format: int64 required: false description: The page number to return. Defaults to 1. - name: sort in: query schema: type: string required: false description: |- The field to sort by. Choices are: name, nickname, lti_version, installed, installed_by, updated_by, updated, and on. Defaults to installed. - name: dir in: query schema: type: string enum: - asc - desc required: false description: The order to sort the given column by. Defaults to desc. - name: include in: query schema: type: array items: type: string required: false description: |- Array of additional data to include. Always includes [account_binding]. "account_binding":: the registration's binding to the given account "configuration":: the registration's Canvas-style tool configuration, without any overlays applied. "overlaid_configuration":: the registration's Canvas-style tool configuration, with all overlays applied. "overlay":: the registration's admin-defined configuration overlay responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ListLtiRegistrationsResponse' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html post: tags: - Lti Registrations operationId: create_lti_registration_lti_registrations summary: Create an LTI Registration description: |- Create a new LTI Registration, as well as an associated Tool Configuration, Developer Key, and Registration Account binding. To install/create using Dynamic Registration, please use the {file:file.registration.html Dynamic Registration API}. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id186 type: object properties: name: type: string description: The name of the tool. If one isn't provided, it will be inferred from the configuration's title. admin_nickname: type: string description: A friendly nickname set by admins to override the tool name vendor: type: string description: The vendor of the tool description: type: string description: A description of the tool. Cannot exceed 2048 bytes. configuration: type: string description: '[Required, Lti::ToolConfiguration | Lti::LegacyConfiguration] The LTI 1.3 configuration for the tool' overlay: type: string description: '[Lti::Overlay] The overlay configuration for the tool. Overrides values in the base configuration.' unified_tool_id: type: string description: The unique identifier for the tool, used for analytics. If not provided, one will be generated. lock_deploying: type: boolean description: When true, no new deployments of this registration can be created. workflow_state: type: string enum: - 'on' - 'off' - allow - active - inactive description: |- "on"/"off"/"allow" set the account binding state directly (binding vocabulary). "active"/"inactive" set the registration state directly (registration vocabulary). All five values update both the binding and the registration to equivalent states. "allow" is only valid for Site Admin registrations. Defaults to "off". application/x-www-form-urlencoded: schema: *id186 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps: get: tags: - Lti Registrations operationId: list_lti_registrations_in_account_apps summary: List LTI Registrations in an account description: |- Returns all LTI registrations in the specified account. Includes registrations created in this account, those set to 'allow' from a parent root account (like Site Admin) and 'on' for this account, and those enabled 'on' at the parent root account level. parameters: - name: account_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 registrations to return per page. Defaults to 15. - name: page in: query schema: type: integer format: int64 required: false description: The page number to return. Defaults to 1. - name: sort in: query schema: type: string required: false description: |- The field to sort by. Choices are: name, nickname, lti_version, installed, installed_by, updated_by, updated, and on. Defaults to installed. - name: dir in: query schema: type: string enum: - asc - desc required: false description: The order to sort the given column by. Defaults to desc. - name: include in: query schema: type: array items: type: string required: false description: |- Array of additional data to include. Always includes [account_binding]. "account_binding":: the registration's binding to the given account "configuration":: the registration's Canvas-style tool configuration, without any overlays applied. "overlaid_configuration":: the registration's Canvas-style tool configuration, with all overlays applied. "overlay":: the registration's admin-defined configuration overlay responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ListLtiRegistrationsResponse' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html post: tags: - Lti Registrations operationId: create_lti_registration_apps summary: Create an LTI Registration description: |- Create a new LTI Registration, as well as an associated Tool Configuration, Developer Key, and Registration Account binding. To install/create using Dynamic Registration, please use the {file:file.registration.html Dynamic Registration API}. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id187 type: object properties: name: type: string description: The name of the tool. If one isn't provided, it will be inferred from the configuration's title. admin_nickname: type: string description: A friendly nickname set by admins to override the tool name vendor: type: string description: The vendor of the tool description: type: string description: A description of the tool. Cannot exceed 2048 bytes. configuration: type: string description: '[Required, Lti::ToolConfiguration | Lti::LegacyConfiguration] The LTI 1.3 configuration for the tool' overlay: type: string description: '[Lti::Overlay] The overlay configuration for the tool. Overrides values in the base configuration.' unified_tool_id: type: string description: The unique identifier for the tool, used for analytics. If not provided, one will be generated. lock_deploying: type: boolean description: When true, no new deployments of this registration can be created. workflow_state: type: string enum: - 'on' - 'off' - allow - active - inactive description: |- "on"/"off"/"allow" set the account binding state directly (binding vocabulary). "active"/"inactive" set the registration state directly (registration vocabulary). All five values update both the binding and the registration to equivalent states. "allow" is only valid for Site Admin registrations. Defaults to "off". application/x-www-form-urlencoded: schema: *id187 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}: get: tags: - Lti Registrations operationId: show_lti_registration_lti_registrations summary: Show an LTI Registration description: |- Return details about the specified LTI registration, including the configuration and account binding. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string required: false description: |- Array of additional data to include. Always includes [account_binding configuration]. "account_binding":: the registration's binding to the given account "configuration":: the registration's Canvas-style tool configuration, without any overlays applied. "overlaid_configuration":: the registration's Canvas-style tool configuration, with all overlays applied. "overlaid_legacy_configuration":: the registration's legacy-style configuration, with all overlays applied. "overlay":: the registration's admin-defined configuration overlay "overlay_versions":: the registration's overlay's edit history responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html put: tags: - Lti Registrations operationId: update_lti_registration_lti_registrations summary: Update an LTI Registration description: |- Update the specified LTI registration with the provided parameters. Note that updating the base tool configuration of a registration that is associated with a Dynamic Registration will return a 422. All other fields can be updated freely. parameters: - name: account_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: &id188 type: object properties: name: type: string description: The name of the tool admin_nickname: type: string description: The admin-configured friendly display name for the registration description: type: string description: A description of the tool. Cannot exceed 2048 bytes. configuration: type: string description: '[Lti::ToolConfiguration | Lti::LegacyConfiguration] The LTI 1.3 configuration for the tool. Note that updating the base tool configuration of a registration associated with a Dynamic Registration is not allowed.' overlay: type: string description: '[Lti::Overlay] The overlay configuration for the tool. Overrides values in the base configuration. Note that updating the overlay of a registration associated with a Dynamic Registration IS allowed.' workflow_state: type: string enum: - 'on' - 'off' - allow - active - inactive description: |- "on"/"off"/"allow" set the account binding state directly (binding vocabulary) and will be deprecated soon. "active"/"inactive" set the registration state directly (registration vocabulary). All five values update both the binding and the registration to equivalent states. "allow" is only valid for Site Admin registrations. comment: type: string description: A comment explaining why this change was made. Cannot exceed 2000 characters. lock_deploying: type: boolean description: When true, no new deployments of this registration can be created. application/x-www-form-urlencoded: schema: *id188 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html delete: tags: - Lti Registrations operationId: delete_lti_registration_lti_registrations summary: Delete an LTI Registration description: Remove the specified LTI registration parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}: get: tags: - Lti Registrations operationId: show_lti_registration_apps summary: Show an LTI Registration description: |- Return details about the specified LTI registration, including the configuration and account binding. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string required: false description: |- Array of additional data to include. Always includes [account_binding configuration]. "account_binding":: the registration's binding to the given account "configuration":: the registration's Canvas-style tool configuration, without any overlays applied. "overlaid_configuration":: the registration's Canvas-style tool configuration, with all overlays applied. "overlaid_legacy_configuration":: the registration's legacy-style configuration, with all overlays applied. "overlay":: the registration's admin-defined configuration overlay "overlay_versions":: the registration's overlay's edit history responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html put: tags: - Lti Registrations operationId: update_lti_registration_apps summary: Update an LTI Registration description: |- Update the specified LTI registration with the provided parameters. Note that updating the base tool configuration of a registration that is associated with a Dynamic Registration will return a 422. All other fields can be updated freely. parameters: - name: account_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: &id189 type: object properties: name: type: string description: The name of the tool admin_nickname: type: string description: The admin-configured friendly display name for the registration description: type: string description: A description of the tool. Cannot exceed 2048 bytes. configuration: type: string description: '[Lti::ToolConfiguration | Lti::LegacyConfiguration] The LTI 1.3 configuration for the tool. Note that updating the base tool configuration of a registration associated with a Dynamic Registration is not allowed.' overlay: type: string description: '[Lti::Overlay] The overlay configuration for the tool. Overrides values in the base configuration. Note that updating the overlay of a registration associated with a Dynamic Registration IS allowed.' workflow_state: type: string enum: - 'on' - 'off' - allow - active - inactive description: |- "on"/"off"/"allow" set the account binding state directly (binding vocabulary) and will be deprecated soon. "active"/"inactive" set the registration state directly (registration vocabulary). All five values update both the binding and the registration to equivalent states. "allow" is only valid for Site Admin registrations. comment: type: string description: A comment explaining why this change was made. Cannot exceed 2000 characters. lock_deploying: type: boolean description: When true, no new deployments of this registration can be created. application/x-www-form-urlencoded: schema: *id189 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html delete: tags: - Lti Registrations operationId: delete_lti_registration_apps summary: Delete an LTI Registration description: Remove the specified LTI registration parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registration_by_client_id/{client_id}: get: tags: - Lti Registrations operationId: show_lti_registration_via_client_id_lti_registration_by_client_id summary: Show an LTI Registration (via the client_id) description: |- Returns details about the specified LTI registration, including the configuration and account binding. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: client_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/app_by_client_id/{client_id}: get: tags: - Lti Registrations operationId: show_lti_registration_via_client_id_app_by_client_id summary: Show an LTI Registration (via the client_id) description: |- Returns details about the specified LTI registration, including the configuration and account binding. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: client_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/by_utid/{utid}: get: tags: - Lti Registrations operationId: get_lti_registration_by_unified_tool_id_lti_registrations summary: Get LTI Registration by Unified Tool ID description: |- Returns an LTI registration by looking up its unified_tool_id. Searches both manual configurations and IMS registrations. Only returns registrations that are active and accessible from the current account (owned by account, Site Admin, or has binding). parameters: - name: account_id in: path schema: type: string required: true description: ID - name: utid in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/by_utid/{utid}: get: tags: - Lti Registrations operationId: get_lti_registration_by_unified_tool_id_apps summary: Get LTI Registration by Unified Tool ID description: |- Returns an LTI registration by looking up its unified_tool_id. Searches both manual configurations and IMS registrations. Only returns registrations that are active and accessible from the current account (owned by account, Site Admin, or has binding). parameters: - name: account_id in: path schema: type: string required: true description: ID - name: utid in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/install_status/{client_id}: get: tags: - Lti Registrations operationId: check_lti_registration_install_status_lti_registrations summary: Check LTI Registration Install Status description: |- Returns the local installation status for a Site Admin LTI registration. If the developer key's registration is in Site Admin, returns the local copy in the current account (if installed). If the registration is already in the current account, returns it directly. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: client_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/install_status/{client_id}: get: tags: - Lti Registrations operationId: check_lti_registration_install_status_apps summary: Check LTI Registration Install Status description: |- Returns the local installation status for a Site Admin LTI registration. If the developer key's registration is in Site Admin, returns the local copy in the current account (if installed). If the registration is already in the current account, returns it directly. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: client_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/reset: put: tags: - Lti Registrations operationId: reset_lti_registration_to_defaults_lti_registrations summary: Reset an LTI Registration to Defaults description: |- Reset the specified LTI registration to its default settings in this context. This removes all customizations that were present in the overlay associated with this context. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/reset: put: tags: - Lti Registrations operationId: reset_lti_registration_to_defaults_apps summary: Reset an LTI Registration to Defaults description: |- Reset the specified LTI registration to its default settings in this context. This removes all customizations that were present in the overlay associated with this context. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/bind: post: tags: - Lti Registrations operationId: bind_lti_registration_to_root_account_lti_registrations summary: Bind an LTI Registration to a Root Account description: |- Enable or disable the specified LTI registration for the specified root account. To enable an inherited registration (eg from Site Admin), pass the registration's global ID. Only allowed for root accounts. Specifics for centrally-managed/federated consortia: Child root accounts may not bind inherited registrations. For parent root account, binding also applies to all child root accounts. parameters: - name: account_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: &id190 type: object properties: workflow_state: type: string enum: - 'on' - 'off' description: The desired state for this registration/account binding. required: - workflow_state application/x-www-form-urlencoded: schema: *id190 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::RegistrationAccountBinding' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html delete: tags: - Lti Registrations operationId: remove_inherited_lti_registration_lti_registrations summary: Remove an Inherited LTI Registration description: |- Deletes the account binding for this registration, effectively removing it from the account. Only available when the lti_deactivate_registrations feature flag is enabled. Only valid for inherited (Site Admin) registrations — use destroy for registrations owned by this account. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::RegistrationAccountBinding' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/bind: post: tags: - Lti Registrations operationId: bind_lti_registration_to_root_account_apps summary: Bind an LTI Registration to a Root Account description: |- Enable or disable the specified LTI registration for the specified root account. To enable an inherited registration (eg from Site Admin), pass the registration's global ID. Only allowed for root accounts. Specifics for centrally-managed/federated consortia: Child root accounts may not bind inherited registrations. For parent root account, binding also applies to all child root accounts. parameters: - name: account_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: &id191 type: object properties: workflow_state: type: string enum: - 'on' - 'off' description: The desired state for this registration/account binding. required: - workflow_state application/x-www-form-urlencoded: schema: *id191 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::RegistrationAccountBinding' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html delete: tags: - Lti Registrations operationId: remove_inherited_lti_registration_apps summary: Remove an Inherited LTI Registration description: |- Deletes the account binding for this registration, effectively removing it from the account. Only available when the lti_deactivate_registrations feature flag is enabled. Only valid for inherited (Site Admin) registrations — use destroy for registrations owned by this account. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::RegistrationAccountBinding' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/install_from_template: post: tags: - Lti Registrations operationId: install_lti_registration_from_template_lti_registrations summary: Install an LTI Registration from a Template description: |- This endpoint installs a local copy of a "template" LTI registration from Site Admin into the specified account. The local copy can then be customized for the account without affecting the template registration. Only allowed for root accounts and for registrations from Site Admin marked as templates. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/install_from_template: post: tags: - Lti Registrations operationId: install_lti_registration_from_template_apps summary: Install an LTI Registration from a Template description: |- This endpoint installs a local copy of a "template" LTI registration from Site Admin into the specified account. The local copy can then be customized for the account without affecting the template registration. Only allowed for root accounts and for registrations from Site Admin marked as templates. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{registration_id}/deployments/{deployment_id}/context_search: get: tags: - Lti Registrations operationId: search_for_accounts_and_courses_lti_registrations summary: Search for Accounts and Courses description: |- This is a utility endpoint used by the Canvas Apps UI and may not serve general use cases. Search for accounts and courses that match the search term on name, SIS id, or course code. Returns all matching accounts and courses, including those nested in sub-accounts. Returns bare-bones data about each account and course, and only up to 20 of each. Used to populate the search dropdowns when managing LTI registration availability. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: registration_id in: path schema: type: string required: true description: ID - name: deployment_id in: path schema: type: string required: true description: ID - name: only_children_of in: query schema: type: string required: false description: Account ID. If provided, only searches within this account and only returns direct children of this account. - name: search_term in: query schema: type: string required: false description: String to search for in account names, SIS ids, or course codes. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextSearchResponse' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{registration_id}/deployments/{deployment_id}/context_search: get: tags: - Lti Registrations operationId: search_for_accounts_and_courses_apps summary: Search for Accounts and Courses description: |- This is a utility endpoint used by the Canvas Apps UI and may not serve general use cases. Search for accounts and courses that match the search term on name, SIS id, or course code. Returns all matching accounts and courses, including those nested in sub-accounts. Returns bare-bones data about each account and course, and only up to 20 of each. Used to populate the search dropdowns when managing LTI registration availability. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: registration_id in: path schema: type: string required: true description: ID - name: deployment_id in: path schema: type: string required: true description: ID - name: only_children_of in: query schema: type: string required: false description: Account ID. If provided, only searches within this account and only returns direct children of this account. - name: search_term in: query schema: type: string required: false description: String to search for in account names, SIS ids, or course codes. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ContextSearchResponse' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/overlay_history: get: tags: - Lti Registrations operationId: get_lti_registration_overlay_history_lti_registrations summary: Get LTI Registration Overlay History description: Returns the overlay history items for the specified LTI registration. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: limit in: query schema: type: integer format: int64 required: false description: The maximum number of history items to return. Defaults to 10. Maximum allowed is 100. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Lti::OverlayVersion' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/overlay_history: get: tags: - Lti Registrations operationId: get_lti_registration_overlay_history_apps summary: Get LTI Registration Overlay History description: Returns the overlay history items for the specified LTI registration. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: limit in: query schema: type: integer format: int64 required: false description: The maximum number of history items to return. Defaults to 10. Maximum allowed is 100. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Lti::OverlayVersion' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/history: get: tags: - Lti Registrations operationId: get_lti_registration_history_lti_registrations summary: Get LTI Registration History description: |- Returns the history entries for the specified LTI registration. This endpoint provides comprehensive change tracking for all fields associated with the registration, including registration fields, developer key changes, internal configuration changes, and overlay changes. Supports pagination using the `page` and `per_page` parameters. The default page size is 10. parameters: - name: account_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 content: application/json: schema: type: array items: type: string x-canvas-declared-type: Lti::RegistrationHistoryEntry externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/history: get: tags: - Lti Registrations operationId: get_lti_registration_history_apps summary: Get LTI Registration History description: |- Returns the history entries for the specified LTI registration. This endpoint provides comprehensive change tracking for all fields associated with the registration, including registration fields, developer key changes, internal configuration changes, and overlay changes. Supports pagination using the `page` and `per_page` parameters. The default page size is 10. parameters: - name: account_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 content: application/json: schema: type: array items: type: string x-canvas-declared-type: Lti::RegistrationHistoryEntry externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/update_requests/{update_request_id}: get: tags: - Lti Registrations operationId: get_lti_registration_update_request_lti_registrations summary: Get LTI Registration Update Request description: Retrieves details about a specific registration update request. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the registration. - name: update_request_id in: path schema: type: integer format: int64 required: true description: The id of the registration update request to retrieve. - name: include in: query schema: type: string enum: - String] Array of additional information to include [configuration - lti_registration required: false description: no description responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Lti::RegistrationUpdateRequest externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/update_requests/{update_request_id}: get: tags: - Lti Registrations operationId: get_lti_registration_update_request_apps summary: Get LTI Registration Update Request description: Retrieves details about a specific registration update request. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the registration. - name: update_request_id in: path schema: type: integer format: int64 required: true description: The id of the registration update request to retrieve. - name: include in: query schema: type: string enum: - String] Array of additional information to include [configuration - lti_registration required: false description: no description responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Lti::RegistrationUpdateRequest externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/latest_update_request: get: tags: - Lti Registrations operationId: get_latest_lti_registration_update_request_lti_registrations summary: Get Latest LTI Registration Update Request description: |- Retrieves the most recent update request for a registration, regardless of its status. Returns 404 if there are no update requests for this registration. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the registration. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Lti::RegistrationUpdateRequest externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/latest_update_request: get: tags: - Lti Registrations operationId: get_latest_lti_registration_update_request_apps summary: Get Latest LTI Registration Update Request description: |- Retrieves the most recent update request for a registration, regardless of its status. Returns 404 if there are no update requests for this registration. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the registration. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Lti::RegistrationUpdateRequest externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/lti_registrations/{id}/update_requests/{update_request_id}/apply: put: tags: - Lti Registrations operationId: apply_lti_registration_update_requst_lti_registrations summary: Apply LTI Registration Update Requst description: |- Applies a registration update request to an existing registration, replacing the existing configuration and overlay with the new values. If the request is rejected, marks it as rejected without applying changes. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the registration to update. - name: update_request_id in: path schema: type: integer format: int64 required: true description: The id of the registration update request to apply. requestBody: required: false content: application/json: schema: &id192 type: object properties: accepted: type: boolean description: Whether to accept (true) or reject (false) the registration update request. overlay: type: string x-canvas-declared-type: LtiConfigurationOverlay description: Optional overlay data to apply on top of the new configuration. comment: type: string description: Optional comment explaining the reason for applying this update. required: - accepted application/x-www-form-urlencoded: schema: *id192 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/accounts/{account_id}/apps/{id}/update_requests/{update_request_id}/apply: put: tags: - Lti Registrations operationId: apply_lti_registration_update_requst_apps summary: Apply LTI Registration Update Requst description: |- Applies a registration update request to an existing registration, replacing the existing configuration and overlay with the new values. If the request is rejected, marks it as rejected without applying changes. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the registration to update. - name: update_request_id in: path schema: type: integer format: int64 required: true description: The id of the registration update request to apply. requestBody: required: false content: application/json: schema: &id193 type: object properties: accepted: type: boolean description: Whether to accept (true) or reject (false) the registration update request. overlay: type: string x-canvas-declared-type: LtiConfigurationOverlay description: Optional overlay data to apply on top of the new configuration. comment: type: string description: Optional comment explaining the reason for applying this update. required: - accepted application/x-www-form-urlencoded: schema: *id193 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::Registration' externalDocs: url: https://canvas.instructure.com/doc/api/lti_registrations.html /v1/courses/{course_id}/lti_resource_links: get: tags: - Lti Resource Links operationId: list_lti_resource_links summary: List LTI Resource Links description: |- Returns all Resource Links in the specified course. This includes links that are associated with Assignments, Module Items, Collaborations, and that are embedded in rich content. This endpoint is paginated, and will return 50 links per page by default. Links are sorted by the order in which they were created. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include_deleted in: query schema: type: boolean required: false description: Include deleted resource links and links associated with deleted content in response. Default is false. - name: per_page in: query schema: type: integer format: int64 required: false description: The number of registrations to return per page. Defaults to 50. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Lti::ResourceLink' externalDocs: url: https://canvas.instructure.com/doc/api/lti_resource_links.html post: tags: - Lti Resource Links operationId: create_lti_resource_link summary: Create an LTI Resource Link description: |- Create a new LTI Resource Link in the specified course with the provided parameters. Caution! Resource Links are usually created by the tool via LTI Deep Linking. The tool has no knowledge of links created via this API, and may not be able to handle or launch them. Links created using this API cannot be associated with a specific piece of Canvas content, like an Assignment, Module Item, or Collaboration. Links created using this API are only suitable for embedding in rich content using the `canvas_launch_url` provided in the API response. This link will be associated with the ContextExternalTool available in this context that matches the provided url. If a matching tool is not found, the link will not be created and this will return an error. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id194 type: object properties: url: type: string description: The launch URL for this resource link. title: type: string description: The title of the resource link. custom: type: object additionalProperties: true description: Custom parameters to be sent to the tool when launching this link. required: - url application/x-www-form-urlencoded: schema: *id194 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::ResourceLink' externalDocs: url: https://canvas.instructure.com/doc/api/lti_resource_links.html /v1/courses/{course_id}/lti_resource_links/{id}: get: tags: - Lti Resource Links operationId: show_lti_resource_link summary: Show an LTI Resource Link description: |- Return details about the specified resource link. The ID can be in the standard Canvas format ("1"), or in these special formats: - resource_link_uuid: - Find the resource link by its resource_link_uuid - lookup_uuid: - Find the resource link by its lookup_uuid parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include_deleted in: query schema: type: boolean required: false description: Include deleted resource links in search. Default is false. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::ResourceLink' externalDocs: url: https://canvas.instructure.com/doc/api/lti_resource_links.html put: tags: - Lti Resource Links operationId: update_lti_resource_link summary: Update an LTI Resource Link description: |- Update the specified resource link with the provided parameters. Caution! Changing existing links may result in launch errors. parameters: - name: course_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: &id195 type: object properties: url: type: string description: |- The launch URL for this resource link. Caution! URL must match the URL or domain of the tool associated with this resource link custom: type: object additionalProperties: true description: |- Custom parameters to be sent to the tool when launching this link. Caution! Changing these from what the tool provided could result in errors if the tool doesn't see what it's expecting. include_deleted: type: boolean description: Update link even if it is deleted. Default is false. context_external_tool_id: type: integer format: int64 description: |- The Canvas identifier for the LTI 1.3 External Tool that the LTI Resource Link was originally installed from. Caution! The resource link url must match the tool's domain or url. application/x-www-form-urlencoded: schema: *id195 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::ResourceLink' externalDocs: url: https://canvas.instructure.com/doc/api/lti_resource_links.html delete: tags: - Lti Resource Links operationId: delete_lti_resource_link summary: Delete an LTI Resource Link description: |- Delete the specified resource link. The ID can be in the standard Canvas format ("1"), or in these special formats: - resource_link_uuid: - Find the resource link by its resource_link_uuid - lookup_uuid: - Find the resource link by its lookup_uuid Only links that are not associated with Assignments, Module Items, or Collaborations can be deleted. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Lti::ResourceLink' externalDocs: url: https://canvas.instructure.com/doc/api/lti_resource_links.html /v1/courses/{course_id}/lti_resource_links/bulk: post: tags: - Lti Resource Links operationId: bulk_create_lti_resource_links summary: Bulk Create LTI Resource Links description: |- Create up to 100 new LTI Resource Links in the specified course with the provided parameters. Caution! Resource Links are usually created by the tool via LTI Deep Linking. The tool has no knowledge of links created via this API, and may not be able to handle or launch them. Links created using this API cannot be associated with a specific piece of Canvas content, like an Assignment, Module Item, or Collaboration. Links created using this API are only suitable for embedding in rich content using the `canvas_launch_url` provided in the API response. Each link will be associated with the ContextExternalTool available in this context that matches the provided url. If a matching tool is not found, or any parameters are invalid, no links will be created and this will return an error. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id196 type: object properties: POST: type: string description: body [Required, Array] The POST body should be a JSON array of objects containing the parameters for each link to create. url: type: array items: type: string description: Each object must contain a launch URL. title: type: array items: type: string description: Each object may contain a title. custom: type: array items: type: object additionalProperties: true description: Custom parameters to be sent to the tool when launching this link. required: - url application/x-www-form-urlencoded: schema: *id196 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Lti::ResourceLink' externalDocs: url: https://canvas.instructure.com/doc/api/lti_resource_links.html /v1/media_objects/{media_object_id}/media_tracks: get: tags: - Media Objects operationId: list_media_tracks_for_media_object_or_attachment_media_objects summary: List media tracks for a Media Object or Attachment description: List the media tracks associated with a media object or attachment parameters: - name: media_object_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - content - webvtt_content - updated_at - created_at required: false description: |- By default, index returns id, locale, kind, media_object_id, and user_id for each of the result MediaTracks. Use include[] to add additional fields. For example include[]=content responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaTrack' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html put: tags: - Media Objects operationId: update_media_tracks_media_objects summary: Update Media Tracks description: |- Replace the media tracks associated with a media object or attachment with the array of tracks provided in the body. Update will delete any existing tracks not listed, leave untouched any tracks with no content field, and update or create tracks with a content field. parameters: - name: media_object_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id197 type: object properties: include: type: array items: type: string enum: - content - webvtt_content - updated_at - created_at description: |- By default, an update returns id, locale, kind, media_object_id, and user_id for each of the result MediaTracks. Use include[] to add additional fields. For example include[]=content application/x-www-form-urlencoded: schema: *id197 responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaTrack' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/media_attachments/{attachment_id}/media_tracks: get: tags: - Media Objects operationId: list_media_tracks_for_media_object_or_attachment_media_attachments summary: List media tracks for a Media Object or Attachment description: List the media tracks associated with a media object or attachment parameters: - name: attachment_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - content - webvtt_content - updated_at - created_at required: false description: |- By default, index returns id, locale, kind, media_object_id, and user_id for each of the result MediaTracks. Use include[] to add additional fields. For example include[]=content responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaTrack' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html put: tags: - Media Objects operationId: update_media_tracks_media_attachments summary: Update Media Tracks description: |- Replace the media tracks associated with a media object or attachment with the array of tracks provided in the body. Update will delete any existing tracks not listed, leave untouched any tracks with no content field, and update or create tracks with a content field. parameters: - name: attachment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id198 type: object properties: include: type: array items: type: string enum: - content - webvtt_content - updated_at - created_at description: |- By default, an update returns id, locale, kind, media_object_id, and user_id for each of the result MediaTracks. Use include[] to add additional fields. For example include[]=content application/x-www-form-urlencoded: schema: *id198 responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaTrack' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/media_objects: get: tags: - Media Objects operationId: list_media_objects_media_objects summary: List Media Objects description: |- Returns media objects created by the user making the request. When using the second version, returns media objects associated with the given course. parameters: - name: sort in: query schema: type: string enum: - title - created_at required: false description: |- Field to sort on. Default is "title" title:: sorts on user_entered_title if available, title if not. created_at:: sorts on the object's creation time. - name: order in: query schema: type: string enum: - asc - desc required: false description: Sort direction. Default is "asc" - name: exclude in: query schema: type: array items: type: string enum: - sources - tracks required: false description: |- Array of data to exclude. By excluding "sources" and "tracks", the api will not need to query kaltura, which greatly speeds up its response. sources:: Do not query kaltura for media_sources tracks:: Do not query kaltura for media_tracks responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaObject' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/courses/{course_id}/media_objects: get: tags: - Media Objects operationId: list_media_objects_courses_media_objects summary: List Media Objects description: |- Returns media objects created by the user making the request. When using the second version, returns media objects associated with the given course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - title - created_at required: false description: |- Field to sort on. Default is "title" title:: sorts on user_entered_title if available, title if not. created_at:: sorts on the object's creation time. - name: order in: query schema: type: string enum: - asc - desc required: false description: Sort direction. Default is "asc" - name: exclude in: query schema: type: array items: type: string enum: - sources - tracks required: false description: |- Array of data to exclude. By excluding "sources" and "tracks", the api will not need to query kaltura, which greatly speeds up its response. sources:: Do not query kaltura for media_sources tracks:: Do not query kaltura for media_tracks responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaObject' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/groups/{group_id}/media_objects: get: tags: - Media Objects operationId: list_media_objects_groups_media_objects summary: List Media Objects description: |- Returns media objects created by the user making the request. When using the second version, returns media objects associated with the given course. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - title - created_at required: false description: |- Field to sort on. Default is "title" title:: sorts on user_entered_title if available, title if not. created_at:: sorts on the object's creation time. - name: order in: query schema: type: string enum: - asc - desc required: false description: Sort direction. Default is "asc" - name: exclude in: query schema: type: array items: type: string enum: - sources - tracks required: false description: |- Array of data to exclude. By excluding "sources" and "tracks", the api will not need to query kaltura, which greatly speeds up its response. sources:: Do not query kaltura for media_sources tracks:: Do not query kaltura for media_tracks responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaObject' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/media_attachments: get: tags: - Media Objects operationId: list_media_objects_media_attachments summary: List Media Objects description: |- Returns media objects created by the user making the request. When using the second version, returns media objects associated with the given course. parameters: - name: sort in: query schema: type: string enum: - title - created_at required: false description: |- Field to sort on. Default is "title" title:: sorts on user_entered_title if available, title if not. created_at:: sorts on the object's creation time. - name: order in: query schema: type: string enum: - asc - desc required: false description: Sort direction. Default is "asc" - name: exclude in: query schema: type: array items: type: string enum: - sources - tracks required: false description: |- Array of data to exclude. By excluding "sources" and "tracks", the api will not need to query kaltura, which greatly speeds up its response. sources:: Do not query kaltura for media_sources tracks:: Do not query kaltura for media_tracks responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaObject' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/courses/{course_id}/media_attachments: get: tags: - Media Objects operationId: list_media_objects_courses_media_attachments summary: List Media Objects description: |- Returns media objects created by the user making the request. When using the second version, returns media objects associated with the given course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - title - created_at required: false description: |- Field to sort on. Default is "title" title:: sorts on user_entered_title if available, title if not. created_at:: sorts on the object's creation time. - name: order in: query schema: type: string enum: - asc - desc required: false description: Sort direction. Default is "asc" - name: exclude in: query schema: type: array items: type: string enum: - sources - tracks required: false description: |- Array of data to exclude. By excluding "sources" and "tracks", the api will not need to query kaltura, which greatly speeds up its response. sources:: Do not query kaltura for media_sources tracks:: Do not query kaltura for media_tracks responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaObject' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/groups/{group_id}/media_attachments: get: tags: - Media Objects operationId: list_media_objects_groups_media_attachments summary: List Media Objects description: |- Returns media objects created by the user making the request. When using the second version, returns media objects associated with the given course. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - title - created_at required: false description: |- Field to sort on. Default is "title" title:: sorts on user_entered_title if available, title if not. created_at:: sorts on the object's creation time. - name: order in: query schema: type: string enum: - asc - desc required: false description: Sort direction. Default is "asc" - name: exclude in: query schema: type: array items: type: string enum: - sources - tracks required: false description: |- Array of data to exclude. By excluding "sources" and "tracks", the api will not need to query kaltura, which greatly speeds up its response. sources:: Do not query kaltura for media_sources tracks:: Do not query kaltura for media_tracks responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaObject' externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/media_objects/{media_object_id}: put: tags: - Media Objects operationId: update_media_object_media_objects summary: Update Media Object description: Updates the title of a media object. parameters: - name: media_object_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id199 type: object properties: user_entered_title: type: string description: The new title. viewer_restrictions: type: object additionalProperties: true description: |- A JSON object describing viewer access restrictions for this media. - show_rolling_transcript [Optional, Boolean]: Whether to show the rolling transcripts of the media during playback, or not. application/x-www-form-urlencoded: schema: *id199 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/media_attachments/{attachment_id}: put: tags: - Media Objects operationId: update_media_object_media_attachments summary: Update Media Object description: Updates the title of a media object. parameters: - name: attachment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id200 type: object properties: user_entered_title: type: string description: The new title. viewer_restrictions: type: object additionalProperties: true description: |- A JSON object describing viewer access restrictions for this media. - show_rolling_transcript [Optional, Boolean]: Whether to show the rolling transcripts of the media during playback, or not. application/x-www-form-urlencoded: schema: *id200 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/media_objects.html /v1/courses/{course_id}/assignments/{assignment_id}/moderated_students: get: tags: - Moderated Grading operationId: list_students_selected_for_moderation summary: List students selected for moderation description: Returns a paginated list of students selected for moderation parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/moderated_grading.html post: tags: - Moderated Grading operationId: select_students_for_moderation summary: Select students for moderation description: Returns an array of users that were selected for moderation parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id201 type: object properties: student_ids: type: array items: type: number description: user ids for students to select for moderation application/x-www-form-urlencoded: schema: *id201 responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/moderated_grading.html /v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/bulk_select: put: tags: - Moderated Grading operationId: bulk_select_provisional_grades summary: Bulk select provisional grades description: |- Choose which provisional grades will be received by associated students for an assignment. The caller must be the final grader for the assignment or an admin with :select_final_grade rights. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_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/moderated_grading.html /v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/status: get: tags: - Moderated Grading operationId: show_provisional_grade_status_for_student summary: Show provisional grade status for a student description: Tell whether the student's submission needs one or more provisional grades. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: student_id in: query schema: type: integer format: int64 required: false description: The id of the student to show the status for responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/moderated_grading.html /v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/{provisional_grade_id}/select: put: tags: - Moderated Grading operationId: select_provisional_grade summary: Select provisional grade description: |- Choose which provisional grade the student should receive for a submission. The caller must be the final grader for the assignment or an admin with :select_final_grade rights. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: provisional_grade_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/moderated_grading.html /v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/publish: post: tags: - Moderated Grading operationId: publish_provisional_grades_for_assignment summary: Publish provisional grades for an assignment description: |- Publish the selected provisional grade for all submissions to an assignment. Use the "Select provisional grade" endpoint to choose which provisional grade to publish for a particular submission. Students not in the moderation set will have their one and only provisional grade published. WARNING: This is irreversible. This will overwrite existing grades in the gradebook. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID deprecated: true responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/moderated_grading.html /v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/publish_async: post: tags: - Moderated Grading operationId: publish_provisional_grades_for_assignment_asynchronous summary: Publish provisional grades for an assignment (asynchronous) description: |- Publish the selected provisional grade for all submissions to an assignment in a background job. Unlike the synchronous "Publish provisional grades" endpoint, this returns immediately with a Progress object that can be polled for completion. Use the "Select provisional grade" endpoint to choose which provisional grade to publish for a particular submission. Students not in the moderation set will have their one and only provisional grade published. WARNING: This is irreversible. This will overwrite existing grades in the gradebook. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/moderated_grading.html /v1/courses/{course_id}/assignments/{assignment_id}/anonymous_provisional_grades/status: get: tags: - Moderated Grading operationId: show_provisional_grade_status_for_student_moderated_grading summary: Show provisional grade status for a student description: Determine whether or not the student's submission needs one or more provisional grades. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: anonymous_id in: query schema: type: string required: false description: The id of the student to show the status for responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/moderated_grading.html /v1/courses/{course_id}/modules: get: tags: - Modules operationId: list_modules summary: List modules description: A paginated list of the modules in a course parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - items - content_details required: false description: |- - "items": Return module items inline if possible. This parameter suggests that Canvas return module items directly in the Module object JSON, to avoid having to make separate API requests for each module when enumerating modules and items. Canvas is free to omit 'items' for any particular module if it deems them too numerous to return inline. Callers must be prepared to use the {api:ContextModuleItemsApiController#index List Module Items API} if items are not returned. - "content_details": Requires 'items'. Returns additional details with module items specific to their associated content items. Includes standard lock information for each item. - name: search_term in: query schema: type: string required: false description: |- The partial name of the modules (and module items, if 'items' is specified with include[]) to match and return. - name: student_id in: query schema: type: string required: false description: Returns module completion information for the student with this id. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Module__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html post: tags: - Modules operationId: create_module summary: Create a module description: Create and return a new module parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id202 type: object properties: module[name]: type: string description: The name of the module module[unlock_at]: type: string format: date-time description: The date the module will unlock module[position]: type: integer format: int64 description: The position of this module in the course (1-based) module[require_sequential_progress]: type: boolean description: Whether module items must be unlocked in order module[prerequisite_module_ids]: type: array items: type: string description: |- IDs of Modules that must be completed before this one is unlocked. Prerequisite modules must precede this module (i.e. have a lower position value), otherwise they will be ignored module[publish_final_grade]: type: boolean description: |- Whether to publish the student's final grade for the course upon completion of this module. required: - module[name] application/x-www-form-urlencoded: schema: *id202 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Module__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /v1/courses/{course_id}/modules/{id}: get: tags: - Modules operationId: show_module summary: Show module description: Get information about a single module parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - items - content_details required: false description: |- - "items": Return module items inline if possible. This parameter suggests that Canvas return module items directly in the Module object JSON, to avoid having to make separate API requests for each module when enumerating modules and items. Canvas is free to omit 'items' for any particular module if it deems them too numerous to return inline. Callers must be prepared to use the {api:ContextModuleItemsApiController#index List Module Items API} if items are not returned. - "content_details": Requires 'items'. Returns additional details with module items specific to their associated content items. Includes standard lock information for each item. - name: student_id in: query schema: type: string required: false description: Returns module completion information for the student with this id. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Module__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html put: tags: - Modules operationId: update_module summary: Update a module description: Update and return an existing module parameters: - name: course_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: &id203 type: object properties: module[name]: type: string description: The name of the module module[unlock_at]: type: string format: date-time description: The date the module will unlock module[position]: type: integer format: int64 description: The position of the module in the course (1-based) module[require_sequential_progress]: type: boolean description: Whether module items must be unlocked in order module[prerequisite_module_ids]: type: array items: type: string description: |- IDs of Modules that must be completed before this one is unlocked Prerequisite modules must precede this module (i.e. have a lower position value), otherwise they will be ignored module[publish_final_grade]: type: boolean description: |- Whether to publish the student's final grade for the course upon completion of this module. module[published]: type: boolean description: Whether the module is published and visible to students application/x-www-form-urlencoded: schema: *id203 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Module__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html delete: tags: - Modules operationId: delete_module summary: Delete module description: Delete a module parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Module__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /v1/courses/{course_id}/modules/{id}/relock: put: tags: - Modules operationId: re_lock_module_progressions summary: Re-lock module progressions description: |- Resets module progressions to their default locked state and recalculates them based on the current requirements. Adding progression requirements to an active course will not lock students out of modules they have already unlocked unless this action is called. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Module__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /v1/courses/{course_id}/modules/{module_id}/items: get: tags: - Modules operationId: list_module_items summary: List module items description: A paginated list of the items in a module parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - content_details required: false description: |- If included, will return additional details specific to the content associated with each item. Refer to the {api:Modules:Module%20Item Module Item specification} for more details. Includes standard lock information for each item. - name: search_term in: query schema: type: string required: false description: The partial title of the items to match and return. - name: student_id in: query schema: type: string required: false description: Returns module completion information for the student with this id. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ModuleItem__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html post: tags: - Modules operationId: create_module_item summary: Create a module item description: Create and return a new module item parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id204 type: object properties: module_item[title]: type: string description: The name of the module item and associated content module_item[type]: type: string enum: - File - Page - Discussion - Assignment - Quiz - SubHeader - ExternalUrl - ExternalTool description: The type of content linked to the item module_item[content_id]: type: string description: |- The id of the content to link to the module item. Required, except for 'ExternalUrl', 'Page', and 'SubHeader' types. module_item[position]: type: integer format: int64 description: The position of this item in the module (1-based). module_item[indent]: type: integer format: int64 description: 0-based indent level; module items may be indented to show a hierarchy module_item[page_url]: type: string description: |- Suffix for the linked wiki page (e.g. 'front-page'). Required for 'Page' type. module_item[external_url]: type: string description: |- External url that the item points to. [Required for 'ExternalUrl' and 'ExternalTool' types. module_item[new_tab]: type: boolean description: |- Whether the external tool opens in a new tab. Only applies to 'ExternalTool' type. module_item[completion_requirement][type]: type: string enum: - must_view - must_contribute - must_submit - must_mark_done description: |- Completion requirement for this module item. "must_view": Applies to all item types "must_contribute": Only applies to "Assignment", "Discussion", and "Page" types "must_submit", "min_score": Only apply to "Assignment" and "Quiz" types "must_mark_done": Only applies to "Assignment", "Page", and "AiExperience" types Inapplicable types will be ignored module_item[completion_requirement][min_score]: type: integer format: int64 description: |- Minimum score required to complete. Required for completion_requirement type 'min_score'. module_item[iframe][width]: type: integer format: int64 description: Width of the ExternalTool on launch module_item[iframe][height]: type: integer format: int64 description: Height of the ExternalTool on launch required: - module_item[type] - module_item[content_id] application/x-www-form-urlencoded: schema: *id204 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ModuleItem__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /v1/courses/{course_id}/modules/{module_id}/items/{id}: get: tags: - Modules operationId: show_module_item summary: Show module item description: Get information about a single module item parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - content_details required: false description: |- If included, will return additional details specific to the content associated with this item. Refer to the {api:Modules:Module%20Item Module Item specification} for more details. Includes standard lock information for each item. - name: student_id in: query schema: type: string required: false description: Returns module completion information for the student with this id. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ModuleItem__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html put: tags: - Modules operationId: update_module_item summary: Update a module item description: Update and return an existing module item parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_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: &id205 type: object properties: module_item[title]: type: string description: The name of the module item module_item[position]: type: integer format: int64 description: The position of this item in the module (1-based) module_item[indent]: type: integer format: int64 description: 0-based indent level; module items may be indented to show a hierarchy module_item[external_url]: type: string description: External url that the item points to. Only applies to 'ExternalUrl' type. module_item[new_tab]: type: boolean description: |- Whether the external tool opens in a new tab. Only applies to 'ExternalTool' type. module_item[completion_requirement][type]: type: string enum: - must_view - must_contribute - must_submit - must_mark_done description: |- Completion requirement for this module item. "must_view": Applies to all item types "must_contribute": Only applies to "Assignment", "Discussion", and "Page" types "must_submit", "min_score": Only apply to "Assignment" and "Quiz" types "must_mark_done": Only applies to "Assignment", "Page", and "AiExperience" types Inapplicable types will be ignored module_item[completion_requirement][min_score]: type: integer format: int64 description: |- Minimum score required to complete, Required for completion_requirement type 'min_score'. module_item[published]: type: boolean description: Whether the module item is published and visible to students. module_item[module_id]: type: string description: |- Move this item to another module by specifying the target module id here. The target module must be in the same course. application/x-www-form-urlencoded: schema: *id205 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ModuleItem__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html delete: tags: - Modules operationId: delete_module_item summary: Delete module item description: Delete a module item parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_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 content: application/json: schema: $ref: '#/components/schemas/ModuleItem__modules' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /v1/courses/{course_id}/modules/{module_id}/items/{id}/select_mastery_path: post: tags: - Modules operationId: select_mastery_path summary: Select a mastery path description: |- Select a mastery path when module item includes several possible paths. Requires Mastery Paths feature to be enabled. Returns a compound document with the assignments included in the given path and any module items related to those assignments parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_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: &id206 type: object properties: assignment_set_id: type: string description: |- Assignment set chosen, as specified in the mastery_paths portion of the context module item response student_id: type: string description: |- Which student the selection applies to. If not specified, current user is implied. application/x-www-form-urlencoded: schema: *id206 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /v1/courses/{course_id}/modules/{module_id}/items/{id}/done: put: tags: - Modules operationId: mark_module_item_as_done_not_done summary: Mark module item as done/not done description: |- Mark a module item as done/not done. Use HTTP method PUT to mark as done, and DELETE to mark as not done. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_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/modules.html /v1/courses/{course_id}/module_item_sequence: get: tags: - Modules operationId: get_module_item_sequence summary: Get module item sequence description: |- Given an asset in a course, find the ModuleItem it belongs to, the previous and next Module Items in the course sequence, and also any applicable mastery path rules parameters: - name: course_id in: path schema: type: string required: true description: ID - name: asset_type in: query schema: type: string enum: - ModuleItem - File - Page - Discussion - Assignment - Quiz - ExternalTool required: false description: |- The type of asset to find module sequence information for. Use the ModuleItem if it is known (e.g., the user navigated from a module item), since this will avoid ambiguity if the asset appears more than once in the module sequence. - name: asset_id in: query schema: type: integer format: int64 required: false description: The id of the asset (or the url in the case of a Page) responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ModuleItemSequence' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /v1/courses/{course_id}/modules/{module_id}/items/{id}/mark_read: post: tags: - Modules operationId: mark_module_item_read summary: Mark module item read description: |- Fulfills "must view" requirement for a module item. It is generally not necessary to do this explicitly, but it is provided for applications that need to access external content directly (bypassing the html_url redirect that normally allows Canvas to fulfill "must view" requirements). This endpoint cannot be used to complete requirements on locked or unpublished module items. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: module_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/modules.html /v1/courses/{course_id}/modules/{context_module_id}/assignment_overrides: get: tags: - Modules operationId: list_module_s_overrides summary: List a module's overrides description: Returns a paginated list of AssignmentOverrides that apply to the ContextModule. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: context_module_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ModuleAssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/modules.html put: tags: - Modules operationId: update_module_s_overrides summary: Update a module's overrides description: |- Accepts a list of overrides and applies them to the ContextModule. Returns 204 No Content response code if successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: context_module_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id207 type: object properties: overrides: type: array items: type: array items: {} description: |- List of overrides to apply to the module. Overrides that already exist should include an ID and will be updated if needed. New overrides will be created for overrides in the list without an ID. Overrides not included in the list will be deleted. Providing an empty list will delete all of the module's overrides. Keys for each override object can include: 'id', 'title', 'student_ids', and 'course_section_id'. 'group_id' is accepted if the Differentiation Tags account setting is enabled. required: - overrides application/x-www-form-urlencoded: schema: *id207 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/modules.html /lti/courses/{course_id}/names_and_roles: get: tags: - Names And Role operationId: list_course_memberships summary: List Course Memberships description: Return active NamesAndRoleMemberships in the given course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: rlid in: query schema: type: string required: false description: |- If specified only NamesAndRoleMemberships with access to the LTI link references by this `rlid` will be included. Also causes the member array to be included for each returned NamesAndRoleMembership. If the `role` parameter is also present, it will be 'and-ed' together with this parameter - name: role in: query schema: type: string required: false description: |- If specified only NamesAndRoleMemberships having this role in the given Course will be included. Value must be a fully-qualified LTI/LIS role URN. If the `rlid` parameter is also present, it will be 'and-ed' together with this parameter - name: limit in: query schema: type: string required: false description: May be used to limit the number of NamesAndRoleMemberships returned in a page. Defaults to 50. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NamesAndRoleMemberships' externalDocs: url: https://canvas.instructure.com/doc/api/names_and_role.html /lti/groups/{group_id}/names_and_roles: get: tags: - Names And Role operationId: list_group_memberships_names_and_role summary: List Group Memberships description: Return active NamesAndRoleMemberships in the given group. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: '`rlid`' in: query schema: type: string required: false description: |- If specified only NamesAndRoleMemberships with access to the LTI link references by this `rlid` will be included. Also causes the member array to be included for each returned NamesAndRoleMembership. If the role parameter is also present, it will be 'and-ed' together with this parameter - name: role in: query schema: type: string required: false description: |- If specified only NamesAndRoleMemberships having this role in the given Group will be included. Value must be a fully-qualified LTI/LIS role URN. Further, only http://purl.imsglobal.org/vocab/lis/v2/membership#Member and http://purl.imsglobal.org/vocab/lis/v2/membership#Manager are supported. If the `rlid` parameter is also present, it will be 'and-ed' together with this parameter - name: limit in: query schema: type: string required: false description: May be used to limit the number of NamesAndRoleMemberships returned in a page. Defaults to 50. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NamesAndRoleMemberships' externalDocs: url: https://canvas.instructure.com/doc/api/names_and_role.html /quiz/v1/courses/{course_id}/quizzes/{assignment_id}/items/{item_id}: get: tags: - New Quiz Items operationId: get_quiz_item summary: Get a quiz item description: Get details about a single item in a new quiz. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: The id of the assignment associated with the quiz. - name: item_id in: path schema: type: integer format: int64 required: true description: The id of the item associated with the quiz. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizItem' externalDocs: url: https://canvas.instructure.com/doc/api/new_quiz_items.html patch: tags: - New Quiz Items operationId: update_quiz_item summary: Update a quiz item description: Update a single quiz item in a new quiz. Only +QuestionItem+ types can be updated. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: The id of the assignment associated with the quiz. - name: item_id in: path schema: type: integer format: int64 required: true description: The id of the item associated with the quiz. requestBody: required: false content: application/json: schema: &id208 type: object properties: item[position]: type: integer format: int64 description: The position of the item within the quiz. item[points_possible]: type: number description: The number of points available to score on this item. Must be positive. item[entry_type]: type: string enum: - Item description: The type of the item. item[entry][title]: type: string description: The question title. item[entry][item_body]: type: string description: The question stem (rich content). item[entry][calculator_type]: type: string enum: - none - basic - scientific description: Type of calculator the user will have access to during the question. item[entry][feedback][neutral]: type: string description: General feedback to show regardless of answer (rich content). item[entry][feedback][correct]: type: string description: Feedback to show if the question is answered correctly (rich content). item[entry][feedback][incorrect]: type: string description: Feedback to show if the question is answered incorrectly (rich content). item[entry][interaction_type_slug]: type: string description: |- The type of question. One of 'multi-answer', 'matching', 'categorization', 'file-upload', 'formula', 'ordering', 'rich-fill-blank', 'hot-spot', 'choice', 'numeric', 'true-false', or 'essay'. See {Appendix: Question Types} for more info about each type. item[entry][interaction_data]: type: object additionalProperties: true description: 'An object that contains the question data. See {Appendix: Question Types} for more info about this field.' item[entry][properties]: type: object additionalProperties: true description: 'An object that contains additional properties for some question types. See {Appendix: Question Types} for more info about this field.' item[entry][scoring_data]: type: object additionalProperties: true description: 'An object that describes how to score the question. See {Appendix: Question Types} for more info about this field.' item[entry][answer_feedback]: type: object additionalProperties: true description: Feedback provided for each answer (rich content, only available on 'choice' question types). item[entry][scoring_algorithm]: type: string description: 'The algorithm used to score the question. See {Appendix: Question Types} for more info about this field.' application/x-www-form-urlencoded: schema: *id208 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizItem' externalDocs: url: https://canvas.instructure.com/doc/api/new_quiz_items.html delete: tags: - New Quiz Items operationId: delete_quiz_item summary: Delete a quiz item description: Delete a single quiz item in a new quiz. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: The id of the assignment associated with the quiz. - name: item_id in: path schema: type: integer format: int64 required: true description: The id of the item associated with the quiz. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizItem' externalDocs: url: https://canvas.instructure.com/doc/api/new_quiz_items.html /quiz/v1/courses/{course_id}/quizzes/{assignment_id}/items: get: tags: - New Quiz Items operationId: list_quiz_items summary: List quiz items description: Get a list of items in a new quiz. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: no description responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/QuizItem' externalDocs: url: https://canvas.instructure.com/doc/api/new_quiz_items.html post: tags: - New Quiz Items operationId: create_quiz_item summary: Create a quiz item description: Create a quiz item in a new quiz. Only +QuestionItem+ types can be created. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: The id of the assignment associated with the quiz. requestBody: required: false content: application/json: schema: &id209 type: object properties: item[position]: type: integer format: int64 description: The position of the item within the quiz. item[points_possible]: type: number description: The number of points available to score on this item. Must be positive. item[entry_type]: type: string enum: - Item description: The type of the item. item[entry][title]: type: string description: The question title. item[entry][item_body]: type: string description: The question stem (rich content). item[entry][calculator_type]: type: string enum: - none - basic - scientific description: Type of calculator the user will have access to during the question. item[entry][feedback][neutral]: type: string description: General feedback to show regardless of answer (rich content). item[entry][feedback][correct]: type: string description: Feedback to show if the question is answered correctly (rich content). item[entry][feedback][incorrect]: type: string description: Feedback to show if the question is answered incorrectly (rich content). item[entry][interaction_type_slug]: type: string description: 'The type of question. One of ''multi-answer'', ''matching'', ''categorization'', ''file-upload'', ''formula'', ''ordering'', ''rich-fill-blank'', ''hot-spot'', ''choice'', ''numeric'', ''true-false'', or ''essay''. See {Appendix: Question Types} for more info about each type.' item[entry][interaction_data]: type: object additionalProperties: true description: 'An object that contains the question data. See {Appendix: Question Types} for more info about this field.' item[entry][properties]: type: object additionalProperties: true description: 'An object that contains additional properties for some question types. See {Appendix: Question Types} for more info about this field.' item[entry][scoring_data]: type: object additionalProperties: true description: 'An object that describes how to score the question. See {Appendix: Question Types} for more info about this field.' item[entry][answer_feedback]: type: object additionalProperties: true description: Feedback provided for each answer (rich content, only available on 'choice' question types). item[entry][scoring_algorithm]: type: string description: 'The algorithm used to score the question. See {Appendix: Question Types} for more info about this field.' required: - item[entry_type] - item[entry][item_body] - item[entry][interaction_type_slug] - item[entry][interaction_data] - item[entry][scoring_data] - item[entry][scoring_algorithm] application/x-www-form-urlencoded: schema: *id209 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizItem' externalDocs: url: https://canvas.instructure.com/doc/api/new_quiz_items.html /quiz/v1/courses/{course_id}/quizzes/{assignment_id}/items/media_upload_url: get: tags: - New Quiz Items operationId: get_items_media_upload_url summary: Get items media_upload_url description: |- Get a url for uploading media for use in hot-spot question types. See the hot-spot question type in the {Appendix: Question Types} for more details about using this endpoint. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: no description responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/new_quiz_items.html /quiz/v1/courses/{course_id}/quizzes/{assignment_id}: get: tags: - New Quizzes operationId: get_new_quiz summary: Get a new quiz description: Get details about a single new quiz. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: The id of the assignment associated with the quiz. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NewQuiz' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes.html patch: tags: - New Quizzes operationId: update_single_quiz summary: Update a single quiz description: Update a single quiz for the course. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: The id of the assignment associated with the quiz. requestBody: required: false content: application/json: schema: &id210 type: object properties: quiz[title]: type: string description: The title of the quiz. quiz[assignment_group_id]: type: integer format: int64 description: The ID of the quiz's assignment group. quiz[points_possible]: type: number description: The total point value given to the quiz. Must be positive. quiz[due_at]: type: string format: date-time description: When the quiz is due. quiz[lock_at]: type: string format: date-time description: When to lock the quiz. quiz[unlock_at]: type: string format: date-time description: When to unlock the quiz. quiz[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: The type of grading the assignment receives. quiz[instructions]: type: string description: Instructions for the quiz. quiz[quiz_settings][calculator_type]: type: string enum: - none - basic - scientific description: |- Specifies which type of Calculator a student can use during Quiz taking. Should be null if no calculator is allowed. quiz[quiz_settings][filter_ip_address]: type: boolean description: Whether IP filtering is needed. Must be true for filters to take effect. quiz[quiz_settings][filters][ips]: type: array items: type: string description: |- Specifies ranges of IP addresses where the quiz can be taken from. Each range is an array like [start address, end address], or null if there's no restriction. Specifies the range of IP addresses where the quiz can be taken from. Should be null if there's no restriction. quiz[quiz_settings][multiple_attempts][multiple_attempts_enabled]: type: boolean description: Whether multiple attempts for this quiz is true. quiz[quiz_settings][multiple_attempts][attempt_limit]: type: boolean description: Whether there is an attempt limit. Only set if multiple_attempts_enabled is true. quiz[quiz_settings][multiple_attempts][max_attempts]: type: integer minimum: 1 description: |- The allowed attempts a student can take. If null, the allowed attempts are unlimited. Only used if attempt_limit is true. quiz[quiz_settings][multiple_attempts][score_to_keep]: type: string enum: - average - first - highest - latest description: Whichever score to keep for the attempts. Only used if multiple_attempts_enabled is true. quiz[quiz_settings][multiple_attempts][cooling_period]: type: boolean description: Whether there is a cooling period. Only used if multiple_attempts_enabled is true. quiz[quiz_settings][multiple_attempts][cooling_period_seconds]: type: integer minimum: 1 description: |- Required waiting period in seconds between attempts. If null, there is no required time. Only used if cooling_period is true. quiz[quiz_settings][one_at_a_time_type]: type: string enum: - none - question description: Specifies the settings for questions to display when quiz taking. quiz[quiz_settings][allow_backtracking]: type: boolean description: Whether to allow user to return to previous questions when 'one_at_a_time_type' is set to 'question'. quiz[quiz_settings][result_view_settings][result_view_restricted]: type: boolean description: Whether the results view is restricted for students. Must be true for any student restrictions to be set. quiz[quiz_settings][result_view_settings][display_points_awarded]: type: boolean description: Whether points are shown. Must set result_view_restricted to true to use this parameter. quiz[quiz_settings][result_view_settings][display_points_possible]: type: boolean description: Whether points possible is shown. Must set result_view_restricted to true to use this parameter. quiz[quiz_settings][result_view_settings][display_items]: type: boolean description: Whether to show items in the results view. Must be true for any items restrictions to be set. quiz[quiz_settings][result_view_settings][display_item_response]: type: boolean description: |- Whether item response is shown. Only set if display_items is true. Must be true for display_item_response_qualifier, show_item_responses_at, hide_item_responses_at, and display_item_response_correctness to be set. quiz[quiz_settings][result_view_settings][display_item_response_qualifier]: type: string enum: - always - once_per_attempt - after_last_attempt - once_after_last_attempt description: Specifies after which attempts student responses should be shown to them. Only used if display_item_response is true. quiz[quiz_settings][result_view_settings][show_item_responses_at]: type: string format: date-time description: When student responses should be shown to them. Only used if display_item_response is true. quiz[quiz_settings][result_view_settings][hide_item_responses_at]: type: string format: date-time description: When student responses should be hidden from them. Only used if display_item_response is true. quiz[quiz_settings][result_view_settings][display_item_response_correctness]: type: boolean description: |- Whether item correctness is shown. Only set if display_item_response is true. Must be true for display_item_response_correctness_qualifier, show_item_response_correctness_at, hide_item_response_correctness_at and display_item_correct_answer to be set. quiz[quiz_settings][result_view_settings][display_item_response_correctness_qualifier]: type: string enum: - always - after_last_attempt description: Specifies after which attempts student response correctness should be shown to them. Only used if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][show_item_response_correctness_at]: type: string format: date-time description: When student response correctness should be shown to them. Only used if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][hide_item_response_correctness_at]: type: string format: date-time description: When student response correctness should be hidden from them. Only used if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][display_item_correct_answer]: type: boolean description: Whether correct answer is shown. Only set if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][display_item_feedback]: type: boolean description: Whether Item feedback is shown. Only set if display_items is true. quiz[quiz_settings][shuffle_answers]: type: boolean description: Whether answers should be shuffled for students. quiz[quiz_settings][shuffle_questions]: type: boolean description: Whether questions should be shuffled for students. quiz[quiz_settings][require_student_access_code]: type: boolean description: Whether an access code is needed to take the quiz. quiz[quiz_settings][student_access_code]: type: string description: Access code to restrict quiz access. Should be null if no restriction. quiz[quiz_settings][has_time_limit]: type: boolean description: Whether there is a time limit for the quiz. quiz[quiz_settings][session_time_limit_in_seconds]: type: integer minimum: 1 description: Limit the time a student can work on the quiz. Should be null if no restriction. application/x-www-form-urlencoded: schema: *id210 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NewQuiz' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes.html delete: tags: - New Quizzes operationId: delete_new_quiz summary: Delete a new quiz description: Delete a single new quiz. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description - name: assignment_id in: path schema: type: integer format: int64 required: true description: The id of the assignment associated with the quiz. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NewQuiz' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes.html /quiz/v1/courses/{course_id}/quizzes: get: tags: - New Quizzes operationId: list_new_quizzes summary: List new quizzes description: Get a list of new quizzes. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/NewQuiz' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes.html post: tags: - New Quizzes operationId: create_new_quiz summary: Create a new quiz description: Create a new quiz for the course. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: no description requestBody: required: false content: application/json: schema: &id211 type: object properties: quiz[title]: type: string description: The title of the quiz. quiz[assignment_group_id]: type: integer format: int64 description: The ID of the quiz's assignment group. quiz[points_possible]: type: number description: The total point value given to the quiz. Must be positive. quiz[due_at]: type: string format: date-time description: When the quiz is due. quiz[lock_at]: type: string format: date-time description: When to lock the quiz. quiz[unlock_at]: type: string format: date-time description: When to unlock the quiz. quiz[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: The type of grading the assignment receives. quiz[instructions]: type: string description: Instructions for the quiz. quiz[quiz_settings][calculator_type]: type: string enum: - none - basic - scientific description: |- Specifies which type of Calculator a student can use during Quiz taking. Should be null if no calculator is allowed. quiz[quiz_settings][filter_ip_address]: type: boolean description: Whether IP filtering is needed. Must be true for filters to take effect. quiz[quiz_settings][filters][ips]: type: array items: type: string description: |- Specifies ranges of IP addresses where the quiz can be taken from. Each range is an array like [start address, end address], or null if there's no restriction. quiz[quiz_settings][multiple_attempts][multiple_attempts_enabled]: type: boolean description: Whether multiple attempts for this quiz is true. quiz[quiz_settings][multiple_attempts][attempt_limit]: type: boolean description: Whether there is an attempt limit. Only set if multiple_attempts_enabled is true. quiz[quiz_settings][multiple_attempts][max_attempts]: type: integer minimum: 1 description: |- The allowed attempts a student can take. If null, the allowed attempts are unlimited. Only used if attempt_limit is true. quiz[quiz_settings][multiple_attempts][score_to_keep]: type: string enum: - average - first - highest - latest description: Whichever score to keep for the attempts. Only used if multiple_attempts_enabled is true. quiz[quiz_settings][multiple_attempts][cooling_period]: type: boolean description: Whether there is a cooling (waiting) period. Only used if multiple_attempts_enabled is true. quiz[quiz_settings][multiple_attempts][cooling_period_seconds]: type: integer minimum: 1 description: |- Required waiting period in seconds between attempts. If null, there is no required time. Only used if cooling_period is true quiz[quiz_settings][one_at_a_time_type]: type: string enum: - none - question description: Specifies the settings for questions to display when quiz taking. quiz[quiz_settings][allow_backtracking]: type: boolean description: Whether to allow user to return to previous questions when 'one_at_a_time_type' is set to 'question'. quiz[quiz_settings][result_view_settings][result_view_restricted]: type: boolean description: Whether the results view is restricted for students. Must be true for any student restrictions to be set. quiz[quiz_settings][result_view_settings][display_points_awarded]: type: boolean description: Whether points are shown. Must set result_view_restricted to true to use this parameter. quiz[quiz_settings][result_view_settings][display_points_possible]: type: boolean description: Whether points possible is shown. Must set result_view_restricted to true to use this parameter. quiz[quiz_settings][result_view_settings][display_items]: type: boolean description: Whether to show items in the results view. Must be true for any items restrictions to be set. quiz[quiz_settings][result_view_settings][display_item_response]: type: boolean description: |- Whether item response is shown. Only set if display_items is true. Must be true for display_item_response_qualifier, show_item_responses_at, hide_item_responses_at, and display_item_response_correctness to be set. quiz[quiz_settings][result_view_settings][display_item_response_qualifier]: type: string enum: - always - once_per_attempt - after_last_attempt - once_after_last_attempt description: Specifies after which attempts student responses should be shown to them. Only used if display_item_response is true. quiz[quiz_settings][result_view_settings][show_item_responses_at]: type: string format: date-time description: When student responses should be shown to them. Only used if display_item_response is true. quiz[quiz_settings][result_view_settings][hide_item_responses_at]: type: string format: date-time description: When student responses should be hidden from them. Only used if display_item_response is true. quiz[quiz_settings][result_view_settings][display_item_response_correctness]: type: boolean description: |- Whether item correctness is shown. Only set if display_item_response is true. Must be true for display_item_response_correctness_qualifier, show_item_response_correctness_at, hide_item_response_correctness_at and display_item_correct_answer to be set. quiz[quiz_settings][result_view_settings][display_item_response_correctness_qualifier]: type: string enum: - always - after_last_attempt description: Specifies after which attempts student response correctness should be shown to them. Only used if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][show_item_response_correctness_at]: type: string format: date-time description: When student response correctness should be shown to them. Only used if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][hide_item_response_correctness_at]: type: string format: date-time description: When student response correctness should be hidden from them. Only used if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][display_item_correct_answer]: type: boolean description: Whether correct answer is shown. Only set if display_item_response_correctness is true. quiz[quiz_settings][result_view_settings][display_item_feedback]: type: boolean description: Whether Item feedback is shown. Only set if display_items is true. quiz[quiz_settings][shuffle_answers]: type: boolean description: Whether answers should be shuffled for students. quiz[quiz_settings][shuffle_questions]: type: boolean description: Whether questions should be shuffled for students. quiz[quiz_settings][require_student_access_code]: type: boolean description: Whether an access code is needed to take the quiz. quiz[quiz_settings][student_access_code]: type: string description: Access code to restrict quiz access. Should be null if no restriction. quiz[quiz_settings][has_time_limit]: type: boolean description: Whether there is a time limit for the quiz. quiz[quiz_settings][session_time_limit_in_seconds]: type: integer minimum: 1 description: Limit the time a student can work on the quiz. Should be null if no restriction. application/x-www-form-urlencoded: schema: *id211 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NewQuiz' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes.html /quiz/v1/courses/{course_id}/quizzes/{assignment_id}/accommodations: post: tags: - New Quizzes Accommodations operationId: set_quiz_level_accommodations summary: Set Quiz-Level Accommodations description: |- Apply accommodations at the quiz level for students in a specific assignment. Request Body Format: [{ "user_id": 3, "extra_time": 60, "extra_attempts": 1, "reduce_choices_enabled": true }] Responses * 200 OK: Accommodations were processed with some successes and failures * 401 Unauthorized: User does not have permission to update accommodations * 404 Not Found: The course or assignment was not found * 400 Bad Request: Validation error (e.g., invalid JSON, missing user IDs) parameters: - name: course_id in: path schema: type: string required: true description: The ID of the course where the quiz is located. - name: assignment_id in: path schema: type: integer format: int64 required: true description: The ID of the assignment/quiz that needs accommodations. requestBody: required: false content: application/json: schema: &id212 type: object properties: user_id: type: integer format: int64 description: The Canvas user ID of the student receiving accommodations. extra_time: type: integer format: int64 description: |- Amount of extra time in minutes granted for quiz submission. Allowed range: 0 to 10080 minutes (168 hours). extra_attempts: type: integer format: int64 description: Number of times the student is allowed to re-take the quiz over the multiple-attempt limit. reduce_choices_enabled: type: boolean description: If 'true', removes one incorrect answer from multiple-choice questions with 4 or more options. required: - user_id application/x-www-form-urlencoded: schema: *id212 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AccommodationResponse' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes_accommodations.html /quiz/v1/courses/{course_id}/accommodations: post: tags: - New Quizzes Accommodations operationId: set_course_level_accommodations summary: Set Course-Level Accommodations description: |- Apply accommodations at the course level for students enrolled in a given course. Request Body Format: [{ "user_id": 3, "extra_time": 60, "apply_to_in_progress_quiz_sessions": true, "reduce_choices_enabled": true }] Responses * 200 OK: Accommodations were processed with some successes and failures * 401 Unauthorized: User does not have permission to update accommodations * 404 Not Found: The course was not found * 400 Bad Request: Validation error (e.g., invalid JSON, missing user IDs) parameters: - name: course_id in: path schema: type: string required: true description: The ID of the course where accommodations should be applied. requestBody: required: false content: application/json: schema: &id213 type: object properties: user_id: type: integer format: int64 description: The Canvas user ID of the student receiving accommodations. extra_time: type: integer format: int64 description: |- Amount of extra time in minutes granted for quiz submission. Allowed range: 0 to 10080 minutes (168 hours). apply_to_in_progress_quiz_sessions: type: boolean description: If 'true', applies the accommodation to currently in-progress quiz sessions. reduce_choices_enabled: type: boolean description: If 'true', removes one incorrect answer from multiple-choice questions with 4 or more options. required: - user_id application/x-www-form-urlencoded: schema: *id213 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AccommodationResponse' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes_accommodations.html /quiz/v1/courses/{course_id}/quizzes/{assignment_id}/reports: post: tags: - New Quizzes Reports operationId: create_quiz_report summary: Create a quiz report description: |- Generate a new report for this quiz. Returns a progress object that can be used to track the progress of the report generation. *Responses* * 400 Bad Request if the specified report type or format is invalid * 409 Conflict if a quiz report of the specified type is already being generated parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id214 type: object properties: quiz_report[report_type]: type: string enum: - student_analysis - item_analysis description: The type of report to be generated. quiz_report[format]: type: string enum: - csv - json description: The format of report to be generated. required: - quiz_report[report_type] - quiz_report[format] application/x-www-form-urlencoded: schema: *id214 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Progress__new_quizzes_reports' externalDocs: url: https://canvas.instructure.com/doc/api/new_quizzes_reports.html /lti/notice-handlers/{context_external_tool_id}: get: tags: - Notice Handlers operationId: show_notice_handlers summary: Show notice handlers description: List all notice handlers for the tool parameters: - name: context_external_tool_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NoticeCatalog' externalDocs: url: https://canvas.instructure.com/doc/api/notice_handlers.html put: tags: - Notice Handlers operationId: set_notice_handler summary: Set notice handler description: Subscribe (set) or unsubscribe (remove) a notice handler for the tool parameters: - name: context_external_tool_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id215 type: object properties: notice_type: type: string description: The type of notice handler: type: string description: URL to receive the notice, or an empty string to unsubscribe max_batch_size: type: integer format: int64 description: The maximum number of notices to include in a single batch required: - notice_type - handler application/x-www-form-urlencoded: schema: *id215 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NoticeHandler' externalDocs: url: https://canvas.instructure.com/doc/api/notice_handlers.html /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preferences: get: tags: - Notification Preferences operationId: list_preferences_communication_channel_id summary: List preferences description: Fetch all preferences for the given communication channel parameters: - name: user_id in: path schema: type: string required: true description: ID - name: communication_channel_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/NotificationPreference' externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/{user_id}/communication_channels/{type}/{address}/notification_preferences: get: tags: - Notification Preferences operationId: list_preferences_type summary: List preferences description: Fetch all preferences for the given communication channel parameters: - name: user_id in: path schema: type: string required: true description: ID - name: type in: path schema: type: string required: true description: ID - name: address in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/NotificationPreference' externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preference_categories: get: tags: - Notification Preferences operationId: list_of_preference_categories summary: List of preference categories description: Fetch all notification preference categories for the given communication channel parameters: - name: user_id in: path schema: type: string required: true description: ID - name: communication_channel_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/notification_preferences.html /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preferences/{notification}: get: tags: - Notification Preferences operationId: get_preference_communication_channel_id summary: Get a preference description: Fetch the preference for the given notification for the given communication channel parameters: - name: user_id in: path schema: type: string required: true description: ID - name: communication_channel_id in: path schema: type: string required: true description: ID - name: notification in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NotificationPreference' externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/{user_id}/communication_channels/{type}/{address}/notification_preferences/{notification}: get: tags: - Notification Preferences operationId: get_preference_type summary: Get a preference description: Fetch the preference for the given notification for the given communication channel parameters: - name: user_id in: path schema: type: string required: true description: ID - name: type in: path schema: type: string required: true description: ID - name: address in: path schema: type: string required: true description: ID - name: notification in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NotificationPreference' externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/self/communication_channels/{communication_channel_id}/notification_preferences/{notification}: put: tags: - Notification Preferences operationId: update_preference_communication_channel_id summary: Update a preference description: Change the preference for a single notification for a single communication channel parameters: - name: communication_channel_id in: path schema: type: string required: true description: ID - name: notification in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id216 type: object properties: notification_preferences[frequency]: type: string description: The desired frequency for this notification required: - notification_preferences[frequency] application/x-www-form-urlencoded: schema: *id216 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/self/communication_channels/{type}/{address}/notification_preferences/{notification}: put: tags: - Notification Preferences operationId: update_preference_type summary: Update a preference description: Change the preference for a single notification for a single communication channel parameters: - name: type in: path schema: type: string required: true description: ID - name: address in: path schema: type: string required: true description: ID - name: notification in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id217 type: object properties: notification_preferences[frequency]: type: string description: The desired frequency for this notification required: - notification_preferences[frequency] application/x-www-form-urlencoded: schema: *id217 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/self/communication_channels/{communication_channel_id}/notification_preference_categories/{category}: put: tags: - Notification Preferences operationId: update_preferences_by_category summary: Update preferences by category description: Change the preferences for multiple notifications based on the category for a single communication channel parameters: - name: communication_channel_id in: path schema: type: string required: true description: ID - name: category in: path schema: type: string required: true description: The name of the category. Must be parameterized (e.g. The category "Course Content" should be "course_content") requestBody: required: false content: application/json: schema: &id218 type: object properties: notification_preferences[frequency]: type: string description: The desired frequency for each notification in the category required: - notification_preferences[frequency] application/x-www-form-urlencoded: schema: *id218 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/self/communication_channels/{communication_channel_id}/notification_preferences: put: tags: - Notification Preferences operationId: update_multiple_preferences_communication_channel_id summary: Update multiple preferences description: Change the preferences for multiple notifications for a single communication channel at once parameters: - name: communication_channel_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id219 type: object properties: notification_preferences[][frequency]: type: string description: The desired frequency for notification required: - notification_preferences[][frequency] application/x-www-form-urlencoded: schema: *id219 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /v1/users/self/communication_channels/{type}/{address}/notification_preferences: put: tags: - Notification Preferences operationId: update_multiple_preferences_type summary: Update multiple preferences description: Change the preferences for multiple notifications for a single communication channel at once parameters: - name: type in: path schema: type: string required: true description: ID - name: address in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id220 type: object properties: notification_preferences[][frequency]: type: string description: The desired frequency for notification required: - notification_preferences[][frequency] application/x-www-form-urlencoded: schema: *id220 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/notification_preferences.html /lti/assignments/{assignment_id}/submissions/{submission_id}/originality_report: post: tags: - Originality Reports operationId: create_originality_report summary: Create an Originality Report description: Create a new OriginalityReport for the specified file parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id221 type: object properties: originality_report[file_id]: type: integer format: int64 description: |- The id of the file being given an originality score. Required if creating a report associated with a file. originality_report[originality_score]: type: number description: |- A number between 0 and 100 representing the measure of the specified file's originality. originality_report[originality_report_url]: type: string description: |- The URL where the originality report for the specified file may be found. originality_report[originality_report_file_id]: type: integer format: int64 description: |- The ID of the file within Canvas that contains the originality report for the submitted file provided in the request URL. originality_report[tool_setting][resource_type_code]: type: string description: |- The resource type code of the resource handler Canvas should use for the LTI launch for viewing originality reports. If set Canvas will launch to the message with type 'basic-lti-launch-request' in the specified resource handler rather than using the originality_report_url. originality_report[tool_setting][resource_url]: type: string description: |- The URL Canvas should launch to when showing an LTI originality report. Note that this value is inferred from the specified resource handler's message "path" value (See `resource_type_code`) unless it is specified. If this parameter is used a `resource_type_code` must also be specified. originality_report[workflow_state]: type: string description: |- May be set to "pending", "error", or "scored". If an originality score is provided a workflow state of "scored" will be inferred. originality_report[error_message]: type: string description: |- A message describing the error. If set, the "workflow_state" will be set to "error." originality_report[attempt]: type: integer format: int64 description: |- If no `file_id` is given, and no file is required for the assignment (that is, the assignment allows an online text entry), this parameter may be given to clarify which attempt number the report is for (in the case of resubmissions). If this field is omitted and no `file_id` is given, the report will be created (or updated, if it exists) for the first submission attempt with no associated file. required: - originality_report[originality_score] application/x-www-form-urlencoded: schema: *id221 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OriginalityReport' externalDocs: url: https://canvas.instructure.com/doc/api/originality_reports.html /lti/assignments/{assignment_id}/submissions/{submission_id}/originality_report/{id}: put: tags: - Originality Reports operationId: edit_originality_report_submissions summary: Edit an Originality Report description: |- Modify an existing originality report. An alternative to this endpoint is to POST the same parameters listed below to the CREATE endpoint. parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_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: &id222 type: object properties: originality_report[originality_score]: type: number description: |- A number between 0 and 100 representing the measure of the specified file's originality. originality_report[originality_report_url]: type: string description: |- The URL where the originality report for the specified file may be found. originality_report[originality_report_file_id]: type: integer format: int64 description: |- The ID of the file within Canvas that contains the originality report for the submitted file provided in the request URL. originality_report[tool_setting][resource_type_code]: type: string description: |- The resource type code of the resource handler Canvas should use for the LTI launch for viewing originality reports. If set Canvas will launch to the message with type 'basic-lti-launch-request' in the specified resource handler rather than using the originality_report_url. originality_report[tool_setting][resource_url]: type: string description: |- The URL Canvas should launch to when showing an LTI originality report. Note that this value is inferred from the specified resource handler's message "path" value (See `resource_type_code`) unless it is specified. If this parameter is used a `resource_type_code` must also be specified. originality_report[workflow_state]: type: string description: |- May be set to "pending", "error", or "scored". If an originality score is provided a workflow state of "scored" will be inferred. originality_report[error_message]: type: string description: |- A message describing the error. If set, the "workflow_state" will be set to "error." application/x-www-form-urlencoded: schema: *id222 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OriginalityReport' externalDocs: url: https://canvas.instructure.com/doc/api/originality_reports.html get: tags: - Originality Reports operationId: show_originality_report_submissions summary: Show an Originality Report description: Get a single originality report parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_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 content: application/json: schema: $ref: '#/components/schemas/OriginalityReport' externalDocs: url: https://canvas.instructure.com/doc/api/originality_reports.html /lti/assignments/{assignment_id}/files/{file_id}/originality_report: put: tags: - Originality Reports operationId: edit_originality_report_files summary: Edit an Originality Report description: |- Modify an existing originality report. An alternative to this endpoint is to POST the same parameters listed below to the CREATE endpoint. parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: file_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id223 type: object properties: originality_report[originality_score]: type: number description: |- A number between 0 and 100 representing the measure of the specified file's originality. originality_report[originality_report_url]: type: string description: |- The URL where the originality report for the specified file may be found. originality_report[originality_report_file_id]: type: integer format: int64 description: |- The ID of the file within Canvas that contains the originality report for the submitted file provided in the request URL. originality_report[tool_setting][resource_type_code]: type: string description: |- The resource type code of the resource handler Canvas should use for the LTI launch for viewing originality reports. If set Canvas will launch to the message with type 'basic-lti-launch-request' in the specified resource handler rather than using the originality_report_url. originality_report[tool_setting][resource_url]: type: string description: |- The URL Canvas should launch to when showing an LTI originality report. Note that this value is inferred from the specified resource handler's message "path" value (See `resource_type_code`) unless it is specified. If this parameter is used a `resource_type_code` must also be specified. originality_report[workflow_state]: type: string description: |- May be set to "pending", "error", or "scored". If an originality score is provided a workflow state of "scored" will be inferred. originality_report[error_message]: type: string description: |- A message describing the error. If set, the "workflow_state" will be set to "error." application/x-www-form-urlencoded: schema: *id223 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OriginalityReport' externalDocs: url: https://canvas.instructure.com/doc/api/originality_reports.html get: tags: - Originality Reports operationId: show_originality_report_files summary: Show an Originality Report description: Get a single originality report parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: file_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OriginalityReport' externalDocs: url: https://canvas.instructure.com/doc/api/originality_reports.html /v1/global/root_outcome_group: get: tags: - Outcome Groups operationId: redirect_to_root_outcome_group_for_context_global summary: Redirect to root outcome group for context description: |- Convenience redirect to find the root outcome group for a particular context. Will redirect to the appropriate outcome group's URL. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/root_outcome_group: get: tags: - Outcome Groups operationId: redirect_to_root_outcome_group_for_context_accounts summary: Redirect to root outcome group for context description: |- Convenience redirect to find the root outcome group for a particular context. Will redirect to the appropriate outcome group's URL. parameters: - name: account_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/outcome_groups.html /v1/courses/{course_id}/root_outcome_group: get: tags: - Outcome Groups operationId: redirect_to_root_outcome_group_for_context_courses summary: Redirect to root outcome group for context description: |- Convenience redirect to find the root outcome group for a particular context. Will redirect to the appropriate outcome group's URL. parameters: - name: course_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/outcome_groups.html /v1/accounts/{account_id}/outcome_groups: get: tags: - Outcome Groups operationId: get_all_outcome_groups_for_context_accounts summary: Get all outcome groups for context description: Returns a list of all outcome groups in the specified context. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/courses/{course_id}/outcome_groups: get: tags: - Outcome Groups operationId: get_all_outcome_groups_for_context_courses summary: Get all outcome groups for context description: Returns a list of all outcome groups in the specified context. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/outcome_group_links: get: tags: - Outcome Groups operationId: get_all_outcome_links_for_context_accounts summary: Get all outcome links for context description: Returns a list of all outcome links in the specified context. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: outcome_style in: query schema: type: string required: false description: |- The detail level of the outcomes. Defaults to "abbrev". Specify "full" for more information. - name: outcome_group_style in: query schema: type: string required: false description: |- The detail level of the outcome groups. Defaults to "abbrev". Specify "full" for more information. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/courses/{course_id}/outcome_group_links: get: tags: - Outcome Groups operationId: get_all_outcome_links_for_context_courses summary: Get all outcome links for context description: Returns a list of all outcome links in the specified context. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: outcome_style in: query schema: type: string required: false description: |- The detail level of the outcomes. Defaults to "abbrev". Specify "full" for more information. - name: outcome_group_style in: query schema: type: string required: false description: |- The detail level of the outcome groups. Defaults to "abbrev". Specify "full" for more information. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/global/outcome_groups/{id}: get: tags: - Outcome Groups operationId: show_outcome_group_global summary: Show an outcome group description: Returns detailed information about a specific outcome group. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html put: tags: - Outcome Groups operationId: update_outcome_group_global summary: Update an outcome group description: |- Modify an existing outcome group. Fields not provided are left as is; unrecognized fields are ignored. When changing the parent outcome group, the new parent group must belong to the same context as this outcome group, and must not be a descendant of this outcome group (i.e. no cycles allowed). parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id224 type: object properties: title: type: string description: The new outcome group title. description: type: string description: The new outcome group description. vendor_guid: type: string description: A custom GUID for the learning standard. parent_outcome_group_id: type: integer format: int64 description: The id of the new parent outcome group. application/x-www-form-urlencoded: schema: *id224 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html delete: tags: - Outcome Groups operationId: delete_outcome_group_global summary: Delete an outcome group description: |- Deleting an outcome group deletes descendant outcome groups and outcome links. The linked outcomes themselves are only deleted if all links to the outcome were deleted. Aligned outcomes cannot be deleted; as such, if all remaining links to an aligned outcome are included in this group's descendants, the group deletion will fail. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/outcome_groups/{id}: get: tags: - Outcome Groups operationId: show_outcome_group_accounts summary: Show an outcome group description: Returns detailed information about a specific outcome group. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html put: tags: - Outcome Groups operationId: update_outcome_group_accounts summary: Update an outcome group description: |- Modify an existing outcome group. Fields not provided are left as is; unrecognized fields are ignored. When changing the parent outcome group, the new parent group must belong to the same context as this outcome group, and must not be a descendant of this outcome group (i.e. no cycles allowed). parameters: - name: account_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: &id225 type: object properties: title: type: string description: The new outcome group title. description: type: string description: The new outcome group description. vendor_guid: type: string description: A custom GUID for the learning standard. parent_outcome_group_id: type: integer format: int64 description: The id of the new parent outcome group. application/x-www-form-urlencoded: schema: *id225 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html delete: tags: - Outcome Groups operationId: delete_outcome_group_accounts summary: Delete an outcome group description: |- Deleting an outcome group deletes descendant outcome groups and outcome links. The linked outcomes themselves are only deleted if all links to the outcome were deleted. Aligned outcomes cannot be deleted; as such, if all remaining links to an aligned outcome are included in this group's descendants, the group deletion will fail. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/courses/{course_id}/outcome_groups/{id}: get: tags: - Outcome Groups operationId: show_outcome_group_courses summary: Show an outcome group description: Returns detailed information about a specific outcome group. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html put: tags: - Outcome Groups operationId: update_outcome_group_courses summary: Update an outcome group description: |- Modify an existing outcome group. Fields not provided are left as is; unrecognized fields are ignored. When changing the parent outcome group, the new parent group must belong to the same context as this outcome group, and must not be a descendant of this outcome group (i.e. no cycles allowed). parameters: - name: course_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: &id226 type: object properties: title: type: string description: The new outcome group title. description: type: string description: The new outcome group description. vendor_guid: type: string description: A custom GUID for the learning standard. parent_outcome_group_id: type: integer format: int64 description: The id of the new parent outcome group. application/x-www-form-urlencoded: schema: *id226 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html delete: tags: - Outcome Groups operationId: delete_outcome_group_courses summary: Delete an outcome group description: |- Deleting an outcome group deletes descendant outcome groups and outcome links. The linked outcomes themselves are only deleted if all links to the outcome were deleted. Aligned outcomes cannot be deleted; as such, if all remaining links to an aligned outcome are included in this group's descendants, the group deletion will fail. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/global/outcome_groups/{id}/outcomes: get: tags: - Outcome Groups operationId: list_linked_outcomes_global summary: List linked outcomes description: A paginated list of the immediate OutcomeLink children of the outcome group. parameters: - name: id in: path schema: type: string required: true description: ID - name: outcome_style in: query schema: type: string required: false description: |- The detail level of the outcomes. Defaults to "abbrev". Specify "full" for more information. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html post: tags: - Outcome Groups operationId: create_link_outcome_global summary: Create/link an outcome description: |- Link an outcome into the outcome group. The outcome to link can either be specified by a PUT to the link URL for a specific outcome (the outcome_id in the PUT URLs) or by supplying the information for a new outcome (title, description, ratings, mastery_points) in a POST to the collection. If linking an existing outcome, the outcome_id must identify an outcome available to this context; i.e. an outcome owned by this group's context, an outcome owned by an associated account, or a global outcome. With outcome_id present, any other parameters (except move_from) are ignored. If defining a new outcome, the outcome is created in the outcome group's context using the provided title, description, ratings, and mastery points; the title is required but all other fields are optional. The new outcome is then linked into the outcome group. If ratings are provided when creating a new outcome, an embedded rubric criterion is included in the new outcome. This criterion's mastery_points default to the maximum points in the highest rating if not specified in the mastery_points parameter. Any ratings lacking a description are given a default of "No description". Any ratings lacking a point value are given a default of 0. If no ratings are provided, the mastery_points parameter is ignored. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id227 type: object properties: outcome_id: type: integer format: int64 description: The ID of the existing outcome to link. move_from: type: integer format: int64 description: The ID of the old outcome group. Only used if outcome_id is present. title: type: string description: The title of the new outcome. Required if outcome_id is absent. display_name: type: string description: |- A friendly name shown in reports for outcomes with cryptic titles, such as common core standards names. description: type: string description: The description of the new outcome. vendor_guid: type: string description: A custom GUID for the learning standard. mastery_points: type: integer format: int64 description: The mastery threshold for the embedded rubric criterion. ratings[description]: type: array items: type: string description: The description of a rating level for the embedded rubric criterion. ratings[points]: type: array items: type: integer description: The points corresponding to a rating level for the embedded rubric criterion. calculation_method: type: string enum: - weighted_average - decaying_average - n_mastery - latest - highest - average description: |- The new calculation method. Defaults to "decaying_average" if the Outcomes New Decaying Average Calculation Method FF is ENABLED then Defaults to "weighted_average" calculation_int: type: integer format: int64 description: The new calculation int. Only applies if the calculation_method is "weighted_average", "decaying_average" or "n_mastery". Defaults to 65 application/x-www-form-urlencoded: schema: *id227 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/outcome_groups/{id}/outcomes: get: tags: - Outcome Groups operationId: list_linked_outcomes_accounts summary: List linked outcomes description: A paginated list of the immediate OutcomeLink children of the outcome group. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: outcome_style in: query schema: type: string required: false description: |- The detail level of the outcomes. Defaults to "abbrev". Specify "full" for more information. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html post: tags: - Outcome Groups operationId: create_link_outcome_accounts summary: Create/link an outcome description: |- Link an outcome into the outcome group. The outcome to link can either be specified by a PUT to the link URL for a specific outcome (the outcome_id in the PUT URLs) or by supplying the information for a new outcome (title, description, ratings, mastery_points) in a POST to the collection. If linking an existing outcome, the outcome_id must identify an outcome available to this context; i.e. an outcome owned by this group's context, an outcome owned by an associated account, or a global outcome. With outcome_id present, any other parameters (except move_from) are ignored. If defining a new outcome, the outcome is created in the outcome group's context using the provided title, description, ratings, and mastery points; the title is required but all other fields are optional. The new outcome is then linked into the outcome group. If ratings are provided when creating a new outcome, an embedded rubric criterion is included in the new outcome. This criterion's mastery_points default to the maximum points in the highest rating if not specified in the mastery_points parameter. Any ratings lacking a description are given a default of "No description". Any ratings lacking a point value are given a default of 0. If no ratings are provided, the mastery_points parameter is ignored. parameters: - name: account_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: &id228 type: object properties: outcome_id: type: integer format: int64 description: The ID of the existing outcome to link. move_from: type: integer format: int64 description: The ID of the old outcome group. Only used if outcome_id is present. title: type: string description: The title of the new outcome. Required if outcome_id is absent. display_name: type: string description: |- A friendly name shown in reports for outcomes with cryptic titles, such as common core standards names. description: type: string description: The description of the new outcome. vendor_guid: type: string description: A custom GUID for the learning standard. mastery_points: type: integer format: int64 description: The mastery threshold for the embedded rubric criterion. ratings[description]: type: array items: type: string description: The description of a rating level for the embedded rubric criterion. ratings[points]: type: array items: type: integer description: The points corresponding to a rating level for the embedded rubric criterion. calculation_method: type: string enum: - weighted_average - decaying_average - n_mastery - latest - highest - average description: |- The new calculation method. Defaults to "decaying_average" if the Outcomes New Decaying Average Calculation Method FF is ENABLED then Defaults to "weighted_average" calculation_int: type: integer format: int64 description: The new calculation int. Only applies if the calculation_method is "weighted_average", "decaying_average" or "n_mastery". Defaults to 65 application/x-www-form-urlencoded: schema: *id228 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/courses/{course_id}/outcome_groups/{id}/outcomes: get: tags: - Outcome Groups operationId: list_linked_outcomes_courses summary: List linked outcomes description: A paginated list of the immediate OutcomeLink children of the outcome group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: outcome_style in: query schema: type: string required: false description: |- The detail level of the outcomes. Defaults to "abbrev". Specify "full" for more information. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html post: tags: - Outcome Groups operationId: create_link_outcome_courses summary: Create/link an outcome description: |- Link an outcome into the outcome group. The outcome to link can either be specified by a PUT to the link URL for a specific outcome (the outcome_id in the PUT URLs) or by supplying the information for a new outcome (title, description, ratings, mastery_points) in a POST to the collection. If linking an existing outcome, the outcome_id must identify an outcome available to this context; i.e. an outcome owned by this group's context, an outcome owned by an associated account, or a global outcome. With outcome_id present, any other parameters (except move_from) are ignored. If defining a new outcome, the outcome is created in the outcome group's context using the provided title, description, ratings, and mastery points; the title is required but all other fields are optional. The new outcome is then linked into the outcome group. If ratings are provided when creating a new outcome, an embedded rubric criterion is included in the new outcome. This criterion's mastery_points default to the maximum points in the highest rating if not specified in the mastery_points parameter. Any ratings lacking a description are given a default of "No description". Any ratings lacking a point value are given a default of 0. If no ratings are provided, the mastery_points parameter is ignored. parameters: - name: course_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: &id229 type: object properties: outcome_id: type: integer format: int64 description: The ID of the existing outcome to link. move_from: type: integer format: int64 description: The ID of the old outcome group. Only used if outcome_id is present. title: type: string description: The title of the new outcome. Required if outcome_id is absent. display_name: type: string description: |- A friendly name shown in reports for outcomes with cryptic titles, such as common core standards names. description: type: string description: The description of the new outcome. vendor_guid: type: string description: A custom GUID for the learning standard. mastery_points: type: integer format: int64 description: The mastery threshold for the embedded rubric criterion. ratings[description]: type: array items: type: string description: The description of a rating level for the embedded rubric criterion. ratings[points]: type: array items: type: integer description: The points corresponding to a rating level for the embedded rubric criterion. calculation_method: type: string enum: - weighted_average - decaying_average - n_mastery - latest - highest - average description: |- The new calculation method. Defaults to "decaying_average" if the Outcomes New Decaying Average Calculation Method FF is ENABLED then Defaults to "weighted_average" calculation_int: type: integer format: int64 description: The new calculation int. Only applies if the calculation_method is "weighted_average", "decaying_average" or "n_mastery". Defaults to 65 application/x-www-form-urlencoded: schema: *id229 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/global/outcome_groups/{id}/outcomes/{outcome_id}: put: tags: - Outcome Groups operationId: create_link_outcome_global_outcome_id summary: Create/link an outcome description: |- Link an outcome into the outcome group. The outcome to link can either be specified by a PUT to the link URL for a specific outcome (the outcome_id in the PUT URLs) or by supplying the information for a new outcome (title, description, ratings, mastery_points) in a POST to the collection. If linking an existing outcome, the outcome_id must identify an outcome available to this context; i.e. an outcome owned by this group's context, an outcome owned by an associated account, or a global outcome. With outcome_id present, any other parameters (except move_from) are ignored. If defining a new outcome, the outcome is created in the outcome group's context using the provided title, description, ratings, and mastery points; the title is required but all other fields are optional. The new outcome is then linked into the outcome group. If ratings are provided when creating a new outcome, an embedded rubric criterion is included in the new outcome. This criterion's mastery_points default to the maximum points in the highest rating if not specified in the mastery_points parameter. Any ratings lacking a description are given a default of "No description". Any ratings lacking a point value are given a default of 0. If no ratings are provided, the mastery_points parameter is ignored. parameters: - name: id in: path schema: type: string required: true description: ID - name: outcome_id in: path schema: type: integer format: int64 required: true description: The ID of the existing outcome to link. requestBody: required: false content: application/json: schema: &id230 type: object properties: move_from: type: integer format: int64 description: The ID of the old outcome group. Only used if outcome_id is present. title: type: string description: The title of the new outcome. Required if outcome_id is absent. display_name: type: string description: |- A friendly name shown in reports for outcomes with cryptic titles, such as common core standards names. description: type: string description: The description of the new outcome. vendor_guid: type: string description: A custom GUID for the learning standard. mastery_points: type: integer format: int64 description: The mastery threshold for the embedded rubric criterion. ratings[description]: type: array items: type: string description: The description of a rating level for the embedded rubric criterion. ratings[points]: type: array items: type: integer description: The points corresponding to a rating level for the embedded rubric criterion. calculation_method: type: string enum: - weighted_average - decaying_average - n_mastery - latest - highest - average description: |- The new calculation method. Defaults to "decaying_average" if the Outcomes New Decaying Average Calculation Method FF is ENABLED then Defaults to "weighted_average" calculation_int: type: integer format: int64 description: The new calculation int. Only applies if the calculation_method is "weighted_average", "decaying_average" or "n_mastery". Defaults to 65 application/x-www-form-urlencoded: schema: *id230 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html delete: tags: - Outcome Groups operationId: unlink_outcome_global summary: Unlink an outcome description: |- Unlinking an outcome only deletes the outcome itself if this was the last link to the outcome in any group in any context. Aligned outcomes cannot be deleted; as such, if this is the last link to an aligned outcome, the unlinking will fail. parameters: - name: id in: path schema: type: string required: true description: ID - name: outcome_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/outcome_groups/{id}/outcomes/{outcome_id}: put: tags: - Outcome Groups operationId: create_link_outcome_accounts_outcome_id summary: Create/link an outcome description: |- Link an outcome into the outcome group. The outcome to link can either be specified by a PUT to the link URL for a specific outcome (the outcome_id in the PUT URLs) or by supplying the information for a new outcome (title, description, ratings, mastery_points) in a POST to the collection. If linking an existing outcome, the outcome_id must identify an outcome available to this context; i.e. an outcome owned by this group's context, an outcome owned by an associated account, or a global outcome. With outcome_id present, any other parameters (except move_from) are ignored. If defining a new outcome, the outcome is created in the outcome group's context using the provided title, description, ratings, and mastery points; the title is required but all other fields are optional. The new outcome is then linked into the outcome group. If ratings are provided when creating a new outcome, an embedded rubric criterion is included in the new outcome. This criterion's mastery_points default to the maximum points in the highest rating if not specified in the mastery_points parameter. Any ratings lacking a description are given a default of "No description". Any ratings lacking a point value are given a default of 0. If no ratings are provided, the mastery_points parameter is ignored. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: outcome_id in: path schema: type: integer format: int64 required: true description: The ID of the existing outcome to link. requestBody: required: false content: application/json: schema: &id231 type: object properties: move_from: type: integer format: int64 description: The ID of the old outcome group. Only used if outcome_id is present. title: type: string description: The title of the new outcome. Required if outcome_id is absent. display_name: type: string description: |- A friendly name shown in reports for outcomes with cryptic titles, such as common core standards names. description: type: string description: The description of the new outcome. vendor_guid: type: string description: A custom GUID for the learning standard. mastery_points: type: integer format: int64 description: The mastery threshold for the embedded rubric criterion. ratings[description]: type: array items: type: string description: The description of a rating level for the embedded rubric criterion. ratings[points]: type: array items: type: integer description: The points corresponding to a rating level for the embedded rubric criterion. calculation_method: type: string enum: - weighted_average - decaying_average - n_mastery - latest - highest - average description: |- The new calculation method. Defaults to "decaying_average" if the Outcomes New Decaying Average Calculation Method FF is ENABLED then Defaults to "weighted_average" calculation_int: type: integer format: int64 description: The new calculation int. Only applies if the calculation_method is "weighted_average", "decaying_average" or "n_mastery". Defaults to 65 application/x-www-form-urlencoded: schema: *id231 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html delete: tags: - Outcome Groups operationId: unlink_outcome_accounts summary: Unlink an outcome description: |- Unlinking an outcome only deletes the outcome itself if this was the last link to the outcome in any group in any context. Aligned outcomes cannot be deleted; as such, if this is the last link to an aligned outcome, the unlinking will fail. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: outcome_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/courses/{course_id}/outcome_groups/{id}/outcomes/{outcome_id}: put: tags: - Outcome Groups operationId: create_link_outcome_courses_outcome_id summary: Create/link an outcome description: |- Link an outcome into the outcome group. The outcome to link can either be specified by a PUT to the link URL for a specific outcome (the outcome_id in the PUT URLs) or by supplying the information for a new outcome (title, description, ratings, mastery_points) in a POST to the collection. If linking an existing outcome, the outcome_id must identify an outcome available to this context; i.e. an outcome owned by this group's context, an outcome owned by an associated account, or a global outcome. With outcome_id present, any other parameters (except move_from) are ignored. If defining a new outcome, the outcome is created in the outcome group's context using the provided title, description, ratings, and mastery points; the title is required but all other fields are optional. The new outcome is then linked into the outcome group. If ratings are provided when creating a new outcome, an embedded rubric criterion is included in the new outcome. This criterion's mastery_points default to the maximum points in the highest rating if not specified in the mastery_points parameter. Any ratings lacking a description are given a default of "No description". Any ratings lacking a point value are given a default of 0. If no ratings are provided, the mastery_points parameter is ignored. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: outcome_id in: path schema: type: integer format: int64 required: true description: The ID of the existing outcome to link. requestBody: required: false content: application/json: schema: &id232 type: object properties: move_from: type: integer format: int64 description: The ID of the old outcome group. Only used if outcome_id is present. title: type: string description: The title of the new outcome. Required if outcome_id is absent. display_name: type: string description: |- A friendly name shown in reports for outcomes with cryptic titles, such as common core standards names. description: type: string description: The description of the new outcome. vendor_guid: type: string description: A custom GUID for the learning standard. mastery_points: type: integer format: int64 description: The mastery threshold for the embedded rubric criterion. ratings[description]: type: array items: type: string description: The description of a rating level for the embedded rubric criterion. ratings[points]: type: array items: type: integer description: The points corresponding to a rating level for the embedded rubric criterion. calculation_method: type: string enum: - weighted_average - decaying_average - n_mastery - latest - highest - average description: |- The new calculation method. Defaults to "decaying_average" if the Outcomes New Decaying Average Calculation Method FF is ENABLED then Defaults to "weighted_average" calculation_int: type: integer format: int64 description: The new calculation int. Only applies if the calculation_method is "weighted_average", "decaying_average" or "n_mastery". Defaults to 65 application/x-www-form-urlencoded: schema: *id232 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html delete: tags: - Outcome Groups operationId: unlink_outcome_courses summary: Unlink an outcome description: |- Unlinking an outcome only deletes the outcome itself if this was the last link to the outcome in any group in any context. Aligned outcomes cannot be deleted; as such, if this is the last link to an aligned outcome, the unlinking will fail. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: outcome_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeLink' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/global/outcome_groups/{id}/subgroups: get: tags: - Outcome Groups operationId: list_subgroups_global summary: List subgroups description: A paginated list of the immediate OutcomeGroup children of the outcome group. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html post: tags: - Outcome Groups operationId: create_subgroup_global summary: Create a subgroup description: |- Creates a new empty subgroup under the outcome group with the given title and description. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id233 type: object properties: title: type: string description: The title of the new outcome group. description: type: string description: The description of the new outcome group. vendor_guid: type: string description: A custom GUID for the learning standard required: - title application/x-www-form-urlencoded: schema: *id233 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/outcome_groups/{id}/subgroups: get: tags: - Outcome Groups operationId: list_subgroups_accounts summary: List subgroups description: A paginated list of the immediate OutcomeGroup children of the outcome group. parameters: - name: account_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 content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html post: tags: - Outcome Groups operationId: create_subgroup_accounts summary: Create a subgroup description: |- Creates a new empty subgroup under the outcome group with the given title and description. parameters: - name: account_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: &id234 type: object properties: title: type: string description: The title of the new outcome group. description: type: string description: The description of the new outcome group. vendor_guid: type: string description: A custom GUID for the learning standard required: - title application/x-www-form-urlencoded: schema: *id234 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/courses/{course_id}/outcome_groups/{id}/subgroups: get: tags: - Outcome Groups operationId: list_subgroups_courses summary: List subgroups description: A paginated list of the immediate OutcomeGroup children of the outcome group. parameters: - name: course_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 content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html post: tags: - Outcome Groups operationId: create_subgroup_courses summary: Create a subgroup description: |- Creates a new empty subgroup under the outcome group with the given title and description. parameters: - name: course_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: &id235 type: object properties: title: type: string description: The title of the new outcome group. description: type: string description: The description of the new outcome group. vendor_guid: type: string description: A custom GUID for the learning standard required: - title application/x-www-form-urlencoded: schema: *id235 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/global/outcome_groups/{id}/import: post: tags: - Outcome Groups operationId: import_outcome_group_global summary: Import an outcome group description: |- Creates a new subgroup of the outcome group with the same title and description as the source group, then creates links in that new subgroup to the same outcomes that are linked in the source group. Recurses on the subgroups of the source group, importing them each in turn into the new subgroup. Allows you to copy organizational structure, but does not create copies of the outcomes themselves, only new links. The source group must be either global, from the same context as this outcome group, or from an associated account. The source group cannot be the root outcome group of its context. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id236 type: object properties: source_outcome_group_id: type: integer format: int64 description: The ID of the source outcome group. async: type: boolean description: |- If true, perform action asynchronously. In that case, this endpoint will return a Progress object instead of an OutcomeGroup. Use the {api:ProgressController#show progress endpoint} to query the status of the operation. The imported outcome group id and url will be returned in the results of the Progress object as "outcome_group_id" and "outcome_group_url" required: - source_outcome_group_id application/x-www-form-urlencoded: schema: *id236 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/outcome_groups/{id}/import: post: tags: - Outcome Groups operationId: import_outcome_group_accounts summary: Import an outcome group description: |- Creates a new subgroup of the outcome group with the same title and description as the source group, then creates links in that new subgroup to the same outcomes that are linked in the source group. Recurses on the subgroups of the source group, importing them each in turn into the new subgroup. Allows you to copy organizational structure, but does not create copies of the outcomes themselves, only new links. The source group must be either global, from the same context as this outcome group, or from an associated account. The source group cannot be the root outcome group of its context. parameters: - name: account_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: &id237 type: object properties: source_outcome_group_id: type: integer format: int64 description: The ID of the source outcome group. async: type: boolean description: |- If true, perform action asynchronously. In that case, this endpoint will return a Progress object instead of an OutcomeGroup. Use the {api:ProgressController#show progress endpoint} to query the status of the operation. The imported outcome group id and url will be returned in the results of the Progress object as "outcome_group_id" and "outcome_group_url" required: - source_outcome_group_id application/x-www-form-urlencoded: schema: *id237 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/courses/{course_id}/outcome_groups/{id}/import: post: tags: - Outcome Groups operationId: import_outcome_group_courses summary: Import an outcome group description: |- Creates a new subgroup of the outcome group with the same title and description as the source group, then creates links in that new subgroup to the same outcomes that are linked in the source group. Recurses on the subgroups of the source group, importing them each in turn into the new subgroup. Allows you to copy organizational structure, but does not create copies of the outcomes themselves, only new links. The source group must be either global, from the same context as this outcome group, or from an associated account. The source group cannot be the root outcome group of its context. parameters: - name: course_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: &id238 type: object properties: source_outcome_group_id: type: integer format: int64 description: The ID of the source outcome group. async: type: boolean description: |- If true, perform action asynchronously. In that case, this endpoint will return a Progress object instead of an OutcomeGroup. Use the {api:ProgressController#show progress endpoint} to query the status of the operation. The imported outcome group id and url will be returned in the results of the Progress object as "outcome_group_id" and "outcome_group_url" required: - source_outcome_group_id application/x-www-form-urlencoded: schema: *id238 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeGroup' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_groups.html /v1/accounts/{account_id}/outcome_imports: post: tags: - Outcome Imports operationId: import_outcomes_accounts summary: Import Outcomes description: |- Import outcomes into Canvas. For more information on the format that's expected here, please see the "Outcomes CSV" section in the API docs. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id239 type: object properties: import_type: type: string description: |- Choose the data format for reading outcome data. With a standard Canvas install, this option can only be 'instructure_csv', and if unprovided, will be assumed to be so. Can be part of the query string. attachment: type: string description: |- There are two ways to post outcome import data - either via a multipart/form-data form-field-style attachment, or via a non-multipart raw post request. 'attachment' is required for multipart/form-data style posts. Assumed to be outcome data from a file upload form field named 'attachment'. Examples: curl -F attachment=@ -H "Authorization: Bearer " \ 'https:///api/v1/accounts//outcome_imports?import_type=instructure_csv' curl -F attachment=@ -H "Authorization: Bearer " \ 'https:///api/v1/courses//outcome_imports?import_type=instructure_csv' If you decide to do a raw post, you can skip the 'attachment' argument, but you will then be required to provide a suitable Content-Type header. You are encouraged to also provide the 'extension' argument. Examples: curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ 'https:///api/v1/accounts//outcome_imports?import_type=instructure_csv' curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ 'https:///api/v1/courses//outcome_imports?import_type=instructure_csv' extension: type: string description: |- Recommended for raw post request style imports. This field will be used to distinguish between csv and other file format extensions that would usually be provided with the filename in the multipart post request scenario. If not provided, this value will be inferred from the Content-Type, falling back to csv-file format if all else fails. application/x-www-form-urlencoded: schema: *id239 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeImport' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_imports.html /v1/courses/{course_id}/outcome_imports: post: tags: - Outcome Imports operationId: import_outcomes_courses summary: Import Outcomes description: |- Import outcomes into Canvas. For more information on the format that's expected here, please see the "Outcomes CSV" section in the API docs. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id240 type: object properties: import_type: type: string description: |- Choose the data format for reading outcome data. With a standard Canvas install, this option can only be 'instructure_csv', and if unprovided, will be assumed to be so. Can be part of the query string. attachment: type: string description: |- There are two ways to post outcome import data - either via a multipart/form-data form-field-style attachment, or via a non-multipart raw post request. 'attachment' is required for multipart/form-data style posts. Assumed to be outcome data from a file upload form field named 'attachment'. Examples: curl -F attachment=@ -H "Authorization: Bearer " \ 'https:///api/v1/accounts//outcome_imports?import_type=instructure_csv' curl -F attachment=@ -H "Authorization: Bearer " \ 'https:///api/v1/courses//outcome_imports?import_type=instructure_csv' If you decide to do a raw post, you can skip the 'attachment' argument, but you will then be required to provide a suitable Content-Type header. You are encouraged to also provide the 'extension' argument. Examples: curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ 'https:///api/v1/accounts//outcome_imports?import_type=instructure_csv' curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ 'https:///api/v1/courses//outcome_imports?import_type=instructure_csv' extension: type: string description: |- Recommended for raw post request style imports. This field will be used to distinguish between csv and other file format extensions that would usually be provided with the filename in the multipart post request scenario. If not provided, this value will be inferred from the Content-Type, falling back to csv-file format if all else fails. application/x-www-form-urlencoded: schema: *id240 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeImport' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_imports.html /v1/accounts/{account_id}/outcome_imports/{id}: get: tags: - Outcome Imports operationId: get_outcome_import_status_accounts summary: Get Outcome import status description: |- Get the status of an already created Outcome import. Pass 'latest' for the outcome import id for the latest import. Examples: curl 'https:///api/v1/accounts//outcome_imports/' \ -H "Authorization: Bearer " curl 'https:///api/v1/courses//outcome_imports/' \ -H "Authorization: Bearer " parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/OutcomeImport' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_imports.html /v1/courses/{course_id}/outcome_imports/{id}: get: tags: - Outcome Imports operationId: get_outcome_import_status_courses summary: Get Outcome import status description: |- Get the status of an already created Outcome import. Pass 'latest' for the outcome import id for the latest import. Examples: curl 'https:///api/v1/accounts//outcome_imports/' \ -H "Authorization: Bearer " curl 'https:///api/v1/courses//outcome_imports/' \ -H "Authorization: Bearer " parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/OutcomeImport' externalDocs: url: https://canvas.instructure.com/doc/api/outcome_imports.html /v1/accounts/{account_id}/outcome_imports/{id}/created_group_ids: get: tags: - Outcome Imports operationId: get_ids_of_outcome_groups_created_after_successful_import_accounts summary: Get IDs of outcome groups created after successful import description: |- Get the IDs of the outcome groups created after a successful import. Pass 'latest' for the outcome import id for the latest import. Examples: curl 'https:///api/v1/accounts//outcome_imports/outcomes_group_ids/' \ -H "Authorization: Bearer " curl 'https:///api/v1/courses//outcome_imports/outcome_group_ids/' \ -H "Authorization: Bearer " parameters: - name: account_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 content: application/json: schema: type: string x-canvas-declared-type: array of outcome ids externalDocs: url: https://canvas.instructure.com/doc/api/outcome_imports.html /v1/courses/{course_id}/outcome_imports/{id}/created_group_ids: get: tags: - Outcome Imports operationId: get_ids_of_outcome_groups_created_after_successful_import_courses summary: Get IDs of outcome groups created after successful import description: |- Get the IDs of the outcome groups created after a successful import. Pass 'latest' for the outcome import id for the latest import. Examples: curl 'https:///api/v1/accounts//outcome_imports/outcomes_group_ids/' \ -H "Authorization: Bearer " curl 'https:///api/v1/courses//outcome_imports/outcome_group_ids/' \ -H "Authorization: Bearer " parameters: - name: course_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 content: application/json: schema: type: string x-canvas-declared-type: array of outcome ids externalDocs: url: https://canvas.instructure.com/doc/api/outcome_imports.html /v1/courses/{course_id}/outcome_results: get: tags: - Outcome Results operationId: get_outcome_results summary: Get outcome results description: |- Gets the outcome results for users and outcomes in the specified context. used in sLMGB parameters: - name: course_id in: path schema: type: string required: true description: ID - name: user_ids in: query schema: type: array items: type: integer required: false description: |- If specified, only the users whose ids are given will be included in the results. SIS ids can be used, prefixed by "sis_user_id:". It is an error to specify an id for a user who is not a student in the context. - name: outcome_ids in: query schema: type: array items: type: integer required: false description: |- If specified, only the outcomes whose ids are given will be included in the results. it is an error to specify an id for an outcome which is not linked to the context. - name: include in: query schema: type: array items: type: string required: false description: |- [String, "alignments"|"outcomes"|"outcomes.alignments"|"outcome_groups"|"outcome_links"|"outcome_paths"|"users"] Specify additional collections to be side loaded with the result. "alignments" includes only the alignments referenced by the returned results. "outcomes.alignments" includes all alignments referenced by outcomes in the context. - name: include_hidden in: query schema: type: boolean required: false description: |- If true, results that are hidden from the learning mastery gradebook and student rollup scores will be included responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/outcome_results.html /v1/courses/{course_id}/assign_outcome_order: post: tags: - Outcome Results operationId: set_outcome_ordering_for_lmgb summary: Set outcome ordering for LMGB description: Saves the ordering of outcomes in LMGB for a user parameters: - name: course_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/outcome_results.html /v1/courses/{course_id}/outcome_rollups: get: tags: - Outcome Results operationId: get_outcome_result_rollups summary: Get outcome result rollups description: |- Gets the outcome rollups for the users and outcomes in the specified context. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: aggregate in: query schema: type: string enum: - course required: false description: |- If specified, instead of returning one rollup for each user, all the user rollups will be combined into one rollup for the course that will contain the average (or median, see below) rollup score for each outcome. - name: aggregate_stat in: query schema: type: string enum: - mean - median required: false description: |- If aggregate rollups requested, then this value determines what statistic is used for the aggregate. Defaults to "mean" if this value is not specified. - name: user_ids in: query schema: type: array items: type: integer required: false description: |- If specified, only the users whose ids are given will be included in the results or used in an aggregate result. it is an error to specify an id for a user who is not a student in the context - name: outcome_ids in: query schema: type: array items: type: integer required: false description: |- If specified, only the outcomes whose ids are given will be included in the results. it is an error to specify an id for an outcome which is not linked to the context. - name: include in: query schema: type: array items: type: string required: false description: |- [String, "courses"|"outcomes"|"outcomes.alignments"|"outcome_groups"|"outcome_links"|"outcome_paths"|"users"] Specify additional collections to be side loaded with the result. - name: exclude in: query schema: type: array items: type: string enum: - missing_user_rollups - missing_outcome_results - '' required: false description: |- Specify additional values to exclude. "missing_user_rollups" excludes rollups for users without results. "missing_outcome_results" excludes outcomes without results. - name: sort_by in: query schema: type: string enum: - student - outcome required: false description: |- If specified, sorts outcome result rollups. "student" sorting will sort by a user's sortable name. "outcome" sorting will sort by the given outcome's rollup score. The latter requires specifying the "sort_outcome_id" parameter. By default, the sort order is ascending. - name: sort_outcome_id in: query schema: type: integer format: int64 required: false description: |- If outcome sorting requested, then this determines which outcome to use for rollup score sorting. - name: sort_order in: query schema: type: string enum: - asc - desc required: false description: |- If sorting requested, then this allows changing the default sort order of ascending to descending. - name: add_defaults in: query schema: type: boolean required: false description: |- If defaults are requested, then color and mastery level defaults will be added to outcome ratings in the rollup. This will only take effect if the Account Level Mastery Scales FF is DISABLED - name: contributing_scores in: query schema: type: boolean required: false description: |- **DEPRECATED**: This parameter is deprecated. Use the separate GET /api/v1/courses/:course_id/outcomes/:outcome_id/contributing_scores endpoint instead to fetch contributing scores for a specific outcome. If contributing scores are requested, then each individual outcome score will also include all graded artifacts that contributed to the outcome score responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/outcome_results.html /v1/courses/{course_id}/outcomes/{outcome_id}/contributing_scores: get: tags: - Outcome Results operationId: get_contributing_scores summary: Get contributing scores description: |- Gets the contributing scores for a specific outcome and set of users. Contributing scores are the individual assignment/quiz scores that contributed to the outcome score for each user. Returns all alignments for the outcome in the course context. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: outcome_id in: path schema: type: string required: true description: ID - name: user_ids in: query schema: type: array items: type: integer required: false description: |- If specified, only the users whose ids are given will be included in the results. It is an error to specify an id for a user who is not a student in the context. - name: only_assignment_alignments in: query schema: type: boolean required: false description: If specified, only assignment alignments will be included in the results. - name: show_unpublished_assignments in: query schema: type: boolean required: false description: If true, unpublished assignments will be included in the results. Defaults to false. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/outcome_results.html /v1/courses/{course_id}/outcome_mastery_distribution: get: tags: - Outcome Results operationId: get_mastery_distribution summary: Get mastery distribution description: |- Returns the distribution of student scores across mastery levels for all outcomes. This endpoint fetches data for ALL students (not paginated) to provide accurate distribution statistics for charts and analytics. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: exclude in: query schema: type: array items: type: string required: false description: |- Optionally restrict which results are included: - "missing_user_rollups": exclude students without any scores - "missing_outcome_results": exclude outcomes without any results - name: outcome_ids in: query schema: type: array items: type: string required: false description: Optionally restrict to specific outcome IDs - name: student_ids in: query schema: type: array items: type: string required: false description: Optionally restrict to specific student IDs. If not provided, all students will be included. - name: include in: query schema: type: array items: type: string required: false description: |- Optionally include additional data: - "alignment_distributions": include contributing score distributions for alignments - name: only_assignment_alignments in: query schema: type: boolean required: false description: 'If true and alignment_distributions is included, only include assignment alignments. Default: false.' - name: show_unpublished_assignments in: query schema: type: boolean required: false description: 'If true, include unpublished assignments in alignment distributions. Default: false.' - name: add_defaults in: query schema: type: boolean required: false description: |- If defaults are requested, then color and mastery level defaults will be added to outcome ratings in the result. This will only take effect if the Account Level Mastery Scales FF is DISABLED responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: MasteryDistributionResponse externalDocs: url: https://canvas.instructure.com/doc/api/outcome_results.html /v1/courses/{course_id}/enqueue_outcome_rollup_calculation: post: tags: - Outcome Results operationId: enqueue_delayed_outcome_rollup_calculation_job summary: Enqueue a delayed Outcome Rollup Calculation Job parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id241 type: object properties: student_uuid: type: string description: The student UUID for the rollup job. If provided, calculates for specific student. application/x-www-form-urlencoded: schema: *id241 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: RollupJob externalDocs: url: https://canvas.instructure.com/doc/api/outcome_results.html /v1/outcomes/{id}: get: tags: - Outcomes operationId: show_outcome summary: Show an outcome description: Returns the details of the outcome with the given id. parameters: - name: id in: path schema: type: string required: true description: ID - name: add_defaults in: query schema: type: boolean required: false description: |- If defaults are requested, then color and mastery level defaults will be added to outcome ratings in the result. This will only take effect if the Account Level Mastery Scales FF is DISABLED responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Outcome' externalDocs: url: https://canvas.instructure.com/doc/api/outcomes.html put: tags: - Outcomes operationId: update_outcome summary: Update an outcome description: |- Modify an existing outcome. Fields not provided are left as is; unrecognized fields are ignored. If any new ratings are provided, the combination of all new ratings provided completely replace any existing embedded rubric criterion; it is not possible to tweak the ratings of the embedded rubric criterion. A new embedded rubric criterion's mastery_points default to the maximum points in the highest rating if not specified in the mastery_points parameter. Any new ratings lacking a description are given a default of "No description". Any new ratings lacking a point value are given a default of 0. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id242 type: object properties: title: type: string description: The new outcome title. display_name: type: string description: |- A friendly name shown in reports for outcomes with cryptic titles, such as common core standards names. description: type: string description: The new outcome description. vendor_guid: type: string description: A custom GUID for the learning standard. mastery_points: type: integer format: int64 description: The new mastery threshold for the embedded rubric criterion. ratings[description]: type: array items: type: string description: The description of a new rating level for the embedded rubric criterion. ratings[points]: type: array items: type: integer description: |- The points corresponding to a new rating level for the embedded rubric criterion. calculation_method: type: string enum: - weighted_average - decaying_average - n_mastery - latest - highest - average description: |- The new calculation method. If the Outcomes New Decaying Average Calculation Method FF is ENABLED then "weighted_average" can be used and it is same as previous "decaying_average" and new "decaying_average" will have improved version of calculation. calculation_int: type: integer format: int64 description: The new calculation int. Only applies if the calculation_method is "decaying_average" or "n_mastery" add_defaults: type: boolean description: |- If defaults are requested, then color and mastery level defaults will be added to outcome ratings in the result. This will only take effect if the Account Level Mastery Scales FF is DISABLED application/x-www-form-urlencoded: schema: *id242 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Outcome' externalDocs: url: https://canvas.instructure.com/doc/api/outcomes.html /v1/courses/{course_id}/outcome_alignments: get: tags: - Outcomes operationId: get_outcome_alignments_for_student_or_assignment summary: Get outcome alignments for a student or assignment description: Returns outcome alignments for a student or assignment in a course. parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course - name: student_id in: query schema: type: integer format: int64 required: false description: |- The id of the student. Returns alignments filtered by student submissions. Can be combined with assignment_id to filter to a specific assignment. - name: assignment_id in: query schema: type: integer format: int64 required: false description: |- The id of the assignment. When provided without student_id, returns all outcome alignments for the assignment (requires manage_grades or view_all_grades permission). When provided with student_id, filters to that student's submission. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/OutcomeAlignment__outcomes' externalDocs: url: https://canvas.instructure.com/doc/api/outcomes.html /v1/courses/{course_id}/front_page: get: tags: - Pages operationId: show_front_page_courses summary: Show front page description: Retrieve the content of the front page parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html put: tags: - Pages operationId: update_create_front_page_courses summary: Update/create front page description: Update the title or contents of the front page parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id243 type: object properties: wiki_page[title]: type: string description: |- The title for the new page. NOTE: changing a page's title will change its url. The updated url will be returned in the result. wiki_page[body]: type: string description: The content for the new page. wiki_page[editing_roles]: type: string enum: - teachers - students - members - public description: |- Which user roles are allowed to edit this page. Any combination of these roles is allowed (separated by commas). "teachers":: Allows editing by teachers in the course. "students":: Allows editing by students in the course. "members":: For group wikis, allows editing by members of the group. "public":: Allows editing by any user. wiki_page[notify_of_update]: type: boolean description: Whether participants should be notified when this page changes. wiki_page[published]: type: boolean description: Whether the page is published (true) or draft state (false). application/x-www-form-urlencoded: schema: *id243 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/groups/{group_id}/front_page: get: tags: - Pages operationId: show_front_page_groups summary: Show front page description: Retrieve the content of the front page parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html put: tags: - Pages operationId: update_create_front_page_groups summary: Update/create front page description: Update the title or contents of the front page parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id244 type: object properties: wiki_page[title]: type: string description: |- The title for the new page. NOTE: changing a page's title will change its url. The updated url will be returned in the result. wiki_page[body]: type: string description: The content for the new page. wiki_page[editing_roles]: type: string enum: - teachers - students - members - public description: |- Which user roles are allowed to edit this page. Any combination of these roles is allowed (separated by commas). "teachers":: Allows editing by teachers in the course. "students":: Allows editing by students in the course. "members":: For group wikis, allows editing by members of the group. "public":: Allows editing by any user. wiki_page[notify_of_update]: type: boolean description: Whether participants should be notified when this page changes. wiki_page[published]: type: boolean description: Whether the page is published (true) or draft state (false). application/x-www-form-urlencoded: schema: *id244 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/courses/{course_id}/pages/{url_or_id}/duplicate: post: tags: - Pages operationId: duplicate_page summary: Duplicate page description: Duplicate a wiki page parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/courses/{course_id}/pages: get: tags: - Pages operationId: list_pages_courses summary: List pages description: A paginated list of the wiki pages associated with a course or group parameters: - name: course_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - title - created_at - updated_at required: false description: Sort results by this field. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. - name: search_term in: query schema: type: string required: false description: The partial title of the pages to match and return. - name: published in: query schema: type: boolean required: false description: |- If true, include only published paqes. If false, exclude published pages. If not present, do not filter on published status. - name: include in: query schema: type: array items: type: string enum: - body required: false description: |- - "body": Optionally include the page body with each Page. If this is a block_editor page, returns the block_editor_attributes. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html post: tags: - Pages operationId: create_page_courses summary: Create page description: Create a new wiki page parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id245 type: object properties: wiki_page[title]: type: string description: The title for the new page. wiki_page[body]: type: string description: The content for the new page. wiki_page[editing_roles]: type: string enum: - teachers - students - members - public description: |- Which user roles are allowed to edit this page. Any combination of these roles is allowed (separated by commas). "teachers":: Allows editing by teachers in the course. "students":: Allows editing by students in the course. "members":: For group wikis, allows editing by members of the group. "public":: Allows editing by any user. wiki_page[notify_of_update]: type: boolean description: Whether participants should be notified when this page changes. wiki_page[published]: type: boolean description: Whether the page is published (true) or draft state (false). wiki_page[front_page]: type: boolean description: Set an unhidden page as the front page (if true) wiki_page[publish_at]: type: string format: date-time description: |- Schedule a future date/time to publish the page. This will have no effect unless the "Scheduled Page Publication" feature is enabled in the account. If a future date is supplied, the page will be unpublished and +wiki_page[published]+ will be ignored. required: - wiki_page[title] application/x-www-form-urlencoded: schema: *id245 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/groups/{group_id}/pages: get: tags: - Pages operationId: list_pages_groups summary: List pages description: A paginated list of the wiki pages associated with a course or group parameters: - name: group_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - title - created_at - updated_at required: false description: Sort results by this field. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. - name: search_term in: query schema: type: string required: false description: The partial title of the pages to match and return. - name: published in: query schema: type: boolean required: false description: |- If true, include only published paqes. If false, exclude published pages. If not present, do not filter on published status. - name: include in: query schema: type: array items: type: string enum: - body required: false description: |- - "body": Optionally include the page body with each Page. If this is a block_editor page, returns the block_editor_attributes. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html post: tags: - Pages operationId: create_page_groups summary: Create page description: Create a new wiki page parameters: - name: group_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id246 type: object properties: wiki_page[title]: type: string description: The title for the new page. wiki_page[body]: type: string description: The content for the new page. wiki_page[editing_roles]: type: string enum: - teachers - students - members - public description: |- Which user roles are allowed to edit this page. Any combination of these roles is allowed (separated by commas). "teachers":: Allows editing by teachers in the course. "students":: Allows editing by students in the course. "members":: For group wikis, allows editing by members of the group. "public":: Allows editing by any user. wiki_page[notify_of_update]: type: boolean description: Whether participants should be notified when this page changes. wiki_page[published]: type: boolean description: Whether the page is published (true) or draft state (false). wiki_page[front_page]: type: boolean description: Set an unhidden page as the front page (if true) wiki_page[publish_at]: type: string format: date-time description: |- Schedule a future date/time to publish the page. This will have no effect unless the "Scheduled Page Publication" feature is enabled in the account. If a future date is supplied, the page will be unpublished and +wiki_page[published]+ will be ignored. required: - wiki_page[title] application/x-www-form-urlencoded: schema: *id246 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/courses/{course_id}/pages/{url_or_id}: get: tags: - Pages operationId: show_page_courses summary: Show page description: Retrieve the content of a wiki page parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html put: tags: - Pages operationId: update_create_page_courses summary: Update/create page description: |- Update the title or contents of a wiki page NOTE: You cannot specify the ID when creating a page. If you pass a numeric value as the page identifier and that does not represent a page ID that already exists, it will be interpreted as a URL. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id247 type: object properties: wiki_page[title]: type: string description: |- The title for the new page. NOTE: changing a page's title will change its url. The updated url will be returned in the result. wiki_page[body]: type: string description: The content for the new page. wiki_page[editing_roles]: type: string enum: - teachers - students - members - public description: |- Which user roles are allowed to edit this page. Any combination of these roles is allowed (separated by commas). "teachers":: Allows editing by teachers in the course. "students":: Allows editing by students in the course. "members":: For group wikis, allows editing by members of the group. "public":: Allows editing by any user. wiki_page[notify_of_update]: type: boolean description: Whether participants should be notified when this page changes. wiki_page[published]: type: boolean description: Whether the page is published (true) or draft state (false). wiki_page[publish_at]: type: string format: date-time description: |- Schedule a future date/time to publish the page. This will have no effect unless the "Scheduled Page Publication" feature is enabled in the account. If a future date is set and the page is already published, it will be unpublished. wiki_page[front_page]: type: boolean description: Set an unhidden page as the front page (if true) application/x-www-form-urlencoded: schema: *id247 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html delete: tags: - Pages operationId: delete_page_courses summary: Delete page description: Delete a wiki page parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/groups/{group_id}/pages/{url_or_id}: get: tags: - Pages operationId: show_page_groups summary: Show page description: Retrieve the content of a wiki page parameters: - name: group_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html put: tags: - Pages operationId: update_create_page_groups summary: Update/create page description: |- Update the title or contents of a wiki page NOTE: You cannot specify the ID when creating a page. If you pass a numeric value as the page identifier and that does not represent a page ID that already exists, it will be interpreted as a URL. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id248 type: object properties: wiki_page[title]: type: string description: |- The title for the new page. NOTE: changing a page's title will change its url. The updated url will be returned in the result. wiki_page[body]: type: string description: The content for the new page. wiki_page[editing_roles]: type: string enum: - teachers - students - members - public description: |- Which user roles are allowed to edit this page. Any combination of these roles is allowed (separated by commas). "teachers":: Allows editing by teachers in the course. "students":: Allows editing by students in the course. "members":: For group wikis, allows editing by members of the group. "public":: Allows editing by any user. wiki_page[notify_of_update]: type: boolean description: Whether participants should be notified when this page changes. wiki_page[published]: type: boolean description: Whether the page is published (true) or draft state (false). wiki_page[publish_at]: type: string format: date-time description: |- Schedule a future date/time to publish the page. This will have no effect unless the "Scheduled Page Publication" feature is enabled in the account. If a future date is set and the page is already published, it will be unpublished. wiki_page[front_page]: type: boolean description: Set an unhidden page as the front page (if true) application/x-www-form-urlencoded: schema: *id248 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html delete: tags: - Pages operationId: delete_page_groups summary: Delete page description: Delete a wiki page parameters: - name: group_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Page' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/courses/{course_id}/pages/{url_or_id}/revisions: get: tags: - Pages operationId: list_revisions_courses summary: List revisions description: A paginated list of the revisions of a page. Callers must have update rights on the page in order to see page history. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/groups/{group_id}/pages/{url_or_id}/revisions: get: tags: - Pages operationId: list_revisions_groups summary: List revisions description: A paginated list of the revisions of a page. Callers must have update rights on the page in order to see page history. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/courses/{course_id}/pages/{url_or_id}/revisions/latest: get: tags: - Pages operationId: show_revision_courses_latest summary: Show revision description: |- Retrieve the metadata and optionally content of a revision of the page. Note that retrieving historic versions of pages requires edit rights. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID - name: summary in: query schema: type: boolean required: false description: If set, exclude page content from results responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/groups/{group_id}/pages/{url_or_id}/revisions/latest: get: tags: - Pages operationId: show_revision_groups_latest summary: Show revision description: |- Retrieve the metadata and optionally content of a revision of the page. Note that retrieving historic versions of pages requires edit rights. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID - name: summary in: query schema: type: boolean required: false description: If set, exclude page content from results responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/courses/{course_id}/pages/{url_or_id}/revisions/{revision_id}: get: tags: - Pages operationId: show_revision_courses_revision_id summary: Show revision description: |- Retrieve the metadata and optionally content of a revision of the page. Note that retrieving historic versions of pages requires edit rights. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID - name: revision_id in: path schema: type: string required: true description: ID - name: summary in: query schema: type: boolean required: false description: If set, exclude page content from results responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html post: tags: - Pages operationId: revert_to_revision_courses summary: Revert to revision description: Revert a page to a prior revision. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID - name: revision_id in: path schema: type: integer format: int64 required: true description: |- The revision to revert to (use the {api:WikiPagesApiController#revisions List Revisions API} to see available revisions) responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/groups/{group_id}/pages/{url_or_id}/revisions/{revision_id}: get: tags: - Pages operationId: show_revision_groups_revision_id summary: Show revision description: |- Retrieve the metadata and optionally content of a revision of the page. Note that retrieving historic versions of pages requires edit rights. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID - name: revision_id in: path schema: type: string required: true description: ID - name: summary in: query schema: type: boolean required: false description: If set, exclude page content from results responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html post: tags: - Pages operationId: revert_to_revision_groups summary: Revert to revision description: Revert a page to a prior revision. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: url_or_id in: path schema: type: string required: true description: ID - name: revision_id in: path schema: type: integer format: int64 required: true description: |- The revision to revert to (use the {api:WikiPagesApiController#revisions List Revisions API} to see available revisions) responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PageRevision' externalDocs: url: https://canvas.instructure.com/doc/api/pages.html /v1/courses/{course_id}/assignments/{assignment_id}/peer_reviews: get: tags: - Peer Reviews operationId: get_all_peer_reviews_courses_peer_reviews summary: Get all Peer Reviews description: Get a list of all Peer Reviews for this assignment parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_comments - user required: false description: Associations to include with the peer review. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html /v1/sections/{section_id}/assignments/{assignment_id}/peer_reviews: get: tags: - Peer Reviews operationId: get_all_peer_reviews_sections_peer_reviews summary: Get all Peer Reviews description: Get a list of all Peer Reviews for this assignment parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_comments - user required: false description: Associations to include with the peer review. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{submission_id}/peer_reviews: get: tags: - Peer Reviews operationId: get_all_peer_reviews_courses_submissions summary: Get all Peer Reviews description: Get a list of all Peer Reviews for this assignment parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_comments - user required: false description: Associations to include with the peer review. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html post: tags: - Peer Reviews operationId: create_peer_review_courses summary: Create Peer Review description: Create a peer review for the assignment parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id249 type: object properties: user_id: type: integer format: int64 description: user_id to assign as reviewer on this assignment required: - user_id application/x-www-form-urlencoded: schema: *id249 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html delete: tags: - Peer Reviews operationId: delete_peer_review_courses summary: Delete Peer Review description: Delete a peer review for the assignment parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_id in: path schema: type: string required: true description: ID - name: user_id in: query schema: type: integer format: int64 required: true description: user_id to delete as reviewer on this assignment responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{submission_id}/peer_reviews: get: tags: - Peer Reviews operationId: get_all_peer_reviews_sections_submissions summary: Get all Peer Reviews description: Get a list of all Peer Reviews for this assignment parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_comments - user required: false description: Associations to include with the peer review. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html post: tags: - Peer Reviews operationId: create_peer_review_sections summary: Create Peer Review description: Create a peer review for the assignment parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id250 type: object properties: user_id: type: integer format: int64 description: user_id to assign as reviewer on this assignment required: - user_id application/x-www-form-urlencoded: schema: *id250 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html delete: tags: - Peer Reviews operationId: delete_peer_review_sections summary: Delete Peer Review description: Delete a peer review for the assignment parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_id in: path schema: type: string required: true description: ID - name: user_id in: query schema: type: integer format: int64 required: true description: user_id to delete as reviewer on this assignment responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html /v1/courses/{course_id}/assignments/{assignment_id}/allocate: post: tags: - Peer Reviews operationId: allocate_peer_review summary: Allocate Peer Review description: Allocates a submission for the current user to peer review parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PeerReview' externalDocs: url: https://canvas.instructure.com/doc/api/peer_reviews.html /lti/assignments/{assignment_id}: get: tags: - Plagiarism Detection Platform Assignments operationId: get_single_assignment_lti summary: Get a single assignment (lti) description: |- Get a single Canvas assignment by Canvas id or LTI id. Tool providers may only access assignments that are associated with their tool. parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: query schema: type: string required: false description: The id of the user. Can be a Canvas or LTI id for the user. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LtiAssignment' externalDocs: url: https://canvas.instructure.com/doc/api/plagiarism_detection_platform_assignments.html /lti/users/{id}: get: tags: - Plagiarism Detection Platform Users operationId: get_single_user_lti summary: Get a single user (lti) description: |- Get a single Canvas user by Canvas id or LTI id. Tool providers may only access users that have been assigned an assignment associated with their tool. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/plagiarism_detection_platform_users.html /lti/groups/{group_id}/users: get: tags: - Plagiarism Detection Platform Users operationId: get_all_users_in_group_lti summary: Get all users in a group (lti) description: |- Get all Canvas users in a group. Tool providers may only access groups that belong to the context the tool is installed in. parameters: - name: group_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/plagiarism_detection_platform_users.html /lti/assignments/{assignment_id}/submissions/{submission_id}: get: tags: - Plagiarism Detection Submissions operationId: get_single_submission summary: Get a single submission description: Get a single submission, based on submission id. parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_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/plagiarism_detection_submissions.html /lti/assignments/{assignment_id}/submissions/{submission_id}/history: get: tags: - Plagiarism Detection Submissions operationId: get_history_of_single_submission summary: Get the history of a single submission description: Get a list of all attempts made for a submission, based on submission id. parameters: - name: assignment_id in: path schema: type: string required: true description: ID - name: submission_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/plagiarism_detection_submissions.html /v1/planner/items: get: tags: - Planner operationId: list_planner_items_planner summary: List planner items description: |- Retrieve the paginated list of objects to be shown on the planner for the current user with the associated planner override to override an item's visibility if set. Planner items for a student may also be retrieved by a linked observer. Use the path that accepts a user_id and supply the student's id. parameters: - name: start_date in: query schema: type: string format: date required: false description: |- Only return items starting from the given date. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: end_date in: query schema: type: string format: date required: false description: |- Only return items up to the given date. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: context_codes in: query schema: type: array items: type: string required: false description: |- List of context codes of courses and/or groups whose items you want to see. If not specified, defaults to all contexts associated to the current user. Note that concluded courses will be ignored unless specified in the includes[] parameter. The format of this field is the context type, followed by an underscore, followed by the context id. For example: course_42, group_123 - name: observed_user_id in: query schema: type: string required: false description: |- Return planner items for the given observed user. Must be accompanied by context_codes[]. The user making the request must be observing the observed user in all the courses specified by context_codes[]. - name: filter in: query schema: type: string enum: - new_activity required: false description: Only return items that have new or unread activity - name: filter in: query schema: type: string enum: - incomplete_items required: false description: Only return items that are not completed (excludes items with planner_override.marked_complete = true or submitted assignments) - name: filter in: query schema: type: string enum: - complete_items required: false description: Only return items that are completed (includes items with planner_override.marked_complete = true or submitted assignments) responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/planner.html /v1/users/{user_id}/planner/items: get: tags: - Planner operationId: list_planner_items_users summary: List planner items description: |- Retrieve the paginated list of objects to be shown on the planner for the current user with the associated planner override to override an item's visibility if set. Planner items for a student may also be retrieved by a linked observer. Use the path that accepts a user_id and supply the student's id. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: start_date in: query schema: type: string format: date required: false description: |- Only return items starting from the given date. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: end_date in: query schema: type: string format: date required: false description: |- Only return items up to the given date. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: context_codes in: query schema: type: array items: type: string required: false description: |- List of context codes of courses and/or groups whose items you want to see. If not specified, defaults to all contexts associated to the current user. Note that concluded courses will be ignored unless specified in the includes[] parameter. The format of this field is the context type, followed by an underscore, followed by the context id. For example: course_42, group_123 - name: observed_user_id in: query schema: type: string required: false description: |- Return planner items for the given observed user. Must be accompanied by context_codes[]. The user making the request must be observing the observed user in all the courses specified by context_codes[]. - name: filter in: query schema: type: string enum: - new_activity required: false description: Only return items that have new or unread activity - name: filter in: query schema: type: string enum: - incomplete_items required: false description: Only return items that are not completed (excludes items with planner_override.marked_complete = true or submitted assignments) - name: filter in: query schema: type: string enum: - complete_items required: false description: Only return items that are completed (includes items with planner_override.marked_complete = true or submitted assignments) responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/planner.html /v1/planner_notes: get: tags: - Planner operationId: list_planner_notes summary: List planner notes description: |- Retrieve the paginated list of planner notes Retrieve planner note for a user parameters: - name: start_date in: query schema: type: string format: date-time required: false description: |- Only return notes with todo dates since the start_date (inclusive). No default. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: end_date in: query schema: type: string format: date-time required: false description: |- Only return notes with todo dates before the end_date (inclusive). No default. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ. If end_date and start_date are both specified and equivalent, then only notes with todo dates on that day are returned. - name: context_codes in: query schema: type: array items: type: string required: false description: |- List of context codes of courses whose notes you want to see. If not specified, defaults to all contexts that the user belongs to. The format of this field is the context type, followed by an underscore, followed by the context id. For example: course_42 Including a code matching the user's own context code (e.g. user_1) will include notes that are not associated with any particular course. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PlannerNote' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html post: tags: - Planner operationId: create_planner_note summary: Create a planner note description: Create a planner note for the current user requestBody: required: false content: application/json: schema: &id251 type: object properties: title: type: string description: The title of the planner note. details: type: string description: Text of the planner note. todo_date: type: string format: date description: |- The date where this planner note should appear in the planner. The value should be formatted as: yyyy-mm-dd. course_id: type: integer format: int64 description: |- The ID of the course to associate with the planner note. The caller must be able to view the course in order to associate it with a planner note. linked_object_type: type: string description: |- The type of a learning object to link to this planner note. Must be used in conjunction wtih linked_object_id and course_id. Valid linked_object_type values are: 'announcement', 'assignment', 'discussion_topic', 'wiki_page', 'quiz' linked_object_id: type: integer format: int64 description: |- The id of a learning object to link to this planner note. Must be used in conjunction with linked_object_type and course_id. The object must be in the same course as specified by course_id. If the title argument is not provided, the planner note will use the learning object's title as its title. Only one planner note may be linked to a specific learning object. application/x-www-form-urlencoded: schema: *id251 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerNote' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html /v1/planner_notes/{id}: get: tags: - Planner operationId: show_planner_note summary: Show a planner note description: Retrieve a planner note for the current user parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerNote' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html put: tags: - Planner operationId: update_planner_note summary: Update a planner note description: Update a planner note for the current user parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id252 type: object properties: title: type: string description: The title of the planner note. details: type: string description: Text of the planner note. todo_date: type: string format: date description: |- The date where this planner note should appear in the planner. The value should be formatted as: yyyy-mm-dd. course_id: type: integer format: int64 description: |- The ID of the course to associate with the planner note. The caller must be able to view the course in order to associate it with a planner note. Use a null or empty value to remove a planner note from a course. Note that if the planner note is linked to a learning object, its course_id cannot be changed. application/x-www-form-urlencoded: schema: *id252 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerNote' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html delete: tags: - Planner operationId: delete_planner_note summary: Delete a planner note description: Delete a planner note for the current user parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerNote' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html /v1/planner/overrides: get: tags: - Planner operationId: list_planner_overrides summary: List planner overrides description: Retrieve a planner override for the current user responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PlannerOverride' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html post: tags: - Planner operationId: create_planner_override summary: Create a planner override description: Create a planner override for the current user requestBody: required: false content: application/json: schema: &id253 type: object properties: plannable_type: type: string enum: - announcement - assignment - discussion_topic - quiz - wiki_page - planner_note - calendar_event - assessment_request - sub_assignment - peer_review_sub_assignment description: Type of the item that you are overriding in the planner plannable_id: type: integer format: int64 description: ID of the item that you are overriding in the planner marked_complete: type: boolean description: If this is true, the item will show in the planner as completed dismissed: type: boolean description: If this is true, the item will not show in the opportunities list required: - plannable_type - plannable_id application/x-www-form-urlencoded: schema: *id253 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerOverride' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html /v1/planner/overrides/{id}: get: tags: - Planner operationId: show_planner_override summary: Show a planner override description: Retrieve a planner override for the current user parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerOverride' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html put: tags: - Planner operationId: update_planner_override summary: Update a planner override description: Update a planner override's visibilty for the current user parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id254 type: object properties: marked_complete: type: string description: determines whether the planner item is marked as completed dismissed: type: string description: determines whether the planner item shows in the opportunities list application/x-www-form-urlencoded: schema: *id254 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerOverride' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html delete: tags: - Planner operationId: delete_planner_override summary: Delete a planner override description: Delete a planner override for the current user parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PlannerOverride' externalDocs: url: https://canvas.instructure.com/doc/api/planner.html /v1/polls/{poll_id}/poll_choices: get: tags: - Poll Choices operationId: list_poll_choices_in_poll summary: List poll choices in a poll description: Returns the paginated list of PollChoices in this poll. parameters: - name: poll_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/poll_choices.html post: tags: - Poll Choices operationId: create_single_poll_choice summary: Create a single poll choice description: Create a new poll choice for this poll parameters: - name: poll_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id255 type: object properties: poll_choices[text]: type: array items: type: string description: The descriptive text of the poll choice. poll_choices[is_correct]: type: array items: type: boolean description: Whether this poll choice is considered correct or not. Defaults to false. poll_choices[position]: type: array items: type: integer description: The order this poll choice should be returned in the context it's sibling poll choices. required: - poll_choices[text] application/x-www-form-urlencoded: schema: *id255 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/poll_choices.html /v1/polls/{poll_id}/poll_choices/{id}: get: tags: - Poll Choices operationId: get_single_poll_choice summary: Get a single poll choice description: Returns the poll choice with the given id parameters: - name: poll_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/poll_choices.html put: tags: - Poll Choices operationId: update_single_poll_choice summary: Update a single poll choice description: Update an existing poll choice for this poll parameters: - name: poll_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: &id256 type: object properties: poll_choices[text]: type: array items: type: string description: The descriptive text of the poll choice. poll_choices[is_correct]: type: array items: type: boolean description: Whether this poll choice is considered correct or not. Defaults to false. poll_choices[position]: type: array items: type: integer description: The order this poll choice should be returned in the context it's sibling poll choices. required: - poll_choices[text] application/x-www-form-urlencoded: schema: *id256 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/poll_choices.html delete: tags: - Poll Choices operationId: delete_poll_choice summary: Delete a poll choice description: 204 No Content response code is returned if the deletion was successful. parameters: - name: poll_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/poll_choices.html /v1/polls/{poll_id}/poll_sessions: get: tags: - Poll Sessions operationId: list_poll_sessions_for_poll summary: List poll sessions for a poll description: Returns the paginated list of PollSessions in this poll. parameters: - name: poll_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/poll_sessions.html post: tags: - Poll Sessions operationId: create_single_poll_session summary: Create a single poll session description: Create a new poll session for this poll parameters: - name: poll_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id257 type: object properties: poll_sessions[course_id]: type: array items: type: integer description: The id of the course this session is associated with. poll_sessions[course_section_id]: type: array items: type: integer description: The id of the course section this session is associated with. poll_sessions[has_public_results]: type: array items: type: boolean description: Whether or not results are viewable by students. required: - poll_sessions[course_id] application/x-www-form-urlencoded: schema: *id257 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/poll_sessions.html /v1/polls/{poll_id}/poll_sessions/{id}: get: tags: - Poll Sessions operationId: get_results_for_single_poll_session summary: Get the results for a single poll session description: Returns the poll session with the given id parameters: - name: poll_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/poll_sessions.html put: tags: - Poll Sessions operationId: update_single_poll_session summary: Update a single poll session description: Update an existing poll session for this poll parameters: - name: poll_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: &id258 type: object properties: poll_sessions[course_id]: type: array items: type: integer description: The id of the course this session is associated with. poll_sessions[course_section_id]: type: array items: type: integer description: The id of the course section this session is associated with. poll_sessions[has_public_results]: type: array items: type: boolean description: Whether or not results are viewable by students. application/x-www-form-urlencoded: schema: *id258 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/poll_sessions.html delete: tags: - Poll Sessions operationId: delete_poll_session summary: Delete a poll session description: 204 No Content response code is returned if the deletion was successful. parameters: - name: poll_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/poll_sessions.html /v1/polls/{poll_id}/poll_sessions/{id}/open: get: tags: - Poll Sessions operationId: open_poll_session summary: Open a poll session parameters: - name: poll_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/poll_sessions.html /v1/polls/{poll_id}/poll_sessions/{id}/close: get: tags: - Poll Sessions operationId: close_opened_poll_session summary: Close an opened poll session parameters: - name: poll_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/poll_sessions.html /v1/poll_sessions/opened: get: tags: - Poll Sessions operationId: list_opened_poll_sessions summary: List opened poll sessions description: A paginated list of all opened poll sessions available to the current user. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/poll_sessions.html /v1/poll_sessions/closed: get: tags: - Poll Sessions operationId: list_closed_poll_sessions summary: List closed poll sessions description: A paginated list of all closed poll sessions available to the current user. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/poll_sessions.html /v1/polls/{poll_id}/poll_sessions/{poll_session_id}/poll_submissions/{id}: get: tags: - Poll Submissions operationId: get_single_poll_submission summary: Get a single poll submission description: Returns the poll submission with the given id parameters: - name: poll_id in: path schema: type: string required: true description: ID - name: poll_session_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/poll_submissions.html /v1/polls/{poll_id}/poll_sessions/{poll_session_id}/poll_submissions: post: tags: - Poll Submissions operationId: create_single_poll_submission summary: Create a single poll submission description: Create a new poll submission for this poll session parameters: - name: poll_id in: path schema: type: string required: true description: ID - name: poll_session_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id259 type: object properties: poll_submissions[poll_choice_id]: type: array items: type: integer description: The chosen poll choice for this submission. required: - poll_submissions[poll_choice_id] application/x-www-form-urlencoded: schema: *id259 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/poll_submissions.html /v1/polls: get: tags: - Polls operationId: list_polls summary: List polls description: Returns the paginated list of polls for the current user. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/polls.html post: tags: - Polls operationId: create_single_poll summary: Create a single poll description: Create a new poll for the current user requestBody: required: false content: application/json: schema: &id260 type: object properties: polls[question]: type: array items: type: string description: The title of the poll. polls[description]: type: array items: type: string description: A brief description or instructions for the poll. required: - polls[question] application/x-www-form-urlencoded: schema: *id260 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/polls.html /v1/polls/{id}: get: tags: - Polls operationId: get_single_poll summary: Get a single poll description: Returns the poll with the given id parameters: - 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/polls.html put: tags: - Polls operationId: update_single_poll summary: Update a single poll description: Update an existing poll belonging to the current user parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id261 type: object properties: polls[question]: type: array items: type: string description: The title of the poll. polls[description]: type: array items: type: string description: A brief description or instructions for the poll. required: - polls[question] application/x-www-form-urlencoded: schema: *id261 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/polls.html delete: tags: - Polls operationId: delete_poll summary: Delete a poll description: 204 No Content response code is returned if the deletion was successful. parameters: - 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/polls.html /v1/users/{user_id}/portfolio_notifications: post: tags: - Portfolio Notifications operationId: create_portfolio_notification summary: Create a portfolio notification parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id262 type: object properties: event_type: type: string description: One of the allowed portfolio event types. title: type: string description: Short headline for the notification. message: type: string description: Body text for the notification. url: type: string description: Deep link back into the Portfolio tool. required: - event_type - title application/x-www-form-urlencoded: schema: *id262 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/portfolio_notifications.html /v1/accounts/{account_id}/outcome_proficiency: post: tags: - Proficiency Ratings operationId: create_update_proficiency_ratings_accounts summary: Create/update proficiency ratings description: |- Create or update account-level proficiency ratings. These ratings will apply to all sub-accounts, unless they have their own account-level proficiency ratings defined. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id263 type: object properties: ratings[description]: type: array items: type: string description: The description of the rating level. ratings[points]: type: array items: type: integer description: The non-negative number of points of the rating level. Points across ratings should be strictly decreasing in value. ratings[mastery]: type: array items: type: integer description: Indicates the rating level where mastery is first achieved. Only one rating in a proficiency should be marked for mastery. ratings[color]: type: array items: type: integer description: The color associated with the rating level. Should be a hex color code like '00FFFF'. application/x-www-form-urlencoded: schema: *id263 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Proficiency' externalDocs: url: https://canvas.instructure.com/doc/api/proficiency_ratings.html get: tags: - Proficiency Ratings operationId: get_proficiency_ratings_accounts summary: Get proficiency ratings description: |- Get account-level proficiency ratings. If not defined for this account, it will return proficiency ratings for the nearest super-account with ratings defined. Will return 404 if none found. Examples: curl https:///api/v1/accounts//outcome_proficiency \ -H 'Authorization: Bearer ' parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Proficiency' externalDocs: url: https://canvas.instructure.com/doc/api/proficiency_ratings.html /v1/courses/{course_id}/outcome_proficiency: post: tags: - Proficiency Ratings operationId: create_update_proficiency_ratings_courses summary: Create/update proficiency ratings description: |- Create or update account-level proficiency ratings. These ratings will apply to all sub-accounts, unless they have their own account-level proficiency ratings defined. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id264 type: object properties: ratings[description]: type: array items: type: string description: The description of the rating level. ratings[points]: type: array items: type: integer description: The non-negative number of points of the rating level. Points across ratings should be strictly decreasing in value. ratings[mastery]: type: array items: type: integer description: Indicates the rating level where mastery is first achieved. Only one rating in a proficiency should be marked for mastery. ratings[color]: type: array items: type: integer description: The color associated with the rating level. Should be a hex color code like '00FFFF'. application/x-www-form-urlencoded: schema: *id264 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Proficiency' externalDocs: url: https://canvas.instructure.com/doc/api/proficiency_ratings.html get: tags: - Proficiency Ratings operationId: get_proficiency_ratings_courses summary: Get proficiency ratings description: |- Get account-level proficiency ratings. If not defined for this account, it will return proficiency ratings for the nearest super-account with ratings defined. Will return 404 if none found. Examples: curl https:///api/v1/accounts//outcome_proficiency \ -H 'Authorization: Bearer ' parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Proficiency' externalDocs: url: https://canvas.instructure.com/doc/api/proficiency_ratings.html /v1/progress/{id}: get: tags: - Progress operationId: query_progress summary: Query progress description: Return completion and status information about an asynchronous job parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Progress__progress' externalDocs: url: https://canvas.instructure.com/doc/api/progress.html /v1/progress/{id}/cancel: post: tags: - Progress operationId: cancel_progress summary: Cancel progress description: |- Cancel an asynchronous job associated with a Progress object If you include "message" in the POSTed data, it will be set on the Progress and returned. This is handy to distinguish between cancel and fail for a workflow_state of "failed". parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Progress__progress' externalDocs: url: https://canvas.instructure.com/doc/api/progress.html /lti/courses/{course_id}/progress/{id}: get: tags: - Progress operationId: query_progress_progress summary: Query progress description: Return completion and status information about an asynchronous job parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Progress__progress' externalDocs: url: https://canvas.instructure.com/doc/api/progress.html /lti/developer_key/update_public_jwk: put: tags: - Public Jwk operationId: update_public_jwk summary: Update Public JWK description: Rotate the public key in jwk format when using lti services requestBody: required: false content: application/json: schema: &id265 type: object properties: public_jwk: type: object additionalProperties: true description: The new public jwk that will be set to the tools current public jwk. required: - public_jwk application/x-www-form-urlencoded: schema: *id265 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: DeveloperKey externalDocs: url: https://canvas.instructure.com/doc/api/public_jwk.html /v1/courses/{course_id}/quizzes/assignment_overrides: get: tags: - Quiz Assignment Overrides operationId: retrieve_assignment_overridden_dates_for_classic_quizzes summary: Retrieve assignment-overridden dates for Classic Quizzes description: |- Retrieve the actual due-at, unlock-at, and available-at dates for quizzes based on the assignment overrides active for the current API user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_assignment_overrides[quiz_ids] in: query schema: type: array items: type: integer required: false description: |- An array of quiz IDs. If omitted, overrides for all quizzes available to the operating user will be returned. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizAssignmentOverrideSetContainer' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_assignment_overrides.html /v1/courses/{course_id}/new_quizzes/assignment_overrides: get: tags: - Quiz Assignment Overrides operationId: retrieve_assignment_overridden_dates_for_new_quizzes summary: Retrieve assignment-overridden dates for New Quizzes description: |- Retrieve the actual due-at, unlock-at, and available-at dates for quizzes based on the assignment overrides active for the current API user. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_assignment_overrides[quiz_ids] in: query schema: type: array items: type: integer required: false description: |- An array of quiz IDs. If omitted, overrides for all quizzes available to the operating user will be returned. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizAssignmentOverrideSetContainer' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_assignment_overrides.html /v1/courses/{course_id}/quizzes/{quiz_id}/extensions: post: tags: - Quiz Extensions operationId: set_extensions_for_student_quiz_submissions_quiz_extensions summary: Set extensions for student quiz submissions description: |- Responses * 200 OK if the request was successful * 403 Forbidden if you are not allowed to extend quizzes for this course parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id266 type: object properties: quiz_extensions[user_id]: type: array items: type: integer description: The ID of the user we want to add quiz extensions for. quiz_extensions[extra_attempts]: type: array items: type: integer description: |- Number of times the student is allowed to re-take the quiz over the multiple-attempt limit. This is limited to 1000 attempts or less. quiz_extensions[extra_time]: type: array items: type: integer description: |- The number of extra minutes to allow for all attempts. This will add to the existing time limit on the submission. This is limited to 10080 minutes (1 week) quiz_extensions[manually_unlocked]: type: array items: type: boolean description: |- Allow the student to take the quiz even if it's locked for everyone else. quiz_extensions[extend_from_now]: type: array items: type: integer description: |- The number of minutes to extend the quiz from the current time. This is mutually exclusive to extend_from_end_at. This is limited to 1440 minutes (24 hours) quiz_extensions[extend_from_end_at]: type: array items: type: integer description: |- The number of minutes to extend the quiz beyond the quiz's current ending time. This is mutually exclusive to extend_from_now. This is limited to 1440 minutes (24 hours) required: - quiz_extensions[user_id] application/x-www-form-urlencoded: schema: *id266 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_extensions.html /v1/courses/{course_id}/quizzes/{quiz_id}/ip_filters: get: tags: - Quiz Ip Filters operationId: get_available_quiz_ip_filters summary: Get available quiz IP filters. description: |- Get a list of available IP filters for this Quiz. 200 OK response code is returned if the request was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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/quiz_ip_filters.html /v1/courses/{course_id}/quizzes/{quiz_id}/groups: get: tags: - Quiz Question Groups operationId: list_question_groups_in_quiz summary: List question groups in a quiz description: Returns a list of question groups in a quiz. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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/quiz_question_groups.html post: tags: - Quiz Question Groups operationId: create_question_group summary: Create a question group description: |- Create a new question group for this quiz 201 Created response code is returned if the creation was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id267 type: object properties: quiz_groups[name]: type: array items: type: string description: The name of the question group. quiz_groups[pick_count]: type: array items: type: integer description: The number of questions to randomly select for this group. quiz_groups[question_points]: type: array items: type: integer description: The number of points to assign to each question in the group. quiz_groups[assessment_question_bank_id]: type: array items: type: integer description: The id of the assessment question bank to pull questions from. application/x-www-form-urlencoded: schema: *id267 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_question_groups.html /v1/courses/{course_id}/quizzes/{quiz_id}/groups/{id}: get: tags: - Quiz Question Groups operationId: get_single_quiz_group summary: Get a single quiz group description: Returns details of the quiz group with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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 content: application/json: schema: $ref: '#/components/schemas/QuizGroup' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_question_groups.html put: tags: - Quiz Question Groups operationId: update_question_group summary: Update a question group description: Update a question group parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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: &id268 type: object properties: quiz_groups[name]: type: array items: type: string description: The name of the question group. quiz_groups[pick_count]: type: array items: type: integer description: The number of questions to randomly select for this group. quiz_groups[question_points]: type: array items: type: integer description: The number of points to assign to each question in the group. application/x-www-form-urlencoded: schema: *id268 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_question_groups.html delete: tags: - Quiz Question Groups operationId: delete_question_group summary: Delete a question group description: |- Delete a question group 204 No Content response code is returned if the deletion was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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/quiz_question_groups.html /v1/courses/{course_id}/quizzes/{quiz_id}/groups/{id}/reorder: post: tags: - Quiz Question Groups operationId: reorder_question_groups summary: Reorder question groups description: |- Change the order of the quiz questions within the group 204 No Content response code is returned if the reorder was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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: &id269 type: object properties: order[id]: type: array items: type: integer description: The associated item's unique identifier order[type]: type: array items: type: string enum: - question description: The type of item is always 'question' for a group required: - order[id] application/x-www-form-urlencoded: schema: *id269 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_question_groups.html /v1/courses/{course_id}/quizzes/{quiz_id}/questions: get: tags: - Quiz Questions operationId: list_questions_in_quiz_or_submission summary: List questions in a quiz or a submission description: Returns the paginated list of QuizQuestions in this quiz. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: quiz_submission_id in: query schema: type: integer format: int64 required: false description: |- If specified, the endpoint will return the questions that were presented for that submission. This is useful if the quiz has been modified after the submission was created and the latest quiz version's set of questions does not match the submission's. NOTE: you must specify quiz_submission_attempt as well if you specify this parameter. - name: quiz_submission_attempt in: query schema: type: integer format: int64 required: false description: The attempt of the submission you want the questions for. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/QuizQuestion' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_questions.html post: tags: - Quiz Questions operationId: create_single_quiz_question summary: Create a single quiz question description: Create a new quiz question for this quiz parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id270 type: object properties: question[question_name]: type: string description: The name of the question. question[question_text]: type: string description: The text of the question. question[quiz_group_id]: type: integer format: int64 description: The id of the quiz group to assign the question to. question[question_type]: type: string enum: - calculated_question - essay_question - file_upload_question - fill_in_multiple_blanks_question - matching_question - multiple_answers_question - multiple_choice_question - multiple_dropdowns_question - numerical_question - short_answer_question - text_only_question - true_false_question description: The type of question. Multiple optional fields depend upon the type of question to be used. question[position]: type: integer format: int64 description: The order in which the question will be displayed in the quiz in relation to other questions. question[points_possible]: type: integer format: int64 description: The maximum amount of points received for answering this question correctly. question[correct_comments]: type: string description: The comment to display if the student answers the question correctly. question[incorrect_comments]: type: string description: The comment to display if the student answers incorrectly. question[neutral_comments]: type: string description: The comment to display regardless of how the student answered. question[text_after_answers]: type: string description: no description question[answers]: type: array items: $ref: '#/components/schemas/Answer' description: no description application/x-www-form-urlencoded: schema: *id270 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizQuestion' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_questions.html /v1/courses/{course_id}/quizzes/{quiz_id}/questions/{id}: get: tags: - Quiz Questions operationId: get_single_quiz_question summary: Get a single quiz question description: Returns the quiz question with the given id parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The quiz question unique identifier. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizQuestion' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_questions.html put: tags: - Quiz Questions operationId: update_existing_quiz_question summary: Update an existing quiz question description: Updates an existing quiz question for this quiz parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: integer format: int64 required: true description: The associated quiz's unique identifier. - name: id in: path schema: type: integer format: int64 required: true description: The quiz question's unique identifier. requestBody: required: false content: application/json: schema: &id271 type: object properties: question[question_name]: type: string description: The name of the question. question[question_text]: type: string description: The text of the question. question[quiz_group_id]: type: integer format: int64 description: The id of the quiz group to assign the question to. question[question_type]: type: string enum: - calculated_question - essay_question - file_upload_question - fill_in_multiple_blanks_question - matching_question - multiple_answers_question - multiple_choice_question - multiple_dropdowns_question - numerical_question - short_answer_question - text_only_question - true_false_question description: The type of question. Multiple optional fields depend upon the type of question to be used. question[position]: type: integer format: int64 description: The order in which the question will be displayed in the quiz in relation to other questions. question[points_possible]: type: integer format: int64 description: The maximum amount of points received for answering this question correctly. question[correct_comments]: type: string description: The comment to display if the student answers the question correctly. question[incorrect_comments]: type: string description: The comment to display if the student answers incorrectly. question[neutral_comments]: type: string description: The comment to display regardless of how the student answered. question[text_after_answers]: type: string description: no description question[answers]: type: array items: $ref: '#/components/schemas/Answer' description: no description application/x-www-form-urlencoded: schema: *id271 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizQuestion' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_questions.html delete: tags: - Quiz Questions operationId: delete_quiz_question summary: Delete a quiz question description: 204 No Content response code is returned if the deletion was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: integer format: int64 required: true description: The associated quiz's unique identifier - name: id in: path schema: type: integer format: int64 required: true description: The quiz question's unique identifier responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_questions.html /v1/courses/{course_id}/quizzes/{quiz_id}/reports: get: tags: - Quiz Reports operationId: retrieve_all_quiz_reports summary: Retrieve all quiz reports description: Returns a list of all available reports. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: includes_all_versions in: query schema: type: boolean required: false description: |- Whether to retrieve reports that consider all the submissions or only the most recent. Defaults to false, ignored for item_analysis reports. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/QuizReport' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_reports.html post: tags: - Quiz Reports operationId: create_quiz_report_quiz_reports summary: Create a quiz report description: |- Create and return a new report for this quiz. If a previously generated report matches the arguments and is still current (i.e. there have been no new submissions), it will be returned. *Responses* * 400 Bad Request if the specified report type is invalid * 409 Conflict if a quiz report of the specified type is already being generated parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id272 type: object properties: quiz_report[report_type]: type: string enum: - student_analysis - item_analysis description: The type of report to be generated. quiz_report[includes_all_versions]: type: boolean description: |- Whether the report should consider all submissions or only the most recent. Defaults to false, ignored for item_analysis. include: type: array items: type: string enum: - file - progress description: |- Whether the output should include documents for the file and/or progress objects associated with this report. (Note: JSON-API only) required: - quiz_report[report_type] application/x-www-form-urlencoded: schema: *id272 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizReport' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_reports.html /v1/courses/{course_id}/quizzes/{quiz_id}/reports/{id}: get: tags: - Quiz Reports operationId: get_quiz_report summary: Get a quiz report description: Returns the data for a single quiz report. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - file - progress required: false description: |- Whether the output should include documents for the file and/or progress objects associated with this report. (Note: JSON-API only) responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/QuizReport' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_reports.html delete: tags: - Quiz Reports operationId: abort_generation_of_report_or_remove_previously_generated_one summary: Abort the generation of a report, or remove a previously generated one description: |- This API allows you to cancel a previous request you issued for a report to be generated. Or in the case of an already generated report, you'd like to remove it, perhaps to generate it another time with an updated version that provides new features. You must check the report's generation status before attempting to use this interface. See the "workflow_state" property of the QuizReport's Progress object for more information. Only when the progress reports itself in a "queued" state can the generation be aborted. *Responses* - 204 No Content if your request was accepted - 422 Unprocessable Entity if the report is not being generated or can not be aborted at this stage parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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/quiz_reports.html /v1/courses/{course_id}/quizzes/{quiz_id}/statistics: get: tags: - Quiz Statistics operationId: fetching_latest_quiz_statistics summary: Fetching the latest quiz statistics description: |- This endpoint provides statistics for all quiz versions, or for a specific quiz version, in which case the output is guaranteed to represent the _latest_ and most current version of the quiz. 200 OK response code is returned if the request was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: all_versions in: query schema: type: boolean required: false description: Whether the statistics report should include all submissions attempts. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_statistics.html /v1/courses/{course_id}/quizzes/{quiz_id}/submissions/{id}/events: post: tags: - Quiz Submission Events operationId: submit_captured_events summary: Submit captured events description: |- Store a set of events which were captured during a quiz taking session. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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: &id273 type: object properties: quiz_submission_events: type: array items: type: array items: {} description: The submission events to be recorded required: - quiz_submission_events application/x-www-form-urlencoded: schema: *id273 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_events.html get: tags: - Quiz Submission Events operationId: retrieve_captured_events summary: Retrieve captured events description: Retrieve the set of events captured during a specific submission attempt. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: attempt in: query schema: type: integer format: int64 required: false description: |- The specific submission attempt to look up the events for. If unspecified, the latest attempt will be used. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_events.html /v1/courses/{course_id}/quizzes/{quiz_id}/submissions/self/files: post: tags: - Quiz Submission Files operationId: upload_file_quiz_submission_files summary: Upload a file description: |- Associate a new quiz submission file This API endpoint is the first step in uploading a quiz submission file. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow as these parameters are interpreted as per the documentation there. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id274 type: object properties: name: type: string description: The name of the quiz submission file on_duplicate: type: string description: How to handle duplicate names application/x-www-form-urlencoded: schema: *id274 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_files.html /v1/quiz_submissions/{quiz_submission_id}/questions: get: tags: - Quiz Submission Questions operationId: get_all_quiz_submission_questions summary: Get all quiz submission questions. description: |- Get a list of all the question records for this quiz submission. 200 OK response code is returned if the request was successful. parameters: - name: quiz_submission_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - quiz_question required: false description: Associations to include with the quiz submission question. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_questions.html post: tags: - Quiz Submission Questions operationId: answering_questions summary: Answering questions description: Provide or update an answer to one or more QuizQuestions. parameters: - name: quiz_submission_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id275 type: object properties: attempt: type: integer format: int64 description: |- The attempt number of the quiz submission being taken. Note that this must be the latest attempt index, as questions for earlier attempts can not be modified. validation_token: type: string description: |- The unique validation token you received when the Quiz Submission was created. access_code: type: string description: Access code for the Quiz, if any. quiz_questions: type: array items: $ref: '#/components/schemas/QuizSubmissionQuestion' description: |- Set of question IDs and the answer value. See {Appendix: Question Answer Formats} for the accepted answer formats for each question type. required: - attempt - validation_token application/x-www-form-urlencoded: schema: *id275 responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/QuizSubmissionQuestion' externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_questions.html /v1/quiz_submissions/{quiz_submission_id}/questions/{id}/formatted_answer: get: tags: - Quiz Submission Questions operationId: get_formatted_student_numerical_answer summary: Get a formatted student numerical answer. description: |- Matches the intended behavior of the UI when a numerical answer is entered and returns the resulting formatted number parameters: - name: quiz_submission_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: answer in: query schema: type: number required: true description: no description responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_questions.html /v1/quiz_submissions/{quiz_submission_id}/questions/{id}/flag: put: tags: - Quiz Submission Questions operationId: flagging_question summary: Flagging a question. description: |- Set a flag on a quiz question to indicate that you want to return to it later. parameters: - name: quiz_submission_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: &id276 type: object properties: attempt: type: integer format: int64 description: |- The attempt number of the quiz submission being taken. Note that this must be the latest attempt index, as questions for earlier attempts can not be modified. validation_token: type: string description: |- The unique validation token you received when the Quiz Submission was created. access_code: type: string description: Access code for the Quiz, if any. required: - attempt - validation_token application/x-www-form-urlencoded: schema: *id276 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_questions.html /v1/quiz_submissions/{quiz_submission_id}/questions/{id}/unflag: put: tags: - Quiz Submission Questions operationId: unflagging_question summary: Unflagging a question. description: |- Remove the flag that you previously set on a quiz question after you've returned to it. parameters: - name: quiz_submission_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: &id277 type: object properties: attempt: type: integer format: int64 description: |- The attempt number of the quiz submission being taken. Note that this must be the latest attempt index, as questions for earlier attempts can not be modified. validation_token: type: string description: |- The unique validation token you received when the Quiz Submission was created. access_code: type: string description: Access code for the Quiz, if any. required: - attempt - validation_token application/x-www-form-urlencoded: schema: *id277 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_questions.html /v1/courses/{course_id}/quizzes/{id}/submission_users/message: post: tags: - Quiz Submission User List operationId: send_message_to_unsubmitted_or_submitted_users_for_quiz summary: Send a message to unsubmitted or submitted users for the quiz description: |- { "body": { "type": "string", "description": "message body of the conversation to be created", "example": "Please take the quiz." }, "recipients": { "type": "string", "description": "Who to send the message to. May be either 'submitted' or 'unsubmitted'", "example": "submitted" }, "subject": { "type": "string", "description": "Subject of the new Conversation created", "example": "ATTN: Quiz 101 Students" } } parameters: - name: course_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: &id278 type: object properties: conversations: type: string x-canvas-declared-type: QuizUserConversation description: '- Body and recipients to send the message to.' application/x-www-form-urlencoded: schema: *id278 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submission_user_list.html /v1/courses/{course_id}/quizzes/{quiz_id}/submissions: get: tags: - Quiz Submissions operationId: get_all_quiz_submissions summary: Get all quiz submissions. description: |- Get a list of all submissions for this quiz. Users who can view or manage grades for a course will have submissions from multiple users returned. A user who can only submit will have only their own submissions returned. When a user has an in-progress submission, only that submission is returned. When there isn't an in-progress quiz_submission, all completed submissions, including previous attempts, are returned. 200 OK response code is returned if the request was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - quiz - user required: false description: Associations to include with the quiz submission. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submissions.html post: tags: - Quiz Submissions operationId: create_quiz_submission_start_quiz_taking_session summary: Create the quiz submission (start a quiz-taking session) description: |- Start taking a Quiz by creating a QuizSubmission which you can use to answer questions and submit your answers. Responses * 200 OK if the request was successful * 400 Bad Request if the quiz is locked * 403 Forbidden if an invalid access code is specified * 403 Forbidden if the Quiz's IP filter restriction does not pass * 409 Conflict if a QuizSubmission already exists for this user and quiz parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id279 type: object properties: access_code: type: string description: Access code for the Quiz, if any. preview: type: boolean description: |- Whether this should be a preview QuizSubmission and not count towards the user's course record. Teachers only. application/x-www-form-urlencoded: schema: *id279 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submissions.html /v1/courses/{course_id}/quizzes/{quiz_id}/submission: get: tags: - Quiz Submissions operationId: get_quiz_submission summary: Get the quiz submission. description: |- Get the submission for this quiz for the current user. 200 OK response code is returned if the request was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - quiz - user required: false description: Associations to include with the quiz submission. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submissions.html /v1/courses/{course_id}/quizzes/{quiz_id}/submissions/{id}: get: tags: - Quiz Submissions operationId: get_single_quiz_submission summary: Get a single quiz submission. description: |- Get a single quiz submission. 200 OK response code is returned if the request was successful. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - quiz - user required: false description: Associations to include with the quiz submission. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submissions.html put: tags: - Quiz Submissions operationId: update_student_question_scores_and_comments summary: Update student question scores and comments. description: |- Update the amount of points a student has scored for questions they've answered, provide comments for the student about their answer(s), or simply fudge the total score by a specific amount of points. Responses * 200 OK if the request was successful * 403 Forbidden if you are not a teacher in this course * 400 Bad Request if the attempt parameter is missing or invalid * 400 Bad Request if the specified QS attempt is not yet complete parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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: &id280 type: object properties: quiz_submissions[attempt]: type: array items: type: integer description: |- The attempt number of the quiz submission that should be updated. This attempt MUST be already completed. quiz_submissions[fudge_points]: type: array items: type: number description: Amount of positive or negative points to fudge the total score by. quiz_submissions[questions]: type: array items: type: object additionalProperties: true description: |- A set of scores and comments for each question answered by the student. The keys are the question IDs, and the values are hashes of `score` and `comment` entries. See {Appendix: Manual Scoring} for more on this parameter. required: - quiz_submissions[attempt] application/x-www-form-urlencoded: schema: *id280 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submissions.html /v1/courses/{course_id}/quizzes/{quiz_id}/submissions/{id}/complete: post: tags: - Quiz Submissions operationId: complete_quiz_submission_turn_it_in summary: Complete the quiz submission (turn it in). description: |- Complete the quiz submission by marking it as complete and grading it. When the quiz submission has been marked as complete, no further modifications will be allowed. Responses * 200 OK if the request was successful * 403 Forbidden if an invalid access code is specified * 403 Forbidden if the Quiz's IP filter restriction does not pass * 403 Forbidden if an invalid token is specified * 400 Bad Request if the QS is already complete * 400 Bad Request if the attempt parameter is missing * 400 Bad Request if the attempt parameter is not the latest attempt parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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: &id281 type: object properties: attempt: type: integer format: int64 description: |- The attempt number of the quiz submission that should be completed. Note that this must be the latest attempt index, as earlier attempts can not be modified. validation_token: type: string description: |- The unique validation token you received when this Quiz Submission was created. access_code: type: string description: Access code for the Quiz, if any. required: - attempt - validation_token application/x-www-form-urlencoded: schema: *id281 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quiz_submissions.html /v1/courses/{course_id}/quizzes/{quiz_id}/submissions/{id}/time: get: tags: - Quiz Submissions operationId: get_current_quiz_submission_times summary: Get current quiz submission times. description: |- Get the current timing data for the quiz attempt, both the end_at timestamp and the time_left parameter. Responses * 200 OK if the request was successful parameters: - name: course_id in: path schema: type: string required: true description: ID - name: quiz_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/quiz_submissions.html /v1/courses/{course_id}/quizzes: get: tags: - Quizzes operationId: list_quizzes_in_course summary: List quizzes in a course description: Returns the paginated list of Quizzes in this course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: The partial title of the quizzes to match and return. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Quiz' externalDocs: url: https://canvas.instructure.com/doc/api/quizzes.html post: tags: - Quizzes operationId: create_quiz summary: Create a quiz description: Create a new quiz for this course. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id282 type: object properties: quiz[title]: type: string description: The quiz title. quiz[description]: type: string description: A description of the quiz. quiz[quiz_type]: type: string enum: - practice_quiz - assignment - graded_survey - survey description: The type of quiz. quiz[assignment_group_id]: type: integer format: int64 description: |- The assignment group id to put the assignment in. Defaults to the top assignment group in the course. Only valid if the quiz is graded, i.e. if quiz_type is "assignment" or "graded_survey". quiz[time_limit]: type: integer format: int64 description: |- Time limit to take this quiz, in minutes. Set to null for no time limit. Defaults to null. quiz[shuffle_answers]: type: boolean description: |- If true, quiz answers for multiple choice questions will be randomized for each student. Defaults to false. quiz[hide_results]: type: string enum: - always - until_after_last_attempt description: |- Dictates whether or not quiz results are hidden from students. If null, students can see their results after any attempt. If "always", students can never see their results. If "until_after_last_attempt", students can only see results after their last attempt. (Only valid if allowed_attempts > 1). Defaults to null. quiz[show_correct_answers]: type: boolean description: |- Only valid if hide_results=null If false, hides correct answers from students when quiz results are viewed. Defaults to true. quiz[show_correct_answers_last_attempt]: type: boolean description: |- Only valid if show_correct_answers=true and allowed_attempts > 1 If true, hides correct answers from students when quiz results are viewed until they submit the last attempt for the quiz. Defaults to false. quiz[show_correct_answers_at]: type: string format: date-time description: |- Only valid if show_correct_answers=true If set, the correct answers will be visible by students only after this date, otherwise the correct answers are visible once the student hands in their quiz submission. quiz[hide_correct_answers_at]: type: string format: date-time description: |- Only valid if show_correct_answers=true If set, the correct answers will stop being visible once this date has passed. Otherwise, the correct answers will be visible indefinitely. quiz[allowed_attempts]: type: integer format: int64 description: |- Number of times a student is allowed to take a quiz. Set to -1 for unlimited attempts. Defaults to 1. quiz[scoring_policy]: type: string enum: - keep_highest - keep_latest description: |- Required and only valid if allowed_attempts > 1. Scoring policy for a quiz that students can take multiple times. Defaults to "keep_highest". quiz[one_question_at_a_time]: type: boolean description: |- If true, shows quiz to student one question at a time. Defaults to false. quiz[cant_go_back]: type: boolean description: |- Only valid if one_question_at_a_time=true If true, questions are locked after answering. Defaults to false. quiz[access_code]: type: string description: |- Restricts access to the quiz with a password. For no access code restriction, set to null. Defaults to null. quiz[ip_filter]: type: string description: |- Restricts access to the quiz to computers in a specified IP range. Filters can be a comma-separated list of addresses, or an address followed by a mask Examples: "192.168.217.1" "192.168.217.1/24" "192.168.217.1/255.255.255.0" For no IP filter restriction, set to null. Defaults to null. quiz[due_at]: type: string format: date-time description: |- The day/time the quiz is due. Accepts times in ISO 8601 format, e.g. 2011-10-21T18:48Z. quiz[lock_at]: type: string format: date-time description: |- The day/time the quiz is locked for students. Accepts times in ISO 8601 format, e.g. 2011-10-21T18:48Z. quiz[unlock_at]: type: string format: date-time description: |- The day/time the quiz is unlocked for students. Accepts times in ISO 8601 format, e.g. 2011-10-21T18:48Z. quiz[published]: type: boolean description: |- Whether the quiz should have a draft state of published or unpublished. NOTE: If students have started taking the quiz, or there are any submissions for the quiz, you may not unpublish a quiz and will recieve an error. quiz[one_time_results]: type: boolean description: |- Whether students should be prevented from viewing their quiz results past the first time (right after they turn the quiz in.) Only valid if "hide_results" is not set to "always". Defaults to false. quiz[only_visible_to_overrides]: type: boolean description: |- Whether this quiz is only visible to overrides (Only useful if 'differentiated assignments' account setting is on) Defaults to false. required: - quiz[title] application/x-www-form-urlencoded: schema: *id282 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Quiz' externalDocs: url: https://canvas.instructure.com/doc/api/quizzes.html /v1/courses/{course_id}/quizzes/{id}: get: tags: - Quizzes operationId: get_single_quiz summary: Get a single quiz description: Returns the quiz with the given id. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Quiz' externalDocs: url: https://canvas.instructure.com/doc/api/quizzes.html put: tags: - Quizzes operationId: edit_quiz summary: Edit a quiz description: |- Modify an existing quiz. See the documentation for quiz creation. Additional arguments: parameters: - name: course_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: &id283 type: object properties: quiz[notify_of_update]: type: boolean description: |- If true, notifies users that the quiz has changed. Defaults to true application/x-www-form-urlencoded: schema: *id283 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Quiz' externalDocs: url: https://canvas.instructure.com/doc/api/quizzes.html delete: tags: - Quizzes operationId: delete_quiz summary: Delete a quiz description: Deletes a quiz and returns the deleted quiz object. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Quiz' externalDocs: url: https://canvas.instructure.com/doc/api/quizzes.html /v1/courses/{course_id}/quizzes/{id}/reorder: post: tags: - Quizzes operationId: reorder_quiz_items summary: Reorder quiz items description: |- Change order of the quiz questions or groups within the quiz 204 No Content response code is returned if the reorder was successful. parameters: - name: course_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: &id284 type: object properties: order[id]: type: array items: type: integer description: The associated item's unique identifier order[type]: type: array items: type: string enum: - question - group description: The type of item is either 'question' or 'group' required: - order[id] application/x-www-form-urlencoded: schema: *id284 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/quizzes.html /v1/courses/{course_id}/quizzes/{id}/validate_access_code: post: tags: - Quizzes operationId: validate_quiz_access_code summary: Validate quiz access code description: Accepts an access code and returns a boolean indicating whether that access code is correct parameters: - name: course_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: &id285 type: object properties: access_code: type: string description: The access code being validated required: - access_code application/x-www-form-urlencoded: schema: *id285 responses: '200': description: Success content: application/json: schema: type: boolean externalDocs: url: https://canvas.instructure.com/doc/api/quizzes.html /lti/courses/{course_id}/line_items/{line_item_id}/results: get: tags: - Result operationId: show_collection_of_results summary: Show a collection of Results description: |- Show existing Results of a line item. Can be used to retrieve a specific student's result by adding the user_id (defined as the lti_user_id or the Canvas user_id) as a query parameter (i.e. user_id=1000). If user_id is included, it will return only one Result in the collection if the result exists, otherwise it will be empty. May also limit number of results by adding the limit query param (i.e. limit=100) parameters: - name: course_id in: path schema: type: string required: true description: ID - name: line_item_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Result__result' externalDocs: url: https://canvas.instructure.com/doc/api/result.html /lti/courses/{course_id}/line_items/{line_item_id}/results/{id}: get: tags: - Result operationId: show_result summary: Show a Result description: Show existing Result of a line item. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: line_item_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 content: application/json: schema: $ref: '#/components/schemas/Result__result' externalDocs: url: https://canvas.instructure.com/doc/api/result.html /v1/accounts/{account_id}/roles: get: tags: - Roles operationId: list_roles summary: List roles description: A paginated list of the roles available to an account. parameters: - name: account_id in: path schema: type: string required: true description: The id of the account to retrieve roles for. - name: state in: query schema: type: array items: type: string enum: - active - inactive required: false description: |- Filter by role state. If this argument is omitted, only 'active' roles are returned. - name: show_inherited in: query schema: type: boolean required: false description: |- If this argument is true, all roles inherited from parent accounts will be included. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Role' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html post: tags: - Roles operationId: create_new_role summary: Create a new role description: Create a new course-level or account-level role. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id286 type: object properties: label: type: string description: Label for the role. role: type: string description: Deprecated alias for label. base_role_type: type: string enum: - AccountMembership - StudentEnrollment - TeacherEnrollment - TaEnrollment - ObserverEnrollment - DesignerEnrollment description: |- Specifies the role type that will be used as a base for the permissions granted to this role. Defaults to 'AccountMembership' if absent permissions[][explicit]: type: boolean description: no description permissions[][enabled]: type: boolean description: |- If explicit is 1 and enabled is 1, permission will be explicitly granted to this role. If explicit is 1 and enabled has any other value (typically 0), permission will be explicitly denied to this role. If explicit is any other value (typically 0) or absent, or if enabled is absent, the value for permission will be inherited from upstream. Ignored if permission is locked upstream (in an ancestor account). May occur multiple times with unique values for . Recognized permission names for can be found on the {file:file.permissions.html Permissions list page}. Some of these permissions are applicable only for roles on the site admin account, on a root account, or for course-level roles with a particular base role type; if a specified permission is inapplicable, it will be ignored. Additional permissions may exist based on installed plugins. A comprehensive list of all permissions are available: Course Permissions PDF: http://bit.ly/cnvs-course-permissions Account Permissions PDF: http://bit.ly/cnvs-acct-permissions permissions[][locked]: type: boolean description: |- If the value is 1, permission will be locked downstream (new roles in subaccounts cannot override the setting). For any other value, permission is left unlocked. Ignored if permission is already locked upstream. May occur multiple times with unique values for . permissions[][applies_to_self]: type: boolean description: |- If the value is 1, permission applies to the account this role is in. The default value is 1. Must be true if applies_to_descendants is false. This value is only returned if enabled is true. permissions[][applies_to_descendants]: type: boolean description: |- If the value is 1, permission cascades down to sub accounts of the account this role is in. The default value is 1. Must be true if applies_to_self is false.This value is only returned if enabled is true. required: - label application/x-www-form-urlencoded: schema: *id286 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Role' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html /v1/accounts/{account_id}/roles/{id}: get: tags: - Roles operationId: get_single_role summary: Get a single role description: Retrieve information about a single role parameters: - name: id in: path schema: type: string required: true description: ID - name: account_id in: path schema: type: string required: true description: The id of the account containing the role - name: role_id in: query schema: type: integer format: int64 required: true description: The unique identifier for the role - name: role in: query schema: type: string required: false description: The name for the role responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Role' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html delete: tags: - Roles operationId: deactivate_role summary: Deactivate a role description: |- Deactivates a custom role. This hides it in the user interface and prevents it from being assigned to new users. Existing users assigned to the role will continue to function with the same permissions they had previously. Built-in roles cannot be deactivated. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: role_id in: query schema: type: integer format: int64 required: true description: The unique identifier for the role - name: role in: query schema: type: string required: false description: The name for the role responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Role' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html put: tags: - Roles operationId: update_role summary: Update a role description: |- Update permissions for an existing role. Recognized roles are: * TeacherEnrollment * StudentEnrollment * TaEnrollment * ObserverEnrollment * DesignerEnrollment * AccountAdmin * Any previously created custom role parameters: - name: account_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: &id287 type: object properties: label: type: string description: The label for the role. Can only change the label of a custom role that belongs directly to the account. permissions[][explicit]: type: boolean description: no description permissions[][enabled]: type: boolean description: |- These arguments are described in the documentation for the {api:RoleOverridesController#add_role add_role method}. The list of available permissions can be found on the {file:file.permissions.html Permissions list page}. permissions[][applies_to_self]: type: boolean description: |- If the value is 1, permission applies to the account this role is in. The default value is 1. Must be true if applies_to_descendants is false. This value is only returned if enabled is true. permissions[][applies_to_descendants]: type: boolean description: |- If the value is 1, permission cascades down to sub accounts of the account this role is in. The default value is 1. Must be true if applies_to_self is false.This value is only returned if enabled is true. application/x-www-form-urlencoded: schema: *id287 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Role' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html /v1/accounts/{account_id}/roles/{id}/activate: post: tags: - Roles operationId: activate_role summary: Activate a role description: Re-activates an inactive role (allowing it to be assigned to new users) parameters: - name: account_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: &id288 type: object properties: role_id: type: integer format: int64 description: The unique identifier for the role role: type: string x-canvas-declared-type: Deprecated description: The name for the role required: - role_id application/x-www-form-urlencoded: schema: *id288 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Role' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html /v1/accounts/{account_id}/roles/permissions: get: tags: - Roles operationId: list_assignable_permissions summary: List assignable permissions description: |- List all permissions that can be granted to roles in the given account. This returns largely the same information documented on the {file:file.permissions.html Permissions list page}, with a few caveats: * Permission labels and group labels returned by this API are localized (the same text visible in the web UI). * This API includes permissions added by plugins. * This API excludes permissions that are disabled in or otherwise do not apply to the given account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: If provided, return only permissions whose key, label, group, or group_label match the search string. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Permission' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html /v1/permissions/{context_type}/{permission}/help: get: tags: - Roles operationId: get_help_text_for_permissions summary: Get help text for permissions description: |- these actions access only static (but localized) information about permissions, but require a logged-in user to mitigate possible abuse Retrieve information about what Canvas permissions do and considerations for their use. parameters: - name: context_type in: path schema: type: string required: true description: ID - name: permission in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PermissionHelpText' externalDocs: url: https://canvas.instructure.com/doc/api/roles.html /v1/permissions/groups: get: tags: - Roles operationId: retrieve_permission_groups summary: Retrieve permission groups description: |- Retrieve information about groups of granular permissions The return value is a dictionary of permission group keys to objects containing +label+ and +subtitle+ keys. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/roles.html /v1/courses/{course_id}/rubrics: post: tags: - Rubrics operationId: create_single_rubric summary: Create a single rubric description: |- Returns the rubric with the given id. Unfortunately this endpoint does not return a standard Rubric object, instead it returns a hash that looks like { 'rubric': Rubric, 'rubric_association': RubricAssociation } This may eventually be deprecated in favor of a more standardized return value, but that is not currently planned. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id289 type: object properties: id: type: integer format: int64 description: The id of the rubric rubric_association_id: type: integer format: int64 description: |- The id of the rubric association object (not the course/assignment itself, but the join table record id). It can be used in place of +rubric_association[association_id]+ and +rubric_association[association_type]+ if desired. rubric[title]: type: string description: The title of the rubric rubric[free_form_criterion_comments]: type: boolean description: Whether or not you can write custom comments in the ratings field for a rubric rubric_association[association_id]: type: integer format: int64 description: The id of the object with which this rubric is associated rubric_association[association_type]: type: string enum: - Assignment - Course - Account description: The type of object this rubric is associated with rubric_association[use_for_grading]: type: boolean description: Whether or not the associated rubric is used for grade calculation rubric_association[hide_score_total]: type: boolean description: |- Whether or not the score total is displayed within the rubric. This option is only available if the rubric is not used for grading. rubric_association[purpose]: type: string description: |- Whether or not the association is for grading (and thus linked to an assignment) or if it's to indicate the rubric should appear in its context rubric[criteria]: type: object additionalProperties: true description: An indexed Hash of RubricCriteria objects where the keys are integer ids and the values are the RubricCriteria objects application/x-www-form-urlencoded: schema: *id289 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html get: tags: - Rubrics operationId: list_rubrics_courses summary: List rubrics description: Returns the paginated list of active rubrics for the current context. parameters: - name: course_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/rubrics.html /v1/courses/{course_id}/rubrics/{id}: put: tags: - Rubrics operationId: update_single_rubric summary: Update a single rubric description: |- Returns the rubric with the given id. Unfortunately this endpoint does not return a standard Rubric object, instead it returns a hash that looks like { 'rubric': Rubric, 'rubric_association': RubricAssociation } This may eventually be deprecated in favor of a more standardized return value, but that is not currently planned. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the rubric requestBody: required: false content: application/json: schema: &id290 type: object properties: rubric_association_id: type: integer format: int64 description: |- The id of the rubric association object (not the course/assignment itself, but the join table record id). It can be used in place of +rubric_association[association_id]+ and +rubric_association[association_type]+ if desired. rubric[title]: type: string description: The title of the rubric rubric[free_form_criterion_comments]: type: boolean description: Whether or not you can write custom comments in the ratings field for a rubric rubric[skip_updating_points_possible]: type: boolean description: Whether or not to update the points possible rubric_association[association_id]: type: integer format: int64 description: The id of the object with which this rubric is associated rubric_association[association_type]: type: string enum: - Assignment - Course - Account description: The type of object this rubric is associated with rubric_association[use_for_grading]: type: boolean description: Whether or not the associated rubric is used for grade calculation rubric_association[hide_score_total]: type: boolean description: |- Whether or not the score total is displayed within the rubric. This option is only available if the rubric is not used for grading. rubric_association[purpose]: type: string enum: - grading - bookmark description: |- Whether or not the association is for grading (and thus linked to an assignment) or if it's to indicate the rubric should appear in its context rubric[criteria]: type: object additionalProperties: true description: An indexed Hash of RubricCriteria objects where the keys are integer ids and the values are the RubricCriteria objects application/x-www-form-urlencoded: schema: *id290 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html delete: tags: - Rubrics operationId: delete_single summary: Delete a single description: Deletes a Rubric and removes all RubricAssociations. parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/Rubric' externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html get: tags: - Rubrics operationId: get_single_rubric_courses summary: Get a single rubric description: Returns the rubric with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - assessments - graded_assessments - peer_assessments - associations - assignment_associations - course_associations - account_associations required: false description: Related records to include in the response. - name: style in: query schema: type: string enum: - full - comments_only required: false description: Applicable only if assessments are being returned. If included, returns either all criteria data associated with the assessment, or just the comments. If not included, both data and comments are omitted. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Rubric' externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/accounts/{account_id}/rubrics: get: tags: - Rubrics operationId: list_rubrics_accounts summary: List rubrics description: Returns the paginated list of active rubrics for the current context. parameters: - name: account_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/rubrics.html /v1/accounts/{account_id}/rubrics/{id}: get: tags: - Rubrics operationId: get_single_rubric_accounts summary: Get a single rubric description: Returns the rubric with the given id. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - assessments - graded_assessments - peer_assessments - associations - assignment_associations - course_associations - account_associations required: false description: Related records to include in the response. - name: style in: query schema: type: string enum: - full - comments_only required: false description: Applicable only if assessments are being returned. If included, returns either all criteria data associated with the assessment, or just the comments. If not included, both data and comments are omitted. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Rubric' externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/courses/{course_id}/rubrics/{id}/used_locations: get: tags: - Rubrics operationId: get_courses_and_assignments_for_rubric_courses summary: Get the courses and assignments for a rubric description: Returns the courses and assignments where a rubric is being used parameters: - name: course_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 content: application/json: schema: type: string x-canvas-declared-type: UsedLocations externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/accounts/{account_id}/rubrics/{id}/used_locations: get: tags: - Rubrics operationId: get_courses_and_assignments_for_rubric_accounts summary: Get the courses and assignments for a rubric description: Returns the courses and assignments where a rubric is being used parameters: - name: account_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 content: application/json: schema: type: string x-canvas-declared-type: UsedLocations externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/courses/{course_id}/rubrics/upload: post: tags: - Rubrics operationId: creates_rubric_using_csv_file_courses summary: Creates a rubric using a CSV file description: Returns the rubric import object that was created parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: RubricImport externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/accounts/{account_id}/rubrics/upload: post: tags: - Rubrics operationId: creates_rubric_using_csv_file_accounts summary: Creates a rubric using a CSV file description: Returns the rubric import object that was created parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: RubricImport externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/rubrics/upload_template: get: tags: - Rubrics operationId: templated_file_for_importing_rubric summary: Templated file for importing a rubric description: Returns a CSV template file that can be used to import rubrics into Canvas. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: a CSV file in the format that can be imported externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/courses/{course_id}/rubrics/upload/{id}: get: tags: - Rubrics operationId: get_status_of_rubric_import_courses summary: Get the status of a rubric import description: Can return the latest rubric import for an account or course, or a specific import by id parameters: - name: course_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 content: application/json: schema: type: string x-canvas-declared-type: RubricImport externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/accounts/{account_id}/rubrics/upload/{id}: get: tags: - Rubrics operationId: get_status_of_rubric_import_accounts summary: Get the status of a rubric import description: Can return the latest rubric import for an account or course, or a specific import by id parameters: - name: account_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 content: application/json: schema: type: string x-canvas-declared-type: RubricImport externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/courses/{course_id}/rubric_associations/{rubric_association_id}/rubric_assessments: post: tags: - Rubrics operationId: create_single_rubric_assessment summary: Create a single rubric assessment description: |- Returns the rubric assessment with the given id. The returned object also provides the information of :ratings, :assessor_name, :related_group_submissions_and_assessments, :artifact parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course - name: rubric_association_id in: path schema: type: integer format: int64 required: true description: The id of the object with which this rubric assessment is associated requestBody: required: false content: application/json: schema: &id291 type: object properties: provisional: type: string description: (optional) Indicates whether this assessment is provisional, defaults to false. final: type: string description: (optional) Indicates a provisional grade will be marked as final. It only takes effect if the provisional param is passed as true. Defaults to false. graded_anonymously: type: boolean description: (optional) Defaults to false rubric_assessment: type: object additionalProperties: true description: |- A Hash of data to complement the rubric assessment: The user id that refers to the person being assessed rubric_assessment[user_id] Assessment type. There are only three valid types: 'grading', 'peer_review', or 'provisional_grade' rubric_assessment[assessment_type] The points awarded for this row. rubric_assessment[criterion_id][points] Comments to add for this row. rubric_assessment[criterion_id][comments] For each criterion_id, change the id by the criterion number, ex: criterion_123 If the criterion_id is not specified it defaults to false, and nothing is updated. application/x-www-form-urlencoded: schema: *id291 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/courses/{course_id}/rubric_associations/{rubric_association_id}/rubric_assessments/{id}: put: tags: - Rubrics operationId: update_single_rubric_assessment summary: Update a single rubric assessment description: |- Returns the rubric assessment with the given id. The returned object also provides the information of :ratings, :assessor_name, :related_group_submissions_and_assessments, :artifact parameters: - name: id in: path schema: type: integer format: int64 required: true description: The id of the rubric assessment - name: course_id in: path schema: type: integer format: int64 required: true description: The id of the course - name: rubric_association_id in: path schema: type: integer format: int64 required: true description: The id of the object with which this rubric assessment is associated requestBody: required: false content: application/json: schema: &id292 type: object properties: provisional: type: string description: (optional) Indicates whether this assessment is provisional, defaults to false. final: type: string description: (optional) Indicates a provisional grade will be marked as final. It only takes effect if the provisional param is passed as true. Defaults to false. graded_anonymously: type: boolean description: (optional) Defaults to false rubric_assessment: type: object additionalProperties: true description: |- A Hash of data to complement the rubric assessment: The user id that refers to the person being assessed rubric_assessment[user_id] Assessment type. There are only three valid types: 'grading', 'peer_review', or 'provisional_grade' rubric_assessment[assessment_type] The points awarded for this row. rubric_assessment[criterion_id][points] Comments to add for this row. rubric_assessment[criterion_id][comments] For each criterion_id, change the id by the criterion number, ex: criterion_123 If the criterion_id is not specified it defaults to false, and nothing is updated. application/x-www-form-urlencoded: schema: *id292 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html delete: tags: - Rubrics operationId: delete_single_rubric_assessment summary: Delete a single rubric assessment description: Deletes a rubric assessment parameters: - name: course_id in: path schema: type: string required: true description: ID - name: rubric_association_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 content: application/json: schema: $ref: '#/components/schemas/RubricAssessment' externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/courses/{course_id}/rubric_associations: post: tags: - Rubrics operationId: create_rubricassociation summary: Create a RubricAssociation description: Returns the rubric with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id293 type: object properties: rubric_association[rubric_id]: type: integer format: int64 description: The id of the Rubric rubric_association[association_id]: type: integer format: int64 description: The id of the object with which this rubric is associated rubric_association[association_type]: type: string enum: - Assignment - Course - Account description: The type of object this rubric is associated with rubric_association[title]: type: string description: The name of the object this rubric is associated with rubric_association[use_for_grading]: type: boolean description: Whether or not the associated rubric is used for grade calculation rubric_association[hide_score_total]: type: boolean description: |- Whether or not the score total is displayed within the rubric. This option is only available if the rubric is not used for grading. rubric_association[purpose]: type: string enum: - grading - bookmark description: |- Whether or not the association is for grading (and thus linked to an assignment) or if it's to indicate the rubric should appear in its context rubric_association[bookmarked]: type: boolean description: Whether or not the associated rubric appears in its context application/x-www-form-urlencoded: schema: *id293 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/RubricAssociation' externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /v1/courses/{course_id}/rubric_associations/{id}: put: tags: - Rubrics operationId: update_rubricassociation summary: Update a RubricAssociation description: Returns the rubric with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: integer format: int64 required: true description: The id of the RubricAssociation to update requestBody: required: false content: application/json: schema: &id294 type: object properties: rubric_association[rubric_id]: type: integer format: int64 description: The id of the Rubric rubric_association[association_id]: type: integer format: int64 description: The id of the object with which this rubric is associated rubric_association[association_type]: type: string enum: - Assignment - Course - Account description: The type of object this rubric is associated with rubric_association[title]: type: string description: The name of the object this rubric is associated with rubric_association[use_for_grading]: type: boolean description: Whether or not the associated rubric is used for grade calculation rubric_association[hide_score_total]: type: boolean description: |- Whether or not the score total is displayed within the rubric. This option is only available if the rubric is not used for grading. rubric_association[purpose]: type: string enum: - grading - bookmark description: |- Whether or not the association is for grading (and thus linked to an assignment) or if it's to indicate the rubric should appear in its context rubric_association[bookmarked]: type: boolean description: Whether or not the associated rubric appears in its context application/x-www-form-urlencoded: schema: *id294 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/RubricAssociation' externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html delete: tags: - Rubrics operationId: delete_rubricassociation summary: Delete a RubricAssociation description: Delete the RubricAssociation with the given ID parameters: - name: course_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 content: application/json: schema: $ref: '#/components/schemas/RubricAssociation' externalDocs: url: https://canvas.instructure.com/doc/api/rubrics.html /lti/uuid_map: get: tags: - Sandboxes operationId: download_uuid_mapping_for_this_sandbox summary: Download UUID Mapping for this Sandbox description: |- This endpoint returns a CSV file with the UUID mapping for the sandbox. The CSV has three columns: * `type` - The object type * `original_uuid` - The UUID of an object from the template * `new_uuid` - The UUID of the corresponding object in the sandbox responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/sandboxes.html /lti/courses/{course_id}/line_items/{line_item_id}/scores: post: tags: - Score operationId: create_score summary: Create a Score description: |- Create a new Result from the score params. If this is for the first created line_item for a resourceLinkId, or it is a line item that is not attached to a resourceLinkId, then a submission record will be created for the associated assignment when gradingProgress is set to FullyGraded or PendingManual. The submission score will also be updated when a score object is sent with either of those two values for gradingProgress. If a score object is sent with either of FullyGraded or PendingManual as the value for gradingProgress and scoreGiven is missing, the assignment will not be graded. This also supposes the line_item meets the condition to create a submission. A submission comment with an unknown author will be created when the comment value is included. This also supposes the line_item meets the condition to create a submission. It is also possible to submit a file along with this score, which will attach the file to the submission that is created. Files should be formatted as Content Items, with the correct syntax below. Returns a url pointing to the Result. If any files were submitted, also returns the Content Items which were sent in the request, each with a url pointing to the Progress of the file upload. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: line_item_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id295 type: object properties: userId: type: string description: |- The lti_user_id or the Canvas user_id. Returns a 422 if user not found in Canvas or is not a student. activityProgress: type: string description: |- Indicate to Canvas the status of the user towards the activity's completion. Must be one of Initialized, Started, InProgress, Submitted, Completed. gradingProgress: type: string description: |- Indicate to Canvas the status of the grading process. A value of PendingManual will require intervention by a grader. Values of NotReady, Failed, and Pending will cause the scoreGiven to be ignored. FullyGraded values will require no action. Possible values are NotReady, Failed, Pending, PendingManual, FullyGraded. timestamp: type: string description: |- Date and time when the score was modified in the tool. Should use ISO8601-formatted date with subsecond precision. Returns a 400 if the timestamp is earlier than the updated_at time of the Result. scoreGiven: type: number description: |- The Current score received in the tool for this line item and user, scaled to the scoreMaximum scoreMaximum: type: number description: |- Maximum possible score for this result; it must be present if scoreGiven is present. Returns 422 if not present when scoreGiven is present. comment: type: string description: Comment visible to the student about this score. submission: type: object additionalProperties: true description: Contains metadata about the submission attempt. Supported fields listed below. submission[submittedAt]: type: string description: Date and time that the submission was originally created. Should use ISO8601-formatted date with subsecond precision. If the submittedAt time has not changed from its current value, the submission attempt number will not be incremented. https://canvas.instructure.com/lti/submission: type: object additionalProperties: true description: (EXTENSION) Optional submission type and data. Fields listed below. https://canvas.instructure.com/lti/submission[new_submission]: type: boolean description: (EXTENSION field) flag to indicate that this is a new submission. Defaults to true unless submission_type is none. https://canvas.instructure.com/lti/submission[preserve_score]: type: boolean description: (EXTENSION field) flag to prevent a request from clearing an existing grade for a submission. Defaults to false. https://canvas.instructure.com/lti/submission[prioritize_non_tool_grade]: type: boolean description: (EXTENSION field) flag to prevent a request from overwriting an existing grade for a submission. Defaults to false. https://canvas.instructure.com/lti/submission[submission_type]: type: string description: '(EXTENSION field) permissible values are: none, basic_lti_launch, online_text_entry, external_tool, online_upload, or online_url. Defaults to external_tool. Ignored if content_items are provided.' https://canvas.instructure.com/lti/submission[submission_data]: type: string description: (EXTENSION field) submission data (URL or body text). Only used for submission_types basic_lti_launch, online_text_entry, online_url. Ignored if content_items are provided. https://canvas.instructure.com/lti/submission[submitted_at]: type: string description: (EXTENSION field) Date and time that the submission was originally created. Should use ISO8601-formatted date with subsecond precision. This should match the date and time that the original submission happened in Canvas. Use of submission.submittedAt is preferred. https://canvas.instructure.com/lti/submission[content_items]: type: array items: {} description: '(EXTENSION field) Files that should be included with the submission. Each item should contain `type: file`, and a url pointing to the file. It can also contain a title, and an explicit MIME type if needed (otherwise, MIME type will be inferred from the title or url). If any items are present, submission_type will be online_upload.' required: - userId - activityProgress - gradingProgress - timestamp application/x-www-form-urlencoded: schema: *id295 responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: resultUrl String The url to the result that was created. externalDocs: url: https://canvas.instructure.com/doc/api/score.html /v1/search/recipients: get: tags: - Search operationId: find_recipients_search summary: Find recipients description: |- Find valid recipients (users, courses and groups) that the current user can send messages to. The /api/v1/search/recipients path is the preferred endpoint, /api/v1/conversations/find_recipients is deprecated. Pagination is supported. parameters: - name: search in: query schema: type: string required: false description: |- Search terms used for matching users/courses/groups (e.g. "bob smith"). If multiple terms are given (separated via whitespace), only results matching all terms will be returned. - name: context in: query schema: type: string required: false description: Limit the search to a particular course/group (e.g. "course_3" or "group_4"). - name: exclude in: query schema: type: array items: type: string required: false description: |- Array of ids to exclude from the search. These may be user ids or course/group ids prefixed with "course_" or "group_" respectively, e.g. exclude[]=1&exclude[]=2&exclude[]=course_3 - name: type in: query schema: type: string enum: - user - context required: false description: Limit the search just to users or contexts (groups/courses). - name: user_id in: query schema: type: integer format: int64 required: false description: |- Search for a specific user id. This ignores the other above parameters, and will never return more than one result. - name: from_conversation_id in: query schema: type: integer format: int64 required: false description: |- When searching by user_id, only users that could be normally messaged by this user will be returned. This parameter allows you to specify a conversation that will be referenced for a shared context -- if both the current user and the searched user are in the conversation, the user will be returned. This is used to start new side conversations. - name: permissions in: query schema: type: array items: type: string required: false description: |- Array of permission strings to be checked for each matched context (e.g. "send_messages"). This argument determines which permissions may be returned in the response; it won't prevent contexts from being returned if they don't grant the permission(s). responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/search.html /v1/search/all_courses: get: tags: - Search operationId: list_all_courses summary: List all courses description: A paginated list of all courses visible in the public index parameters: - name: search in: query schema: type: string required: false description: |- Search terms used for matching users/courses/groups (e.g. "bob smith"). If multiple terms are given (separated via whitespace), only results matching all terms will be returned. - name: public_only in: query schema: type: boolean required: false description: Only return courses with public content. Defaults to false. - name: open_enrollment_only in: query schema: type: boolean required: false description: Only return courses that allow self enrollment. Defaults to false. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/search.html /v1/courses/{course_id}/sections: get: tags: - Sections operationId: list_course_sections summary: List course sections description: A paginated list of the list of sections for this course. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - students - avatar_url - enrollments - total_students - passback_status - permissions required: false description: |- - "students": Associations to include with the group. Note: this is only available if you have permission to view users or grades in the course - "avatar_url": Include the avatar URLs for students returned. - "enrollments": If 'students' is also included, return the section enrollment for each student - "total_students": Returns the total amount of active and invited students for the course section - "passback_status": Include the grade passback status. - "permissions": Include whether section grants :manage_calendar permission to the caller - name: search_term in: query schema: type: string required: false description: |- When included, searches course sections for the term. Returns only matching results. Term must be at least 2 characters. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html post: tags: - Sections operationId: create_course_section summary: Create course section description: Creates a new section for this course. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id296 type: object properties: course_section[name]: type: string description: The name of the section course_section[sis_section_id]: type: string description: The sis ID of the section. Must have manage_sis permission to set. This is ignored if caller does not have permission to set. course_section[integration_id]: type: string description: The integration_id of the section. Must have manage_sis permission to set. This is ignored if caller does not have permission to set. course_section[start_at]: type: string format: date-time description: Section start date in ISO8601 format, e.g. 2011-01-01T01:00Z course_section[end_at]: type: string format: date-time description: Section end date in ISO8601 format. e.g. 2011-01-01T01:00Z course_section[restrict_enrollments_to_section_dates]: type: boolean description: Set to true to restrict user enrollments to the start and end dates of the section. enable_sis_reactivation: type: boolean description: When true, will first try to re-activate a deleted section with matching sis_section_id if possible. application/x-www-form-urlencoded: schema: *id296 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html /v1/sections/{id}/crosslist/{new_course_id}: post: tags: - Sections operationId: cross_list_section summary: Cross-list a Section description: |- Move the Section to another course. The new course may be in a different account (department), but must belong to the same root account (institution). parameters: - name: id in: path schema: type: string required: true description: ID - name: new_course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id297 type: object properties: override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness application/x-www-form-urlencoded: schema: *id297 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html /v1/sections/{id}/crosslist: delete: tags: - Sections operationId: de_cross_list_section summary: De-cross-list a Section description: Undo cross-listing of a Section, returning it to its original course. parameters: - name: id in: path schema: type: string required: true description: ID - name: override_sis_stickiness in: query schema: type: boolean required: false description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html /v1/sections/{id}: put: tags: - Sections operationId: edit_section summary: Edit a section description: Modify an existing section. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id298 type: object properties: course_section[name]: type: string description: The name of the section course_section[sis_section_id]: type: string description: The sis ID of the section. Must have manage_sis permission to set. course_section[integration_id]: type: string description: The integration_id of the section. Must have manage_sis permission to set. course_section[start_at]: type: string format: date-time description: Section start date in ISO8601 format, e.g. 2011-01-01T01:00Z course_section[end_at]: type: string format: date-time description: Section end date in ISO8601 format. e.g. 2011-01-01T01:00Z course_section[restrict_enrollments_to_section_dates]: type: boolean description: Set to true to restrict user enrollments to the start and end dates of the section. override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness application/x-www-form-urlencoded: schema: *id298 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html get: tags: - Sections operationId: get_section_information_sections summary: Get section information description: Gets details about a specific section parameters: - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - students - avatar_url - enrollments - total_students - passback_status - permissions required: false description: |- - "students": Associations to include with the group. Note: this is only available if you have permission to view users or grades in the course - "avatar_url": Include the avatar URLs for students returned. - "enrollments": If 'students' is also included, return the section enrollment for each student - "total_students": Returns the total amount of active and invited students for the course section - "passback_status": Include the grade passback status. - "permissions": Include whether section grants :manage_calendar permission to the caller responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html delete: tags: - Sections operationId: delete_section summary: Delete a section description: Delete an existing section. Returns the former Section. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html /v1/courses/{course_id}/sections/{id}: get: tags: - Sections operationId: get_section_information_courses summary: Get section information description: Gets details about a specific section parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - students - avatar_url - enrollments - total_students - passback_status - permissions required: false description: |- - "students": Associations to include with the group. Note: this is only available if you have permission to view users or grades in the course - "avatar_url": Include the avatar URLs for students returned. - "enrollments": If 'students' is also included, return the section enrollment for each student - "total_students": Returns the total amount of active and invited students for the course section - "passback_status": Include the grade passback status. - "permissions": Include whether section grants :manage_calendar permission to the caller responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Section' externalDocs: url: https://canvas.instructure.com/doc/api/sections.html /v1/sections/{id}/users: get: tags: - Sections operationId: list_section_s_users summary: List section's users description: Returns a paginated list of users in the section. parameters: - name: id in: path schema: type: string required: true description: ID - name: search_term in: query schema: type: string required: false description: |- The partial name or full ID of the users to match and return in the results list. Must be at least 2 characters. - name: include in: query schema: type: array items: type: string enum: - avatar_url required: false description: '"avatar_url": Include users'' avatar_urls.' - name: exclude_inactive in: query schema: type: boolean required: false description: |- Whether to filter out inactive users from the results. Defaults to false unless explicitly provided. - name: enrollment_type in: query schema: type: string enum: - teacher - student - ta - observer - designer required: false description: When set, only return users with the specified enrollment type for the given section. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/sections.html /v1/services/kaltura: get: tags: - Services operationId: get_kaltura_config summary: Get Kaltura config description: Return the config information for the Kaltura plugin in json format. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/services.html /v1/services/kaltura_session: post: tags: - Services operationId: start_kaltura_session summary: Start Kaltura session description: |- Start a new Kaltura session, so that new media can be recorded and uploaded to this Canvas instance's Kaltura instance. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/services.html /v1/accounts/{account_id}/shared_brand_configs: post: tags: - Shared Brand Configs operationId: share_brandconfig_theme summary: Share a BrandConfig (Theme) description: |- Create a SharedBrandConfig, which will give the given brand_config a name and make it available to other users of this account. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id299 type: object properties: shared_brand_config[name]: type: string description: Name to share this BrandConfig (theme) as. shared_brand_config[brand_config_md5]: type: string description: MD5 of brand_config to share required: - shared_brand_config[name] - shared_brand_config[brand_config_md5] application/x-www-form-urlencoded: schema: *id299 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SharedBrandConfig' externalDocs: url: https://canvas.instructure.com/doc/api/shared_brand_configs.html /v1/accounts/{account_id}/shared_brand_configs/{id}: put: tags: - Shared Brand Configs operationId: update_shared_theme summary: Update a shared theme description: |- Update the specified shared_brand_config with a new name or to point to a new brand_config. Uses same parameters as create. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/SharedBrandConfig' externalDocs: url: https://canvas.instructure.com/doc/api/shared_brand_configs.html /v1/shared_brand_configs/{id}: delete: tags: - Shared Brand Configs operationId: un_share_brandconfig_theme summary: Un-share a BrandConfig (Theme) description: |- Delete a SharedBrandConfig, which will unshare it so you nor anyone else in your account will see it as an option to pick from. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SharedBrandConfig' externalDocs: url: https://canvas.instructure.com/doc/api/shared_brand_configs.html /v1/accounts/{account_id}/sis_imports/{id}/errors: get: tags: - Sis Import Errors operationId: get_sis_import_error_list_sis_imports summary: Get SIS import error list description: |- Returns the list of SIS import errors for an account or a SIS import. Import errors are only stored for 30 days. Example: curl 'https:///api/v1/accounts//sis_imports//sis_import_errors' \ -H "Authorization: Bearer " Example: curl 'https:///api/v1/accounts//sis_import_errors' \ -H "Authorization: Bearer " parameters: - name: account_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: failure in: query schema: type: boolean required: false description: If set, only shows errors on a sis import that would cause a failure. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/SisImportError' externalDocs: url: https://canvas.instructure.com/doc/api/sis_import_errors.html /v1/accounts/{account_id}/sis_import_errors: get: tags: - Sis Import Errors operationId: get_sis_import_error_list_sis_import_errors summary: Get SIS import error list description: |- Returns the list of SIS import errors for an account or a SIS import. Import errors are only stored for 30 days. Example: curl 'https:///api/v1/accounts//sis_imports//sis_import_errors' \ -H "Authorization: Bearer " Example: curl 'https:///api/v1/accounts//sis_import_errors' \ -H "Authorization: Bearer " parameters: - name: account_id in: path schema: type: string required: true description: ID - name: failure in: query schema: type: boolean required: false description: If set, only shows errors on a sis import that would cause a failure. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/SisImportError' externalDocs: url: https://canvas.instructure.com/doc/api/sis_import_errors.html /v1/accounts/{account_id}/sis_imports: get: tags: - Sis Imports operationId: get_sis_import_list summary: Get SIS import list description: |- Returns the list of SIS imports for an account Example: curl https:///api/v1/accounts//sis_imports \ -H 'Authorization: Bearer ' parameters: - name: account_id in: path schema: type: string required: true description: ID - name: created_since in: query schema: type: string format: date-time required: false description: If set, only shows imports created after the specified date (use ISO8601 format) - name: created_before in: query schema: type: string format: date-time required: false description: If set, only shows imports created before the specified date (use ISO8601 format) - name: workflow_state in: query schema: type: array items: type: string enum: - initializing - created - importing - cleanup_batch - imported - imported_with_messages - aborted - failed - failed_with_messages - restoring - partially_restored - restored required: false description: If set, only returns imports that are in the given state. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/SisImport' externalDocs: url: https://canvas.instructure.com/doc/api/sis_imports.html post: tags: - Sis Imports operationId: import_sis_data summary: Import SIS data description: |- Import SIS data into Canvas. Must be on a root account with SIS imports enabled. For more information on the format that's expected here, please see the "SIS CSV" section in the API docs. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id300 type: object properties: import_type: type: string description: |- Choose the data format for reading SIS data. With a standard Canvas install, this option can only be 'instructure_csv', and if unprovided, will be assumed to be so. Can be part of the query string. attachment: type: string description: |- There are three ways to post SIS import data: 1. As a multipart/form-data form field named +attachment+ 2. As a raw post with a Content-Type of application/zip or application/octet-stream 3. Using the {file:file.file_uploads.html File Upload} process, which can be more reliable for large files. Use the +pre_attachment[name]+ argument to start that flow. See that parameter below for more information. +attachment+ is required for multipart/form-data style posts. Assumed to be SIS data from a file upload form field named +attachment+. Examples: curl -F attachment=@ -H "Authorization: Bearer " \ https:///api/v1/accounts//sis_imports.json?import_type=instructure_csv If you decide to do a raw post, you can skip the 'attachment' argument, but you will then be required to provide a suitable Content-Type header. You are encouraged to also provide the 'extension' argument. Examples: curl -H 'Content-Type: application/octet-stream' --data-binary @.zip \ -H "Authorization: Bearer " \ https:///api/v1/accounts//sis_imports.json?import_type=instructure_csv&extension=zip curl -H 'Content-Type: application/zip' --data-binary @.zip \ -H "Authorization: Bearer " \ https:///api/v1/accounts//sis_imports.json?import_type=instructure_csv curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ https:///api/v1/accounts//sis_imports.json?import_type=instructure_csv curl -H 'Content-Type: text/csv' --data-binary @.csv \ -H "Authorization: Bearer " \ https:///api/v1/accounts//sis_imports.json?import_type=instructure_csv&batch_mode=1&batch_mode_term_id=15 If the attachment is a zip file, the uncompressed file(s) cannot be 100x larger than the zip, or the import will fail. For example, if the zip file is 1KB but the total size of the uncompressed file(s) is 100KB or greater the import will fail. There is a hard cap of 50 GB. pre_attachment[name]: type: string description: |- The name of the file to be uploaded (in a separate request) via the {file:file.file_uploads.html File Upload} workflow. This is the recommended way to upload larger batches, since the upload itself no longer has to finish within the 1-minute Canvas request timeout period. This argument cannot be combined with the +attachment+ argument; use one or the other. To use this flow: 1. Perform a POST to this endpoint with file information in +pre_attachment+ 2. {file:file.file_uploads.html Upload the file} using the data in the response's +pre_attachment+ 3. Once the file has been uploaded, the SIS import will begin. 4. {api:SisImportsApiController#show Check the progress} of the import as usual. NOTE: this option must be sent as either a query parameter or as a JSON body parameter; +application/x-www-form-urlencoded+ is not supported due to conflicts with raw post body data. pre_attachment[*]: type: string description: Other file upload properties; see {file:file.file_uploads.html File Upload Documentation} extension: type: string description: |- Recommended for raw post request style imports. This field will be used to distinguish between zip, xml, csv, and other file format extensions that would usually be provided with the filename in the multipart post request scenario. If not provided, this value will be inferred from the Content-Type, falling back to zip-file format if all else fails. batch_mode: type: boolean description: |- If set, this SIS import will be run in batch mode, deleting any data previously imported via SIS that is not present in this latest import. See the SIS CSV Format page for details. Batch mode cannot be used with diffing. batch_mode_term_id: type: string description: Limit deletions to only this term. Required if batch mode is enabled. multi_term_batch_mode: type: boolean description: Runs batch mode against all terms in terms file. Requires change_threshold. skip_deletes: type: boolean description: |- When set the import will skip any deletes. This does not account for objects that are deleted during the batch mode cleanup process. override_sis_stickiness: type: boolean description: |- Default is false. If true, any fields containing “sticky” or UI changes will be overridden. See SIS CSV Format documentation for information on which fields can have SIS stickiness add_sis_stickiness: type: boolean description: |- This option, if present, will process all changes as if they were UI changes. This means that "stickiness" will be added to changed fields. This option is only processed if 'override_sis_stickiness' is also provided. clear_sis_stickiness: type: boolean description: |- This option, if present, will clear "stickiness" from all fields processed by this import. Requires that 'override_sis_stickiness' is also provided. If 'add_sis_stickiness' is also provided, 'clear_sis_stickiness' will overrule the behavior of 'add_sis_stickiness' update_sis_id_if_login_claimed: type: boolean description: |- This option, if present, will override the old (or non-existent) non-matching SIS ID with the new SIS ID in the upload, if a pseudonym is found from the login field and the SIS ID doesn't match. diffing_data_set_identifier: type: string description: |- If set on a CSV import, Canvas will attempt to optimize the SIS import by comparing this set of CSVs to the previous set that has the same data set identifier, and only applying the difference between the two. See the SIS CSV Format documentation for more details. Diffing cannot be used with batch_mode diffing_remaster_data_set: type: boolean description: |- If true, and diffing_data_set_identifier is sent, this SIS import will be part of the data set, but diffing will not be performed. See the SIS CSV Format documentation for details. diffing_drop_status: type: string enum: - deleted - completed - inactive description: |- If diffing_drop_status is passed, this SIS import will use this status for enrollments that are not included in the sis_batch. Defaults to 'deleted' diffing_user_remove_status: type: string enum: - deleted - suspended description: |- For users removed from one batch to the next one using the same diffing_data_set_identifier, set their status to the value of this argument. Defaults to 'deleted'. batch_mode_enrollment_drop_status: type: string enum: - deleted - completed - inactive description: |- If batch_mode_enrollment_drop_status is passed, this SIS import will use this status for enrollments that are not included in the sis_batch. This will have an effect if multi_term_batch_mode is set. Defaults to 'deleted' This will still mark courses and sections that are not included in the sis_batch as deleted, and subsequently enrollments in the deleted courses and sections as deleted. change_threshold: type: integer format: int64 description: |- If set with batch_mode, the batch cleanup process will not run if the number of items deleted is higher than the percentage set. If set to 10 and a term has 200 enrollments, and batch would delete more than 20 of the enrollments the batch will abort before the enrollments are deleted. The change_threshold will be evaluated for course, sections, and enrollments independently. If set with diffing, diffing will not be performed if the files are greater than the threshold as a percent. If set to 5 and the file is more than 5% smaller or more than 5% larger than the file that is being compared to, diffing will not be performed. If the files are less than 5%, diffing will be performed. The way the percent is calculated is by taking the size of the current import and dividing it by the size of the previous import. The formula used is: |(1 - current_file_size / previous_file_size)| * 100 See the SIS CSV Format documentation for more details. Required for multi_term_batch_mode. diff_row_count_threshold: type: integer format: int64 description: |- If set with diffing, diffing will not be performed if the number of rows to be run in the fully calculated diff import exceeds the threshold. application/x-www-form-urlencoded: schema: *id300 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SisImport' externalDocs: url: https://canvas.instructure.com/doc/api/sis_imports.html /v1/accounts/{account_id}/sis_imports/importing: get: tags: - Sis Imports operationId: get_current_importing_sis_import summary: Get the current importing SIS import description: |- Returns the SIS imports that are currently processing for an account. If no imports are running, will return an empty array. Example: curl https:///api/v1/accounts//sis_imports/importing \ -H 'Authorization: Bearer ' parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SisImport' externalDocs: url: https://canvas.instructure.com/doc/api/sis_imports.html /v1/accounts/{account_id}/sis_imports/{id}: get: tags: - Sis Imports operationId: get_sis_import_status summary: Get SIS import status description: |- Get the status of an already created SIS import. Examples: curl https:///api/v1/accounts//sis_imports/ \ -H 'Authorization: Bearer ' parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/SisImport' externalDocs: url: https://canvas.instructure.com/doc/api/sis_imports.html /v1/accounts/{account_id}/sis_imports/{id}/restore_states: put: tags: - Sis Imports operationId: restore_workflow_states_of_sis_imported_items summary: Restore workflow_states of SIS imported items description: |- This will restore the the workflow_state for all the items that changed their workflow_state during the import being restored. This will restore states for items imported with the following importers: accounts.csv terms.csv courses.csv sections.csv group_categories.csv groups.csv users.csv admins.csv This also restores states for other items that changed during the import. An example would be if an enrollment was deleted from a sis import and the group_membership was also deleted as a result of the enrollment deletion, both items would be restored when the sis batch is restored. Restore data is retained for 30 days post-import. This endpoint is unavailable after that time. parameters: - name: account_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: &id301 type: object properties: batch_mode: type: boolean description: If set, will only restore items that were deleted from batch_mode. undelete_only: type: boolean description: |- If set, will only restore items that were deleted. This will ignore any items that were created or modified. unconclude_only: type: boolean description: |- If set, will only restore enrollments that were concluded. This will ignore any items that were created or deleted. application/x-www-form-urlencoded: schema: *id301 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/sis_imports.html /v1/accounts/{account_id}/sis_imports/{id}/abort: put: tags: - Sis Imports operationId: abort_sis_import summary: Abort SIS import description: |- Abort a SIS import that has not completed. Aborting a sis batch that is running can take some time for every process to see the abort event. Subsequent sis batches begin to process 10 minutes after the abort to allow each process to clean up properly. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/SisImport' externalDocs: url: https://canvas.instructure.com/doc/api/sis_imports.html /v1/accounts/{account_id}/sis_imports/abort_all_pending: put: tags: - Sis Imports operationId: abort_all_pending_sis_imports summary: Abort all pending SIS imports description: Abort already created but not processed or processing SIS imports. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: boolean externalDocs: url: https://canvas.instructure.com/doc/api/sis_imports.html /sis/accounts/{account_id}/assignments: get: tags: - Sis Integration operationId: retrieve_assignments_enabled_for_grade_export_to_sis_accounts summary: Retrieve assignments enabled for grade export to SIS description: |- Retrieve a list of published assignments flagged as "post_to_sis". See the Assignments API for more details on assignments. Assignment group and section information are included for convenience. Each section includes course information for the origin course and the cross-listed course, if applicable. The `origin_course` is the course to which the section belongs or the course from which the section was cross-listed. Generally, the `origin_course` should be preferred when performing integration work. The `xlist_course` is provided for consistency and is only present when the section has been cross-listed. See Sections API and Courses Api for me details. The `override` is only provided if the Differentiated Assignments course feature is turned on and the assignment has an override for that section. When there is an override for the assignment the override object's keys/values can be merged with the top level assignment object to create a view of the assignment object specific to that section. See Assignments api for more information on assignment overrides. restricts to courses that start before this date (if they have a start date) restricts to courses that end after this date (if they have an end date) information to include. "student_overrides":: returns individual student override information parameters: - name: account_id in: path schema: type: integer format: int64 required: true description: The ID of the account to query. - name: course_id in: query schema: type: integer format: int64 required: false description: The ID of the course to query. - name: starts_before in: query schema: type: string format: date-time required: false description: When searching on an account, - name: ends_after in: query schema: type: string format: date-time required: false description: When searching on an account, - name: include in: query schema: type: string enum: - student_overrides required: false description: Array of additional responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/sis_integration.html /sis/courses/{course_id}/assignments: get: tags: - Sis Integration operationId: retrieve_assignments_enabled_for_grade_export_to_sis_courses summary: Retrieve assignments enabled for grade export to SIS description: |- Retrieve a list of published assignments flagged as "post_to_sis". See the Assignments API for more details on assignments. Assignment group and section information are included for convenience. Each section includes course information for the origin course and the cross-listed course, if applicable. The `origin_course` is the course to which the section belongs or the course from which the section was cross-listed. Generally, the `origin_course` should be preferred when performing integration work. The `xlist_course` is provided for consistency and is only present when the section has been cross-listed. See Sections API and Courses Api for me details. The `override` is only provided if the Differentiated Assignments course feature is turned on and the assignment has an override for that section. When there is an override for the assignment the override object's keys/values can be merged with the top level assignment object to create a view of the assignment object specific to that section. See Assignments api for more information on assignment overrides. restricts to courses that start before this date (if they have a start date) restricts to courses that end after this date (if they have an end date) information to include. "student_overrides":: returns individual student override information parameters: - name: account_id in: query schema: type: integer format: int64 required: false description: The ID of the account to query. - name: course_id in: path schema: type: integer format: int64 required: true description: The ID of the course to query. - name: starts_before in: query schema: type: string format: date-time required: false description: When searching on an account, - name: ends_after in: query schema: type: string format: date-time required: false description: When searching on an account, - name: include in: query schema: type: string enum: - student_overrides required: false description: Array of additional responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/sis_integration.html /sis/courses/{course_id}/disable_post_to_sis: put: tags: - Sis Integration operationId: disable_assignments_currently_enabled_for_grade_export_to_sis summary: Disable assignments currently enabled for grade export to SIS description: |- Disable all assignments flagged as "post_to_sis", with the option of making it specific to a grading period, in a course. On success, the response will be 204 No Content with an empty body. On failure, the response will be 400 Bad Request with a body of a specific message. For disabling assignments in a specific grading period parameters: - name: course_id in: path schema: type: integer format: int64 required: true description: The ID of the course. requestBody: required: false content: application/json: schema: &id302 type: object properties: grading_period_id: type: integer format: int64 description: The ID of the grading period. application/x-www-form-urlencoded: schema: *id302 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/sis_integration.html /v1/courses/{course_id}/smartsearch: get: tags: - Smart Search operationId: search_course_content summary: Search course content description: Find course content using a meaning-based search parameters: - name: course_id in: path schema: type: string required: true description: ID - name: q in: query schema: type: string required: true description: The search query - name: filter in: query schema: type: array items: type: string required: false description: |- Types of objects to search. By default, all supported types are searched. Supported types include +pages+, +assignments+, +announcements+, and +discussion_topics+. - name: include in: query schema: type: array items: type: string enum: - status - modules required: false description: |- Optional information to include with each search result: modules:: An array of module objects that the search result belongs to. status:: The published status for all results and the due_date for all assignments. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/SearchResult' externalDocs: url: https://canvas.instructure.com/doc/api/smart_search.html /v1/courses/{course_id}/study_assist: post: tags: - Study Assist operationId: request_study_assist_response summary: Request a study assist response parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id303 type: object properties: prompt: type: string description: Short prompt (e.g. "Summarize"). Blank returns chips. state: type: object additionalProperties: true description: Content state with courseID, and one of pageID or fileID. regenerate: type: boolean description: If true, bypasses the LLM response cache. application/x-www-form-urlencoded: schema: *id303 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: AssistResponse externalDocs: url: https://canvas.instructure.com/doc/api/study_assist.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/{id}: put: tags: - Submission Comments operationId: edit_submission_comment summary: Edit a submission comment description: Edit the given submission comment. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - 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: &id304 type: object properties: comment: type: string description: If this argument is present, edit the text of a comment. application/x-www-form-urlencoded: schema: *id304 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: SubmissionComment externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html delete: tags: - Submission Comments operationId: delete_submission_comment summary: Delete a submission comment description: Delete the given submission comment. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - 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 content: application/json: schema: type: string x-canvas-declared-type: SubmissionComment externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/files: post: tags: - Submission Comments operationId: upload_file_submission_comments summary: Upload a file description: |- Upload a file to attach to a submission comment See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. The final step of the file upload workflow will return the attachment data, including the new file id. The caller can then PUT the file_id to the submission API to attach it to a comment parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submission_comments.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/annotation_notification: post: tags: - Submission Comments operationId: send_annotation_notification summary: Send annotation notification description: |- Send notification of annotation to other users of the submission Must have permission to send_messages on Site Admin account. annotation notifications go to all users on the submission and the observers for those users. annotation notifications also go to the instructors unless it is sent from an instructor. annotation notifications from instructors go to students if assignment is set to post automatically or if the assignment is posted. returns {}, status 200 parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id305 type: object properties: author_id: type: string description: The user that created the annotation required: - author_id application/x-www-form-urlencoded: schema: *id305 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions: post: tags: - Submissions operationId: submit_assignment_courses summary: Submit an assignment description: |- Make a submission for an assignment. You must be actively enrolled as a student in the course/section to do this. Concluded and pending enrollments are not permitted. All online turn-in submission types are supported in this API. However, there are a few things that are not yet supported: * Files can be submitted based on a file ID of a user or group file or through the {api:SubmissionsApiController#create_file file upload API}. However, there is no API yet for listing the user and group files. * Media comments can be submitted, however, there is no API yet for creating a media comment to submit. * Integration with Google Docs is not yet supported. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id306 type: object properties: comment[text_comment]: type: string description: Include a textual comment with the submission. submission[group_comment]: type: boolean description: |- Whether or not this comment should be sent to the entire group (defaults to false). Ignored if this is not a group assignment or if no text_comment is provided. submission[submission_type]: type: string enum: - online_text_entry - online_url - online_upload - media_recording - basic_lti_launch - student_annotation description: |- The type of submission being made. The assignment submission_types must include this submission type as an allowed option, or the submission will be rejected with a 400 error. The submission_type given determines which of the following parameters is used. For instance, to submit a URL, +submission[submission_type]+ must be set to "online_url", otherwise the +submission[url]+ parameter will be ignored. "basic_lti_launch" requires the assignment submission_type "online" or "external_tool" submission[body]: type: string description: |- Submit the assignment as an HTML document snippet. Note this HTML snippet will be sanitized using the same ruleset as a submission made from the Canvas web UI. The sanitized HTML will be returned in the response as the submission body. Requires a submission_type of "online_text_entry". submission[url]: type: string description: |- Submit the assignment as a URL. The URL scheme must be "http" or "https", no "ftp" or other URL schemes are allowed. If no scheme is given (e.g. "www.example.com") then "http" will be assumed. Requires a submission_type of "online_url" or "basic_lti_launch". submission[file_ids]: type: array items: type: integer description: |- Submit the assignment as a set of one or more previously uploaded files residing in the submitting user's files section (or the group's files section, for group assignments). To upload a new file to submit, see the submissions {api:SubmissionsApiController#create_file Upload a file API}. Requires a submission_type of "online_upload". submission[media_comment_id]: type: string description: |- The media comment id to submit. Media comment ids can be submitted via this API, however, note that there is not yet an API to generate or list existing media comments, so this functionality is currently of limited use. Requires a submission_type of "media_recording". submission[media_comment_type]: type: string enum: - audio - video description: The type of media comment being submitted. submission[user_id]: type: integer format: int64 description: Submit on behalf of the given user. Requires grading permission. submission[annotatable_attachment_id]: type: integer format: int64 description: |- The Attachment ID of the document being annotated. This should match the annotatable_attachment_id on the assignment. Requires a submission_type of "student_annotation". submission[submitted_at]: type: string format: date-time description: Choose the time the submission is listed as submitted at. Requires grading permission. required: - submission[submission_type] application/x-www-form-urlencoded: schema: *id306 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html get: tags: - Submissions operationId: list_assignment_submissions_courses summary: List assignment submissions description: A paginated list of all existing submissions for an assignment. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - submission_html_comments - rubric_assessment - assignment - visibility - course - user - group - read_status - student_entered_score required: false description: Associations to include with the group. "group" will add group_id and group_name. - name: grouped in: query schema: type: boolean required: false description: If this argument is true, the response will be grouped by student groups. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Submission__submissions' externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions: post: tags: - Submissions operationId: submit_assignment_sections summary: Submit an assignment description: |- Make a submission for an assignment. You must be actively enrolled as a student in the course/section to do this. Concluded and pending enrollments are not permitted. All online turn-in submission types are supported in this API. However, there are a few things that are not yet supported: * Files can be submitted based on a file ID of a user or group file or through the {api:SubmissionsApiController#create_file file upload API}. However, there is no API yet for listing the user and group files. * Media comments can be submitted, however, there is no API yet for creating a media comment to submit. * Integration with Google Docs is not yet supported. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id307 type: object properties: comment[text_comment]: type: string description: Include a textual comment with the submission. submission[group_comment]: type: boolean description: |- Whether or not this comment should be sent to the entire group (defaults to false). Ignored if this is not a group assignment or if no text_comment is provided. submission[submission_type]: type: string enum: - online_text_entry - online_url - online_upload - media_recording - basic_lti_launch - student_annotation description: |- The type of submission being made. The assignment submission_types must include this submission type as an allowed option, or the submission will be rejected with a 400 error. The submission_type given determines which of the following parameters is used. For instance, to submit a URL, +submission[submission_type]+ must be set to "online_url", otherwise the +submission[url]+ parameter will be ignored. "basic_lti_launch" requires the assignment submission_type "online" or "external_tool" submission[body]: type: string description: |- Submit the assignment as an HTML document snippet. Note this HTML snippet will be sanitized using the same ruleset as a submission made from the Canvas web UI. The sanitized HTML will be returned in the response as the submission body. Requires a submission_type of "online_text_entry". submission[url]: type: string description: |- Submit the assignment as a URL. The URL scheme must be "http" or "https", no "ftp" or other URL schemes are allowed. If no scheme is given (e.g. "www.example.com") then "http" will be assumed. Requires a submission_type of "online_url" or "basic_lti_launch". submission[file_ids]: type: array items: type: integer description: |- Submit the assignment as a set of one or more previously uploaded files residing in the submitting user's files section (or the group's files section, for group assignments). To upload a new file to submit, see the submissions {api:SubmissionsApiController#create_file Upload a file API}. Requires a submission_type of "online_upload". submission[media_comment_id]: type: string description: |- The media comment id to submit. Media comment ids can be submitted via this API, however, note that there is not yet an API to generate or list existing media comments, so this functionality is currently of limited use. Requires a submission_type of "media_recording". submission[media_comment_type]: type: string enum: - audio - video description: The type of media comment being submitted. submission[user_id]: type: integer format: int64 description: Submit on behalf of the given user. Requires grading permission. submission[annotatable_attachment_id]: type: integer format: int64 description: |- The Attachment ID of the document being annotated. This should match the annotatable_attachment_id on the assignment. Requires a submission_type of "student_annotation". submission[submitted_at]: type: string format: date-time description: Choose the time the submission is listed as submitted at. Requires grading permission. required: - submission[submission_type] application/x-www-form-urlencoded: schema: *id307 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html get: tags: - Submissions operationId: list_assignment_submissions_sections summary: List assignment submissions description: A paginated list of all existing submissions for an assignment. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - submission_html_comments - rubric_assessment - assignment - visibility - course - user - group - read_status - student_entered_score required: false description: Associations to include with the group. "group" will add group_id and group_name. - name: grouped in: query schema: type: boolean required: false description: If this argument is true, the response will be grouped by student groups. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Submission__submissions' externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/students/submissions: get: tags: - Submissions operationId: list_submissions_for_multiple_assignments_courses summary: List submissions for multiple assignments description: A paginated list of all existing submissions for a given set of students and assignments. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: student_ids in: query schema: type: array items: type: string required: false description: |- List of student ids to return submissions for. If this argument is omitted, return submissions for the calling user. Students may only list their own submissions. Observers may only list those of associated students. The special id "all" will return submissions for all students in the course/section as appropriate. - name: assignment_ids in: query schema: type: array items: type: string required: false description: |- List of assignments to return submissions for. If none are given, submissions for all assignments are returned. - name: grouped in: query schema: type: boolean required: false description: |- If this argument is present, the response will be grouped by student, rather than a flat array of submissions. - name: post_to_sis in: query schema: type: boolean required: false description: |- If this argument is set to true, the response will only include submissions for assignments that have the post_to_sis flag set to true and user enrollments that were added through sis. - name: submitted_since in: query schema: type: string format: date-time required: false description: |- If this argument is set, the response will only include submissions that were submitted after the specified date_time. This will exclude submissions that do not have a submitted_at which will exclude unsubmitted submissions. The value must be formatted as ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: graded_since in: query schema: type: string format: date-time required: false description: |- If this argument is set, the response will only include submissions that were graded after the specified date_time. This will exclude submissions that have not been graded. The value must be formatted as ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: grading_period_id in: query schema: type: integer format: int64 required: false description: |- The id of the grading period in which submissions are being requested (Requires grading periods to exist on the account) - name: workflow_state in: query schema: type: string enum: - submitted - unsubmitted - graded - pending_review required: false description: The current status of the submission - name: enrollment_state in: query schema: type: string enum: - active - concluded required: false description: |- The current state of the enrollments. If omitted will include all enrollments that are not deleted. - name: state_based_on_date in: query schema: type: boolean required: false description: |- If omitted it is set to true. When set to false it will ignore the effective state of the student enrollments and use the workflow_state for the enrollments. The argument is ignored unless enrollment_state argument is also passed. - name: order in: query schema: type: string enum: - id - graded_at required: false description: |- The order submissions will be returned in. Defaults to "id". Doesn't affect results for "grouped" mode. - name: order_direction in: query schema: type: string enum: - ascending - descending required: false description: |- Determines whether ordered results are returned in ascending or descending order. Defaults to "ascending". Doesn't affect results for "grouped" mode. - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - submission_html_comments - rubric_assessment - assignment - total_scores - visibility - course - user - sub_assignment_submissions - peer_review_submissions - student_entered_score required: false description: |- Associations to include with the group. `total_scores` requires the `grouped` argument. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/students/submissions: get: tags: - Submissions operationId: list_submissions_for_multiple_assignments_sections summary: List submissions for multiple assignments description: A paginated list of all existing submissions for a given set of students and assignments. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: student_ids in: query schema: type: array items: type: string required: false description: |- List of student ids to return submissions for. If this argument is omitted, return submissions for the calling user. Students may only list their own submissions. Observers may only list those of associated students. The special id "all" will return submissions for all students in the course/section as appropriate. - name: assignment_ids in: query schema: type: array items: type: string required: false description: |- List of assignments to return submissions for. If none are given, submissions for all assignments are returned. - name: grouped in: query schema: type: boolean required: false description: |- If this argument is present, the response will be grouped by student, rather than a flat array of submissions. - name: post_to_sis in: query schema: type: boolean required: false description: |- If this argument is set to true, the response will only include submissions for assignments that have the post_to_sis flag set to true and user enrollments that were added through sis. - name: submitted_since in: query schema: type: string format: date-time required: false description: |- If this argument is set, the response will only include submissions that were submitted after the specified date_time. This will exclude submissions that do not have a submitted_at which will exclude unsubmitted submissions. The value must be formatted as ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: graded_since in: query schema: type: string format: date-time required: false description: |- If this argument is set, the response will only include submissions that were graded after the specified date_time. This will exclude submissions that have not been graded. The value must be formatted as ISO 8601 YYYY-MM-DDTHH:MM:SSZ. - name: grading_period_id in: query schema: type: integer format: int64 required: false description: |- The id of the grading period in which submissions are being requested (Requires grading periods to exist on the account) - name: workflow_state in: query schema: type: string enum: - submitted - unsubmitted - graded - pending_review required: false description: The current status of the submission - name: enrollment_state in: query schema: type: string enum: - active - concluded required: false description: |- The current state of the enrollments. If omitted will include all enrollments that are not deleted. - name: state_based_on_date in: query schema: type: boolean required: false description: |- If omitted it is set to true. When set to false it will ignore the effective state of the student enrollments and use the workflow_state for the enrollments. The argument is ignored unless enrollment_state argument is also passed. - name: order in: query schema: type: string enum: - id - graded_at required: false description: |- The order submissions will be returned in. Defaults to "id". Doesn't affect results for "grouped" mode. - name: order_direction in: query schema: type: string enum: - ascending - descending required: false description: |- Determines whether ordered results are returned in ascending or descending order. Defaults to "ascending". Doesn't affect results for "grouped" mode. - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - submission_html_comments - rubric_assessment - assignment - total_scores - visibility - course - user - sub_assignment_submissions - peer_review_submissions - student_entered_score required: false description: |- Associations to include with the group. `total_scores` requires the `grouped` argument. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}: get: tags: - Submissions operationId: get_single_submission_courses summary: Get a single submission description: Get a single submission, based on user id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - submission_html_comments - rubric_assessment - full_rubric_assessment - visibility - course - user - read_status - student_entered_score required: false description: Associations to include with the group. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html put: tags: - Submissions operationId: grade_or_comment_on_submission_courses summary: Grade or comment on a submission description: |- Comment on and/or update the grading for a student's assignment submission. If any submission or rubric_assessment arguments are provided, the user must have permission to manage grades in the appropriate context (course or section). parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id308 type: object properties: comment[text_comment]: type: string description: Add a textual comment to the submission. comment[attempt]: type: integer format: int64 description: The attempt number (starts at 1) to associate the comment with. comment[group_comment]: type: boolean description: |- Whether or not this comment should be sent to the entire group (defaults to false). Ignored if this is not a group assignment or if no text_comment is provided. comment[media_comment_id]: type: string description: |- Add an audio/video comment to the submission. Media comments can be added via this API, however, note that there is not yet an API to generate or list existing media comments, so this functionality is currently of limited use. comment[media_comment_type]: type: string enum: - audio - video description: The type of media comment being added. comment[file_ids]: type: array items: type: integer description: |- Attach files to this comment that were previously uploaded using the Submission Comment API's files action include: type: array items: type: string enum: - submission_comments - visibility - sub_assignment_submissions - peer_review_submissions - provisional_grades - group description: |- Associations to include with the submission. "submission_comments" is always included by default. - "submission_comments": Comments on the submission (always included) - "visibility": Whether the assignment is visible to the owner of the submission - "sub_assignment_submissions": Sub-assignment submissions for discussion checkpoints - "peer_review_submissions": Peer review submission data when peer review allocation and grading is enabled - "provisional_grades": Provisional grades (only available for moderated assignments) - "group": Group information (id and name) for group assignments prefer_points_over_scheme: type: boolean description: Treat posted_grade as points if the value matches a grading scheme value submission[posted_grade]: type: string description: |- Assign a score to the submission, updating both the "score" and "grade" fields on the submission record. This parameter can be passed in a few different formats: points:: A floating point or integral value, such as "13.5". The grade will be interpreted directly as the score of the assignment. Values above assignment.points_possible are allowed, for awarding extra credit. percentage:: A floating point value appended with a percent sign, such as "40%". The grade will be interpreted as a percentage score on the assignment, where 100% == assignment.points_possible. Values above 100% are allowed, for awarding extra credit. letter grade:: A letter grade, following the assignment's defined letter grading scheme. For example, "A-". The resulting score will be the high end of the defined range for the letter grade. For instance, if "B" is defined as 86% to 84%, a letter grade of "B" will be worth 86%. The letter grade will be rejected if the assignment does not have a defined letter grading scheme. For more fine-grained control of scores, pass in points or percentage rather than the letter grade. "pass/complete/fail/incomplete":: A string value of "pass" or "complete" will give a score of 100%. "fail" or "incomplete" will give a score of 0. Note that assignments with grading_type of "pass_fail" can only be assigned a score of 0 or assignment.points_possible, nothing inbetween. If a posted_grade in the "points" or "percentage" format is sent, the grade will only be accepted if the grade equals one of those two values. submission[excuse]: type: boolean description: Sets the "excused" status of an assignment. submission[late_policy_status]: type: string description: |- Sets the late policy status to either "late", "missing", "extended", "none", or null. NB: "extended" values can only be set in the UI when the "UI features for 'extended' Submissions" Account Feature is on submission[sticker]: type: string enum: - apple - basketball - bell - book - bookbag - briefcase - bus - calendar - chem - design - pencil - beaker - paintbrush - computer - column - pen - tablet - telescope - calculator - paperclip - composite_notebook - scissors - ruler - clock - globe - grad - gym - mail - microscope - mouse - music - notebook - page - panda1 - panda2 - panda3 - panda4 - panda5 - panda6 - panda7 - panda8 - panda9 - presentation - science - science2 - star - tag - tape - target - trophy description: Sets the sticker for the submission. submission[seconds_late_override]: type: integer format: int64 description: Sets the seconds late if late policy status is "late" submission[peer_review]: type: boolean description: |- When true, updates the peer review sub assignment submission instead of the parent assignment submission. The parent assignment must have peer reviews enabled, the peer_review_allocation_and_grading feature flag must be enabled for the course, and the assignment must have an associated peer review sub assignment. If any of these conditions are not met, the API will return a 422 error. rubric_assessment: type: string x-canvas-declared-type: RubricAssessment description: |- Assign a rubric assessment to this assignment submission. The sub-parameters here depend on the rubric for the assignment. The general format is, for each row in the rubric: The points awarded for this row. rubric_assessment[criterion_id][points] The rating id for the row. rubric_assessment[criterion_id][rating_id] Comments to add for this row. rubric_assessment[criterion_id][comments] For example, if the assignment rubric is (in JSON format): !!!javascript [ { 'id': 'crit1', 'points': 10, 'description': 'Criterion 1', 'ratings': [ { 'id': 'rat1', 'description': 'Good', 'points': 10 }, { 'id': 'rat2', 'description': 'Poor', 'points': 3 } ] }, { 'id': 'crit2', 'points': 5, 'description': 'Criterion 2', 'ratings': [ { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 }, { 'id': 'rat2', 'description': 'Complete', 'points': 5 }, { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 } ] } ] Then a possible set of values for rubric_assessment would be: rubric_assessment[crit1][points]=3&rubric_assessment[crit1][rating_id]=rat1&rubric_assessment[crit2][points]=5&rubric_assessment[crit2][rating_id]=rat2&rubric_assessment[crit2][comments]=Well%20Done. application/x-www-form-urlencoded: schema: *id308 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}: get: tags: - Submissions operationId: get_single_submission_sections summary: Get a single submission description: Get a single submission, based on user id. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - submission_html_comments - rubric_assessment - full_rubric_assessment - visibility - course - user - read_status - student_entered_score required: false description: Associations to include with the group. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html put: tags: - Submissions operationId: grade_or_comment_on_submission_sections summary: Grade or comment on a submission description: |- Comment on and/or update the grading for a student's assignment submission. If any submission or rubric_assessment arguments are provided, the user must have permission to manage grades in the appropriate context (course or section). parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id309 type: object properties: comment[text_comment]: type: string description: Add a textual comment to the submission. comment[attempt]: type: integer format: int64 description: The attempt number (starts at 1) to associate the comment with. comment[group_comment]: type: boolean description: |- Whether or not this comment should be sent to the entire group (defaults to false). Ignored if this is not a group assignment or if no text_comment is provided. comment[media_comment_id]: type: string description: |- Add an audio/video comment to the submission. Media comments can be added via this API, however, note that there is not yet an API to generate or list existing media comments, so this functionality is currently of limited use. comment[media_comment_type]: type: string enum: - audio - video description: The type of media comment being added. comment[file_ids]: type: array items: type: integer description: |- Attach files to this comment that were previously uploaded using the Submission Comment API's files action include: type: array items: type: string enum: - submission_comments - visibility - sub_assignment_submissions - peer_review_submissions - provisional_grades - group description: |- Associations to include with the submission. "submission_comments" is always included by default. - "submission_comments": Comments on the submission (always included) - "visibility": Whether the assignment is visible to the owner of the submission - "sub_assignment_submissions": Sub-assignment submissions for discussion checkpoints - "peer_review_submissions": Peer review submission data when peer review allocation and grading is enabled - "provisional_grades": Provisional grades (only available for moderated assignments) - "group": Group information (id and name) for group assignments prefer_points_over_scheme: type: boolean description: Treat posted_grade as points if the value matches a grading scheme value submission[posted_grade]: type: string description: |- Assign a score to the submission, updating both the "score" and "grade" fields on the submission record. This parameter can be passed in a few different formats: points:: A floating point or integral value, such as "13.5". The grade will be interpreted directly as the score of the assignment. Values above assignment.points_possible are allowed, for awarding extra credit. percentage:: A floating point value appended with a percent sign, such as "40%". The grade will be interpreted as a percentage score on the assignment, where 100% == assignment.points_possible. Values above 100% are allowed, for awarding extra credit. letter grade:: A letter grade, following the assignment's defined letter grading scheme. For example, "A-". The resulting score will be the high end of the defined range for the letter grade. For instance, if "B" is defined as 86% to 84%, a letter grade of "B" will be worth 86%. The letter grade will be rejected if the assignment does not have a defined letter grading scheme. For more fine-grained control of scores, pass in points or percentage rather than the letter grade. "pass/complete/fail/incomplete":: A string value of "pass" or "complete" will give a score of 100%. "fail" or "incomplete" will give a score of 0. Note that assignments with grading_type of "pass_fail" can only be assigned a score of 0 or assignment.points_possible, nothing inbetween. If a posted_grade in the "points" or "percentage" format is sent, the grade will only be accepted if the grade equals one of those two values. submission[excuse]: type: boolean description: Sets the "excused" status of an assignment. submission[late_policy_status]: type: string description: |- Sets the late policy status to either "late", "missing", "extended", "none", or null. NB: "extended" values can only be set in the UI when the "UI features for 'extended' Submissions" Account Feature is on submission[sticker]: type: string enum: - apple - basketball - bell - book - bookbag - briefcase - bus - calendar - chem - design - pencil - beaker - paintbrush - computer - column - pen - tablet - telescope - calculator - paperclip - composite_notebook - scissors - ruler - clock - globe - grad - gym - mail - microscope - mouse - music - notebook - page - panda1 - panda2 - panda3 - panda4 - panda5 - panda6 - panda7 - panda8 - panda9 - presentation - science - science2 - star - tag - tape - target - trophy description: Sets the sticker for the submission. submission[seconds_late_override]: type: integer format: int64 description: Sets the seconds late if late policy status is "late" submission[peer_review]: type: boolean description: |- When true, updates the peer review sub assignment submission instead of the parent assignment submission. The parent assignment must have peer reviews enabled, the peer_review_allocation_and_grading feature flag must be enabled for the course, and the assignment must have an associated peer review sub assignment. If any of these conditions are not met, the API will return a 422 error. rubric_assessment: type: string x-canvas-declared-type: RubricAssessment description: |- Assign a rubric assessment to this assignment submission. The sub-parameters here depend on the rubric for the assignment. The general format is, for each row in the rubric: The points awarded for this row. rubric_assessment[criterion_id][points] The rating id for the row. rubric_assessment[criterion_id][rating_id] Comments to add for this row. rubric_assessment[criterion_id][comments] For example, if the assignment rubric is (in JSON format): !!!javascript [ { 'id': 'crit1', 'points': 10, 'description': 'Criterion 1', 'ratings': [ { 'id': 'rat1', 'description': 'Good', 'points': 10 }, { 'id': 'rat2', 'description': 'Poor', 'points': 3 } ] }, { 'id': 'crit2', 'points': 5, 'description': 'Criterion 2', 'ratings': [ { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 }, { 'id': 'rat2', 'description': 'Complete', 'points': 5 }, { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 } ] } ] Then a possible set of values for rubric_assessment would be: rubric_assessment[crit1][points]=3&rubric_assessment[crit1][rating_id]=rat1&rubric_assessment[crit2][points]=5&rubric_assessment[crit2][rating_id]=rat2&rubric_assessment[crit2][comments]=Well%20Done. application/x-www-form-urlencoded: schema: *id309 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}: get: tags: - Submissions operationId: get_single_submission_by_anonymous_id_courses summary: Get a single submission by anonymous id description: Get a single submission, based on the submission's anonymous id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: anonymous_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - rubric_assessment - full_rubric_assessment - visibility - course - user - read_status required: false description: Associations to include with the group. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html put: tags: - Submissions operationId: grade_or_comment_on_submission_by_anonymous_id_courses summary: Grade or comment on a submission by anonymous id description: |- Comment on and/or update the grading for a student's assignment submission, fetching the submission by anonymous id (instead of user id). If any submission or rubric_assessment arguments are provided, the user must have permission to manage grades in the appropriate context (course or section). parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: anonymous_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id310 type: object properties: comment[text_comment]: type: string description: Add a textual comment to the submission. comment[group_comment]: type: boolean description: |- Whether or not this comment should be sent to the entire group (defaults to false). Ignored if this is not a group assignment or if no text_comment is provided. comment[media_comment_id]: type: string description: |- Add an audio/video comment to the submission. Media comments can be added via this API, however, note that there is not yet an API to generate or list existing media comments, so this functionality is currently of limited use. comment[media_comment_type]: type: string enum: - audio - video description: The type of media comment being added. comment[file_ids]: type: array items: type: integer description: |- Attach files to this comment that were previously uploaded using the Submission Comment API's files action include: type: array items: type: string enum: - submission_comments - visibility - sub_assignment_submissions - peer_review_submissions - provisional_grades - group description: |- Associations to include with the submission. "submission_comments" is always included by default. - "submission_comments": Comments on the submission (always included) - "visibility": Whether the assignment is visible to the owner of the submission - "sub_assignment_submissions": Sub-assignment submissions for discussion checkpoints - "peer_review_submissions": Peer review submission data when peer review allocation and grading is enabled - "provisional_grades": Provisional grades (only available for moderated assignments) - "group": Group information (id and name) for group assignments submission[posted_grade]: type: string description: |- Assign a score to the submission, updating both the "score" and "grade" fields on the submission record. This parameter can be passed in a few different formats: points:: A floating point or integral value, such as "13.5". The grade will be interpreted directly as the score of the assignment. Values above assignment.points_possible are allowed, for awarding extra credit. percentage:: A floating point value appended with a percent sign, such as "40%". The grade will be interpreted as a percentage score on the assignment, where 100% == assignment.points_possible. Values above 100% are allowed, for awarding extra credit. letter grade:: A letter grade, following the assignment's defined letter grading scheme. For example, "A-". The resulting score will be the high end of the defined range for the letter grade. For instance, if "B" is defined as 86% to 84%, a letter grade of "B" will be worth 86%. The letter grade will be rejected if the assignment does not have a defined letter grading scheme. For more fine-grained control of scores, pass in points or percentage rather than the letter grade. "pass/complete/fail/incomplete":: A string value of "pass" or "complete" will give a score of 100%. "fail" or "incomplete" will give a score of 0. Note that assignments with grading_type of "pass_fail" can only be assigned a score of 0 or assignment.points_possible, nothing inbetween. If a posted_grade in the "points" or "percentage" format is sent, the grade will only be accepted if the grade equals one of those two values. submission[excuse]: type: boolean description: Sets the "excused" status of an assignment. submission[late_policy_status]: type: string description: |- Sets the late policy status to either "late", "missing", "extended", "none", or null. NB: "extended" values can only be set in the UI when the "UI features for 'extended' Submissions" Account Feature is on submission[seconds_late_override]: type: integer format: int64 description: Sets the seconds late if late policy status is "late" rubric_assessment: type: string x-canvas-declared-type: RubricAssessment description: |- Assign a rubric assessment to this assignment submission. The sub-parameters here depend on the rubric for the assignment. The general format is, for each row in the rubric: The points awarded for this row. rubric_assessment[criterion_id][points] The rating id for the row. rubric_assessment[criterion_id][rating_id] Comments to add for this row. rubric_assessment[criterion_id][comments] For example, if the assignment rubric is (in JSON format): !!!javascript [ { 'id': 'crit1', 'points': 10, 'description': 'Criterion 1', 'ratings': [ { 'id': 'rat1', 'description': 'Good', 'points': 10 }, { 'id': 'rat2', 'description': 'Poor', 'points': 3 } ] }, { 'id': 'crit2', 'points': 5, 'description': 'Criterion 2', 'ratings': [ { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 }, { 'id': 'rat2', 'description': 'Complete', 'points': 5 }, { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 } ] } ] Then a possible set of values for rubric_assessment would be: rubric_assessment[crit1][points]=3&rubric_assessment[crit1][rating_id]=rat1&rubric_assessment[crit2][points]=5&rubric_assessment[crit2][rating_id]=rat2&rubric_assessment[crit2][comments]=Well%20Done. application/x-www-form-urlencoded: schema: *id310 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}: get: tags: - Submissions operationId: get_single_submission_by_anonymous_id_sections summary: Get a single submission by anonymous id description: Get a single submission, based on the submission's anonymous id. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: anonymous_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission_history - submission_comments - rubric_assessment - full_rubric_assessment - visibility - course - user - read_status required: false description: Associations to include with the group. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html put: tags: - Submissions operationId: grade_or_comment_on_submission_by_anonymous_id_sections summary: Grade or comment on a submission by anonymous id description: |- Comment on and/or update the grading for a student's assignment submission, fetching the submission by anonymous id (instead of user id). If any submission or rubric_assessment arguments are provided, the user must have permission to manage grades in the appropriate context (course or section). parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: anonymous_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id311 type: object properties: comment[text_comment]: type: string description: Add a textual comment to the submission. comment[group_comment]: type: boolean description: |- Whether or not this comment should be sent to the entire group (defaults to false). Ignored if this is not a group assignment or if no text_comment is provided. comment[media_comment_id]: type: string description: |- Add an audio/video comment to the submission. Media comments can be added via this API, however, note that there is not yet an API to generate or list existing media comments, so this functionality is currently of limited use. comment[media_comment_type]: type: string enum: - audio - video description: The type of media comment being added. comment[file_ids]: type: array items: type: integer description: |- Attach files to this comment that were previously uploaded using the Submission Comment API's files action include: type: array items: type: string enum: - submission_comments - visibility - sub_assignment_submissions - peer_review_submissions - provisional_grades - group description: |- Associations to include with the submission. "submission_comments" is always included by default. - "submission_comments": Comments on the submission (always included) - "visibility": Whether the assignment is visible to the owner of the submission - "sub_assignment_submissions": Sub-assignment submissions for discussion checkpoints - "peer_review_submissions": Peer review submission data when peer review allocation and grading is enabled - "provisional_grades": Provisional grades (only available for moderated assignments) - "group": Group information (id and name) for group assignments submission[posted_grade]: type: string description: |- Assign a score to the submission, updating both the "score" and "grade" fields on the submission record. This parameter can be passed in a few different formats: points:: A floating point or integral value, such as "13.5". The grade will be interpreted directly as the score of the assignment. Values above assignment.points_possible are allowed, for awarding extra credit. percentage:: A floating point value appended with a percent sign, such as "40%". The grade will be interpreted as a percentage score on the assignment, where 100% == assignment.points_possible. Values above 100% are allowed, for awarding extra credit. letter grade:: A letter grade, following the assignment's defined letter grading scheme. For example, "A-". The resulting score will be the high end of the defined range for the letter grade. For instance, if "B" is defined as 86% to 84%, a letter grade of "B" will be worth 86%. The letter grade will be rejected if the assignment does not have a defined letter grading scheme. For more fine-grained control of scores, pass in points or percentage rather than the letter grade. "pass/complete/fail/incomplete":: A string value of "pass" or "complete" will give a score of 100%. "fail" or "incomplete" will give a score of 0. Note that assignments with grading_type of "pass_fail" can only be assigned a score of 0 or assignment.points_possible, nothing inbetween. If a posted_grade in the "points" or "percentage" format is sent, the grade will only be accepted if the grade equals one of those two values. submission[excuse]: type: boolean description: Sets the "excused" status of an assignment. submission[late_policy_status]: type: string description: |- Sets the late policy status to either "late", "missing", "extended", "none", or null. NB: "extended" values can only be set in the UI when the "UI features for 'extended' Submissions" Account Feature is on submission[seconds_late_override]: type: integer format: int64 description: Sets the seconds late if late policy status is "late" rubric_assessment: type: string x-canvas-declared-type: RubricAssessment description: |- Assign a rubric assessment to this assignment submission. The sub-parameters here depend on the rubric for the assignment. The general format is, for each row in the rubric: The points awarded for this row. rubric_assessment[criterion_id][points] The rating id for the row. rubric_assessment[criterion_id][rating_id] Comments to add for this row. rubric_assessment[criterion_id][comments] For example, if the assignment rubric is (in JSON format): !!!javascript [ { 'id': 'crit1', 'points': 10, 'description': 'Criterion 1', 'ratings': [ { 'id': 'rat1', 'description': 'Good', 'points': 10 }, { 'id': 'rat2', 'description': 'Poor', 'points': 3 } ] }, { 'id': 'crit2', 'points': 5, 'description': 'Criterion 2', 'ratings': [ { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 }, { 'id': 'rat2', 'description': 'Complete', 'points': 5 }, { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 } ] } ] Then a possible set of values for rubric_assessment would be: rubric_assessment[crit1][points]=3&rubric_assessment[crit1][rating_id]=rat1&rubric_assessment[crit2][points]=5&rubric_assessment[crit2][rating_id]=rat2&rubric_assessment[crit2][comments]=Well%20Done. application/x-www-form-urlencoded: schema: *id311 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/files: post: tags: - Submissions operationId: upload_file_courses summary: Upload a file description: |- Upload a file to a submission. This API endpoint is the first step in uploading a file to a submission as a student. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. The final step of the file upload workflow will return the attachment data, including the new file id. The caller can then POST to submit the +online_upload+ assignment with these file ids. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/files: post: tags: - Submissions operationId: upload_file_sections summary: Upload a file description: |- Upload a file to a submission. This API endpoint is the first step in uploading a file to a submission as a student. See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. The final step of the file upload workflow will return the attachment data, including the new file id. The caller can then POST to submit the +online_upload+ assignment with these file ids. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/gradeable_students: get: tags: - Submissions operationId: list_gradeable_students summary: List gradeable students description: |- A paginated list of gradeable students for the assignment. The caller must have permission to view grades. If anonymous grading is enabled for the current assignment and the allow_new_anonymous_id parameter is passed, the returned data will not include any values identifying the student, but will instead include an assignment-specific anonymous ID for each student. Section-limited instructors will only see students in their own sections. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: sort in: query schema: type: string enum: - name required: false description: Sort results by this field. - name: order in: query schema: type: string enum: - asc - desc required: false description: The sorting order. Defaults to 'asc'. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: UserDisplay if anonymous grading is not enabled for the assignment or if the allow_new_anonymous_id parameter is not true externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/assignments/gradeable_students: get: tags: - Submissions operationId: list_multiple_assignments_gradeable_students summary: List multiple assignments gradeable students description: |- A paginated list of students eligible to submit a list of assignments. The caller must have permission to view grades for the requested course. Section-limited instructors will only see students in their own sections. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_ids in: query schema: type: array items: type: string required: false description: Assignments being requested responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/submissions/update_grades: post: tags: - Submissions operationId: grade_or_comment_on_multiple_submissions_courses_submissions summary: Grade or comment on multiple submissions description: |- Update the grading and comments on multiple student's assignment submissions in an asynchronous job. The user must have permission to manage grades in the appropriate context (course or section). parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id312 type: object properties: grade_data[][posted_grade]: type: string description: |- See documentation for the posted_grade argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][excuse]: type: boolean description: |- See documentation for the excuse argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][rubric_assessment]: type: string x-canvas-declared-type: RubricAssessment description: |- See documentation for the rubric_assessment argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][text_comment]: type: string description: no description grade_data[][group_comment]: type: boolean description: no description grade_data[][media_comment_id]: type: string description: no description grade_data[][media_comment_type]: type: string enum: - audio - video description: no description grade_data[][file_ids]: type: array items: type: integer description: |- See documentation for the comment[] arguments in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][]: type: integer format: int64 description: |- Specifies which assignment to grade. This argument is not necessary when using the assignment-specific endpoints. application/x-www-form-urlencoded: schema: *id312 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/update_grades: post: tags: - Submissions operationId: grade_or_comment_on_multiple_submissions_courses_assignments summary: Grade or comment on multiple submissions description: |- Update the grading and comments on multiple student's assignment submissions in an asynchronous job. The user must have permission to manage grades in the appropriate context (course or section). parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id313 type: object properties: grade_data[][posted_grade]: type: string description: |- See documentation for the posted_grade argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][excuse]: type: boolean description: |- See documentation for the excuse argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][rubric_assessment]: type: string x-canvas-declared-type: RubricAssessment description: |- See documentation for the rubric_assessment argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][text_comment]: type: string description: no description grade_data[][group_comment]: type: boolean description: no description grade_data[][media_comment_id]: type: string description: no description grade_data[][media_comment_type]: type: string enum: - audio - video description: no description grade_data[][file_ids]: type: array items: type: integer description: |- See documentation for the comment[] arguments in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][]: type: integer format: int64 description: |- Specifies which assignment to grade. This argument is not necessary when using the assignment-specific endpoints. application/x-www-form-urlencoded: schema: *id313 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/submissions/update_grades: post: tags: - Submissions operationId: grade_or_comment_on_multiple_submissions_sections_submissions summary: Grade or comment on multiple submissions description: |- Update the grading and comments on multiple student's assignment submissions in an asynchronous job. The user must have permission to manage grades in the appropriate context (course or section). parameters: - name: section_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id314 type: object properties: grade_data[][posted_grade]: type: string description: |- See documentation for the posted_grade argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][excuse]: type: boolean description: |- See documentation for the excuse argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][rubric_assessment]: type: string x-canvas-declared-type: RubricAssessment description: |- See documentation for the rubric_assessment argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][text_comment]: type: string description: no description grade_data[][group_comment]: type: boolean description: no description grade_data[][media_comment_id]: type: string description: no description grade_data[][media_comment_type]: type: string enum: - audio - video description: no description grade_data[][file_ids]: type: array items: type: integer description: |- See documentation for the comment[] arguments in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][]: type: integer format: int64 description: |- Specifies which assignment to grade. This argument is not necessary when using the assignment-specific endpoints. application/x-www-form-urlencoded: schema: *id314 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/update_grades: post: tags: - Submissions operationId: grade_or_comment_on_multiple_submissions_sections_assignments summary: Grade or comment on multiple submissions description: |- Update the grading and comments on multiple student's assignment submissions in an asynchronous job. The user must have permission to manage grades in the appropriate context (course or section). parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id315 type: object properties: grade_data[][posted_grade]: type: string description: |- See documentation for the posted_grade argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][excuse]: type: boolean description: |- See documentation for the excuse argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][rubric_assessment]: type: string x-canvas-declared-type: RubricAssessment description: |- See documentation for the rubric_assessment argument in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][text_comment]: type: string description: no description grade_data[][group_comment]: type: boolean description: no description grade_data[][media_comment_id]: type: string description: no description grade_data[][media_comment_type]: type: string enum: - audio - video description: no description grade_data[][file_ids]: type: array items: type: integer description: |- See documentation for the comment[] arguments in the {api:SubmissionsApiController#update Submissions Update} documentation grade_data[][]: type: integer format: int64 description: |- Specifies which assignment to grade. This argument is not necessary when using the assignment-specific endpoints. application/x-www-form-urlencoded: schema: *id315 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read: put: tags: - Submissions operationId: mark_submission_as_read_courses summary: Mark submission as read description: |- No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html delete: tags: - Submissions operationId: mark_submission_as_unread_courses summary: Mark submission as unread description: |- No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read: put: tags: - Submissions operationId: mark_submission_as_read_sections summary: Mark submission as read description: |- No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html delete: tags: - Submissions operationId: mark_submission_as_unread_sections summary: Mark submission as unread description: |- No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/courses/{course_id}/submissions/bulk_mark_read: put: tags: - Submissions operationId: mark_bulk_submissions_as_read_courses summary: Mark bulk submissions as read description: |- Accepts a string array of submission ids. Loops through and marks each submission as read On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id316 type: object properties: submissionIds: type: array items: type: string description: no description application/x-www-form-urlencoded: schema: *id316 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/submissions/bulk_mark_read: put: tags: - Submissions operationId: mark_bulk_submissions_as_read_sections summary: Mark bulk submissions as read description: |- Accepts a string array of submission ids. Loops through and marks each submission as read On success, the response will be 204 No Content with an empty body. parameters: - name: section_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id317 type: object properties: submissionIds: type: array items: type: string description: no description application/x-www-form-urlencoded: schema: *id317 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read/{item}: put: tags: - Submissions operationId: mark_submission_item_as_read_courses summary: Mark submission item as read description: |- No request fields are necessary. A submission item can be "grade", "comment" or "rubric" On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID - name: item in: path schema: type: string required: true description: ID responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read/{item}: put: tags: - Submissions operationId: mark_submission_item_as_read_sections summary: Mark submission item as read description: |- No request fields are necessary. A submission item can be "grade", "comment" or "rubric" On success, the response will be 204 No Content with an empty body. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID - name: item in: path schema: type: string required: true description: ID responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/courses/{course_id}/submissions/{user_id}/clear_unread: put: tags: - Submissions operationId: clear_unread_status_for_all_submissions_courses summary: Clear unread status for all submissions. description: |- Site-admin-only endpoint. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/sections/{section_id}/submissions/{user_id}/clear_unread: put: tags: - Submissions operationId: clear_unread_status_for_all_submissions_sections summary: Clear unread status for all submissions. description: |- Site-admin-only endpoint. No request fields are necessary. On success, the response will be 204 No Content with an empty body. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read: get: tags: - Submissions operationId: get_rubric_assessments_read_state_courses_rubric_comments summary: Get rubric assessments read state description: Return whether new rubric comments/grading made on a submission have been seen by the student being assessed. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html put: tags: - Submissions operationId: mark_rubric_assessments_as_read_courses_rubric_comments summary: Mark rubric assessments as read description: |- Indicate that rubric comments/grading made on a submission have been read by the student being assessed. Only the student who owns the submission can use this endpoint. NOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read: get: tags: - Submissions operationId: get_rubric_assessments_read_state_courses_rubric_assessments summary: Get rubric assessments read state description: Return whether new rubric comments/grading made on a submission have been seen by the student being assessed. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html put: tags: - Submissions operationId: mark_rubric_assessments_as_read_courses_rubric_assessments summary: Mark rubric assessments as read description: |- Indicate that rubric comments/grading made on a submission have been read by the student being assessed. Only the student who owns the submission can use this endpoint. NOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read: get: tags: - Submissions operationId: get_rubric_assessments_read_state_sections_rubric_comments summary: Get rubric assessments read state description: Return whether new rubric comments/grading made on a submission have been seen by the student being assessed. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html put: tags: - Submissions operationId: mark_rubric_assessments_as_read_sections_rubric_comments summary: Mark rubric assessments as read description: |- Indicate that rubric comments/grading made on a submission have been read by the student being assessed. Only the student who owns the submission can use this endpoint. NOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read: get: tags: - Submissions operationId: get_rubric_assessments_read_state_sections_rubric_assessments summary: Get rubric assessments read state description: Return whether new rubric comments/grading made on a submission have been seen by the student being assessed. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html put: tags: - Submissions operationId: mark_rubric_assessments_as_read_sections_rubric_assessments summary: Mark rubric assessments as read description: |- Indicate that rubric comments/grading made on a submission have been read by the student being assessed. Only the student who owns the submission can use this endpoint. NOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read: get: tags: - Submissions operationId: get_document_annotations_read_state_courses summary: Get document annotations read state description: Return whether annotations made on a submitted document have been read by the student parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html put: tags: - Submissions operationId: mark_document_annotations_as_read_courses summary: Mark document annotations as read description: |- Indicate that annotations made on a submitted document have been read by the student. Only the student who owns the submission can use this endpoint. NOTE: Document annotations will be marked as read automatically when they are viewed in Canvas web. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read: get: tags: - Submissions operationId: get_document_annotations_read_state_sections summary: Get document annotations read state description: Return whether annotations made on a submitted document have been read by the student parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html put: tags: - Submissions operationId: mark_document_annotations_as_read_sections summary: Mark document annotations as read description: |- Indicate that annotations made on a submitted document have been read by the student. Only the student who owns the submission can use this endpoint. NOTE: Document annotations will be marked as read automatically when they are viewed in Canvas web. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_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/submissions.html /v1/courses/{course_id}/assignments/{assignment_id}/submission_summary: get: tags: - Submissions operationId: submission_summary_courses summary: Submission Summary description: |- Returns the number of submissions for the given assignment based on gradeable students that fall into three categories: graded, ungraded, not submitted. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: grouped in: query schema: type: boolean required: false description: If this argument is true, the response will take into account student groups. - name: include_deactivated in: query schema: type: boolean required: false description: |- If this argument is true, the response will include deactivated students in the summary (defaults to false). responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/sections/{section_id}/assignments/{assignment_id}/submission_summary: get: tags: - Submissions operationId: submission_summary_sections summary: Submission Summary description: |- Returns the number of submissions for the given assignment based on gradeable students that fall into three categories: graded, ungraded, not submitted. parameters: - name: section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: grouped in: query schema: type: boolean required: false description: If this argument is true, the response will take into account student groups. - name: include_deactivated in: query schema: type: boolean required: false description: |- If this argument is true, the response will include deactivated students in the summary (defaults to false). responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submissions.html /v1/accounts/{account_id}/tabs: get: tags: - Tabs operationId: list_available_tabs_for_course_or_group_accounts summary: List available tabs for a course or group description: Returns a paginated list of navigation tabs available in the current context. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - course_subject_tabs required: false description: |- - "course_subject_tabs": Optional flag to return the tabs associated with a canvas_for_elementary subject course's home page instead of the typical sidebar navigation. Only takes effect if this request is for a course context in a canvas_for_elementary-enabled account or sub-account. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/tabs.html /v1/courses/{course_id}/tabs: get: tags: - Tabs operationId: list_available_tabs_for_course_or_group_courses summary: List available tabs for a course or group description: Returns a paginated list of navigation tabs available in the current context. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - course_subject_tabs required: false description: |- - "course_subject_tabs": Optional flag to return the tabs associated with a canvas_for_elementary subject course's home page instead of the typical sidebar navigation. Only takes effect if this request is for a course context in a canvas_for_elementary-enabled account or sub-account. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/tabs.html /v1/groups/{group_id}/tabs: get: tags: - Tabs operationId: list_available_tabs_for_course_or_group_groups summary: List available tabs for a course or group description: Returns a paginated list of navigation tabs available in the current context. parameters: - name: group_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - course_subject_tabs required: false description: |- - "course_subject_tabs": Optional flag to return the tabs associated with a canvas_for_elementary subject course's home page instead of the typical sidebar navigation. Only takes effect if this request is for a course context in a canvas_for_elementary-enabled account or sub-account. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/tabs.html /v1/users/{user_id}/tabs: get: tags: - Tabs operationId: list_available_tabs_for_course_or_group_users summary: List available tabs for a course or group description: Returns a paginated list of navigation tabs available in the current context. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - course_subject_tabs required: false description: |- - "course_subject_tabs": Optional flag to return the tabs associated with a canvas_for_elementary subject course's home page instead of the typical sidebar navigation. Only takes effect if this request is for a course context in a canvas_for_elementary-enabled account or sub-account. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/tabs.html /v1/courses/{course_id}/tabs/{tab_id}: put: tags: - Tabs operationId: update_tab_for_course summary: Update a tab for a course description: |- Home and Settings tabs are not manageable, and can't be hidden or moved Returns a tab object parameters: - name: course_id in: path schema: type: string required: true description: ID - name: tab_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id318 type: object properties: position: type: integer format: int64 description: The new position of the tab, 1-based hidden: type: boolean description: no description application/x-www-form-urlencoded: schema: *id318 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Tab' externalDocs: url: https://canvas.instructure.com/doc/api/tabs.html /v1/accounts/{account_id}/temporary_enrollment_pairings: get: tags: - Temporary Enrollment Pairings operationId: list_temporary_enrollment_pairings summary: List temporary enrollment pairings description: Returns the list of temporary enrollment pairings for a root account. parameters: - name: account_id in: path schema: type: string required: true description: ID - name: include_deleted in: query schema: type: boolean required: false description: If true, include deleted pairings in the response. Defaults to false. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/TemporaryEnrollmentPairing' externalDocs: url: https://canvas.instructure.com/doc/api/temporary_enrollment_pairings.html post: tags: - Temporary Enrollment Pairings operationId: create_temporary_enrollment_pairing summary: Create Temporary Enrollment Pairing description: Create a Temporary Enrollment Pairing. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id319 type: object properties: workflow_state: type: string description: The workflow state of the temporary enrollment pairing. ending_enrollment_state: type: string enum: - deleted - completed - inactive description: |- The ending enrollment state to be given to each associated enrollment when the enrollment period has been reached. Defaults to "deleted" if no value is given. Accepted values are "deleted", "completed", and "inactive". application/x-www-form-urlencoded: schema: *id319 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TemporaryEnrollmentPairing' externalDocs: url: https://canvas.instructure.com/doc/api/temporary_enrollment_pairings.html /v1/accounts/{account_id}/temporary_enrollment_pairings/{id}: get: tags: - Temporary Enrollment Pairings operationId: get_single_temporary_enrollment_pairing summary: Get a single temporary enrollment pairing description: Returns the temporary enrollment pairing with the given id. parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/TemporaryEnrollmentPairing' externalDocs: url: https://canvas.instructure.com/doc/api/temporary_enrollment_pairings.html delete: tags: - Temporary Enrollment Pairings operationId: delete_temporary_enrollment_pairing summary: Delete Temporary Enrollment Pairing description: Delete a temporary enrollment pairing parameters: - name: account_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 content: application/json: schema: $ref: '#/components/schemas/TemporaryEnrollmentPairing' externalDocs: url: https://canvas.instructure.com/doc/api/temporary_enrollment_pairings.html /v1/accounts/{account_id}/temporary_enrollment_pairings/new: get: tags: - Temporary Enrollment Pairings operationId: new_temporaryenrollmentpairing summary: New TemporaryEnrollmentPairing description: Initialize an unsaved Temporary Enrollment Pairing. parameters: - name: account_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TemporaryEnrollmentPairing' externalDocs: url: https://canvas.instructure.com/doc/api/temporary_enrollment_pairings.html /v1/users/{user_id}/observees: get: tags: - User Observees operationId: list_linked_observees summary: List linked observees description: |- A paginated list of users that the given user is observing. This endpoint returns users linked to the observer at the account level (such that the observer is automatically enrolled in observees' courses); it doesn't return one-off observer enrollments from individual courses. *Note:* all users are allowed to list their own observees. Administrators can list other users' observees. The returned observees will include an attribute "observation_link_root_account_ids", a list of ids for the root accounts the observer and observee are linked on. The observer will only be able to observe in courses associated with these root accounts. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - avatar_url required: false description: '- "avatar_url": Optionally include avatar_url.' responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html post: tags: - User Observees operationId: add_observee_with_credentials summary: Add an observee with credentials description: |- Register the given user to observe another user, given the observee's credentials. *Note:* all users are allowed to add their own observees, given the observee's credentials or access token are provided. Administrators can add observees given credentials, access token or the {api:UserObserveesController#update observee's id}. parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id320 type: object properties: observee[unique_id]: type: string description: The login id for the user to observe. Required if access_token is omitted. observee[password]: type: string description: The password for the user to observe. Required if access_token is omitted. access_token: type: string description: The access token for the user to observe. Required if observee[unique_id] or observee[password] are omitted. pairing_code: type: string description: A generated pairing code for the user to observe. Required if the Observer pairing code feature flag is enabled root_account_id: type: integer format: int64 description: |- The ID for the root account to associate with the observation link. Defaults to the current domain account. If 'all' is specified, a link will be created for each root account associated to both the observer and observee. application/x-www-form-urlencoded: schema: *id320 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html /v1/users/{user_id}/observers: get: tags: - User Observees operationId: list_linked_observers summary: List linked observers description: |- A paginated list of observers linked to a given user. *Note:* all users are allowed to list their own observers. Administrators can list other users' observers. The returned observers will include an attribute "observation_link_root_account_ids", a list of ids for the root accounts the observer and observee are linked on. The observer will only be able to observe in courses associated with these root accounts. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - avatar_url required: false description: '- "avatar_url": Optionally include avatar_url.' responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html /v1/users/{user_id}/observees/{observee_id}: get: tags: - User Observees operationId: show_observee summary: Show an observee description: |- Gets information about an observed user. *Note:* all users are allowed to view their own observees. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: observee_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html put: tags: - User Observees operationId: add_observee summary: Add an observee description: Registers a user as being observed by the given user. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: observee_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id321 type: object properties: root_account_id: type: integer format: int64 description: |- The ID for the root account to associate with the observation link. If not specified, a link will be created for each root account associated to both the observer and observee. application/x-www-form-urlencoded: schema: *id321 responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html delete: tags: - User Observees operationId: remove_observee summary: Remove an observee description: Unregisters a user as being observed by the given user. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: observee_id in: path schema: type: string required: true description: ID - name: root_account_id in: query schema: type: integer format: int64 required: false description: If specified, only removes the link for the given root account responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html /v1/users/{user_id}/observers/{observer_id}: get: tags: - User Observees operationId: show_observer summary: Show an observer description: |- Gets information about an observer. *Note:* all users are allowed to view their own observers. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: observer_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: User externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html /v1/users/{user_id}/observer_pairing_codes: post: tags: - User Observees operationId: create_observer_pairing_code summary: Create observer pairing code description: |- If the user is a student, will generate a code to be used with self registration or observees APIs to link another user to this student. parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PairingCode' externalDocs: url: https://canvas.instructure.com/doc/api/user_observees.html /v1/users/self/activity_stream: get: tags: - Users operationId: list_activity_stream_self summary: List the activity stream description: |- Returns the current user's global activity stream, paginated. There are many types of objects that can be returned in the activity stream. All object types have the same basic set of shared attributes: !!!javascript { 'created_at': '2011-07-13T09:12:00Z', 'updated_at': '2011-07-25T08:52:41Z', 'id': 1234, 'title': 'Stream Item Subject', 'message': 'This is the body text of the activity stream item. It is plain-text, and can be multiple paragraphs.', 'type': 'DiscussionTopic|Conversation|Message|Submission|Conference|Collaboration|AssessmentRequest...', 'read_state': false, 'context_type': 'course', // course|group 'course_id': 1, 'group_id': null, 'html_url': "http://..." // URL to the Canvas web UI for this stream item } In addition, each item type has its own set of attributes available. DiscussionTopic: !!!javascript { 'type': 'DiscussionTopic', 'discussion_topic_id': 1234, 'total_root_discussion_entries': 5, 'require_initial_post': true, 'user_has_posted': true, 'root_discussion_entries': { ... } } For DiscussionTopic, the message is truncated at 4kb. Announcement: !!!javascript { 'type': 'Announcement', 'announcement_id': 1234, 'total_root_discussion_entries': 5, 'require_initial_post': true, 'user_has_posted': null, 'root_discussion_entries': { ... } } For Announcement, the message is truncated at 4kb. Conversation: !!!javascript { 'type': 'Conversation', 'conversation_id': 1234, 'private': false, 'participant_count': 3, } Message: !!!javascript { 'type': 'Message', 'message_id': 1234, 'notification_category': 'Assignment Graded' } Submission: Returns an {api:Submissions:Submission Submission} with its Course and Assignment data. Conference: !!!javascript { 'type': 'Conference', 'web_conference_id': 1234 } Collaboration: !!!javascript { 'type': 'Collaboration', 'collaboration_id': 1234 } AssessmentRequest: !!!javascript { 'type': 'AssessmentRequest', 'assessment_request_id': 1234 } parameters: - name: only_active_courses in: query schema: type: boolean required: false description: If true, will only return objects for courses the user is actively participating in responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html delete: tags: - Users operationId: hide_all_stream_items summary: Hide all stream items description: Hide all stream items for the user responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/activity_stream: get: tags: - Users operationId: list_activity_stream_activity_stream summary: List the activity stream description: |- Returns the current user's global activity stream, paginated. There are many types of objects that can be returned in the activity stream. All object types have the same basic set of shared attributes: !!!javascript { 'created_at': '2011-07-13T09:12:00Z', 'updated_at': '2011-07-25T08:52:41Z', 'id': 1234, 'title': 'Stream Item Subject', 'message': 'This is the body text of the activity stream item. It is plain-text, and can be multiple paragraphs.', 'type': 'DiscussionTopic|Conversation|Message|Submission|Conference|Collaboration|AssessmentRequest...', 'read_state': false, 'context_type': 'course', // course|group 'course_id': 1, 'group_id': null, 'html_url': "http://..." // URL to the Canvas web UI for this stream item } In addition, each item type has its own set of attributes available. DiscussionTopic: !!!javascript { 'type': 'DiscussionTopic', 'discussion_topic_id': 1234, 'total_root_discussion_entries': 5, 'require_initial_post': true, 'user_has_posted': true, 'root_discussion_entries': { ... } } For DiscussionTopic, the message is truncated at 4kb. Announcement: !!!javascript { 'type': 'Announcement', 'announcement_id': 1234, 'total_root_discussion_entries': 5, 'require_initial_post': true, 'user_has_posted': null, 'root_discussion_entries': { ... } } For Announcement, the message is truncated at 4kb. Conversation: !!!javascript { 'type': 'Conversation', 'conversation_id': 1234, 'private': false, 'participant_count': 3, } Message: !!!javascript { 'type': 'Message', 'message_id': 1234, 'notification_category': 'Assignment Graded' } Submission: Returns an {api:Submissions:Submission Submission} with its Course and Assignment data. Conference: !!!javascript { 'type': 'Conference', 'web_conference_id': 1234 } Collaboration: !!!javascript { 'type': 'Collaboration', 'collaboration_id': 1234 } AssessmentRequest: !!!javascript { 'type': 'AssessmentRequest', 'assessment_request_id': 1234 } parameters: - name: only_active_courses in: query schema: type: boolean required: false description: If true, will only return objects for courses the user is actively participating in responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/activity_stream/summary: get: tags: - Users operationId: activity_stream_summary summary: Activity stream summary description: Returns a summary of the current user's global activity stream. parameters: - name: only_active_courses in: query schema: type: boolean required: false description: If true, will only return objects for courses the user is actively participating in responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/todo: get: tags: - Users operationId: list_todo_items summary: List the TODO items description: |- A paginated list of the current user's list of todo items. There is a limit to the number of items returned. The `ignore` and `ignore_permanently` URLs can be used to update the user's preferences on what items will be displayed. Performing a DELETE request against the `ignore` URL will hide that item from future todo item requests, until the item changes. Performing a DELETE request against the `ignore_permanently` URL will hide that item forever. parameters: - name: include in: query schema: type: array items: type: string enum: - ungraded_quizzes - grading_counts required: false description: |- "ungraded_quizzes":: Optionally include ungraded quizzes (such as practice quizzes and surveys) in the list. These will be returned under a +quiz+ key instead of an +assignment+ key in response elements. "grading_counts":: Optionally include segmented submission counts on grading-type items: +on_time_needs_grading_count+, +late_needs_grading_count+, +resubmitted_needs_grading_count+, +submitted_submissions_count+, and +total_submissions_count+. Only honored when the account has the +educator_dashboard+ feature enabled; otherwise silently ignored. - name: course_ids in: query schema: type: array items: type: string required: false description: |- Restrict results to todo items in the given courses. Accepts numeric IDs and SIS IDs of the form +sis_course_id:foo+. Applies to grading, submitting, checkpoint, and ungraded quiz items alike. Courses the user is not enrolled in (or that cannot be resolved) are silently dropped. When the parameter is present but no valid courses resolve, an empty list is returned rather than the unfiltered list. - name: submission_status in: query schema: type: array items: type: string enum: - late - resubmitted required: false description: |- Restrict grading todo items to submissions matching the given characteristics. Values OR-combine. When present, only grading (and checkpoint grading) items are returned; submitting and ungraded-quiz items are omitted. "late":: Turned in after the due date. "resubmitted":: Student resubmitted after grading; the grade no longer matches the current submission. Unknown values are silently dropped. When the parameter is present but no valid statuses resolve, grading items return empty rather than unfiltered. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/todo_item_count: get: tags: - Users operationId: list_counts_for_todo_items summary: List counts for todo items description: |- Counts of different todo items such as the number of assignments needing grading as well as the number of assignments needing submitting. There is a limit to the number of todo items this endpoint will count. It will only look at the first 100 todo items for the user. If the user has more than 100 todo items this count may not be reliable. The largest reliable number for both counts is 100. parameters: - name: include in: query schema: type: array items: type: string enum: - ungraded_quizzes required: false description: |- "ungraded_quizzes":: Optionally include ungraded quizzes (such as practice quizzes and surveys) in the list. These will be returned under a +quiz+ key instead of an +assignment+ key in response elements. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/upcoming_events: get: tags: - Users operationId: list_upcoming_assignments_calendar_events summary: List upcoming assignments, calendar events description: A paginated list of the current user's upcoming events. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/missing_submissions: get: tags: - Users operationId: list_missing_submissions summary: List Missing Submissions description: |- A paginated list of past-due assignments for which the student does not have a submission. The user sending the request must either be the student, an admin or a parent observer using the parent app parameters: - name: user_id in: path schema: type: string required: true description: the student's ID - name: observed_user_id in: query schema: type: string required: false description: |- Return missing submissions for the given observed user. Must be accompanied by course_ids[]. The user making the request must be observing the observed user in all the courses specified by course_ids[]. - name: include in: query schema: type: array items: type: string enum: - planner_overrides - course required: false description: |- "planner_overrides":: Optionally include the assignment's associated planner override, if it exists, for the current user. These will be returned under a +planner_override+ key "course":: Optionally include the assignments' courses - name: filter in: query schema: type: array items: type: string enum: - submittable - current_grading_period required: false description: |- "submittable":: Only return assignments that the current user can submit (i.e. filter out locked assignments) "current_grading_period":: Only return missing assignments that are in the current grading period - name: course_ids in: query schema: type: array items: type: string required: false description: |- Optionally restricts the list of past-due assignments to only those associated with the specified course IDs. Required if observed_user_id is passed. responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Assignment externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/activity_stream/{id}: delete: tags: - Users operationId: hide_stream_item summary: Hide a stream item description: Hide the given stream item. parameters: - 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/users.html /v1/users/{id}: get: tags: - Users operationId: show_user_details summary: Show user details description: |- Shows details for user. Also includes an attribute "permissions", a non-comprehensive list of permissions for the user. Example: !!!javascript "permissions": { "can_update_name": true, // Whether the user can update their name. "can_update_avatar": false, // Whether the user can update their avatar. "limit_parent_app_web_access": false // Whether the user can interact with Canvas web from the Canvas Parent app. } parameters: - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - uuid - last_login required: false description: |- Array of additional information to include on the user record. "locale", "avatar_url", "permissions", "email", and "effective_locale" will always be returned responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html put: tags: - Users operationId: edit_user summary: Edit a user description: Modify an existing user. To modify a user's login, see the documentation for logins. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id322 type: object properties: user[name]: type: string description: The full name of the user. This name will be used by teacher for grading. user[short_name]: type: string description: User's name as it will be displayed in discussions, messages, and comments. user[sortable_name]: type: string description: User's name as used to sort alphabetically in lists. user[time_zone]: type: string description: |- The time zone for the user. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. user[email]: type: string description: The default email address of the user. user[locale]: type: string description: |- The user's preferred language, from the list of languages Canvas supports. This is in RFC-5646 format. user[avatar][token]: type: string description: |- A unique representation of the avatar record to assign as the user's current avatar. This token can be obtained from the user avatars endpoint. This supersedes the +user[avatar][url]+ argument, and if both are included the url will be ignored. Note: this is an internal representation and is subject to change without notice. It should be consumed with this api endpoint and used in the user update endpoint, and should not be constructed by the client. user[avatar][url]: type: string description: |- To set the user's avatar to point to an external url, do not include a token and instead pass the url here. Warning: For maximum compatibility, please use 128 px square images. user[avatar][state]: type: string enum: - none - submitted - approved - locked - reported - re_reported description: To set the state of user's avatar. Only valid for account administrator. user[title]: type: string description: |- Sets a title on the user profile. (See {api:ProfileController#settings Get user profile}.) Profiles must be enabled on the root account. user[bio]: type: string description: |- Sets a bio on the user profile. (See {api:ProfileController#settings Get user profile}.) Profiles must be enabled on the root account. user[pronunciation]: type: string description: |- Sets name pronunciation on the user profile. (See {api:ProfileController#settings Get user profile}.) Profiles and name pronunciation must be enabled on the root account. user[pronouns]: type: string description: |- Sets pronouns on the user profile. Passing an empty string will empty the user's pronouns Only Available Pronouns set on the root account are allowed Adding and changing pronouns must be enabled on the root account. user[event]: type: string enum: - suspend - unsuspend description: |- Suspends or unsuspends all logins for this user that the calling user has permission to override_sis_stickiness: type: boolean description: |- Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness application/x-www-form-urlencoded: schema: *id322 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/accounts/{account_id}/self_registration: post: tags: - Users operationId: deprecated_self_register_user summary: '[DEPRECATED] Self register a user' description: |- Self register and return a new user and pseudonym for an account. If self-registration is enabled on the account, you can use this endpoint to self register new users. parameters: - name: account_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id323 type: object properties: user[name]: type: string description: The full name of the user. This name will be used by teacher for grading. user[short_name]: type: string description: User's name as it will be displayed in discussions, messages, and comments. user[sortable_name]: type: string description: User's name as used to sort alphabetically in lists. user[time_zone]: type: string description: |- The time zone for the user. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. user[locale]: type: string description: |- The user's preferred language, from the list of languages Canvas supports. This is in RFC-5646 format. user[terms_of_use]: type: boolean description: Whether the user accepts the terms of use. pseudonym[unique_id]: type: string description: User's login ID. Must be a valid email address. communication_channel[type]: type: string description: The communication channel type, e.g. 'email' or 'sms'. communication_channel[address]: type: string description: The communication channel address, e.g. the user's email address. required: - user[name] - user[terms_of_use] - pseudonym[unique_id] application/x-www-form-urlencoded: schema: *id323 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/settings: get: tags: - Users operationId: update_user_settings summary: Update user settings. description: Update an existing user's settings. parameters: - name: id in: path schema: type: string required: true description: ID - name: manual_mark_as_read in: query schema: type: boolean required: false description: |- If true, require user to manually mark discussion posts as read (don't auto-mark as read). - name: release_notes_badge_disabled in: query schema: type: boolean required: false description: If true, hide the badge for new release notes. - name: collapse_global_nav in: query schema: type: boolean required: false description: If true, the user's page loads with the global navigation collapsed - name: collapse_course_nav in: query schema: type: boolean required: false description: |- If true, the user's course pages will load with the course navigation collapsed. - name: hide_dashcard_color_overlays in: query schema: type: boolean required: false description: |- If true, images on course cards will be presented without being tinted to match the course color. - name: comment_library_suggestions_enabled in: query schema: type: boolean required: false description: If true, suggestions within the comment library will be shown. - name: elementary_dashboard_disabled in: query schema: type: boolean required: false description: |- If true, will display the user's preferred class Canvas dashboard view instead of the canvas for elementary view. - name: widget_dashboard_user_preference in: query schema: type: boolean required: false description: |- If true, enables the widget dashboard for the user. Only applies when the widget_dashboard feature is enabled at the account level. Defaults to true when the feature becomes available. - name: widget_dashboard_dark_mode in: query schema: type: boolean required: false description: If true, enables the dark color theme for the widget dashboard. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/colors: get: tags: - Users operationId: get_custom_colors summary: Get custom colors description: Returns all custom colors that have been saved for a user. parameters: - 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/users.html /v1/users/{id}/colors/{asset_string}: get: tags: - Users operationId: get_custom_color summary: Get custom color description: |- Returns the custom colors that have been saved for a user for a given context. The asset_string parameter should be in the format 'context_id', for example 'course_42'. parameters: - name: id in: path schema: type: string required: true description: ID - name: asset_string in: path schema: type: string required: true description: ID responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html put: tags: - Users operationId: update_custom_color summary: Update custom color description: |- Updates a custom color for a user for a given context. This allows colors for the calendar and elsewhere to be customized on a user basis. The asset string parameter should be in the format 'context_id', for example 'course_42' parameters: - name: id in: path schema: type: string required: true description: ID - name: asset_string in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id324 type: object properties: hexcode: type: string description: |- The hexcode of the color to set for the context, if you choose to pass the hexcode as a query parameter rather than in the request body you should NOT include the '#' unless you escape it first. application/x-www-form-urlencoded: schema: *id324 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/text_editor_preference: put: tags: - Users operationId: update_text_editor_preference summary: Update text editor preference description: |- Updates a user's default choice for text editor. This allows the Choose an Editor propmts to preload the user's preference. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id325 type: object properties: text_editor_preference: type: string enum: - block_editor - rce - '' description: The identifier for the editor. application/x-www-form-urlencoded: schema: *id325 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/files_ui_version_preference: put: tags: - Users operationId: update_files_ui_version_preference summary: Update files UI version preference description: |- Updates a user's default choice for files UI version. This allows the files UI to preload the user's preference. parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id326 type: object properties: files_ui_version: type: string enum: - v1 - v2 description: The identifier for the files UI version. application/x-www-form-urlencoded: schema: *id326 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/dashboard_positions: get: tags: - Users operationId: get_dashboard_positions summary: Get dashboard positions description: Returns all dashboard positions that have been saved for a user. parameters: - 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/users.html put: tags: - Users operationId: update_dashboard_positions summary: Update dashboard positions description: |- Updates the dashboard positions for a user for a given context. This allows positions for the dashboard cards and elsewhere to be customized on a per user basis. The asset string parameter should be in the format 'context_id', for example 'course_42' parameters: - 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/users.html /v1/users/{id}/sessions: delete: tags: - Users operationId: terminate_all_user_sessions summary: Terminate all user sessions description: |- Terminates all sessions for a user. This includes all browser-based sessions and all access tokens, including manually generated ones. The user can immediately re-authenticate to access Canvas again if they have the current credentials. All integrations will need to be re-authorized. parameters: - 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/users.html /v1/users/mobile_sessions: delete: tags: - Users operationId: log_users_out_of_all_mobile_apps_mobile_sessions summary: Log users out of all mobile apps description: |- Permanently expires any active mobile sessions, forcing them to re-authorize. The route that takes a user id will expire mobile sessions for that user. The route that doesn't take a user id will expire mobile sessions for *all* users in the institution (except for account administrators if +skip_admins+ is given). parameters: - name: skip_admins in: query schema: type: boolean required: false description: If true, will not expire mobile sessions for account administrators. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/mobile_sessions: delete: tags: - Users operationId: log_users_out_of_all_mobile_apps_id summary: Log users out of all mobile apps description: |- Permanently expires any active mobile sessions, forcing them to re-authorize. The route that takes a user id will expire mobile sessions for that user. The route that doesn't take a user id will expire mobile sessions for *all* users in the institution (except for account administrators if +skip_admins+ is given). parameters: - name: id in: path schema: type: string required: true description: ID - name: skip_admins in: query schema: type: boolean required: false description: If true, will not expire mobile sessions for account administrators. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/merge_into/{destination_user_id}: put: tags: - Users operationId: merge_user_into_another_user_destination_user_id summary: Merge user into another user description: |- Merge a user into another user. To merge users, the caller must have permissions to manage both users. This should be considered irreversible. This will delete the user and move all the data into the destination user. User merge details and caveats: The from_user is the user that was deleted in the user_merge process. The destination_user is the user that remains, that is being split. Avatars: When both users have avatars, only the destination_users avatar will remain. When one user has an avatar, it will end up on the destination_user. Terms of Use: If either user has accepted terms of use, it will be be left as accepted. Communication Channels: All unique communication channels moved to the destination_user. All notification preferences are moved to the destination_user. Enrollments: All unique enrollments are moved to the destination_user. When there is an enrollment that would end up making it so that a user would be observing themselves, the enrollment is not moved over. Everything that is tied to the from_user at the course level relating to the enrollment is also moved to the destination_user. Submissions: All submissions are moved to the destination_user. If there are enrollments for both users in the same course, we prefer submissions that have grades then submissions that have work in them, and if there are no grades or no work, they are not moved. Other notes: Access Tokens are moved on merge. Conversations are moved on merge. Favorites are moved on merge. Courses will commonly use LTI tools. LTI tools reference the user with IDs that are stored on a user object. Merging users deletes one user and moves all records from the deleted user to the destination_user. These IDs are kept for all enrollments, group_membership, and account_users for the from_user at the time of the merge. When the destination_user launches an LTI tool from a course that used to be the from_user's, it doesn't appear as a new user to the tool provider. Instead it will send the stored ids. The destination_user's LTI IDs remain as they were for the courses that they originally had. Future enrollments for the destination_user will use the IDs that are on the destination_user object. LTI IDs that are kept and tracked per context include lti_context_id, lti_id and uuid. APIs that return the LTI ids will return the one for the context that it is called for, except for the user uuid. The user UUID will display the destination_users uuid, and when getting the uuid from an api that is in a context that was recorded from a merge event, an additional attribute is added as past_uuid. When finding users by SIS ids in different accounts the destination_account_id is required. The account can also be identified by passing the domain in destination_account_id. parameters: - name: id in: path schema: type: string required: true description: ID - name: destination_user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/merge_into/accounts/{destination_account_id}/users/{destination_user_id}: put: tags: - Users operationId: merge_user_into_another_user_accounts summary: Merge user into another user description: |- Merge a user into another user. To merge users, the caller must have permissions to manage both users. This should be considered irreversible. This will delete the user and move all the data into the destination user. User merge details and caveats: The from_user is the user that was deleted in the user_merge process. The destination_user is the user that remains, that is being split. Avatars: When both users have avatars, only the destination_users avatar will remain. When one user has an avatar, it will end up on the destination_user. Terms of Use: If either user has accepted terms of use, it will be be left as accepted. Communication Channels: All unique communication channels moved to the destination_user. All notification preferences are moved to the destination_user. Enrollments: All unique enrollments are moved to the destination_user. When there is an enrollment that would end up making it so that a user would be observing themselves, the enrollment is not moved over. Everything that is tied to the from_user at the course level relating to the enrollment is also moved to the destination_user. Submissions: All submissions are moved to the destination_user. If there are enrollments for both users in the same course, we prefer submissions that have grades then submissions that have work in them, and if there are no grades or no work, they are not moved. Other notes: Access Tokens are moved on merge. Conversations are moved on merge. Favorites are moved on merge. Courses will commonly use LTI tools. LTI tools reference the user with IDs that are stored on a user object. Merging users deletes one user and moves all records from the deleted user to the destination_user. These IDs are kept for all enrollments, group_membership, and account_users for the from_user at the time of the merge. When the destination_user launches an LTI tool from a course that used to be the from_user's, it doesn't appear as a new user to the tool provider. Instead it will send the stored ids. The destination_user's LTI IDs remain as they were for the courses that they originally had. Future enrollments for the destination_user will use the IDs that are on the destination_user object. LTI IDs that are kept and tracked per context include lti_context_id, lti_id and uuid. APIs that return the LTI ids will return the one for the context that it is called for, except for the user uuid. The user UUID will display the destination_users uuid, and when getting the uuid from an api that is in a context that was recorded from a merge event, an additional attribute is added as past_uuid. When finding users by SIS ids in different accounts the destination_account_id is required. The account can also be identified by passing the domain in destination_account_id. parameters: - name: id in: path schema: type: string required: true description: ID - name: destination_account_id in: path schema: type: string required: true description: ID - name: destination_user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/split: post: tags: - Users operationId: split_merged_users_into_separate_users summary: Split merged users into separate users description: |- Merged users cannot be fully restored to their previous state, but this will attempt to split as much as possible to the previous state. To split a merged user, the caller must have permissions to manage all of the users logins. If there are multiple users that have been merged into one user it will split each merge into a separate user. A split can only happen within 180 days of a user merge. A user merge deletes the previous user and may be permanently deleted. In this scenario we create a new user object and proceed to move as much as possible to the new user. The user object will not have preserved the name or settings from the previous user. Some items may have been deleted during a user_merge that cannot be restored, and/or the data has become stale because of other changes to the objects since the time of the user_merge. Split users details and caveats: The from_user is the user that was deleted in the user_merge process. The destination_user is the user that remains, that is being split. Avatars: When both users had avatars, both will be remain. When from_user had an avatar and destination_user did not have an avatar, the destination_user's avatar will be deleted if it still matches what was there are the time of the merge. If the destination_user's avatar was changed at anytime after the merge, it will remain on the destination user. If the from_user had an avatar it will be there after split. Terms of Use: If from_user had not accepted terms of use, they will be prompted again to accept terms of use after the split. If the destination_user had not accepted terms of use, hey will be prompted again to accept terms of use after the split. If neither user had accepted the terms of use, but since the time of the merge had accepted, both will be prompted to accept terms of use. If both had accepted terms of use, this will remain. Communication Channels: All communication channels are restored to what they were prior to the merge. If a communication channel was added after the merge, it will remain on the destination_user. Notification preferences remain with the communication channels. Enrollments: All enrollments from the time of the merge will be moved back to where they were. Enrollments created since the time of the merge that were created by sis_import will go to the user that owns that sis_id used for the import. Other new enrollments will remain on the destination_user. Everything that is tied to the destination_user at the course level relating to an enrollment is moved to the from_user. When both users are in the same course prior to merge this can cause some unexpected items to move. Submissions: Unlike other items tied to a course, submissions are explicitly recorded to avoid problems with grades. All submissions were moved are restored to the spot prior to merge. All submission that were created in a course that was moved in enrollments are moved over to the from_user. Other notes: Access Tokens are moved back on split. Conversations are moved back on split. Favorites that existing at the time of merge are moved back on split. LTI ids are restored to how they were prior to merge. parameters: - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/User' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/pandata_events_token: post: tags: - Users operationId: get_pandata_events_jwt_token_and_its_expiration_date summary: Get a Pandata Events jwt token and its expiration date description: |- Returns a jwt auth and props token that can be used to send events to Pandata. NOTE: This is currently only available to the mobile developer keys. requestBody: required: false content: application/json: schema: &id327 type: object properties: app_key: type: string description: The pandata events appKey for this mobile app application/x-www-form-urlencoded: schema: *id327 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{id}/graded_submissions: get: tags: - Users operationId: get_users_most_recently_graded_submissions summary: Get a users most recently graded submissions description: Returns a list of the user's most recently graded submissions. parameters: - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - assignment required: false description: Associations to include with the group - name: only_current_enrollments in: query schema: type: boolean required: false description: Returns submissions for only currently active enrollments - name: only_published_assignments in: query schema: type: boolean required: false description: Returns submissions for only published assignments responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: Submission externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/profile: get: tags: - Users operationId: get_user_profile summary: Get user profile description: |- Returns user profile data, including user id, name, and profile pic. When requesting the profile for the user accessing the API, the user's calendar feed URL and LTI user id will be returned as well. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - links - user_services - uuid required: false description: |- Array of additional information to include. "links":: include the user's profile links in the response as an array of objects with +url+ and +title+ fields "user_services":: include names and links for the user's connected services "uuid":: include the user's uuid in the response responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Profile' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/avatars: get: tags: - Users operationId: list_avatar_options summary: List avatar options description: |- A paginated list of the possible user avatar options that can be set with the user update endpoint. The response will be an array of avatar records. If the 'type' field is 'attachment', the record will include all the normal attachment json fields; otherwise it will include only the 'url' and 'display_name' fields. Additionally, all records will include a 'type' field and a 'token' field. The following explains each field in more detail type:: ["gravatar"|"attachment"|"no_pic"] The type of avatar record, for categorization purposes. url:: The url of the avatar token:: A unique representation of the avatar record which can be used to set the avatar with the user update endpoint. Note: this is an internal representation and is subject to change without notice. It should be consumed with this api endpoint and used in the user update endpoint, and should not be constructed by the client. display_name:: A textual description of the avatar record id:: ['attachment' type only] the internal id of the attachment content-type:: ['attachment' type only] the content-type of the attachment filename:: ['attachment' type only] the filename of the attachment size:: ['attachment' type only] the size of the attachment parameters: - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Avatar' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/page_views: get: tags: - Users operationId: list_user_page_views summary: List user page views description: |- Return a paginated list of the user's page view history in json format, similar to the available CSV download. Page views are returned in descending order, newest to oldest. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: start_time in: query schema: type: string format: date-time required: false description: The beginning of the time range from which you want page views. - name: end_time in: query schema: type: string format: date-time required: false description: The end of the time range from which you want page views. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PageView' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/page_views/query: post: tags: - Users operationId: beta_initiate_page_views_query summary: BETA - Initiate page views query description: |- Initiates an asynchronous query for user page views data within a specified date range. This method enqueues a background job to process the page views query and returns a polling URL that can be used to check the query status and retrieve results when ready. As this is a beta endpoint, it is subject to change or removal at any time without the standard notice periods outlined in the API policy. parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id328 type: object properties: start_date: type: string description: The start date for the page views query in YYYY-MM-DD format. Must be the first day of a month. end_date: type: string description: The end date for the page views query in YYYY-MM-DD format. Must be the first day of a month and after start_date. results_format: type: string description: 'The desired format for the query results. Supported formats: "csv", "jsonl"' application/x-www-form-urlencoded: schema: *id328 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AsyncQueryResponse' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/page_views/query/{query_id}: get: tags: - Users operationId: beta_poll_query_status summary: BETA - Poll query status description: |- Checks the status of a previously initiated page views query. Returns the current processing status and provides a result URL when the query is complete. The query may fail with status "failed" and error_code "RESULT_SIZE_LIMIT_EXCEEDED" if the result exceeds 500 MB. If this happens, narrow the date range or query smaller time intervals. As this is a beta endpoint, it is subject to change or removal at any time without the standard notice periods outlined in the API policy. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: query_id in: path schema: type: string required: true description: The UUID of the query to check status for responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AsyncQueryStatusResponse' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/page_views/query/{query_id}/results: get: tags: - Users operationId: beta_get_query_results summary: BETA - Get query results description: |- Retrieves the results of a completed page views query. Returns the data in the format specified when the query was initiated (CSV or JSON). The response may be compressed with gzip encoding. As this is a beta endpoint, it is subject to change or removal at any time without the standard notice periods outlined in the API policy. Note: PageView payloads use two types of identifiers: globalId and localId. Global identifier is equal to (shardId*10000000000000)+localId. Please note our global identifiers might change if your Canvas instance goes through shard migration process, in this case your current shardId in the global identifier will change to a new shardId. Local identifiers do not change after shard migration and stay unique in the context of the Canvas account. The following fields in the PageView payload are global identifiers: `links_user`, `links_context`, `links_asset`, `links_real_user`, `links_account`, `developer_key_id`, `asset_user_access_id`. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: query_id in: path schema: type: string required: true description: The UUID of the completed query to retrieve results for responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: QueryResultsResponse externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/page_views/query: post: tags: - Users operationId: beta_initiate_batch_page_views_query summary: BETA - Initiate batch page views query description: |- Initiates an asynchronous query for page views data across multiple users. This method enqueues a background job to process the batch page views query and returns a polling URL that can be used to check the query status and retrieve results when ready. As this is a beta endpoint, it is subject to change or removal at any time without the standard notice periods outlined in the API policy. requestBody: required: false content: application/json: schema: &id329 type: object properties: user_ids: type: array items: {} description: Array of user IDs to query page views for. Must contain at least one user ID. Duplicate user IDs are not allowed. start_date: type: string description: The start date for the page views query in YYYY-MM-DD format. Must be the first day of a month. end_date: type: string description: The end date for the page views query in YYYY-MM-DD format. Must be the first day of a month and after start_date. results_format: type: string description: 'The desired format for the query results. Supported formats: "csv", "jsonl"' application/x-www-form-urlencoded: schema: *id329 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AsyncQueryResponse' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/page_views/query/{query_id}: get: tags: - Users operationId: beta_poll_batch_query_status summary: BETA - Poll batch query status description: |- Checks the status of a previously initiated batch page views query. Returns the current processing status and provides a result URL when the query is complete. As this is a beta endpoint, it is subject to change or removal at any time without the standard notice periods outlined in the API policy. parameters: - name: query_id in: path schema: type: string required: true description: The UUID of the query to check status for responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AsyncQueryStatusResponse' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/page_views/query/{query_id}/results: get: tags: - Users operationId: beta_get_batch_query_results summary: BETA - Get batch query results description: |- Retrieves the results of a completed batch page views query. Returns the data in the format specified when the query was initiated (CSV or JSON). The response may be compressed with gzip encoding. As this is a beta endpoint, it is subject to change or removal at any time without the standard notice periods outlined in the API policy. parameters: - name: query_id in: path schema: type: string required: true description: The UUID of the completed query to retrieve results for responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: QueryResultsResponse externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/{user_id}/custom_data: put: tags: - Users operationId: store_custom_data summary: Store custom data description: |- Store arbitrary user data as JSON. Arbitrary JSON data can be stored for a User. A typical scenario would be an external site/service that registers users in Canvas and wants to capture additional info about them. The part of the URL that follows +/custom_data/+ defines the scope of the request, and it reflects the structure of the JSON data to be stored or retrieved. The value +self+ may be used for +user_id+ to store data associated with the calling user. In order to access another user's custom data, you must be an account administrator with permission to manage users. A namespace parameter, +ns+, is used to prevent custom_data collisions between different apps. This parameter is required for all custom_data requests. A request with Content-Type multipart/form-data or Content-Type application/x-www-form-urlencoded can only be used to store strings. Example PUT with multipart/form-data data: curl 'https:///api/v1/users//custom_data/telephone' \ -X PUT \ -F 'ns=com.my-organization.canvas-app' \ -F 'data=555-1234' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": "555-1234" } Subscopes (or, generated scopes) can also be specified by passing values to +data+[+subscope+]. Example PUT specifying subscopes: curl 'https:///api/v1/users//custom_data/body/measurements' \ -X PUT \ -F 'ns=com.my-organization.canvas-app' \ -F 'data[waist]=32in' \ -F 'data[inseam]=34in' \ -F 'data[chest]=40in' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": { "chest": "40in", "waist": "32in", "inseam": "34in" } } Following such a request, subsets of the stored data to be retrieved directly from a subscope. Example {api:UsersController#get_custom_data GET} from a generated scope curl 'https:///api/v1/users//custom_data/body/measurements/chest' \ -X GET \ -F 'ns=com.my-organization.canvas-app' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": "40in" } If you want to store more than just strings (i.e. numbers, arrays, hashes, true, false, and/or null), you must make a request with Content-Type application/json as in the following example. Example PUT with JSON data: curl 'https:///api/v1/users//custom_data' \ -H 'Content-Type: application/json' \ -X PUT \ -d '{ "ns": "com.my-organization.canvas-app", "data": { "a-number": 6.02e23, "a-bool": true, "a-string": "true", "a-hash": {"a": {"b": "ohai"}}, "an-array": [1, "two", null, false] } }' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": { "a-number": 6.02e+23, "a-bool": true, "a-string": "true", "a-hash": { "a": { "b": "ohai" } }, "an-array": [1, "two", null, false] } } If the data is an Object (as it is in the above example), then subsets of the data can be accessed by including the object's (possibly nested) keys in the scope of a GET request. Example {api:UsersController#get_custom_data GET} with a generated scope: curl 'https:///api/v1/users//custom_data/a-hash/a/b' \ -X GET \ -F 'ns=com.my-organization.canvas-app' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": "ohai" } On success, this endpoint returns an object containing the data that was stored. Responds with status code 200 if the scope already contained data, and it was overwritten by the data specified in the request. Responds with status code 201 if the scope was previously empty, and the data specified in the request was successfully stored there. Responds with status code 400 if the namespace parameter, +ns+, is missing or invalid, or if the +data+ parameter is missing. Responds with status code 409 if the requested scope caused a conflict and data was not stored. This happens when storing data at the requested scope would cause data at an outer scope to be lost. e.g., if +/custom_data+ was +{"fashion_app": {"hair": "blonde"}}+, but you tried to +`PUT /custom_data/fashion_app/hair/style -F data=buzz`+, then for the request to succeed,the value of +/custom_data/fashion_app/hair+ would have to become a hash, and its old string value would be lost. In this situation, an error object is returned with the following format: !!!javascript { "message": "write conflict for custom_data hash", "conflict_scope": "fashion_app/hair", "type_at_conflict": "String", "value_at_conflict": "blonde" } parameters: - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id330 type: object properties: ns: type: string description: |- The namespace under which to store the data. This should be something other Canvas API apps aren't likely to use, such as a reverse DNS for your organization. data: type: object additionalProperties: true description: |- The data you want to store for the user, at the specified scope. If the data is composed of (possibly nested) JSON objects, scopes will be generated for the (nested) keys (see examples). required: - ns - data application/x-www-form-urlencoded: schema: *id330 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html get: tags: - Users operationId: load_custom_data summary: Load custom data description: |- Load custom user data. Arbitrary JSON data can be stored for a User. This API call retrieves that data for a (optional) given scope. See {api:UsersController#set_custom_data Store Custom Data} for details and examples. On success, this endpoint returns an object containing the data that was requested. Responds with status code 400 if the namespace parameter, +ns+, is missing or invalid, or if the specified scope does not contain any data. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: ns in: query schema: type: string required: true description: |- The namespace from which to retrieve the data. This should be something other Canvas API apps aren't likely to use, such as a reverse DNS for your organization. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html delete: tags: - Users operationId: delete_custom_data summary: Delete custom data description: |- Delete custom user data. Arbitrary JSON data can be stored for a User. This API call deletes that data for a given scope. Without a scope, all custom_data is deleted. See {api:UsersController#set_custom_data Store Custom Data} for details and examples of storage and retrieval. As an example, we'll store some data, then delete a subset of it. Example {api:UsersController#set_custom_data PUT} with valid JSON data: curl 'https:///api/v1/users//custom_data' \ -X PUT \ -F 'ns=com.my-organization.canvas-app' \ -F 'data[fruit][apple]=so tasty' \ -F 'data[fruit][kiwi]=a bit sour' \ -F 'data[veggies][root][onion]=tear-jerking' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": { "fruit": { "apple": "so tasty", "kiwi": "a bit sour" }, "veggies": { "root": { "onion": "tear-jerking" } } } } Example DELETE: curl 'https:///api/v1/users//custom_data/fruit/kiwi' \ -X DELETE \ -F 'ns=com.my-organization.canvas-app' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": "a bit sour" } Example {api:UsersController#get_custom_data GET} following the above DELETE: curl 'https:///api/v1/users//custom_data' \ -X GET \ -F 'ns=com.my-organization.canvas-app' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": { "fruit": { "apple": "so tasty" }, "veggies": { "root": { "onion": "tear-jerking" } } } } Note that hashes left empty after a DELETE will get removed from the custom_data store. For example, following the previous commands, if we delete /custom_data/veggies/root/onion, then the entire /custom_data/veggies scope will be removed. Example DELETE that empties a parent scope: curl 'https:///api/v1/users//custom_data/veggies/root/onion' \ -X DELETE \ -F 'ns=com.my-organization.canvas-app' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": "tear-jerking" } Example {api:UsersController#get_custom_data GET} following the above DELETE: curl 'https:///api/v1/users//custom_data' \ -X GET \ -F 'ns=com.my-organization.canvas-app' \ -H 'Authorization: Bearer ' Response: !!!javascript { "data": { "fruit": { "apple": "so tasty" } } } On success, this endpoint returns an object containing the data that was deleted. Responds with status code 400 if the namespace parameter, +ns+, is missing or invalid, or if the specified scope does not contain any data. parameters: - name: user_id in: path schema: type: string required: true description: ID - name: ns in: query schema: type: string required: true description: |- The namespace from which to delete the data. This should be something other Canvas API apps aren't likely to use, such as a reverse DNS for your organization. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/course_nicknames: get: tags: - Users operationId: list_course_nicknames summary: List course nicknames description: Returns all course nicknames you have set. responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CourseNickname' externalDocs: url: https://canvas.instructure.com/doc/api/users.html delete: tags: - Users operationId: clear_course_nicknames summary: Clear course nicknames description: Remove all stored course nicknames. responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/users.html /v1/users/self/course_nicknames/{course_id}: get: tags: - Users operationId: get_course_nickname summary: Get course nickname description: Returns the nickname for a specific course. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CourseNickname' externalDocs: url: https://canvas.instructure.com/doc/api/users.html put: tags: - Users operationId: set_course_nickname summary: Set course nickname description: |- Set a nickname for the given course. This will replace the course's name in output of API calls you make subsequently, as well as in selected places in the Canvas web user interface. parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id331 type: object properties: nickname: type: string description: The nickname to set. It must be non-empty and shorter than 60 characters. required: - nickname application/x-www-form-urlencoded: schema: *id331 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CourseNickname' externalDocs: url: https://canvas.instructure.com/doc/api/users.html delete: tags: - Users operationId: remove_course_nickname summary: Remove course nickname description: |- Remove the nickname for the given course. Subsequent course API calls will return the actual name for the course. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CourseNickname' externalDocs: url: https://canvas.instructure.com/doc/api/users.html /lti/subscriptions: post: tags: - Webhooks Subscriptions For Plagiarism Platform operationId: create_webhook_subscription summary: Create a Webhook Subscription description: |- Creates a webook subscription for the specified event type and context. requestBody: required: false content: application/json: schema: &id332 type: object properties: subscription[ContextId]: type: string description: The id of the context for the subscription. subscription[ContextType]: type: string description: |- The type of context for the subscription. Must be 'assignment', 'account', or 'course'. subscription[EventTypes]: type: array items: {} description: |- Array of strings representing the event types for the subscription. subscription[Format]: type: string description: Format to deliver the live events. Must be 'live-event' or 'caliper'. subscription[TransportMetadata]: type: object additionalProperties: true description: 'An object with a single key: ''Url''. Example: { "Url": "sqs.example" }' subscription[TransportType]: type: string description: Must be either 'sqs' or 'https'. required: - subscription[ContextId] - subscription[ContextType] - subscription[EventTypes] - subscription[Format] - subscription[TransportMetadata] - subscription[TransportType] application/x-www-form-urlencoded: schema: *id332 responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/webhooks_subscriptions_for_plagiarism_platform.html get: tags: - Webhooks Subscriptions For Plagiarism Platform operationId: list_all_webhook_subscription_for_tool_proxy summary: List all Webhook Subscription for a tool proxy description: |- This endpoint returns a paginated list with a default limit of 100 items per result set. You can retrieve the next result set by setting a 'StartKey' header in your next request with the value of the 'EndKey' header in the response. Example use of a 'StartKey' header object: { "Id":"71d6dfba-0547-477d-b41d-db8cb528c6d1","DeveloperKey":"10000000000001" } responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/webhooks_subscriptions_for_plagiarism_platform.html /lti/subscriptions/{id}: delete: tags: - Webhooks Subscriptions For Plagiarism Platform operationId: delete_webhook_subscription summary: Delete a Webhook Subscription parameters: - 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/webhooks_subscriptions_for_plagiarism_platform.html get: tags: - Webhooks Subscriptions For Plagiarism Platform operationId: show_single_webhook_subscription summary: Show a single Webhook Subscription parameters: - 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/webhooks_subscriptions_for_plagiarism_platform.html put: tags: - Webhooks Subscriptions For Plagiarism Platform operationId: update_webhook_subscription summary: Update a Webhook Subscription description: This endpoint uses the same parameters as the create endpoint parameters: - 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/webhooks_subscriptions_for_plagiarism_platform.html /v1/submissions/{id}/what_if_grades: put: tags: - What If Grades operationId: update_submission_s_what_if_score_and_calculate_grades summary: Update a submission's what-if score and calculate grades description: |- Enter a what if score for a submission and receive the calculated grades Grade calculation is a costly operation, so this API should be used sparingly parameters: - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: &id333 type: object properties: student_entered_score: type: number description: The score the student wants to test application/x-www-form-urlencoded: schema: *id333 responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: '{"grades": Grades, "submission": Submission}' externalDocs: url: https://canvas.instructure.com/doc/api/what_if_grades.html /v1/courses/{course_id}/what_if_grades/reset: put: tags: - What If Grades operationId: reset_what_if_scores_for_current_user_for_entire_course_and_recalculate_grades summary: Reset the what-if scores for the current user for an entire course and recalculate grades description: Resets all what-if scores for a student in a course and recalculates grades. parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: type: string x-canvas-declared-type: '{"grades": Grades}' externalDocs: url: https://canvas.instructure.com/doc/api/what_if_grades.html components: schemas: Token: type: object properties: id: type: integer description: The internal database ID of the token. created_at: type: string description: The time the token was created. expires_at: type: array items: type: string x-canvas-declared-type: '''string'', ''null''' description: The time the token will permanently expire, or null if it does not permanently expire. workflow_state: type: string description: The current state of the token. One of 'active', 'pending', 'disabled', or 'deleted'. remember_access: type: boolean description: Whether the token should be remembered across sessions. Only applicable for OAuth tokens. scopes: type: array items: type: string description: The scopes associated with the token. If empty, there are no scope limitations. real_user_id: type: array items: type: string x-canvas-declared-type: '''integer'', ''null''' description: If the token was created while masquerading, this is the ID of the real user. Otherwise, null. token: type: string description: The actual access token. Only included when the token is first created. token_hint: type: string description: A short, unique string that can be used to look up the token. user_id: type: integer description: The ID of the user the token belongs to. purpose: type: string description: The purpose of the token. app_name: type: array items: type: string x-canvas-declared-type: '''string'', ''null''' description: If the token was created by an OAuth application, this is the name of that application. Otherwise, null. can_manually_regenerate: type: boolean description: Whether the current user can manually regenerate this token. AccessibilityCourseStatistic: type: object properties: id: type: integer example: 1 description: The ID of the accessibility course statistic record course_id: type: integer example: 42 description: The ID of the course course_name: type: string example: Introduction to Biology description: The name of the course course_code: type: string example: BIO101 description: The course code (short name) of the course published: type: boolean example: true description: Whether the course is published active_issue_count: type: integer example: 5 description: The number of active accessibility issues in the course resolved_issue_count: type: integer example: 3 description: The number of resolved accessibility issues in the course closed_issue_count: type: integer example: 2 description: The number of closed accessibility issues in the course workflow_state: type: string example: active description: The workflow state of the statistic record created_at: type: string format: date-time example: '2026-01-01T00:00:00Z' description: The date and time the record was created updated_at: type: string format: date-time example: '2026-01-02T00:00:00Z' description: The date and time the record was last updated description: Per-course accessibility issue counts for a user's active teacher/designer courses. AccountCalendar: type: object properties: id: type: integer example: 204 description: the ID of the account associated with this calendar name: type: string example: Department of Chemistry description: the name of the account associated with this calendar parent_account_id: type: integer example: 1 description: the account's parent ID, or null if this is the root account root_account_id: type: integer example: 1 description: the ID of the root account, or null if this is the root account visible: type: boolean example: true description: whether this calendar is visible to users auto_subscribe: type: boolean example: false description: whether users see this calendar's events without needing to manually add it sub_account_count: type: integer example: 0 description: number of this account's direct sub-accounts asset_string: type: string example: account_4 description: Asset string of the account type: type: string example: account description: Object type calendar_event_url: type: string example: /accounts/2/calendar_events/%7B%7B%20id%20%7D%7D description: url to get full detailed events can_create_calendar_events: type: boolean example: true description: whether the user can create calendar events create_calendar_event_url: type: string example: /accounts/2/calendar_events description: API path to create events for the account new_calendar_event_url: type: string example: /accounts/6/calendar_events/new description: url to open the more options event editor AccountNotification: type: object properties: subject: type: string example: Attention Students description: The subject of the notifications message: type: string example: This is a test of the notification system. description: The message to be sent in the notification. start_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: When to send out the notification. end_at: type: string format: date-time example: '2013-08-29T23:59:00-06:00' description: When to expire the notification. icon: type: string example: information description: The icon to display with the message. Defaults to warning. roles: type: array items: type: string example: - StudentEnrollment description: (Deprecated) The roles to send the notification to. If roles is not passed it defaults to all roles role_ids: type: array items: type: integer example: - 1 description: The roles to send the notification to. If roles is not passed it defaults to all roles author: type: object additionalProperties: true example: id: 1 name: John Doe description: The author of the notification. Available only to admins using include_all. Report__account_reports: type: object properties: id: type: integer example: '1' description: The unique identifier for the report. report: type: string example: sis_export_csv description: The type of report. file_url: type: string example: https://example.com/some/path description: The url to the report download. attachment: type: string description: The attachment api object of the report. Only available after the report has completed. status: type: string example: complete description: The status of the report created_at: type: string format: date-time example: '2013-12-01T23:59:00-06:00' description: The date and time the report was created. started_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date and time the report started processing. ended_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date and time the report finished processing. run_time: type: number example: 33.3 description: The time (in seconds) the report has been waiting to run, has been running so far, or took to run to completion, depending on its current state. parameters: type: string example: course_id: 2 start_at: '2012-07-13T10:55:20-06:00' end_at: '2012-07-13T10:55:20-06:00' description: The report parameters progress: type: integer example: '100' description: The progress of the report current_line: type: integer example: '12000' description: This is the current line count being written to the report. It updates every 1000 records. user: type: string description: The user that initiated the account report. See the Users API for details. ReportParameters__account_reports: type: object properties: enrollment_term_id: type: integer example: 2 description: The canvas id of the term to get grades from include_deleted: type: boolean example: false description: If true, deleted objects will be included. If false, deleted objects will be omitted. course_id: type: integer example: 2 description: The id of the course to report on order: type: string example: users description: 'The sort order for the csv, Options: ''users'', ''courses'', ''outcomes''.' users: type: boolean example: false description: If true, user data will be included. If false, user data will be omitted. accounts: type: boolean example: false description: If true, account data will be included. If false, account data will be omitted. terms: type: boolean example: false description: If true, term data will be included. If false, term data will be omitted. courses: type: boolean example: false description: If true, course data will be included. If false, course data will be omitted. sections: type: boolean example: false description: If true, section data will be included. If false, section data will be omitted. enrollments: type: boolean example: false description: If true, enrollment data will be included. If false, enrollment data will be omitted. groups: type: boolean example: false description: If true, group data will be included. If false, group data will be omitted. xlist: type: boolean example: false description: If true, data for crosslisted courses will be included. If false, data for crosslisted courses will be omitted. sis_terms_csv: type: integer example: 1 sis_accounts_csv: type: integer example: 1 include_enrollment_state: type: boolean example: false description: If true, enrollment state will be included. If false, enrollment state will be omitted. Defaults to false. enrollment_state: type: array items: type: string example: - all description: 'Include enrollment state. Defaults to ''all'' Options: [''active''| ''invited''| ''creation_pending''| ''deleted''| ''rejected''| ''completed''| ''inactive''| ''all'']' start_at: type: string format: date-time example: '2012-07-13T10:55:20-06:00' description: The beginning date for submissions. Max time range is 2 weeks. end_at: type: string format: date-time example: '2012-07-13T10:55:20-06:00' description: The end date for submissions. Max time range is 2 weeks. description: The parameters returned will vary for each report. Account__accounts: type: object properties: id: type: integer example: 2 description: the ID of the Account object name: type: string example: Canvas Account description: The display name of the account uuid: type: string example: WvAHhY5FINzq5IyRIJybGeiXyFkG3SqHUPb7jZY5 description: The UUID of the account parent_account_id: type: integer example: 1 description: The account's parent ID, or null if this is the root account root_account_id: type: integer example: 1 description: The ID of the root account, or null if this is the root account default_storage_quota_mb: type: integer example: 500 description: The storage quota for the account in megabytes, if not otherwise specified default_user_storage_quota_mb: type: integer example: 50 description: The storage quota for a user in the account in megabytes, if not otherwise specified default_group_storage_quota_mb: type: integer example: 50 description: The storage quota for a group in the account in megabytes, if not otherwise specified default_time_zone: type: string example: America/Denver description: The default time zone of the account. Allowed time zones are {http://www.iana.org/time-zones IANA time zones} or friendlier {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}. default_time_zone_friendly_name: type: string example: Mountain Time (US & Canada) description: The friendly Ruby on Rails name of the account's default time zone. Since several Rails time zones can share a single IANA identifier (the value returned in default_time_zone), this field disambiguates which one is configured. sis_account_id: type: string example: 123xyz description: The account's identifier in the Student Information System. Only included if the user has permission to view SIS information. integration_id: type: string example: 123xyz description: The account's identifier in the Student Information System. Only included if the user has permission to view SIS information. sis_import_id: type: integer example: '12' description: The id of the SIS import if created through SIS. Only included if the user has permission to manage SIS information. course_count: type: integer example: '10' description: The number of courses directly under the account (available via include) sub_account_count: type: integer example: '10' description: The number of sub-accounts directly under the account (available via include) lti_guid: type: string example: 123xyz description: The account's identifier that is sent as context_id in LTI launches. workflow_state: type: string example: active description: The state of the account. Can be 'active' or 'deleted'. TermsOfService: type: object properties: id: type: integer example: 1 description: Terms Of Service id terms_type: type: string example: default description: The given type for the Terms of Service enum: - default - custom - no_terms passive: type: boolean example: false description: Boolean dictating if the user must accept Terms of Service account_id: type: integer example: 1 description: The id of the root account that owns the Terms of Service content: type: string example: To be or not to be that is the question description: Content of the Terms of Service self_registration_type: type: string example: - none - observer - all description: The type of self registration allowed HelpLink: type: object properties: id: type: string example: instructor_question description: The ID of the help link text: type: string example: Ask Your Instructor a Question description: The name of the help link subtext: type: string example: Questions are submitted to your instructor description: The description of the help link url: type: string example: '#teacher_feedback' description: The URL of the help link type: type: string example: default description: The type of the help link enum: - default - custom available_to: type: array items: type: string example: - user - student - teacher - admin - observer - unenrolled description: The roles that have access to this help link HelpLinks: type: object properties: help_link_name: type: string example: Help And Policies description: Help link button title help_link_icon: type: string example: help description: Help link button icon custom_help_links: type: array items: $ref: '#/components/schemas/HelpLink' example: - id: link1 text: Custom Link! subtext: Something something. url: https://google.com type: custom available_to: - user - student - teacher - admin - observer - unenrolled is_featured: true is_new: false feature_headline: Check this out! description: Help links defined by the account. Could include default help links. default_help_links: type: array items: $ref: '#/components/schemas/HelpLink' example: - available_to: - student text: Ask Your Instructor a Question subtext: Questions are submitted to your instructor url: '#teacher_feedback' type: default id: instructor_question is_featured: false is_new: true feature_headline: '' - available_to: - user - student - teacher - admin - observer - unenrolled text: Search the Canvas Guides subtext: Find answers to common questions url: https://community.canvaslms.com/t5/Guides/ct-p/guides type: default id: search_the_canvas_guides is_featured: false is_new: false feature_headline: '' - available_to: - user - student - teacher - admin - observer - unenrolled text: Report a Problem subtext: If Canvas misbehaves, tell us about it url: '#create_ticket' type: default id: report_a_problem is_featured: false is_new: false feature_headline: '' description: Default help links provided when account has not set help links of their own. Account__accounts_(lti): type: object properties: id: type: integer example: 2 description: the ID of the Account object name: type: string example: Canvas Account description: The display name of the account uuid: type: string example: WvAHhY5FINzq5IyRIJybGeiXyFkG3SqHUPb7jZY5 description: The UUID of the account parent_account_id: type: integer example: 1 description: The account's parent ID, or null if this is the root account root_account_id: type: integer example: 1 description: The ID of the root account, or null if this is the root account workflow_state: type: string example: active description: The state of the account. Can be 'active' or 'deleted'. Admin: type: object properties: id: type: integer example: 1023 description: The unique identifier for the account role/user assignment. role: type: string example: AccountAdmin description: The account role assigned. This can be 'AccountAdmin' or a user-defined role created by the Roles API. user: type: string description: The user the role is assigned to. See the Users API for details. workflow_state: type: string example: deleted description: The status of the account role/user assignment. required: - id AiExperience: type: object properties: id: type: integer example: 234 description: The ID of the AI experience title: type: string example: Customer Service Simulation description: The title for the AI experience description: type: string example: Practice customer service skills in a simulated environment description: The description of the AI experience facts: type: string example: You are a customer service representative... description: The AI facts for the experience (optional) learning_objective: type: string example: Students will practice active listening and problem-solving description: The learning objectives for this experience pedagogical_guidance: type: string example: A customer is calling about a billing issue description: The pedagogical guidance for the experience workflow_state: type: string example: published description: The current published state of the AI experience course_id: type: integer example: 1578941 description: The course this experience belongs to description: An AI Experience for interactive learning ExternalFeed: type: object properties: id: type: integer example: 5 description: The ID of the feed display_name: type: string example: My Blog description: The title of the feed, pulled from the feed itself. If the feed hasn't yet been pulled, a temporary name will be synthesized based on the URL url: type: string example: http://example.com/myblog.rss description: The HTTP/HTTPS URL to the feed header_match: type: string example: pattern description: If not null, only feed entries whose title contains this string will trigger new posts in Canvas created_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: When this external feed was added to Canvas verbosity: type: string example: truncate description: The verbosity setting determines how much of the feed's content is imported into Canvas as part of the posting. 'link_only' means that only the title and a link to the item. 'truncate' means that a summary of the first portion of the item body will be used. 'full' means that the full item body will be used. Scope: type: object properties: resource: type: string example: courses description: The resource the scope is associated with resource_name: type: string example: Courses description: The localized resource name controller: type: string example: courses description: The controller the scope is associated to action: type: string example: index description: The controller action the scope is associated to verb: type: string example: GET description: The HTTP verb for the scope scope: type: string example: url:GET|/api/v1/courses description: The identifier for the scope Appointment: type: object properties: id: type: integer example: 987 description: The appointment identifier. start_at: type: string format: date-time example: '2012-07-20T15:00:00-06:00' description: Start time for the appointment end_at: type: string format: date-time example: '2012-07-20T15:00:00-06:00' description: End time for the appointment description: Date and time for an appointment AppointmentGroup: type: object properties: id: type: integer example: 543 description: The ID of the appointment group title: type: string example: Final Presentation description: The title of the appointment group start_at: type: string format: date-time example: '2012-07-20T15:00:00-06:00' description: The start of the first time slot in the appointment group end_at: type: string format: date-time example: '2012-07-20T17:00:00-06:00' description: The end of the last time slot in the appointment group description: type: string example: Es muy importante description: The text description of the appointment group location_name: type: string example: El Tigre Chino's office description: The location name of the appointment group location_address: type: string example: Room 234 description: The address of the appointment group's location participant_count: type: integer example: 2 description: The number of participant who have reserved slots (see include[] argument) reserved_times: type: array items: $ref: '#/components/schemas/Appointment' example: - id: 987 start_at: '2012-07-20T15:00:00-06:00' end_at: '2012-07-20T15:00:00-06:00' description: The start and end times of slots reserved by the current user as well as the id of the calendar event for the reservation (see include[] argument) allow_observer_signup: type: boolean example: false description: Boolean indicating whether observer users should be able to sign-up for an appointment context_codes: type: array items: type: string example: - course_123 description: The context codes (i.e. courses) this appointment group belongs to. Only people in these courses will be eligible to sign up. sub_context_codes: type: array items: type: integer example: - course_section_234 description: The sub-context codes (i.e. course sections and group categories) this appointment group is restricted to workflow_state: type: string example: active description: Current state of the appointment group ('pending', 'active' or 'deleted'). 'pending' indicates that it has not been published yet and is invisible to participants. requiring_action: type: boolean example: true description: Boolean indicating whether the current user needs to sign up for this appointment group (i.e. it's reservable and the min_appointments_per_participant limit has not been met by this user). appointments_count: type: integer example: 2 description: Number of time slots in this appointment group appointments: type: array items: type: string x-canvas-declared-type: CalendarEvent example: [] description: Calendar Events representing the time slots (see include[] argument) Refer to the Calendar Events API for more information new_appointments: type: array items: type: string x-canvas-declared-type: CalendarEvent example: [] description: Newly created time slots (same format as appointments above). Only returned in Create/Update responses where new time slots have been added max_appointments_per_participant: type: integer example: 1 description: Maximum number of time slots a user may register for, or null if no limit min_appointments_per_participant: type: integer example: 1 description: Minimum number of time slots a user must register for. If not set, users do not need to sign up for any time slots participants_per_appointment: type: integer example: 1 description: Maximum number of participants that may register for each time slot, or null if no limit participant_visibility: type: string example: private description: '''private'' means participants cannot see who has signed up for a particular time slot, ''protected'' means that they can' participant_type: type: string example: User description: Indicates how participants sign up for the appointment group, either as individuals ('User') or in student groups ('Group'). Related to sub_context_codes (i.e. 'Group' signups always have a single group category) url: type: string example: https://example.com/api/v1/appointment_groups/543 description: URL for this appointment group (to update, delete, etc.) html_url: type: string example: http://example.com/appointment_groups/1 description: URL for a user to view this appointment group created_at: type: string format: date-time example: '2012-07-13T10:55:20-06:00' description: When the appointment group was created updated_at: type: string format: date-time example: '2012-07-13T10:55:20-06:00' description: When the appointment group was last updated AssessmentQuestionBank: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the assessment question bank. context_id: type: integer format: int64 example: 2 description: The ID of the context (course or account) the question bank belongs to. context_type: type: string example: Course description: The type of context (Course or Account). title: type: string example: Chapter 1 Questions description: The title of the question bank. workflow_state: type: string example: active description: The workflow state of the question bank. assessment_question_count: type: integer format: int64 example: 10 description: The number of questions in the bank. context_code: type: string example: course_2 description: The combined context type and ID. created_at: type: string example: '2013-01-01T00:00:00Z' description: The date and time the question bank was created. updated_at: type: string example: '2013-01-01T00:00:00Z' description: The date and time the question bank was last updated. required: - id - context_id - context_type - title AssessmentQuestion: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the assessment question. position: type: integer format: int64 example: 1 description: The order of the question. assessment_question_bank_id: type: integer format: int64 example: 3 description: The ID of the question bank this question belongs to. created_at: type: string example: '2013-01-23T23:59:00-07:00' description: The date and time when the assessment question was created. question_name: type: string example: Prime Number Identification description: The name of the question. question_type: type: string example: multiple_choice_question description: The type of the question. question_text: type: string example: Which of the following is NOT a prime number? description: The text of the question. points_possible: type: number example: 5 description: The maximum amount of points possible received for getting this question correct. correct_comments: type: string example: That's correct! description: The comments to display if the student answers the question correctly. incorrect_comments: type: string example: Unfortunately, that IS a prime number. description: The comments to display if the student answers incorrectly. neutral_comments: type: string example: Goldbach's conjecture proposes that every even integer greater than 2 can be expressed as the sum of two prime numbers. description: The comments to display regardless of how the student answered. correct_comments_html: type: string example:

That's correct!

description: The HTML version of the comments to display if the student answers the question correctly. incorrect_comments_html: type: string example:

Unfortunately, that IS a prime number.

description: The HTML version of the comments to display if the student answers incorrectly. neutral_comments_html: type: string example:

Goldbach's conjecture proposes that every even integer greater than 2 can be expressed as the sum of two prime numbers.

description: The HTML version of the comments to display regardless of how the student answered. answers: type: array items: type: object additionalProperties: true description: An array of available answers. Each answer contains id, text, html, comments, comments_html, and weight properties. variables: type: array items: {} description: Variables for calculated questions. Null for other question types. formulas: type: array items: {} description: Formulas for calculated questions. Null for other question types. answer_tolerance: type: string description: The tolerance for numerical answers. Null for non-numerical question types. formula_decimal_places: type: integer description: The number of decimal places for formula results. Null for non-calculated question types. matches: type: array items: {} description: Matching pairs for matching questions. Null for other question types. matching_answer_incorrect_matches: type: array items: {} description: Incorrect match options for matching questions. Null for other question types. required: - id AssignmentExtension: type: object properties: assignment_id: type: integer format: int64 example: 2 description: The ID of the Assignment the extension belongs to. user_id: type: integer format: int64 example: 3 description: The ID of the Student that needs the assignment extension. extra_attempts: type: integer format: int64 example: 2 description: Number of times the student is allowed to re-submit the assignment required: - assignment_id - user_id GradingRules: type: object properties: drop_lowest: type: integer example: 1 description: Number of lowest scores to be dropped for each user. drop_highest: type: integer example: 1 description: Number of highest scores to be dropped for each user. never_drop: type: array items: type: integer example: - 33 - 17 - 24 description: Assignment IDs that should never be dropped. AssignmentGroup: type: object properties: id: type: integer example: 1 description: the id of the Assignment Group name: type: string example: group2 description: the name of the Assignment Group position: type: integer example: 7 description: the position of the Assignment Group group_weight: type: integer example: 20 description: the weight of the Assignment Group sis_source_id: type: string example: '1234' description: the sis source id of the Assignment Group integration_data: type: object additionalProperties: true example: '5678': 0954 description: the integration data of the Assignment Group assignments: type: array items: type: integer example: [] description: the assignments in this Assignment Group (see the Assignment API for a detailed list of fields) rules: type: string description: the grading rules that this Assignment Group has ExternalToolTagAttributes: type: object properties: url: type: string example: http://instructure.com description: URL to the external tool new_tab: type: boolean example: false description: Whether or not there is a new tab for the external tool resource_link_id: type: string example: ab81173af98b8c33e66a description: the identifier for this tool_tag LockInfo: type: object properties: asset_string: type: string example: assignment_4 description: Asset string for the object causing the lock unlock_at: type: string format: date-time example: '2013-01-01T00:00:00-06:00' description: (Optional) Time at which this was/will be unlocked. Must be before the due date. lock_at: type: string format: date-time example: '2013-02-01T00:00:00-06:00' description: (Optional) Time at which this was/will be locked. Must be after the due date. context_module: type: string example: '{}' description: (Optional) Context module causing the lock. manually_locked: type: boolean example: true RubricRating__assignments: type: object properties: points: type: integer example: 10 id: type: string example: rat1 description: type: string example: Full marks long_description: type: string example: Student completed the assignment flawlessly. RubricCriteria: type: object properties: points: type: integer example: 10 id: type: string example: crit1 description: The id of rubric criteria. learning_outcome_id: type: string example: '1234' description: (Optional) The id of the learning outcome this criteria uses, if any. vendor_guid: type: string example: abdsfjasdfne3jsdfn2 description: (Optional) The 3rd party vendor's GUID for the outcome this criteria references, if any. description: type: string example: Criterion 1 long_description: type: string example: Criterion 1 more details criterion_use_range: type: boolean example: true ratings: type: array items: $ref: '#/components/schemas/RubricRating__assignments' ignore_for_scoring: type: boolean example: true AssignmentDate: type: object properties: id: type: integer example: 1 description: (Optional, missing if 'base' is present) id of the assignment override this date represents base: type: boolean example: true description: (Optional, present if 'id' is missing) whether this date represents the assignment's or quiz's default due date title: type: string example: Summer Session due_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: The due date for the assignment. Must be between the unlock date and the lock date if there are lock dates unlock_at: type: string format: date-time example: '2013-08-01T00:00:00-06:00' description: The unlock date for the assignment. Must be before the due date if there is a due date. lock_at: type: string format: date-time example: '2013-08-31T23:59:00-06:00' description: The lock date for the assignment. Must be after the due date if there is a due date. description: Object representing a due date for an assignment or quiz. If the due date came from an assignment override, it will have an 'id' field. TurnitinSettings: type: object properties: originality_report_visibility: type: string example: after_grading s_paper_check: type: boolean example: false internet_check: type: boolean example: false journal_check: type: boolean example: false exclude_biblio: type: boolean example: false exclude_quoted: type: boolean example: false exclude_small_matches_type: type: string example: percent exclude_small_matches_value: type: integer example: 50 NeedsGradingCount: type: object properties: section_id: type: string example: '123456' description: The section ID needs_grading_count: type: integer example: 5 description: Number of submissions that need grading description: Used by Assignment model ScoreStatistic: type: object properties: min: type: integer example: 1 description: Min score max: type: integer example: 10 description: Max score mean: type: integer example: 6 description: Mean score upper_q: type: integer example: 10 description: Upper quartile score median: type: integer example: 6 description: Median score lower_q: type: integer example: 1 description: Lower quartile score description: Used by Assignment model Assignment: type: object properties: id: type: integer example: 4 description: the ID of the assignment name: type: string example: some assignment description: the name of the assignment description: type: string example:

Do the following:

... description: the assignment description, in an HTML fragment created_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: The time at which this assignment was originally created updated_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: The time at which this assignment was last modified in any way due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the due date for the assignment. returns null if not present. NOTE: If this assignment has assignment overrides, this field will be the due date as it applies to the user requesting information from the API.' lock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the lock date (assignment is locked after this date). returns null if not present. NOTE: If this assignment has assignment overrides, this field will be the lock date as it applies to the user requesting information from the API.' unlock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the unlock date (assignment is unlocked after this date) returns null if not present NOTE: If this assignment has assignment overrides, this field will be the unlock date as it applies to the user requesting information from the API.' has_overrides: type: boolean example: true description: whether this assignment has overrides all_dates: type: array items: $ref: '#/components/schemas/AssignmentDate' description: (Optional) all dates associated with the assignment, if applicable course_id: type: integer example: 123 description: the ID of the course the assignment belongs to html_url: type: string example: https://... description: the URL to the assignment's web page submissions_download_url: type: string example: https://example.com/courses/:course_id/assignments/:id/submissions?zip=1 description: the URL to download all submissions as a zip assignment_group_id: type: integer example: 2 description: the ID of the assignment's group due_date_required: type: boolean example: true description: Boolean flag indicating whether the assignment requires a due date based on the account level setting allowed_extensions: type: array items: type: string example: - docx - ppt description: Allowed file extensions, which take effect if submission_types includes 'online_upload'. max_name_length: type: integer example: 15 description: An integer indicating the maximum length an assignment's name may be turnitin_enabled: type: boolean example: true description: 'Boolean flag indicating whether or not Turnitin has been enabled for the assignment. NOTE: This flag will not appear unless your account has the Turnitin plugin available' vericite_enabled: type: boolean example: true description: 'Boolean flag indicating whether or not VeriCite has been enabled for the assignment. NOTE: This flag will not appear unless your account has the VeriCite plugin available' turnitin_settings: type: string description: 'Settings to pass along to turnitin to control what kinds of matches should be considered. originality_report_visibility can be ''immediate'', ''after_grading'', ''after_due_date'', or ''never'' exclude_small_matches_type can be null, ''percent'', ''words'' exclude_small_matches_value: - if type is null, this will be null also - if type is ''percent'', this will be a number between 0 and 100 representing match size to exclude as a percentage of the document size. - if type is ''words'', this will be number > 0 representing how many words a match must contain for it to be considered NOTE: This flag will not appear unless your account has the Turnitin plugin available' grade_group_students_individually: type: boolean example: false description: If this is a group assignment, boolean flag indicating whether or not students will be graded individually. external_tool_tag_attributes: type: string description: (Optional) assignment's settings for external tools if submission_types include 'external_tool'. Only url and new_tab are included (new_tab defaults to false). Use the 'External Tools' API if you need more information about an external tool. peer_reviews: type: boolean example: false description: Boolean indicating if peer reviews are required for this assignment automatic_peer_reviews: type: boolean example: false description: Boolean indicating peer reviews are assigned automatically. If false, the teacher is expected to manually assign peer reviews. peer_review_count: type: integer example: 0 description: 'Integer representing the amount of reviews each user is assigned. NOTE: This key is NOT present unless you have automatic_peer_reviews set to true.' peer_reviews_assign_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'String representing a date the reviews are due by. Must be a date that occurs after the default due date. If blank, or date is not after the assignment''s due date, the assignment''s due date will be used. NOTE: This key is NOT present unless you have automatic_peer_reviews set to true.' intra_group_peer_reviews: type: boolean example: 'false' description: Boolean representing whether or not members from within the same group on a group assignment can be assigned to peer review their own group's work group_category_id: type: integer example: 1 description: The ID of the assignment’s group set, if this is a group assignment. For group discussions, set group_category_id on the discussion topic, not the linked assignment. needs_grading_count: type: integer example: 17 description: if the requesting user has grading rights, the number of submissions that need grading. needs_grading_count_by_section: type: array items: $ref: '#/components/schemas/NeedsGradingCount' example: - section_id: '123456' needs_grading_count: 5 - section_id: '654321' needs_grading_count: 0 description: 'if the requesting user has grading rights and the ''needs_grading_count_by_section'' flag is specified, the number of submissions that need grading split out by section. NOTE: This key is NOT present unless you pass the ''needs_grading_count_by_section'' argument as true. ANOTHER NOTE: it''s possible to be enrolled in multiple sections, and if a student is setup that way they will show an assignment that needs grading in multiple sections (effectively the count will be duplicated between sections)' position: type: integer example: 1 description: the sorting order of the assignment in the group post_to_sis: type: boolean example: true description: (optional, present if Sync Grades to SIS feature is enabled) integration_id: type: string example: '12341234' description: (optional, Third Party unique identifier for Assignment) integration_data: type: object additionalProperties: true example: '5678': 0954 description: (optional, Third Party integration data for assignment) points_possible: type: number example: 12.0 description: the maximum points possible for the assignment submission_types: type: array items: type: string example: - online_text_entry description: 'the types of submissions allowed for this assignment list containing one or more of the following: ''discussion_topic'', ''online_quiz'', ''on_paper'', ''none'', ''external_tool'', ''online_text_entry'', ''online_url'', ''online_upload'', ''media_recording'', ''student_annotation''' has_submitted_submissions: type: boolean example: true description: If true, the assignment has been submitted to by at least one student grading_type: type: string example: points description: The type of grading the assignment receives; one of 'pass_fail', 'percent', 'letter_grade', 'gpa_scale', 'points' grading_standard_id: type: integer description: The id of the grading standard being applied to this assignment. Valid if grading_type is 'letter_grade' or 'gpa_scale'. published: type: boolean example: true description: Whether the assignment is published unpublishable: type: boolean example: false description: Whether the assignment's 'published' state can be changed to false. Will be false if there are student submissions for the assignment. only_visible_to_overrides: type: boolean example: false description: Whether the assignment is only visible to overrides. locked_for_user: type: boolean example: false description: Whether or not this is locked for the user. lock_info: type: string description: (Optional) Information for the user about the lock. Present when locked_for_user is true. lock_explanation: type: string example: This assignment is locked until September 1 at 12:00am description: (Optional) An explanation of why this is locked for the user. Present when locked_for_user is true. quiz_id: type: integer example: 620 description: (Optional) id of the associated quiz (applies only when submission_types is ['online_quiz']) anonymous_submissions: type: boolean example: false description: (Optional) whether anonymous submissions are accepted (applies only to quiz assignments) discussion_topic: type: string description: (Optional) the DiscussionTopic associated with the assignment, if applicable freeze_on_copy: type: boolean example: false description: '(Optional) Boolean indicating if assignment will be frozen when it is copied. NOTE: This field will only be present if the AssignmentFreezer plugin is available for your account.' frozen: type: boolean example: false description: '(Optional) Boolean indicating if assignment is frozen for the calling user. NOTE: This field will only be present if the AssignmentFreezer plugin is available for your account.' frozen_attributes: type: array items: type: string example: - title description: '(Optional) Array of frozen attributes for the assignment. Only account administrators currently have permission to change an attribute in this list. Will be empty if no attributes are frozen for this assignment. Possible frozen attributes are: title, description, lock_at, points_possible, grading_type, submission_types, assignment_group_id, allowed_extensions, group_category_id, notify_of_update, peer_reviews NOTE: This field will only be present if the AssignmentFreezer plugin is available for your account.' submission: type: string description: (Optional) If 'submission' is included in the 'include' parameter, includes a Submission object that represents the current user's (user who is requesting information from the api) current submission for the assignment. See the Submissions API for an example response. If the user does not have a submission, this key will be absent. use_rubric_for_grading: type: boolean example: true description: (Optional) If true, the rubric is directly tied to grading the assignment. Otherwise, it is only advisory. Included if there is an associated rubric. rubric_settings: type: object additionalProperties: true example: points_possible: '12' description: (Optional) An object describing the basic attributes of the rubric, including the point total. Included if there is an associated rubric. rubric: type: array items: $ref: '#/components/schemas/RubricCriteria' description: (Optional) A list of scoring criteria and ratings for each rubric criterion. Included if there is an associated rubric. assignment_visibility: type: array items: type: integer example: - 137 - 381 - 572 description: (Optional) If 'assignment_visibility' is included in the 'include' parameter, includes an array of student IDs who can see this assignment. overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: (Optional) If 'overrides' is included in the 'include' parameter, includes an array of assignment override objects. omit_from_final_grade: type: boolean example: true description: (Optional) If true, the assignment will be omitted from the student's final grade hide_in_gradebook: type: boolean example: true description: (Optional) If true, the assignment will not be shown in any gradebooks moderated_grading: type: boolean example: true description: Boolean indicating if the assignment is moderated. grader_count: type: integer example: 3 description: The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors. final_grader_id: type: integer example: 3 description: The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments. grader_comments_visible_to_graders: type: boolean example: true description: Boolean indicating if provisional graders' comments are visible to other provisional graders. Only relevant for moderated assignments. graders_anonymous_to_graders: type: boolean example: true description: Boolean indicating if provisional graders' identities are hidden from other provisional graders. Only relevant for moderated assignments with grader_comments_visible_to_graders set to true. grader_names_visible_to_final_grader: type: boolean example: true description: Boolean indicating if provisional grader identities are visible to the final grader. Only relevant for moderated assignments. anonymous_grading: type: boolean example: true description: Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities. allowed_attempts: type: integer example: 2 description: The number of submission attempts a student can make for this assignment. -1 is considered unlimited. post_manually: type: boolean example: true description: Whether the assignment has manual posting enabled. Only relevant for courses using New Gradebook. score_statistics: type: string description: (Optional) If 'score_statistics' and 'submission' are included in the 'include' parameter and statistics are available, includes the min, max, and mode for this assignment can_submit: type: boolean example: true description: (Optional) If retrieving a single assignment and 'can_submit' is included in the 'include' parameter, flags whether user has the right to submit the assignment (i.e. checks enrollment dates, submission types, locked status, attempts remaining, etc...). Including 'can submit' automatically includes 'submission' in the include parameter. Not available when observed_users are included. ab_guid: type: array items: type: string example: - ABCD - EFGH description: (Optional) The academic benchmark(s) associated with the assignment or the assignment's rubric. Only included if 'ab_guid' is included in the 'include' parameter. academic_integrity_pledge: type: string example: This submission reflects my own ideas and work description: (Optional) The account-level academic integrity pledge text a student must accept before submitting this assignment. Only present if 'academic_integrity_pledge' is included in the 'include' parameter AND the pledge is enabled for the account; otherwise the key is omitted. When present but the pledge does not apply to this particular assignment (e.g. external tool assignments or Canvas Career courses), the value is null. annotatable_attachment_id: type: integer description: The id of the attachment to be annotated by students. Relevant only if submission_types includes 'student_annotation'. anonymize_students: type: boolean example: false description: (Optional) Boolean indicating whether student names are anonymized require_lockdown_browser: type: boolean example: false description: (Optional) Boolean indicating whether the Respondus LockDown Browser® is required for this assignment. important_dates: type: boolean example: false description: (Optional) Boolean indicating whether this assignment has important dates. muted: type: boolean example: false description: (Optional, Deprecated) Boolean indicating whether notifications are muted for this assignment. anonymous_peer_reviews: type: boolean example: false description: Boolean indicating whether peer reviews are anonymous. anonymous_instructor_annotations: type: boolean example: false description: Boolean indicating whether instructor anotations are anonymous. graded_submissions_exist: type: boolean example: false description: Boolean indicating whether this assignment has graded submissions. is_quiz_assignment: type: boolean example: false description: Boolean indicating whether this is a quiz lti assignment. in_closed_grading_period: type: boolean example: false description: Boolean indicating whether this assignment is in a closed grading period. can_duplicate: type: boolean example: false description: Boolean indicating whether this assignment can be duplicated. original_course_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's course_id original_assignment_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's id original_lti_resource_link_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's lti_resource_link_id original_assignment_name: type: string example: some assignment description: If this assignment is a duplicate, it is the original assignment's name original_quiz_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's quiz_id workflow_state: type: string example: unpublished description: String indicating what state this assignment is in. BasicUser: type: object properties: id: type: string example: '123456' description: The user's ID name: type: string example: Dankey Kang description: The user's name AssignmentOverride: type: object properties: id: type: integer example: 4 description: the ID of the assignment override assignment_id: type: integer example: 123 description: the ID of the assignment the override applies to (present if the override applies to an assignment) quiz_id: type: integer example: 123 description: the ID of the quiz the override applies to (present if the override applies to a quiz) context_module_id: type: integer example: 123 description: the ID of the module the override applies to (present if the override applies to a module) discussion_topic_id: type: integer example: 123 description: the ID of the discussion the override applies to (present if the override applies to an ungraded discussion) wiki_page_id: type: integer example: 123 description: the ID of the page the override applies to (present if the override applies to a page) attachment_id: type: integer example: 123 description: the ID of the file the override applies to (present if the override applies to a file) student_ids: type: array items: type: integer example: - 1 - 2 - 3 description: the IDs of the override's target students (present if the override targets an ad-hoc set of students) group_id: type: integer example: 2 description: the ID of the override's target group (present if the override targets a group and the assignment is a group assignment) course_section_id: type: integer example: 1 description: the ID of the overrides's target section (present if the override targets a section) title: type: string example: an assignment override description: the title of the override due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the overridden due at (present if due_at is overridden) all_day: type: boolean example: true description: the overridden all day flag (present if due_at is overridden) all_day_date: type: string format: date-time example: '2012-07-01' description: the overridden all day date (present if due_at is overridden) unlock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the overridden unlock at (present if unlock_at is overridden) lock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the overridden lock at, if any (present if lock_at is overridden) AuthenticationProvider: type: object properties: identifier_format: type: string example: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress description: Valid for SAML providers. auth_type: type: string example: saml description: Valid for all providers. id: type: integer example: 1649 description: Valid for all providers. log_out_url: type: string example: http://example.com/saml1/slo description: Valid for SAML providers. log_in_url: type: string example: http://example.com/saml1/sli description: Valid for SAML and CAS providers. certificate_fingerprint: type: string example: '111222' description: Valid for SAML providers. requested_authn_context: type: string description: Valid for SAML providers. auth_host: type: string example: 127.0.0.1 description: Valid for LDAP providers. auth_filter: type: string example: filter1 description: Valid for LDAP providers. auth_over_tls: type: integer description: Valid for LDAP providers. auth_base: type: string description: Valid for LDAP and CAS providers. auth_username: type: string example: username1 description: Valid for LDAP providers. auth_port: type: integer description: Valid for LDAP providers. position: type: integer example: 1 description: Valid for all providers. idp_entity_id: type: string example: http://example.com/saml1 description: Valid for SAML providers. login_attribute: type: string example: nameid description: Valid for SAML providers. sig_alg: type: string example: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 description: Valid for SAML providers. jit_provisioning: type: boolean description: Just In Time provisioning. Valid for all providers except Canvas (which has the similar in concept self_registration setting). federated_attributes: type: string mfa_required: type: boolean description: If multi-factor authentication is required when logging in with this authentication provider. The account must not have MFA disabled. SSOSettings: type: object properties: login_handle_name: type: string example: Username description: The label used for unique login identifiers. change_password_url: type: string example: https://example.com/reset_password description: The url to redirect users to for password resets. Leave blank for default Canvas behavior auth_discovery_url: type: string example: https://example.com/which_account description: If a discovery url is set, canvas will forward all users to that URL when they need to be authenticated. That page will need to then help the user figure out where they need to go to log in. If no discovery url is configured, the first configuration will be used to attempt to authenticate the user. unknown_user_url: type: string example: https://example.com/register_for_canvas description: If an unknown user url is set, Canvas will forward to that url when a service authenticates a user, but that user does not exist in Canvas. The default behavior is to present an error. login_help_url: type: string example: https://example.com/login-help description: A login help URL shown as a 'Trouble logging in?' link on the login page and in failed login messages. Falls back to the global setting if not set. saml_entity_id: type: string example: http://example.com/saml2 description: The SAML Service Provider entity ID Canvas presents to your IdP. May be a URL or a URN. Defaults to /saml2 if not set. Only settable by site admins, and only returned when a SAML provider is configured. description: Settings that are applicable across an account's authentication configuration, even if there are multiple individual providers FederatedAttributesConfig: type: object properties: admin_roles: type: string description: A comma separated list of role names to grant to the user. Note that these only apply at the root account level, and not sub-accounts. If the attribute is not marked for provisioning only, the user will also be removed from any other roles they currently hold that are not still specified by the IdP. display_name: type: string description: The full display name of the user email: type: string description: The user's e-mail address given_name: type: string description: The first, or given, name of the user integration_id: type: string description: The secondary unique identifier for SIS purposes locale: type: string description: The user's preferred locale/language name: type: string description: The full name of the user sis_user_id: type: string description: The unique SIS identifier sortable_name: type: string description: The full name of the user for sorting purposes surname: type: string description: The surname, or last name, of the user timezone: type: string description: The user's preferred time zone description: A mapping of Canvas attribute names to attribute names that a provider may send, in order to update the value of these attributes when a user logs in. The values can be a FederatedAttributeConfig, or a raw string corresponding to the "attribute" property of a FederatedAttributeConfig. In responses, full FederatedAttributeConfig objects are returned if JIT provisioning is enabled, otherwise just the attribute names are returned. FederatedAttributeConfig: type: object properties: attribute: type: string example: mail description: The name of the attribute as it will be sent from the authentication provider provisioning_only: type: boolean example: false description: If the attribute should be applied only when provisioning a new user, rather than all logins autoconfirm: type: boolean example: false description: (only for email) If the email address is trusted and should be automatically confirmed description: A single attribute name to be federated when a user logs in AuthenticationEvent: type: object properties: created_at: type: string format: date-time example: '2012-07-19T15:00:00-06:00' description: timestamp of the event event_type: type: string example: login description: authentication event type ('login' or 'logout') pseudonym_id: type: integer example: 9478 description: ID of the pseudonym (login) associated with the event account_id: type: integer example: 2319 description: ID of the account associated with the event. will match the account_id in the associated pseudonym. user_id: type: integer example: 362 description: ID of the user associated with the event will match the user_id in the associated pseudonym. BlackoutDate: type: object properties: id: type: integer example: 1 description: the ID of the blackout date context_id: type: integer example: 1 description: the context owning the blackout date context_type: type: string example: Course start_date: type: string format: date-time example: '2022-01-01' description: the start date of the blackout date end_date: type: string format: date-time example: '2022-01-02' description: the end date of the blackout date event_title: type: string example: some title description: title of the blackout date description: Blackout dates are used to prevent scheduling assignments on a given date in course pacing. BlockEditorTemplate: type: object properties: id: type: integer example: 1 description: the ID of the page name: type: string example: Navigation Bar description: name of the template description: type: string example: A bar of links to other content description: description of the template created_at: type: string format: date-time example: '2012-08-06T16:46:33-06:00' description: the creation date for the template updated_at: type: string format: date-time example: '2012-08-08T14:25:20-06:00' description: the date the template was last updated node_tree: type: string description: The JSON data that is the template editor_version: type: string example: '1.0' description: The version of the editor that created the template template_type: type: string example: page description: The type of template. One of 'block', 'section', or 'page' workflow_state: type: string example: unpublished description: String indicating what state this assignment is in. BlueprintTemplate: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the template. course_id: type: integer format: int64 example: 2 description: The ID of the Course the template belongs to. last_export_completed_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: Time when the last export was completed associated_course_count: type: integer example: 3 description: Number of associated courses for the template latest_migration: type: string description: Details of the latest migration BlueprintMigration: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the migration. template_id: type: integer format: int64 example: 2 description: The ID of the template the migration belongs to. Only present when querying a blueprint course. subscription_id: type: integer format: int64 example: 101 description: The ID of the associated course's blueprint subscription. Only present when querying a course associated with a blueprint. user_id: type: integer format: int64 example: 3 description: The ID of the user who queued the migration. workflow_state: type: string example: running description: 'Current state of the content migration: queued, exporting, imports_queued, completed, exports_failed, imports_failed' created_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: Time when the migration was queued exports_started_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: Time when the exports begun imports_queued_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: Time when the exports were completed and imports were queued imports_completed_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: Time when the imports were completed comment: type: string example: Fixed spelling in question 3 of midterm exam description: User-specified comment describing changes made in this operation BlueprintRestriction: type: object properties: content: type: boolean example: true description: Restriction on main content (e.g. title, description). points: type: boolean example: true description: Restriction on points possible for assignments and graded learning objects due_dates: type: boolean example: false description: Restriction on due dates for assignments and graded learning objects availability_dates: type: boolean example: true description: Restriction on availability dates for an object description: A set of restrictions on editing for copied objects in associated courses ChangeRecord: type: object properties: asset_id: type: integer format: int64 example: 2 description: The ID of the learning object that was changed in the blueprint course. asset_type: type: string example: assignment description: The type of the learning object that was changed in the blueprint course. One of 'assignment', 'attachment', 'discussion_topic', 'external_tool', 'quiz', 'wiki_page', 'syllabus', or 'settings'. For 'syllabus' or 'settings', the asset_id is the course id. asset_name: type: string example: Some Assignment description: The name of the learning object that was changed in the blueprint course. change_type: type: string example: created description: The type of change; one of 'created', 'updated', 'deleted' html_url: type: string example: https://canvas.example.com/courses/101/assignments/2 description: The URL of the changed object locked: type: boolean example: false description: Whether the object is locked in the blueprint exceptions: type: array items: type: object additionalProperties: true example: - course_id: 101 conflicting_changes: - points description: A list of ExceptionRecords for linked courses that did not receive this update. description: Describes a learning object change propagated to associated courses from a blueprint course ExceptionRecord: type: object properties: course_id: type: integer format: int64 example: 101 description: The ID of the associated course conflicting_changes: type: array items: type: object additionalProperties: true example: - points description: A list of change classes in the associated course's copy of the item that prevented a blueprint change from being applied. One or more of ['content', 'points', 'due_dates', 'availability_dates']. description: Lists associated courses that did not receive a change propagated from a blueprint BlueprintSubscription: type: object properties: id: type: integer format: int64 example: 101 description: The ID of the blueprint course subscription template_id: type: integer format: int64 example: 1 description: The ID of the blueprint template the associated course is subscribed to blueprint_course: type: object additionalProperties: true example: id: 2 name: Biology 100 Blueprint course_code: BIOL 100 BP term_name: Default term description: The blueprint course subscribed to description: Associates a course with a blueprint Bookmark: type: object properties: id: type: integer example: 1 name: type: string example: Biology 101 url: type: string example: /courses/1 position: type: integer example: 1 data: type: object additionalProperties: true example: active_tab: 1 CalendarEvent: type: object properties: id: type: integer example: 234 description: The ID of the calendar event title: type: string example: Paintball Fight! description: The title of the calendar event start_at: type: string format: date-time example: '2012-07-19T15:00:00-06:00' description: The start timestamp of the event end_at: type: string format: date-time example: '2012-07-19T16:00:00-06:00' description: The end timestamp of the event description: type: string example: It's that time again! description: The HTML description of the event location_name: type: string example: Greendale Community College description: The location name of the event location_address: type: string example: Greendale, Colorado description: The address where the event is taking place context_code: type: string example: course_123 description: the context code of the calendar this event belongs to (course, group, user, or account) effective_context_code: type: string description: if specified, it indicates which calendar this event should be displayed on. for example, a section-level event would have the course's context code here, while the section's context code would be returned above) context_name: type: string example: Chemistry 101 description: the context name of the calendar this event belongs to (course, user or group) all_context_codes: type: string example: course_123,course_456 description: a comma-separated list of all calendar contexts this event is part of workflow_state: type: string example: active description: Current state of the event ('active', 'locked' or 'deleted') 'locked' indicates that start_at/end_at cannot be changed (though the event could be deleted). Normally only reservations or time slots with reservations are locked (see the Appointment Groups API) hidden: type: boolean example: false description: Whether this event should be displayed on the calendar. Only true for course-level events with section-level child events. parent_event_id: type: integer description: Normally null. If this is a reservation (see the Appointment Groups API), the id will indicate the time slot it is for. If this is a section-level event, this will be the course-level parent event. child_events_count: type: integer example: 0 description: The number of child_events. See child_events (and parent_event_id) child_events: type: array items: type: integer description: Included by default, but may be excluded (see include[] option). If this is a time slot (see the Appointment Groups API) this will be a list of any reservations. If this is a course-level event, this will be a list of section-level events (if any) url: type: string example: https://example.com/api/v1/calendar_events/234 description: URL for this calendar event (to update, delete, etc.) html_url: type: string example: https://example.com/calendar?event_id=234&include_contexts=course_123 description: URL for a user to view this event all_day_date: type: string format: date-time example: '2012-07-19' description: The date of this event all_day: type: boolean example: false description: Boolean indicating whether this is an all-day event (midnight to midnight) created_at: type: string format: date-time example: '2012-07-12T10:55:20-06:00' description: When the calendar event was created updated_at: type: string format: date-time example: '2012-07-12T10:55:20-06:00' description: When the calendar event was last updated appointment_group_id: type: integer description: Various Appointment-Group-related fields.These fields are only pertinent to time slots (appointments) and reservations of those time slots. See the Appointment Groups API. The id of the appointment group appointment_group_url: type: string description: The API URL of the appointment group own_reservation: type: boolean example: false description: If the event is a reservation, this a boolean indicating whether it is the current user's reservation, or someone else's reserve_url: type: string description: If the event is a time slot, the API URL for reserving it reserved: type: boolean example: false description: If the event is a time slot, a boolean indicating whether the user has already made a reservation for it participant_type: type: string example: User description: 'The type of participant to sign up for a slot: ''User'' or ''Group''' participants_per_appointment: type: integer description: If the event is a time slot, this is the participant limit available_slots: type: integer description: If the event is a time slot and it has a participant limit, an integer indicating how many slots are available user: type: string description: If the event is a user-level reservation, this will contain the user participant JSON (refer to the Users API). group: type: string description: If the event is a group-level reservation, this will contain the group participant JSON (refer to the Groups API). important_dates: type: boolean example: true description: Boolean indicating whether this has important dates. series_uuid: type: string x-canvas-declared-type: uuid description: Identifies the recurring event series this event may belong to. rrule: type: string description: An iCalendar RRULE for defining how events in a recurring event series repeat. series_head: type: boolean description: Boolean indicating if is the first event in the series of recurring events. series_natural_language: type: string example: Daily 5 times description: A natural language expression of how events occur in the series. blackout_date: type: boolean example: true description: Boolean indicating whether this has blackout date. AssignmentEvent: type: object properties: id: type: string example: assignment_987 description: A synthetic ID for the assignment title: type: string example: Essay description: The title of the assignment start_at: type: string format: date-time example: '2012-07-19T23:59:00-06:00' description: The due_at timestamp of the assignment end_at: type: string format: date-time example: '2012-07-19T23:59:00-06:00' description: The due_at timestamp of the assignment description: type: string example: Write an essay. Whatever you want. description: The HTML description of the assignment context_code: type: string example: course_123 description: the context code of the (course) calendar this assignment belongs to workflow_state: type: string example: published description: Current state of the assignment ('published' or 'deleted') url: type: string example: https://example.com/api/v1/calendar_events/assignment_987 description: URL for this assignment (note that updating/deleting should be done via the Assignments API) html_url: type: string example: http://example.com/courses/123/assignments/987 description: URL for a user to view this assignment all_day_date: type: string format: date-time example: '2012-07-19' description: The due date of this assignment all_day: type: boolean example: true description: Boolean indicating whether this is an all-day event (e.g. assignment due at midnight) created_at: type: string format: date-time example: '2012-07-12T10:55:20-06:00' description: When the assignment was created updated_at: type: string format: date-time example: '2012-07-12T10:55:20-06:00' description: When the assignment was last updated assignment: type: string description: The full assignment JSON data (See the Assignments API) assignment_overrides: type: string description: The list of AssignmentOverrides that apply to this event (See the Assignments API). This information is useful for determining which students or sections this assignment-due event applies to. important_dates: type: boolean example: true description: Boolean indicating whether this has important dates. rrule: type: string example: FREQ=DAILY;INTERVAL=1;COUNT=5 description: An iCalendar RRULE for defining how events in a recurring event series repeat. series_head: type: boolean description: Trueif this is the first event in the series of recurring events. series_natural_language: type: string example: Daily 5 times description: A natural language expression of how events occur in the series. ExperienceSummary: type: object properties: current_app: type: string example: career_learner description: 'The current active experience. One of: ''academic'', ''career_learner'', ''career_learning_provider''.' available_apps: type: array items: type: string example: - academic - career_learner description: 'List of available experiences for the user. Can include: ''academic'', ''career_learner'', ''career_learning_provider''.' CareerUserContext: type: object properties: permissions: type: object additionalProperties: true description: Account permission checks for the authenticated user. experience: type: object additionalProperties: true description: Career experience summary including current app and available apps. enrollment_types: type: array items: type: string description: Distinct enrollment types for the user (active, invited, and pending). admin_roles: type: array items: type: object additionalProperties: true description: Admin roles on the domain root account. is_site_admin: type: boolean description: Whether the user is a site admin. is_subaccount_admin: type: boolean description: Whether the user admins a subaccount under the domain root. When account_id is provided, true only if the user can admin that specific account. is_root_account_admin: type: boolean description: Whether the user is an admin on the domain root account or a site admin. is_root_account: type: boolean description: Whether the resolved account (account_id, or the domain root when omitted) is itself a root account rather than a sub-account. Collaboration: type: object properties: id: type: integer example: 43 description: The unique identifier for the collaboration collaboration_type: type: string example: Microsoft Office description: A name for the type of collaboration document_id: type: string example: oinwoenfe8w8ef_onweufe89fef description: The collaboration document identifier for the collaboration provider user_id: type: integer example: 92 description: The canvas id of the user who created the collaboration context_id: type: integer example: 77 description: The canvas id of the course or group to which the collaboration belongs context_type: type: string example: Course description: The canvas type of the course or group to which the collaboration belongs url: type: string description: The LTI launch url to view collaboration. created_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: The timestamp when the collaboration was created updated_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: The timestamp when the collaboration was last modified description: type: string title: type: string type: type: string example: ExternalToolCollaboration description: Another representation of the collaboration type update_url: type: string description: The LTI launch url to edit the collaboration user_name: type: string example: John Danger description: The name of the user who owns the collaboration Collaborator: type: object properties: id: type: integer example: 12345 description: The unique user or group identifier for the collaborator. type: type: string example: user description: The type of collaborator (e.g. 'user' or 'group'). name: type: string example: Don Draper description: The name of the collaborator. required: - id CommMessage: type: object properties: id: type: integer example: 42 description: The ID of the CommMessage. created_at: type: string format: date-time example: '2013-03-19T21:00:00Z' description: The date and time this message was created sent_at: type: string format: date-time example: '2013-03-20T22:42:00Z' description: The date and time this message was sent workflow_state: type: string example: sent description: 'The workflow state of the message. Possible values: ''created'' : The message has been created, but not yet processed. ''staged'' : The message is queued for sending. ''sending'' : The message is being sent currently. ''sent'' : The message has been successfully sent. ''bounced'' : An error occurred during the sending of the message.''dashboard'' : The message has been sent to the dashboard. ''closed'' : The message has been sent and closed, typically for dashboard messages or messages sent to deleted users. ''cancelled'' : The message was cancelled before it could be sent.' from: type: string example: notifications@example.com description: The address that was put in the 'from' field of the message from_name: type: string example: Instructure Canvas description: The display name for the from address to: type: string example: someone@example.com description: 'The address the message was sent to:' reply_to: type: string example: notifications+specialdata@example.com description: The reply_to header of the message subject: type: string example: example subject line description: The message subject body: type: string example: This is the body of the message description: The plain text body of the message html_body: type: string example: This is the body of the message description: The HTML body of the message. CommunicationChannel: type: object properties: id: type: integer example: 16 description: The ID of the communication channel. address: type: string example: sheldon@caltech.example.com description: The address, or path, of the communication channel. type: type: string example: email description: 'The type of communcation channel being described. Possible values are: ''email'', ''push'', ''sms''. This field determines the type of value seen in ''address''.' position: type: integer example: 1 description: The position of this communication channel relative to the user's other channels when they are ordered. user_id: type: integer example: 1 description: The ID of the user that owns this communication channel. bounce_count: type: integer example: 0 description: The number of bounces the channel has experienced. This is reset if the channel sends successfully. last_bounce_at: type: string format: date-time example: '2012-05-30T17:00:00Z' description: The time the last bounce occurred. workflow_state: type: string example: active description: 'The current state of the communication channel. Possible values are: ''unconfirmed'' or ''active''.' ConferenceRecording: type: object properties: duration_minutes: type: integer example: 0 title: type: string example: 'course2: Test conference 3 [170]_0' updated_at: type: string format: date-time example: '2013-12-12T16:09:33.903-07:00' created_at: type: string format: date-time example: '2013-12-12T16:09:09.960-07:00' playback_url: type: string example: http://example.com/recording_url Conference: type: object properties: id: type: integer example: 170 description: The id of the conference conference_type: type: string example: AdobeConnect description: The type of conference conference_key: type: string example: abcdjoelisgreatxyz description: The 3rd party's ID for the conference description: type: string example: Conference Description description: The description for the conference duration: type: integer example: 60 description: The expected duration the conference is supposed to last ended_at: type: string format: date-time example: '2013-12-13T17:23:26Z' description: The date that the conference ended at, null if it hasn't ended started_at: type: string format: date-time example: '2013-12-12T23:02:17Z' description: The date the conference started at, null if it hasn't started title: type: string example: Test conference description: The title of the conference users: type: array items: type: integer example: - 1 - 7 - 8 - 9 - 10 description: Array of user ids that are participants in the conference invitees: type: array items: type: integer example: - 1 - 7 - 8 - 9 - 10 description: Array of user ids that are invitees in the conference attendees: type: array items: type: integer example: - 1 - 7 - 8 - 9 - 10 description: Array of user ids that are attendees in the conference has_advanced_settings: type: boolean example: false description: True if the conference type has advanced settings. long_running: type: boolean example: false description: If true the conference is long running and has no expected end time user_settings: type: object additionalProperties: true example: record: true description: A collection of settings specific to the conference type recordings: type: array items: $ref: '#/components/schemas/ConferenceRecording' description: A List of recordings for the conference url: type: string description: URL for the conference, may be null if the conference type doesn't set it join_url: type: string description: URL to join the conference, may be null if the conference type doesn't set it context_type: type: string description: The type of this conference's context, typically 'Course' or 'Group'. context_id: type: integer description: The ID of this conference's context. ContentExport: type: object properties: id: type: integer example: 101 description: the unique identifier for the export created_at: type: string format: date-time example: '2014-01-01T00:00:00Z' description: the date and time this export was requested export_type: type: string example: common_cartridge description: 'the type of content migration: ''common_cartridge'' or ''qti''' attachment: type: string example: url: https://example.com/api/v1/attachments/789?download_frd=1 description: attachment api object for the export package (not present before the export completes or after it becomes unavailable for download.) progress_url: type: string example: https://example.com/api/v1/progress/4 description: The api endpoint for polling the current progress user_id: type: integer example: 4 description: The ID of the user who started the export workflow_state: type: string example: exported description: 'Current state of the content migration: created exporting exported failed' MigrationIssue: type: object properties: id: type: integer example: 370663 description: the unique identifier for the issue content_migration_url: type: string example: https://example.com/api/v1/courses/1/content_migrations/1 description: API url to the content migration description: type: string example: Questions in this quiz couldn't be converted description: Description of the issue for the end-user workflow_state: type: string example: active description: 'Current state of the issue: active, resolved' fix_issue_html_url: type: string example: https://example.com/courses/1/quizzes/2 description: HTML Url to the Canvas page to investigate the issue issue_type: type: string example: warning description: 'Severity of the issue: todo, warning, error' error_report_html_url: type: string example: https://example.com/error_reports/3 description: Link to a Canvas error report if present (If the requesting user has permissions) error_message: type: string example: admin only message description: Site administrator error message (If the requesting user has permissions) created_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: timestamp updated_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: timestamp ContentMigration: type: object properties: id: type: integer example: 370663 description: the unique identifier for the migration migration_type: type: string example: common_cartridge_importer description: the type of content migration migration_type_title: type: string example: Canvas Cartridge Importer description: the name of the content migration type migration_issues_url: type: string example: https://example.com/api/v1/courses/1/content_migrations/1/migration_issues description: API url to the content migration's issues attachment: type: string example: '{"url"=>"https://example.com/api/v1/courses/1/content_migrations/1/download_archive"}' description: attachment api object for the uploaded file may not be present for all migrations progress_url: type: string example: https://example.com/api/v1/progress/4 description: The api endpoint for polling the current progress user_id: type: integer example: 4 description: The user who started the migration workflow_state: type: string example: running description: 'Current state of the content migration: pre_processing, pre_processed, running, waiting_for_select, completed, failed' started_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: timestamp finished_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: timestamp pre_attachment: type: string example: '{"upload_url"=>"", "message"=>"file exceeded quota", "upload_params"=>{}}' description: file uploading data, see {file:file.file_uploads.html File Upload Documentation} for file upload workflow This works a little differently in that all the file data is in the pre_attachment hash if there is no upload_url then there was an attachment pre-processing error, the error message will be in the message key This data will only be here after a create or update call Migrator: type: object properties: type: type: string example: common_cartridge_importer description: The value to pass to the create endpoint requires_file_upload: type: boolean example: true description: Whether this endpoint requires a file upload name: type: string example: Common Cartridge 1.0/1.1/1.2 Package description: Description of the package type expected required_settings: type: array items: type: string example: - source_course_id description: A list of fields this system requires ContentShare: type: object properties: id: type: integer example: 1 description: The id of the content share for the current user name: type: string example: War of 1812 homework description: The name of the shared content content_type: type: string example: assignment description: The type of content that was shared. Can be assignment, discussion_topic, page, quiz, module, or module_item. created_at: type: string format: date-time example: '2017-05-09T10:12:00Z' description: The datetime the content was shared with this user. updated_at: type: string format: date-time example: '2017-05-09T10:12:00Z' description: The datetime the content was updated. user_id: type: integer example: 1578941 description: The id of the user who sent or received the content share. sender: type: object additionalProperties: true example: id: 1 display_name: Matilda Vargas avatar_image_url: http://localhost:3000/image_url html_url: http://localhost:3000/users/1 description: The user who shared the content. This field is provided only to receivers; it is not populated in the sender's list of sent content shares. receivers: type: array items: type: object additionalProperties: true example: - id: 1 display_name: Jon Snow avatar_image_url: http://localhost:3000/image_url2 html_url: http://localhost:3000/users/2 description: An Array of users the content is shared with. This field is provided only to senders; an empty array will be returned for the receiving users. source_course: type: object additionalProperties: true example: id: 787 name: History 105 description: The course the content was originally shared from. read_state: type: string example: read description: Whether the recipient has viewed the content share. content_export: type: string example: id: 42 description: The content export record associated with this content share description: Content shared between users Conversation: type: object properties: id: type: integer format: int64 example: 2 description: the unique identifier for the conversation. subject: type: string example: 2 description: the subject of the conversation. workflow_state: type: string example: unread description: The current state of the conversation (read, unread or archived). last_message: type: string example: sure thing, here's the file description: A <=100 character preview from the most recent message. start_at: type: string format: date-time example: '2011-09-02T12:00:00Z' description: the date and time at which the last message was sent. message_count: type: integer example: 2 description: the number of messages in the conversation. subscribed: type: boolean example: true description: whether the current user is subscribed to the conversation. private: type: boolean example: true description: whether the conversation is private. starred: type: boolean example: true description: whether the conversation is starred. properties: type: array items: type: string description: Additional conversation flags (last_author, attachments, media_objects). Each listed property means the flag is set to true (i.e. the current user is the most recent author, there are attachments, or there are media objects) audience: type: array items: type: integer description: Array of user ids who are involved in the conversation, ordered by participation level, then alphabetical. Excludes current user, unless this is a monologue. audience_contexts: type: array items: type: string description: Most relevant shared contexts (courses and groups) between current user and other participants. If there is only one participant, it will also include that user's enrollment(s)/ membership type(s) in each course/group. avatar_url: type: string example: https://canvas.instructure.com/images/messages/avatar-group-50.png description: URL to appropriate icon for this conversation (custom, individual or group avatar, depending on audience). participants: type: array items: $ref: '#/components/schemas/ConversationParticipant' description: Array of users participating in the conversation. Includes current user. visible: type: boolean example: true description: indicates whether the conversation is visible under the current scope and filter. This attribute is always true in the index API response, and is primarily useful in create/update responses so that you can know if the record should be displayed in the UI. The default scope is assumed, unless a scope or filter is passed to the create/update API call. context_name: type: string example: Canvas 101 description: Name of the course or group in which the conversation is occurring. ConversationParticipant: type: object properties: id: type: integer format: int64 example: 2 description: The user ID for the participant. name: type: string example: Shelly description: A short name the user has selected, for use in conversations or other less formal places through the site. full_name: type: string example: Sheldon Cooper description: The full name of the user. avatar_url: type: string example: https://canvas.instructure.com/images/messages/avatar-50.png description: If requested, this field will be included and contain a url to retrieve the user's avatar. uuid: type: string example: W9GQIcdoDTqwX8mxIunDQQVL6WZTaGmpa5xovmCB description: The Canvas UUID for the participant. CourseEventLink: type: object properties: course: type: integer example: 12345 description: ID of the course for the event. user: type: integer example: 12345 description: ID of the user for the event (who made the change). page_view: type: string example: e2b76430-27a5-0131-3ca1-48e0eb13f29b description: ID of the page view during the event if it exists. copied_from: type: integer example: 12345 description: ID of the course that this course was copied from. This is only included if the event_type is copied_from. copied_to: type: integer example: 12345 description: ID of the course that this course was copied to. This is only included if the event_type is copied_to. sis_batch: type: integer example: 12345 description: ID of the SIS batch that triggered the event. CourseEvent: type: object properties: id: type: string example: e2b76430-27a5-0131-3ca1-48e0eb13f29b description: ID of the event. created_at: type: string format: date-time example: '2012-07-19T15:00:00-06:00' description: timestamp of the event event_type: type: string example: updated description: Course event type The event type defines the type and schema of the event_data object. event_data: type: string example: '{}' description: Course event data depending on the event type. This will return an object containing the relevant event data. An updated event type will return an UpdatedEventData object. event_source: type: string example: manual|sis|api description: Course event source depending on the event type. This will return a string containing the source of the event. links: type: string example: course: '12345' user: '12345' page_view: e2b76430-27a5-0131-3ca1-48e0eb13f29b description: Jsonapi.org links CreatedEventData: type: object properties: name: type: array items: type: string example: - null - Course 1 start_at: type: array items: type: string format: date-time example: - null - '2012-01-19T15:00:00-06:00' conclude_at: type: array items: type: string format: date-time example: - null - '2012-01-19T15:00:00-08:00' is_public: type: array items: type: boolean example: - null - false created_source: type: string example: manual|sis|api description: The type of action that triggered the creation of the course. description: The created event data object returns all the fields that were set in the format of the following example. If a field does not exist it was not set. The value of each field changed is in the format of [:old_value, :new_value]. The created event type also includes a created_source field to specify what triggered the creation of the course. UpdatedEventData: type: object properties: name: type: array items: type: string example: - Course 1 - Course 2 start_at: type: array items: type: string format: date-time example: - '2012-01-19T15:00:00-06:00' - '2012-07-19T15:00:00-06:00' conclude_at: type: array items: type: string format: date-time example: - '2012-01-19T15:00:00-08:00' - '2012-07-19T15:00:00-08:00' is_public: type: array items: type: boolean example: - true - false description: The updated event data object returns all the fields that have changed in the format of the following example. If a field does not exist it was not changed. The value is an array that contains the before and after values for the change as in [:old_value, :new_value]. CoursePace: type: object properties: id: type: integer example: 5 description: the ID of the course pace course_id: type: integer example: 5 description: the ID of the course user_id: type: integer example: 10 description: the ID of the user for this course pace workflow_state: type: string example: active description: the state of the course pace exclude_weekends: type: boolean example: true description: boolean value depending on exclude weekends setting selected_days_to_skip: type: array items: type: integer example: - fri - sat description: array of strings representing the days of the work week hard_end_dates: type: boolean example: true description: set if the end date is set from course created_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: date when course pace is created end_date: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: course end date updated_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: date when course pace is updated published_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: date when course pace is published root_account_id: type: integer example: 10 description: the root account ID for this course pace start_date: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: course start date modules: type: array items: {} description: list of modules and items for this course pace progress: type: string description: progress of pace publishing Module__course_pace: type: object properties: id: type: integer example: 5 description: the ID of the module name: type: string example: Module 1 description: the name of the module position: type: integer example: 5 description: the position of the module items: type: array items: $ref: '#/components/schemas/ModuleItem__course_pace' description: list of module items context_id: type: integer example: 10 description: the ID of the context for this course pace context_type: type: string example: Course description: The given context for the course pace enum: - Course - Section - User ModuleItem__course_pace: type: object properties: id: type: integer example: 5 description: the ID of the module item duration: type: integer example: 5 description: the duration of the module item course_pace_id: type: integer example: 5 description: the course pace id of the module item root_account_id: type: integer example: 5 description: the root account id of the module item module_item_id: type: integer example: 5 description: the module item id of the module item assignment_title: type: string example: Assignment 9 description: The title of the item assignment points_possible: type: number example: 10.0 description: The points of the item assignment_link: type: string example: /courses/105/modules/items/264 description: The link of the item assignment position: type: integer example: 5 description: the current position of the module item module_item_type: type: string example: Assignment description: The module item type of the item assignment published: type: boolean example: true description: published boolean value for course pace Progress__course_pace: type: object properties: id: type: integer example: 1 description: the ID of the Progress object context_id: type: integer example: 1 description: the context owning the job. context_type: type: string example: Account user_id: type: integer example: 123 description: the id of the user who started the job tag: type: string example: course_batch_update description: the type of operation completion: type: integer example: 100 description: percent completed workflow_state: type: string example: completed description: the state of the job one of 'queued', 'running', 'completed', 'failed' created_at: type: string format: date-time example: '2013-01-15T15:00:00Z' description: the time the job was created updated_at: type: string format: date-time example: '2013-01-15T15:04:00Z' description: the time the job was last updated message: type: string example: 17 courses processed description: optional details about the job results: type: object additionalProperties: true example: id: '123' description: optional results of the job. omitted when job is still pending url: type: string example: https://canvas.example.edu/api/v1/progress/1 description: url where a progress update can be retrieved CourseQuizExtension: type: object properties: user_id: type: integer format: int64 example: 3 description: The ID of the Student that needs the quiz extension. extra_attempts: type: integer format: int64 example: 1 description: Number of times the student is allowed to re-take the quiz over the multiple-attempt limit. extra_time: type: integer format: int64 example: 60 description: Amount of extra time allowed for the quiz submission, in minutes. manually_unlocked: type: boolean example: true description: The student can take the quiz even if it's locked for everyone else end_at: type: string example: '2013-11-07T13:16:18Z' description: The time at which the quiz submission will be overdue, and be flagged as a late submission. required: - user_id Report__course_reports: type: object properties: id: type: integer example: '1' description: The unique identifier for the report. file_url: type: string example: https://example.com/some/path description: The url to the report download. attachment: type: string description: The attachment api object of the report. Only available after the report has completed. status: type: string example: complete description: The status of the report created_at: type: string format: date-time example: '2013-12-01T23:59:00-06:00' description: The date and time the report was created. started_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date and time the report started processing. ended_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date and time the report finished processing. parameters: type: string example: course_id: 2 start_at: '2012-07-13T10:55:20-06:00' end_at: '2012-07-13T10:55:20-06:00' description: The report parameters progress: type: integer example: '100' description: The progress of the report ReportParameters__course_reports: type: object properties: {} description: The parameters returned will vary for each report. Term: type: object properties: id: type: integer example: 1 name: type: string example: Default Term start_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' end_at: type: string format: date-time CourseProgress: type: object properties: requirement_count: type: integer example: 10 description: total number of requirements from all modules requirement_completed_count: type: integer example: 1 description: total number of requirements the user has completed from all modules next_requirement_url: type: string example: http://localhost/courses/1/modules/items/2 description: url to next module item that has an unmet requirement. null if the user has completed the course or the current module does not require sequential progress completed_at: type: string format: date-time example: '2013-06-01T00:00:00-06:00' description: date the course was completed. null if the course has not been completed by this user Course: type: object properties: id: type: integer example: 370663 description: the unique identifier for the course sis_course_id: type: string description: the SIS identifier for the course, if defined. This field is only included if the user has permission to view SIS information. uuid: type: string example: WvAHhY5FINzq5IyRIJybGeiXyFkG3SqHUPb7jZY5 description: the UUID of the course integration_id: type: string description: the integration identifier for the course, if defined. This field is only included if the user has permission to view SIS information. sis_import_id: type: integer example: 34 description: the unique identifier for the SIS import. This field is only included if the user has permission to manage SIS information. name: type: string example: InstructureCon 2012 description: the full name of the course. If the requesting user has set a nickname for the course, the nickname will be shown here. course_code: type: string example: INSTCON12 description: the course code original_name: type: string example: InstructureCon-2012-01 description: the actual course name. This field is returned only if the requesting user has set a nickname for the course. workflow_state: type: string example: available description: 'the current state of the course, also known as ‘status’. The value will be one of the following values: ''unpublished'', ''available'', ''completed'', or ''deleted''. NOTE: When fetching a singular course that has a ''deleted'' workflow state value, an error will be returned with a message of ''The specified resource does not exist.''' account_id: type: integer example: 81259 description: the account associated with the course root_account_id: type: integer example: 81259 description: the root account associated with the course enrollment_term_id: type: integer example: 34 description: the enrollment term associated with the course grading_periods: type: array items: type: string x-canvas-declared-type: GradingPeriod description: A list of grading periods associated with the course grading_standard_id: type: integer example: 25 description: the grading standard associated with the course grade_passback_setting: type: string example: nightly_sync description: the grade_passback_setting set on the course created_at: type: string format: date-time example: '2012-05-01T00:00:00-06:00' description: the date the course was created. start_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: the start date for the course, if applicable end_at: type: string format: date-time example: '2012-09-01T00:00:00-06:00' description: the end date for the course, if applicable locale: type: string example: en description: the course-set locale, if applicable enrollments: type: array items: type: string x-canvas-declared-type: Enrollment description: A list of enrollments linking the current user to the course. for student enrollments, grading information may be included if include[]=total_scores total_students: type: integer example: 32 description: 'optional: the total number of active and invited students in the course' calendar: type: string description: course calendar default_view: type: string example: feed description: 'the type of page that users will see when they first visit the course - ''feed'': Recent Activity Dashboard - ''wiki'': Wiki Front Page - ''modules'': Course Modules/Sections Page - ''assignments'': Course Assignments List - ''syllabus'': Course Syllabus Page other types may be added in the future' syllabus_body: type: string example:

syllabus html goes here

description: 'optional: user-generated HTML for the course syllabus' needs_grading_count: type: integer example: 17 description: 'optional: the number of submissions needing grading returned only if the current user has grading rights and include[]=needs_grading_count' term: type: string description: 'optional: the enrollment term object for the course returned only if include[]=term' course_progress: type: string description: 'optional: information on progress through the course returned only if include[]=course_progress' apply_assignment_group_weights: type: boolean example: true description: weight final grade based on assignment group percentages permissions: type: object additionalProperties: true example: create_discussion_topic: true create_announcement: true description: 'optional: the permissions the user has for the course. returned only for a single course and include[]=permissions' is_public: type: boolean example: true is_public_to_auth_users: type: boolean example: true public_syllabus: type: boolean example: true public_syllabus_to_auth: type: boolean example: true public_description: type: string example: Come one, come all to InstructureCon 2012! description: 'optional: the public description of the course' storage_quota_mb: type: integer example: 5 storage_quota_used_mb: type: number example: 5 hide_final_grades: type: boolean example: false license: type: string example: Creative Commons allow_student_assignment_edits: type: boolean example: false allow_wiki_comments: type: boolean example: false allow_student_forum_attachments: type: boolean example: false open_enrollment: type: boolean example: true self_enrollment: type: boolean example: false restrict_enrollments_to_course_dates: type: boolean example: false course_format: type: string example: online access_restricted_by_date: type: boolean example: false description: 'optional: this will be true if this user is currently prevented from viewing the course because of date restriction settings' time_zone: type: string example: America/Denver description: The course's IANA time zone name. blueprint: type: boolean example: true description: 'optional: whether the course is set as a Blueprint Course (blueprint fields require the Blueprint Courses feature)' blueprint_restrictions: type: object additionalProperties: true example: content: true points: true due_dates: false availability_dates: false description: 'optional: Set of restrictions applied to all locked course objects' blueprint_restrictions_by_object_type: type: object additionalProperties: true example: assignment: content: true points: true wiki_page: content: true description: 'optional: Sets of restrictions differentiated by object type applied to locked course objects' template: type: boolean example: true description: 'optional: whether the course is set as a template (requires the Course Templates feature)' CalendarLink: type: object properties: ics: type: string example: https://canvas.instructure.com/feeds/calendars/course_abcdef.ics description: The URL of the calendar in ICS format CustomColumn: type: object properties: id: type: integer example: 2 description: The ID of the custom gradebook column teacher_notes: type: boolean example: false description: When true, this column's visibility will be toggled in the Gradebook when a user selects to show or hide notes title: type: string example: Stuff description: header text position: type: integer example: 1 description: column order hidden: type: boolean example: false description: won't be displayed if hidden is true read_only: type: boolean example: true description: won't be editable in the gradebook UI ColumnDatum: type: object properties: content: type: string example: Nut allergy user_id: type: integer example: 2 description: ColumnDatum objects contain the entry for a column for each user. DeveloperKeyAccountBinding: type: object properties: id: type: number example: '1' description: The Canvas ID of the binding account_id: type: number example: '10000000000001' description: The global Canvas ID of the account in the binding developer_key_id: type: number example: '10000000000008' description: The global Canvas ID of the developer key in the binding workflow_state: type: number example: 'on' description: The workflow state of the binding. Will be one of 'on', 'off', or 'allow.' account_owns_binding: type: boolean example: 'true' description: True if the requested context owns the binding DeveloperKey: type: object properties: id: type: integer example: 1 description: The Canvas ID of the DeveloperKey object name: type: string example: Test Key description: The display name created_at: type: string format: date-time example: '2025-05-30T17:09:18Z' description: Timestamp of the key's creation updated_at: type: string format: date-time example: '2025-05-30T17:09:18Z' description: Timestamp of the key's last update workflow_state: type: string example: active description: The state of the key enum: - active - deleted is_lti_key: type: boolean example: false description: True if key represents an LTI 1.3 Registration. False for Canvas API keys email: type: string example: test@example.com description: Contact email configured for key icon_url: type: string example: https://example.com/icon.png description: URL for a small icon to display in key list notes: type: string example: this key is for testing description: User-provided notes about key vendor_code: type: string example: Google description: User-specified code representing the vendor that uses the key account_name: type: string example: Test Account description: The name of the account that owns the key visible: type: boolean example: true description: True for all keys except Site Admin-level keys, which default to false. Controls visibility in the Inherited tab. scopes: type: array items: type: string example: - url:GET|/api/v1/accounts description: List of API endpoints key is allowed to access (API keys), or LTI 1.3 scopes (LTI keys) redirect_uri: type: string example: 'no' description: Deprecated in favor of redirect_uris. Do not use. redirect_uris: type: array items: type: string example: - https://mytool.com/oauth2/redirect - https://mytool.com/1_3/launch description: List of URLs used during OAuth2 flow to validate given redirect URI (API keys), or to redirect to after login (LTI keys) all_redirect_uris: type: array items: type: object additionalProperties: true example: - redirect_uri: https://mytool.com/redirect last_used_at: '2024-01-15T12:00:00Z' workflow_state: active description: All redirect URIs associated with the key, including any that have been automatically deactivated due to inactivity, along with their last-used timestamp and workflow_state (one of 'active' or 'inactive') access_token_count: type: integer example: '42' description: (API keys only) The number of active access tokens associated with the key last_used_at: type: string format: date-time example: '2025-05-30T17:09:18Z' description: (API keys only) The last time an access token for this key was used in an API request test_cluster_only: type: boolean example: false description: (API keys only) If true, key is only usable in non-production environments (test, beta). Avoids problems with beta refresh. allow_includes: type: boolean example: true description: (API keys only) If true, allows `includes` parameters in API requests that match the scopes of this key require_scopes: type: boolean example: false description: (API keys only) If true, then token requests with this key must include scopes client_credentials_audience: type: string example: external description: (API keys only) Used in OAuth2 client credentials flow to specify the audience for the access token allowed_audiences: type: array items: type: string example: - cedar-api-production.us-east-1.temp.prod.inseng.io description: (API keys only) The registered audiences this key may request tokens for. Each value must appear in the environment's configured list of registered audiences. authorized_flows: type: array items: type: string example: - token_exchange description: '(API keys only) Additional OAuth2 flows this key is authorized to use. Allowed values: token_exchange, service_user_client_credentials.' client_type: type: string example: confidential description: '(API keys only) Whether this is a confidential or public client. Public clients (SPAs, mobile apps) require PKCE, cannot use client_credentials, and receive short-lived rotating tokens. Allowed values: confidential, public. Defaults to confidential. Immutable after creation.' api_key: type: string example: sd45fg64.... description: (API keys only) The client secret used in the OAuth authorization_code flow. tool_configuration: type: string example: type: Lti::ToolConfiguration description: (LTI keys only) The Canvas-style tool configuration for this key. public_jwk: type: object additionalProperties: true example: e: AQAB etc: etc description: (LTI keys only) The tool's public JWK in JSON format. Discouraged in favor of a url hosting a JWK set. public_jwk_url: type: string example: https://mytool.com/1_3/jwks description: (LTI keys only) The tool-hosted URL containing its public JWK keyset. Canvas may cache JWKs up to 5 minutes. lti_registration: type: object additionalProperties: true example: type: TODO Lti::IMS::Registration description: (LTI keys only) The LTI IMS Registration object for this key, if key was created via Dynamic Registration. is_lti_registration: type: boolean example: false description: (LTI keys only) Returns true if key was created via Dynamic Registration. user_name: type: string example: '' description: Unused. user_id: type: string example: '' description: Unused. unified_tool_id: type: string example: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 description: Correlates an API key to a product configuration. description: a Canvas API key (or LTI 1.3 registration) DiscoveryPage: type: object properties: primary: type: array items: $ref: '#/components/schemas/DiscoveryPageEntry' description: Primary authentication provider buttons displayed prominently secondary: type: array items: $ref: '#/components/schemas/DiscoveryPageEntry' description: Secondary authentication provider buttons displayed less prominently active: type: boolean description: Whether the discovery page is enabled description: Configuration for the login discovery page DiscoveryPageEntry: type: object properties: authentication_provider_id: type: integer example: 1 description: The ID of the authentication provider label: type: string example: Students description: The display label for this provider button icon: type: string example: google description: Icon key for this provider button enum: - apple - auth0 - classlink - default - facebook - github - google - linkedin - microsoft - okta - onelogin - ping description: A single authentication provider entry on the discovery page FileAttachment: type: object properties: content-type: type: string example: unknown/unknown url: type: string example: http://www.example.com/courses/1/files/1/download filename: type: string example: content.txt display_name: type: string example: content.txt description: A file attachment DiscussionTopic: type: object properties: id: type: integer example: 1 description: The ID of this topic. title: type: string example: Topic 1 description: The topic title. message: type: string example:

content here

description: The HTML content of the message body. html_url: type: string example: https:///courses/1/discussion_topics/2 description: The URL to the discussion topic in canvas. posted_at: type: string format: date-time example: '2037-07-21T13:29:31Z' description: The datetime the topic was posted. If it is null it hasn't been posted yet. (see delayed_post_at) last_reply_at: type: string format: date-time example: '2037-07-28T19:38:31Z' description: The datetime for when the last reply was in the topic. require_initial_post: type: boolean example: false description: If true then a user may not respond to other replies until that user has made an initial reply. Defaults to false. user_can_see_posts: type: boolean example: true description: Whether or not posts in this topic are visible to the user. discussion_subentry_count: type: integer example: 0 description: The count of entries in the topic. read_state: type: string example: read description: The read_state of the topic for the current user, 'read' or 'unread'. unread_count: type: integer example: 0 description: The count of unread entries of this topic for the current user. subscribed: type: boolean example: true description: Whether or not the current user is subscribed to this topic. subscription_hold: type: string example: not_in_group_set description: '(Optional) Why the user cannot subscribe to this topic. Only one reason will be returned even if multiple apply. Can be one of: ''initial_post_required'': The user must post a reply first; ''not_in_group_set'': The user is not in the group set for this graded group discussion; ''not_in_group'': The user is not in this topic''s group; ''topic_is_announcement'': This topic is an announcement' assignment_id: type: integer description: The unique identifier of the assignment if the topic is for grading, otherwise null. delayed_post_at: type: string format: date-time description: The datetime to publish the topic (if not right away). published: type: boolean example: true description: Whether this discussion topic is published (true) or draft state (false) lock_at: type: string format: date-time description: The datetime to lock the topic (if ever). locked: type: boolean example: false description: Whether or not the discussion is 'closed for comments'. pinned: type: boolean example: false description: Whether or not the discussion has been 'pinned' by an instructor locked_for_user: type: boolean example: true description: Whether or not this is locked for the user. lock_info: type: string description: (Optional) Information for the user about the lock. Present when locked_for_user is true. lock_explanation: type: string example: This discussion is locked until September 1 at 12:00am description: (Optional) An explanation of why this is locked for the user. Present when locked_for_user is true. user_name: type: string example: User Name description: The username of the topic creator. topic_children: type: array items: type: integer example: - 5 - 7 - 10 description: DEPRECATED An array of topic_ids for the group discussions the user is a part of. group_topic_children: type: array items: type: object additionalProperties: true example: - id: 5 group_id: 1 - id: 7 group_id: 5 - id: 10 group_id: 4 description: 'An array of group discussions the user is a part of. Fields include: id, group_id' root_topic_id: type: integer description: If the topic is for grading and a group assignment this will point to the original topic in the course. podcast_url: type: string example: /feeds/topics/1/enrollment_1XAcepje4u228rt4mi7Z1oFbRpn3RAkTzuXIGOPe.rss description: If the topic is a podcast topic this is the feed url for the current user. discussion_type: type: string example: side_comment description: The type of discussion. Values are 'side_comment' or 'not_threaded', for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions. group_category_id: type: integer description: The unique identifier of the group category if the topic is a group discussion, otherwise null. attachments: type: array items: $ref: '#/components/schemas/FileAttachment' description: Array of file attachments. permissions: type: object additionalProperties: true example: attach: true description: The current user's permissions on this topic. allow_rating: type: boolean example: true description: Whether or not users can rate entries in this topic. only_graders_can_rate: type: boolean example: true description: Whether or not grade permissions are required to rate entries. sort_by_rating: type: boolean example: true description: DEPRECATED, Whether or not entries should be sorted by rating. sort_order: type: string example: asc description: How entries should be sorted by default. sort_order_locked: type: boolean example: true description: Can users decide their preferred sort order. expand: type: boolean example: true description: Threaded replies should be expanded by default. expand_locked: type: boolean example: true description: Can users decide their preferred thread expand setting. description: A discussion topic ePortfolio: type: object properties: id: type: integer example: 1 description: The database ID of the ePortfolio user_id: type: integer example: 1 description: The user ID to which the ePortfolio belongs name: type: string example: My Academic Journey description: The name of the ePortfolio public: type: boolean example: true description: Whether or not the ePortfolio is visible without authentication created_at: type: string format: date-time example: '2021-09-20T18:59:37Z' description: The creation timestamp for the ePortfolio updated_at: type: string format: date-time example: '2021-09-20T18:59:37Z' description: The timestamp of the last time any of the ePortfolio attributes changed workflow_state: type: string example: active description: The state of the ePortfolio. Either 'active' or 'deleted' deleted_at: type: string format: date-time example: '2021-09-20T18:59:37Z' description: The timestamp when the ePortfolio was deleted, or else null spam_status: type: string description: |- A flag indicating whether the ePortfolio has been flagged or moderated as spam. One of 'flagged_as_possible_spam', 'marked_as_safe', 'marked_as_spam', or null ePortfolioPage: type: object properties: id: type: integer example: 1 description: The database ID of the ePortfolio eportfolio_id: type: integer example: 1 description: The ePortfolio ID to which the entry belongs position: type: integer example: 1 description: The positional order of the entry in the list name: type: string example: My Academic Journey description: The name of the ePortfolio content: type: string example: A long time ago... description: The user entered content of the entry created_at: type: string format: date-time example: '2021-09-20T18:59:37Z' description: The creation timestamp for the ePortfolio updated_at: type: string format: date-time example: '2021-09-20T18:59:37Z' description: The timestamp of the last time any of the ePortfolio attributes changed CourseEpubExport: type: object properties: id: type: integer example: 101 description: the unique identifier for the course name: type: string example: Maths 101 description: the name for the course epub_export: type: string description: ePub export API object description: Combination of a Course & EpubExport. EpubExport: type: object properties: id: type: integer example: 101 description: the unique identifier for the export created_at: type: string format: date-time example: '2014-01-01T00:00:00Z' description: the date and time this export was requested attachment: type: string example: url: https://example.com/api/v1/attachments/789?download_frd=1 description: attachment api object for the export ePub (not present until the export completes) progress_url: type: string example: https://example.com/api/v1/progress/4 description: The api endpoint for polling the current progress user_id: type: integer example: 4 description: The ID of the user who started the export workflow_state: type: string example: exported description: 'Current state of the ePub export: created exporting exported generating generated failed' EnrollmentTerm: type: object properties: id: type: integer example: '1' description: The unique identifier for the enrollment term. sis_term_id: type: string example: Sp2014 description: The SIS id of the term. Only included if the user has permission to view SIS information. sis_import_id: type: integer example: 34 description: the unique identifier for the SIS import. This field is only included if the user has permission to manage SIS information. name: type: string example: Spring 2014 description: The name of the term. start_at: type: string format: date-time example: '2014-01-06T08:00:00-05:00' description: The datetime of the start of the term. end_at: type: string format: date-time example: '2014-05-16T05:00:00-04:00' description: The datetime of the end of the term. workflow_state: type: string example: active description: The state of the term. Can be 'active' or 'deleted'. overrides: type: object additionalProperties: true example: StudentEnrollment: start_at: '2014-01-07T08:00:00-05:00' end_at: 2014-05-14T05:00:00-04:0 description: Term date overrides for specific enrollment types course_count: type: integer example: '80' description: The number of courses in the term (available via include) EnrollmentTermsList: type: object properties: enrollment_terms: type: array items: $ref: '#/components/schemas/EnrollmentTerm' example: [] description: a paginated list of all terms in the account Grade__enrollments: type: object properties: html_url: type: string example: '' description: The URL to the Canvas web UI page for the user's grades, if this is a student enrollment. current_grade: type: string example: '' description: The user's current grade in the class. Only included if user has permissions to view this grade. final_grade: type: string example: '' description: The user's final grade for the class. Only included if user has permissions to view this grade. current_score: type: string example: '' description: The user's current score in the class. Only included if user has permissions to view this score. final_score: type: string example: '' description: The user's final score for the class. Only included if user has permissions to view this score. current_points: type: integer example: 150 description: The total points the user has earned in the class. Only included if user has permissions to view this score and 'current_points' is passed in the request's 'include' parameter. unposted_current_grade: type: string example: '' description: The user's current grade in the class including muted/unposted assignments. Only included if user has permissions to view this grade, typically teachers, TAs, and admins. unposted_final_grade: type: string example: '' description: The user's final grade for the class including muted/unposted assignments. Only included if user has permissions to view this grade, typically teachers, TAs, and admins.. unposted_current_score: type: string example: '' description: The user's current score in the class including muted/unposted assignments. Only included if user has permissions to view this score, typically teachers, TAs, and admins.. unposted_final_score: type: string example: '' description: The user's final score for the class including muted/unposted assignments. Only included if user has permissions to view this score, typically teachers, TAs, and admins.. unposted_current_points: type: integer example: 150 description: The total points the user has earned in the class, including muted/unposted assignments. Only included if user has permissions to view this score (typically teachers, TAs, and admins) and 'current_points' is passed in the request's 'include' parameter. Enrollment: type: object properties: id: type: integer example: 1 description: The ID of the enrollment. course_id: type: integer example: 1 description: The unique id of the course. sis_course_id: type: string example: SHEL93921 description: The SIS Course ID in which the enrollment is associated. Only displayed if present. This field is only included if the user has permission to view SIS information. course_integration_id: type: string example: SHEL93921 description: The Course Integration ID in which the enrollment is associated. This field is only included if the user has permission to view SIS information. course_section_id: type: integer example: 1 description: The unique id of the user's section. section_integration_id: type: string example: SHEL93921 description: The Section Integration ID in which the enrollment is associated. This field is only included if the user has permission to view SIS information. sis_account_id: type: string example: SHEL93921 description: The SIS Account ID in which the enrollment is associated. Only displayed if present. This field is only included if the user has permission to view SIS information. sis_section_id: type: string example: SHEL93921 description: The SIS Section ID in which the enrollment is associated. Only displayed if present. This field is only included if the user has permission to view SIS information. sis_user_id: type: string example: SHEL93921 description: The SIS User ID in which the enrollment is associated. Only displayed if present. This field is only included if the user has permission to view SIS information. enrollment_state: type: string example: active description: The state of the user's enrollment in the course. limit_privileges_to_course_section: type: boolean example: true description: User can only access his or her own course section. sis_import_id: type: integer example: 83 description: The unique identifier for the SIS import. This field is only included if the user has permission to manage SIS information. root_account_id: type: integer example: 1 description: The unique id of the user's account. type: type: string example: StudentEnrollment description: The enrollment type. One of 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'DesignerEnrollment', 'ObserverEnrollment'. user_id: type: integer example: 1 description: The unique id of the user. associated_user_id: type: integer description: The unique id of the associated user. Will be null unless type is ObserverEnrollment. role: type: string example: StudentEnrollment description: The enrollment role, for course-level permissions. This field will match `type` if the enrollment role has not been customized. role_id: type: integer example: 1 description: The id of the enrollment role. created_at: type: string format: date-time example: '2012-04-18T23:08:51Z' description: The created time of the enrollment, in ISO8601 format. updated_at: type: string format: date-time example: '2012-04-18T23:08:51Z' description: The updated time of the enrollment, in ISO8601 format. start_at: type: string format: date-time example: '2012-04-18T23:08:51Z' description: The start time of the enrollment, in ISO8601 format. end_at: type: string format: date-time example: '2012-04-18T23:08:51Z' description: The end time of the enrollment, in ISO8601 format. last_activity_at: type: string format: date-time example: '2012-04-18T23:08:51Z' description: The last activity time of the user for the enrollment, in ISO8601 format. last_attended_at: type: string format: date-time example: '2012-04-18T23:08:51Z' description: The last attended date of the user for the enrollment in a course, in ISO8601 format. total_activity_time: type: integer example: 260 description: The total activity time of the user for the enrollment, in seconds. html_url: type: string example: https://... description: The URL to the Canvas web UI page for this course enrollment. grades: type: string example: html_url: https://... current_score: 35 current_grade: null final_score: 6.67 final_grade: null description: The URL to the Canvas web UI page containing the grades associated with this enrollment. user: type: string example: id: 3 name: Student 1 sortable_name: 1, Student short_name: Stud 1 description: A description of the user. override_grade: type: string example: A description: The user's override grade for the course. override_score: type: number example: 99.99 description: The user's override score for the course. unposted_current_grade: type: string example: '' description: The user's current grade in the class including muted/unposted assignments. Only included if user has permissions to view this grade, typically teachers, TAs, and admins. unposted_final_grade: type: string example: '' description: The user's final grade for the class including muted/unposted assignments. Only included if user has permissions to view this grade, typically teachers, TAs, and admins.. unposted_current_score: type: string example: '' description: The user's current score in the class including muted/unposted assignments. Only included if user has permissions to view this score, typically teachers, TAs, and admins.. unposted_final_score: type: string example: '' description: The user's final score for the class including muted/unposted assignments. Only included if user has permissions to view this score, typically teachers, TAs, and admins.. has_grading_periods: type: boolean example: true description: 'optional: Indicates whether the course the enrollment belongs to has grading periods set up. (applies only to student enrollments, and only available in course endpoints)' totals_for_all_grading_periods_option: type: boolean example: true description: 'optional: Indicates whether the course the enrollment belongs to has the Display Totals for ''All Grading Periods'' feature enabled. (applies only to student enrollments, and only available in course endpoints)' current_grading_period_title: type: string example: Fall Grading Period description: 'optional: The name of the currently active grading period, if one exists. If the course the enrollment belongs to does not have grading periods, or if no currently active grading period exists, the value will be null. (applies only to student enrollments, and only available in course endpoints)' current_grading_period_id: type: integer example: 5 description: 'optional: The id of the currently active grading period, if one exists. If the course the enrollment belongs to does not have grading periods, or if no currently active grading period exists, the value will be null. (applies only to student enrollments, and only available in course endpoints)' current_period_override_grade: type: string example: A description: The user's override grade for the current grading period. current_period_override_score: type: number example: 99.99 description: The user's override score for the current grading period. current_period_unposted_current_score: type: number example: 95.8 description: 'optional: The student''s score in the course for the current grading period, including muted/unposted assignments. Only included if user has permission to view this score, typically teachers, TAs, and admins. If the course the enrollment belongs to does not have grading periods, or if no currently active grading period exists, the value will be null. (applies only to student enrollments, and only available in course endpoints)' current_period_unposted_final_score: type: number example: 85.25 description: 'optional: The student''s score in the course for the current grading period, including muted/unposted assignments and including ungraded assignments with a score of 0. Only included if user has permission to view this score, typically teachers, TAs, and admins. If the course the enrollment belongs to does not have grading periods, or if no currently active grading period exists, the value will be null. (applies only to student enrollments, and only available in course endpoints)' current_period_unposted_current_grade: type: string example: A description: 'optional: The letter grade equivalent of current_period_unposted_current_score, if available. Only included if user has permission to view this grade, typically teachers, TAs, and admins. If the course the enrollment belongs to does not have grading periods, or if no currently active grading period exists, the value will be null. (applies only to student enrollments, and only available in course endpoints)' current_period_unposted_final_grade: type: string example: B description: 'optional: The letter grade equivalent of current_period_unposted_final_score, if available. Only included if user has permission to view this grade, typically teachers, TAs, and admins. If the course the enrollment belongs to does not have grading periods, or if no currently active grading period exists, the value will be null. (applies only to student enrollments, and only available in course endpoints)' ErrorReport: type: object properties: subject: type: string example: File upload breaking description: The users problem summary, like an email subject line comments: type: string example: When I went to upload a .mov file to my files page, I got an error. Retrying didn't help, other file types seem ok description: long form documentation of what was witnessed user_perceived_severity: type: string example: just_a_comment description: categorization of how bad the user thinks the problem is. Should be one of [just_a_comment, not_urgent, workaround_possible, blocks_what_i_need_to_do, extreme_critical_emergency]. email: type: string example: name@example.com description: the email address of the reporting user url: type: string example: https://canvas.instructure.com/courses/1 description: URL of the page on which the error was reported context_asset_string: type: string example: user_1 description: string describing the asset being interacted with at the time of error. Formatted '[type]_[id]' user_roles: type: string example: user,teacher,admin description: comma seperated list of roles the reporting user holds. Can be one [student], or many [teacher,admin] description: A collection of information around a specific notification of a problem ContextExternalTool: type: object properties: id: type: integer example: 37 description: The unique identifier for the external tool name: type: string example: Basic 1.1 tool description: The name of the external tool description: type: string example: Basic LTI 1.1 Tool description: A description of the external tool url: type: string example: http://example.com/launch description: The launch URL for the external tool domain: type: string example: example.com description: The domain to match links against. Note that this doesn't contain the protocol. consumer_key: type: string example: key description: The consumer key used by the tool (The associated shared secret is not returned) created_at: type: string example: '2037-07-21T13:29:31Z' description: Timestamp of the tool's creation updated_at: type: string example: '2037-07-28T19:38:31Z' description: Timestamp of the tool's last update privacy_level: type: string example: anonymous description: How much user information to send to the external tool enum: - anonymous - name_only - email_only - public custom_fields: type: object additionalProperties: true example: key: value description: Custom fields that will be sent to the tool consumer workflow_state: type: string example: public description: The current state of the external tool enum: - public - anonymous - deleted is_rce_favorite: type: boolean example: false description: Boolean determining whether this tool should be in a preferred location in the RCE. Only present if the tool can be an RCE favorite. is_top_nav_favorite: type: boolean example: false description: Boolean determining whether this tool should have a dedicated button in Top Navigation. Only present if the tool can be a top nav favorite. selection_width: type: integer example: 500 description: The pixel width of the iFrame that the tool will be rendered in selection_height: type: integer example: 500 description: The pixel height of the iFrame that the tool will be rendered in icon_url: type: string example: https://example.com/icon.png description: The URL for the tool icon not_selectable: type: boolean example: false description: Whether the tool is not selectable from assignment and modules version: type: string example: '1.1' description: The LTI version of the tool enum: - '1.1' - '1.3' unified_tool_id: type: string description: The unique identifier for the tool in LearnPlatform developer_key_id: type: integer example: 123 description: The developer key id associated with this tool. Only present for LTI 1.3 tools. lti_registration_id: type: integer example: 456 description: The LTI registration id associated with this tool. Only present for LTI 1.3 tools. deployment_id: type: string example: 37:b82229c6e10bcb87beb1f1b287faee560ddc3109 description: The unique identifier for the deployment of the tool allow_membership_service_access: type: boolean example: false description: Whether the tool can access the membership service. Only present if the feature is enabled. prefer_sis_email: type: boolean example: false description: Whether to send the SIS email address in launches estimated_duration: type: string description: The estimated duration for completing this tool. Only present for horizon courses when the tool has an estimated duration. account_navigation: type: string example: type: ContextExternalToolPlacement description: Configuration for account navigation placement. Null if not configured for this placement. analytics_hub: type: string example: type: ContextExternalToolPlacement description: Configuration for analytics hub placement. Null if not configured for this placement. assignment_edit: type: string example: type: ContextExternalToolPlacement description: Configuration for assignment edit placement. Null if not configured for this placement. assignment_group_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for assignment group menu placement. Null if not configured for this placement. assignment_index_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for assignment index menu placement. Null if not configured for this placement. assignment_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for assignment menu placement. Null if not configured for this placement. assignment_selection: type: string example: type: ContextExternalToolPlacement description: Configuration for assignment selection placement. Null if not configured for this placement. assignment_view: type: string example: type: ContextExternalToolPlacement description: Configuration for assignment view placement. Null if not configured for this placement. collaboration: type: string example: type: ContextExternalToolPlacement description: Configuration for collaboration placement. Null if not configured for this placement. conference_selection: type: string example: type: ContextExternalToolPlacement description: Configuration for conference selection placement. Null if not configured for this placement. course_assignments_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for course assignments menu placement. Null if not configured for this placement. course_home_sub_navigation: type: string example: type: ContextExternalToolPlacement description: Configuration for course home sub navigation placement. Null if not configured for this placement. course_navigation: type: string example: type: ContextExternalToolPlacement description: Configuration for course navigation placement. Null if not configured for this placement. course_settings_sub_navigation: type: string example: type: ContextExternalToolPlacement description: Configuration for course settings sub navigation placement. Null if not configured for this placement. discussion_topic_index_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for discussion topic index menu placement. Null if not configured for this placement. discussion_topic_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for discussion topic menu placement. Null if not configured for this placement. editor_button: type: string example: type: ContextExternalToolPlacement description: Configuration for editor button placement. Null if not configured for this placement. file_index_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for file index menu placement. Null if not configured for this placement. file_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for file menu placement. Null if not configured for this placement. global_navigation: type: string example: type: ContextExternalToolPlacement description: Configuration for global navigation placement. Null if not configured for this placement. homework_submission: type: string example: type: ContextExternalToolPlacement description: Configuration for homework submission placement. Null if not configured for this placement. link_selection: type: string example: type: ContextExternalToolPlacement description: Configuration for link selection placement. Null if not configured for this placement. migration_selection: type: string example: type: ContextExternalToolPlacement description: Configuration for migration selection placement. Null if not configured for this placement. module_group_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for module group menu placement. Null if not configured for this placement. module_index_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for module index menu placement. Null if not configured for this placement. module_index_menu_modal: type: string example: type: ContextExternalToolPlacement description: Configuration for module index menu modal placement. Null if not configured for this placement. module_menu_modal: type: string example: type: ContextExternalToolPlacement description: Configuration for module menu modal placement. Null if not configured for this placement. module_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for module menu placement. Null if not configured for this placement. page_index_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for page index menu placement. Null if not configured for this placement. page_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for page menu placement. Null if not configured for this placement. post_grades: type: string example: type: ContextExternalToolPlacement description: Configuration for post grades (sync grades) placement. Null if not configured for this placement. quiz_index_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for quiz index menu placement. Null if not configured for this placement. quiz_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for quiz menu placement. Null if not configured for this placement. resource_selection: type: string example: type: ContextExternalToolPlacement description: Configuration for resource selection placement. Null if not configured for this placement. This placement is deprecated. similarity_detection: type: string example: type: ContextExternalToolPlacement description: Configuration for similarity detection placement. Null if not configured for this placement. student_context_card: type: string example: type: ContextExternalToolPlacement description: Configuration for student context card placement. Null if not configured for this placement. submission_type_selection: type: string example: type: ContextExternalToolPlacement description: Configuration for submission type selection placement. Null if not configured for this placement. tool_configuration: type: string example: type: ContextExternalToolPlacement description: Configuration for tool configuration placement. Null if not configured for this placement. top_navigation: type: string example: type: ContextExternalToolPlacement description: Configuration for top navigation placement. Null if not configured for this placement. user_navigation: type: string example: type: ContextExternalToolPlacement description: Configuration for user navigation placement. Null if not configured for this placement. wiki_index_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for wiki index menu placement. Null if not configured for this placement. wiki_page_menu: type: string example: type: ContextExternalToolPlacement description: Configuration for wiki page menu placement. Null if not configured for this placement. ActivityAssetProcessor: type: string example: type: ContextExternalToolPlacement description: Configuration for activity asset processor placement. Null if not configured for this placement. ActivityAssetProcessorContribution: type: string example: type: ContextExternalToolPlacement description: Configuration for activity asset processor contribution placement. Null if not configured for this placement. message_settings: type: array items: $ref: '#/components/schemas/ContextExternalToolMessageSettings' example: - type: LtiEulaRequest enabled: true target_link_uri: https://example.com/eula custom_fields: agreement_version: '2.1' description: Configuration for placementless message types (currently only LtiEulaRequest). description: An external tool configured for a specific context ContextExternalToolPlacement: type: object properties: enabled: type: boolean example: true description: Whether this placement is enabled url: type: string example: http://example.com/launch?placement=course_navigation description: The launch URL for this specific placement. Overrides the tool's default URL. For LTI 1.1 tools only. target_link_uri: type: string example: http://example.com/launch?placement=course_navigation description: The launch URL for this specific placement. Overrides the tool's default target_link_uri. For LTI 1.3 tools only. text: type: string example: Course Navigation Tool description: The text/label to display for this placement. Overridable by 'labels' in placement configuration. label: type: string example: Course Navigation Tool description: The localized label for this placement. This is the resolved text after applying internationalization. labels: type: object additionalProperties: true example: en: Course Navigation es: Navegación del Curso description: Internationalization labels for this placement. Keys are locale codes, values are localized text. message_type: type: string example: LtiResourceLinkRequest description: The LTI message type for this placement. Not all placements support all message types. enum: - basic_lti_request - ContentItemSelectionRequest - LtiResourceLinkRequest - LtiDeepLinkingRequest selection_width: type: integer example: 500 description: The width of the iframe or popup for this placement selection_height: type: integer example: 500 description: The height of the iframe or popup for this placement launch_width: type: integer example: 800 description: The width of the launch window. Not standard everywhere yet. launch_height: type: integer example: 600 description: The height of the launch window. Not standard everywhere yet. icon_url: type: string example: https://example.com/icon.png description: The URL of the icon for this placement canvas_icon_class: type: string example: icon-lti description: The Canvas icon class to use for this placement instead of an icon URL allow_fullscreen: type: boolean example: true description: Whether to allow fullscreen mode for this placement (top_navigation placement only) custom_fields: type: object additionalProperties: true example: placement_id: course_nav special_param: value description: Custom fields to be sent with this placement's launch. Merged with tool-level custom fields. visibility: type: string example: members description: Controls who can see this placement enum: - public - members - admins required_permissions: type: string example: manage_course_content_edit,manage_course_content_read description: Comma-separated list of Canvas permissions required to launch from this placement. The user must have all permissions in order to launch the tool. default: type: string example: disabled description: Default display state for navigation placements. Only applies to account_navigation and course_navigation placements. enum: - enabled - disabled display_type: type: string example: full_width_in_context description: The layout type to use when launching the tool. For global_navigation and analytics_hub, defaults to 'full_width'. enum: - default - full_width - full_width_in_context - full_width_with_nav - in_nav_context - borderless windowTarget: type: string example: _blank description: When set to '_blank', opens placement in a new tab. Only '_blank' is supported. enum: - _blank accept_media_types: type: string example: image/*,video/* description: Comma-separated list of media types that the tool can accept. Only valid for file_menu placement. use_tray: type: boolean example: true description: If true, the tool will be launched in the tray. Only used by the editor_button placement. icon_svg_path_64: type: string example: M100,37L70.1,10.5v176H37... description: An SVG path to use instead of an icon_url. Only valid for global_navigation placement. root_account_only: type: boolean example: false description: Whether this placement should only be available at the root account level. Only applies to account_navigation placement. description: type: string example: Submit your work using our external tool description: A description of this placement. Only valid for submission_type_selection placement. Maximum length of 255 characters. require_resource_selection: type: boolean example: true description: Whether resource selection is required for this placement. Only valid for submission_type_selection placement. prefer_sis_email: type: boolean example: false description: If true, the tool will send the SIS email in the lis_person_contact_email_primary launch property. LTI 1.1 only. oauth_compliant: type: boolean example: true description: If true, query parameters from the launch URL will not be copied to the POST body. LTI 1.1 only. description: Configuration for a specific placement of an external tool. If null, no configuration is present. ContextExternalToolMessageSettings: type: object properties: type: type: string example: LtiEulaRequest description: The message type identifier (e.g., 'LtiEulaRequest') enabled: type: boolean example: true description: Whether this message type is enabled target_link_uri: type: string example: https://example.com/eula description: The target URI for launching this message type custom_fields: type: object additionalProperties: true example: key: value description: Custom fields specific to this message type. description: Configuration for a placementless message type (message type that doesn't belong to a specific placement) EstimatedDuration: type: object properties: id: type: integer example: 123 description: The unique identifier for the estimated duration duration: type: string example: PT30M description: The estimated duration in ISO 8601 format created_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of when the estimated duration was created updated_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of when the estimated duration was last updated description: An estimated duration for completing a learning activity Favorite: type: object properties: context_id: type: integer example: 1170 description: The ID of the object the Favorite refers to context_type: type: string example: Course description: The type of the object the Favorite refers to (currently, only 'Course' is supported) required: - '' Feature: type: object properties: feature: type: string example: fancy_wickets description: The symbolic name of the feature, used in FeatureFlags display_name: type: string example: Fancy Wickets description: The user-visible name of the feature applies_to: type: string example: Course description: |- The type of object the feature applies to (SiteAdmin, RootAccount, Account, Course, User, or InheritableUser): * SiteAdmin features may only be controlled by flags on the site admin account. * RootAccount features may only be controlled by flags on root accounts. * Account features may be controlled by flags on accounts and their parent accounts. * Course features may be controlled by flags on courses and their parent accounts. * User features may be controlled by flags on users and site admin only. * InheritableUser features may be controlled by flags on users or on the root account; the root account flag is inherited by all users in that root account. feature_flag: type: string example: feature: fancy_wickets state: allowed description: The FeatureFlag that applies to the caller root_opt_in: type: boolean example: true description: If true, a feature that is 'allowed' globally will be 'off' by default in root accounts. Otherwise, root accounts inherit the global 'allowed' setting, which allows sub-accounts and courses to turn features on with no root account action. beta: type: boolean example: true description: Whether the feature is a feature preview. If true, opting in includes ongoing updates outside the regular release schedule. early_access_program: type: boolean example: false description: Indicates the feature is part of the Early Access Program. autoexpand: type: boolean example: true description: Whether the details of the feature are autoexpanded on page load vs. the user clicking to expand. release_notes_url: type: string example: http://canvas.example.com/release_notes#fancy_wickets description: A URL to the release notes describing the feature FeatureFlag: type: object properties: context_type: type: string example: Account description: The type of object to which this flag applies (Account, Course, or User). (This field is not present if this FeatureFlag represents the global Canvas default) context_id: type: integer example: 1038 description: The id of the object to which this flag applies (This field is not present if this FeatureFlag represents the global Canvas default) feature: type: string example: fancy_wickets description: The feature this flag controls state: type: string example: allowed description: The policy for the feature at this context. can be 'off', 'allowed', 'allowed_on', or 'on'. locked: type: boolean example: false description: If set, this feature flag cannot be changed in the caller's context because the flag is set 'off' or 'on' in a higher context File__files: type: object properties: id: type: integer example: 569 folder_id: type: integer example: 4207 display_name: type: string example: file.txt filename: type: string example: file.txt content-type: type: string example: text/plain url: type: string example: http://www.example.com/files/569/download?download_frd=1 size: type: integer example: 43451 description: file size in bytes created_at: type: string format: date-time example: '2012-07-06T14:58:50Z' updated_at: type: string format: date-time example: '2012-07-06T14:58:50Z' unlock_at: type: string format: date-time example: '2012-07-07T14:58:50Z' locked: type: boolean example: false hidden: type: boolean example: false lock_at: type: string format: date-time example: '2012-07-20T14:58:50Z' hidden_for_user: type: boolean example: false visibility_level: type: string example: course description: Changes who can access the file. Valid options are 'inherit' (the default), 'course', 'institution', and 'public'. Only valid in course endpoints. thumbnail_url: type: string modified_at: type: string format: date-time example: '2012-07-06T14:58:50Z' mime_class: type: string example: html description: simplified content-type mapping media_entry_id: type: string example: m-3z31gfpPf129dD3sSDF85SwSDFnwe description: identifier for file in third-party transcoding service locked_for_user: type: boolean example: false lock_info: type: string lock_explanation: type: string example: This assignment is locked until September 1 at 12:00am preview_url: type: string description: 'optional: url to the document preview. This url is specific to the user making the api call. Only included in submission endpoints.' Folder: type: object properties: context_type: type: string example: Course context_id: type: integer example: 1401 files_count: type: integer example: 0 position: type: integer example: 3 updated_at: type: string format: date-time example: '2012-07-06T14:58:50Z' folders_url: type: string example: https://www.example.com/api/v1/folders/2937/folders files_url: type: string example: https://www.example.com/api/v1/folders/2937/files full_name: type: string example: course files/11folder lock_at: type: string format: date-time example: '2012-07-06T14:58:50Z' id: type: integer example: 2937 folders_count: type: integer example: 0 name: type: string example: 11folder parent_folder_id: type: integer example: 2934 created_at: type: string format: date-time example: '2012-07-06T14:58:50Z' unlock_at: type: string format: date-time hidden: type: boolean example: false hidden_for_user: type: boolean example: false locked: type: boolean example: true locked_for_user: type: boolean example: false for_submissions: type: boolean example: false description: If true, indicates this is a read-only folder containing files submitted to assignments UsageRights: type: object properties: legal_copyright: type: string example: (C) 2014 Incom Corporation Ltd description: Copyright line for the file use_justification: type: string example: creative_commons description: Justification for using the file in a Canvas course. Valid values are 'own_copyright', 'public_domain', 'used_by_permission', 'fair_use', 'creative_commons' license: type: string example: cc_by_sa description: License identifier for the file. license_name: type: string example: CC Attribution Share-Alike description: Readable license name message: type: string example: 4 files updated description: Explanation of the action performed file_ids: type: array items: type: integer example: - 1 - 2 - 3 description: List of ids of files that were updated description: Describes the copyright and license information for a File License: type: object properties: id: type: string example: cc_by_sa description: a short string identifying the license name: type: string example: CC Attribution ShareAlike description: the name of the license url: type: string example: http://creativecommons.org/licenses/by-sa/4.0 description: a link to the license text GradeChangeEventLinks: type: object properties: assignment: type: integer example: 2319 description: ID of the assignment associated with the event course: type: integer example: 2319 description: ID of the course associated with the event. will match the context_id in the associated assignment if the context type for the assignment is a course student: type: integer example: 2319 description: ID of the student associated with the event. will match the user_id in the associated submission. grader: type: integer example: 2319 description: ID of the grader associated with the event. will match the grader_id in the associated submission. page_view: type: string example: e2b76430-27a5-0131-3ca1-48e0eb13f29b description: ID of the page view during the event if it exists. GradeChangeEvent: type: object properties: id: type: string example: e2b76430-27a5-0131-3ca1-48e0eb13f29b description: ID of the event. created_at: type: string format: date-time example: '2012-07-19T15:00:00-06:00' description: timestamp of the event event_type: type: string example: grade_change description: GradeChange event type excused_after: type: boolean example: true description: Boolean indicating whether the submission was excused after the change. excused_before: type: boolean example: false description: Boolean indicating whether the submission was excused before the change. grade_after: type: string example: '8' description: The grade after the change. grade_before: type: string example: '8' description: The grade before the change. graded_anonymously: type: boolean example: true description: Boolean indicating whether the student name was visible when the grade was given. Could be null if the grade change record was created before this feature existed. version_number: type: string example: '1' description: Version Number of the grade change submission. request_id: type: string example: e2b76430-27a5-0131-3ca1-48e0eb13f29b description: The unique request id of the request during the grade change. links: type: string Grader: type: object properties: id: type: integer example: 27 description: the user_id of the user who graded the contained submissions name: type: string example: Some User description: the name of the user who graded the contained submissions assignments: type: array items: type: integer example: - 1 - 2 - 3 description: the assignment groups for all submissions in this response that were graded by this user. The details are not nested inside here, but the fact that an assignment is present here means that the grader did grade submissions for this assignment on the contextual date. You can use the id of a grader and of an assignment to make another API call to find all submissions for a grader/assignment combination on a given date. Day: type: object properties: date: type: string format: date-time example: '1986-08-09' description: the date represented by this entry graders: type: integer example: '[]' description: an array of the graders who were responsible for the submissions in this response. the submissions are grouped according to the person who graded them and the assignment they were submitted for. SubmissionVersion: type: object properties: assignment_id: type: integer example: 22604 description: the id of the assignment this submissions is for assignment_name: type: string example: some assignment description: the name of the assignment this submission is for body: type: string example: text from the submission description: the body text of the submission current_grade: type: string example: '100' description: the most up to date grade for the current version of this submission current_graded_at: type: string format: date-time example: '2013-01-31T18:16:31Z' description: the latest time stamp for the grading of this submission current_grader: type: string example: Grader Name description: the name of the most recent grader for this submission grade_matches_current_submission: type: boolean example: true description: boolean indicating whether the grade is equal to the current submission grade graded_at: type: string format: date-time example: '2013-01-31T18:16:31Z' description: time stamp for the grading of this version of the submission grader: type: string example: Grader Name description: the name of the user who graded this version of the submission grader_id: type: integer example: 67379 description: the user id of the user who graded this version of the submission id: type: integer example: 11607 description: the id of the submission of which this is a version new_grade: type: string example: '100' description: the updated grade provided in this version of the submission new_graded_at: type: string format: date-time example: '2013-01-31T18:16:31Z' description: the timestamp for the grading of this version of the submission (alias for graded_at) new_grader: type: string example: Grader Name description: alias for 'grader' previous_grade: type: string example: '90' description: the grade for the submission version immediately preceding this one previous_graded_at: type: string format: date-time example: '2013-01-29T12:12:12Z' description: the timestamp for the grading of the submission version immediately preceding this one previous_grader: type: string example: Graded on submission description: the name of the grader who graded the version of this submission immediately preceding this one score: type: integer example: 100 description: the score for this version of the submission user_name: type: string example: student@example.com description: the name of the student who created this submission submission_type: type: string example: online description: the type of submission url: type: string description: the url of the submission, if there is one user_id: type: integer example: 67376 description: the user ID of the student who created this submission workflow_state: type: string example: unsubmitted description: the state of the submission at this version description: A SubmissionVersion object contains all the fields that a Submission object does, plus additional fields prefixed with current_* new_* and previous_* described below. SubmissionHistory: type: object properties: submission_id: type: integer example: 4 description: the id of the submission versions: type: array items: $ref: '#/components/schemas/SubmissionVersion' description: an array of all the versions of this submission GradingPeriodSets: type: object properties: title: type: string example: Hello World description: The title of the grading period set. weighted: type: boolean example: true description: If true, the grading periods in the set are weighted. display_totals_for_all_grading_periods: type: boolean example: true description: If true, the totals for all grading periods in the set are displayed. required: - title GradingPeriod: type: object properties: id: type: integer example: 1023 description: The unique identifier for the grading period. title: type: string example: First Block description: The title for the grading period. start_date: type: string example: '2014-01-07T15:04:00Z' description: The start date of the grading period. end_date: type: string example: '2014-05-07T17:07:00Z' description: The end date of the grading period. close_date: type: string example: '2014-06-07T17:07:00Z' description: Grades can only be changed before the close date of the grading period. weight: type: integer example: '33.33' description: A weight value that contributes to the overall weight of a grading period set which is used to calculate how much assignments in this period contribute to the total grade is_closed: type: boolean example: true description: If true, the grading period's close_date has passed. required: - id - start_date - end_date GradingSchemeEntry: type: object properties: name: type: string example: A description: The name for an entry value within a GradingStandard that describes the range of the value value: type: integer example: 0.9 description: The value for the name of the entry within a GradingStandard. The entry represents the lower bound of the range for the entry. This range includes the value up to the next entry in the GradingStandard, or the maximum value for the scheme if there is no upper bound. The lowest value will have a lower bound range of 0. calculated_value: type: integer example: 90 description: The value that will be used to compare against a grade. For percentage based grading schemes, this is a number from 0 - 100 representing a percent. For point based grading schemes, this is the lower bound of points to achieve the grade. GradingStandard: type: object properties: title: type: string example: Account Standard description: the title of the grading standard id: type: integer example: 1 description: the id of the grading standard context_type: type: string example: Account description: the context this standard is associated with, either 'Account' or 'Course' context_id: type: integer example: 1 description: the id for the context either the Account or Course id points_based: type: boolean example: false description: whether this is a points-based standard scaling_factor: type: number example: 1.0 description: the factor by which to scale a score. 1 for percentage based schemss and the max value of points for points based schemes. This number cannot be changed for percentage based schemes. grading_scheme: type: array items: $ref: '#/components/schemas/GradingSchemeEntry' example: - name: A value: 0.9 - name: B value: 0.8 - name: C value: 0.7 - name: D value: 0.6 description: A list of GradingSchemeEntry that make up the Grading Standard as an array of values with the scheme name and value GroupCategory: type: object properties: id: type: integer example: 17 description: The ID of the group category. name: type: string example: Math Groups description: The display name of the group category. role: type: string example: communities description: 'Certain types of group categories have special role designations. Currently, these include: ''communities'', ''student_organized'', and ''imported''. Regular course/account group categories have a role of null.' self_signup: type: string description: If the group category allows users to join a group themselves, thought they may only be a member of one group per group category at a time. Values include 'restricted', 'enabled', and null 'enabled' allows students to assign themselves to a group 'restricted' restricts them to only joining a group in their section null disallows students from joining groups auto_leader: type: string description: Gives instructors the ability to automatically have group leaders assigned. Values include 'random', 'first', and null; 'random' picks a student from the group at random as the leader, 'first' sets the first student to be assigned to the group as the leader context_type: type: string example: Account description: The course or account that the category group belongs to. The pattern here is that whatever the context_type is, there will be an _id field named after that type. So if instead context_type was 'Course', the course_id field would be replaced by an course_id field. account_id: type: integer example: 3 group_limit: type: integer description: If self-signup is enabled, group_limit can be set to cap the number of users in each group. If null, there is no limit. sis_group_category_id: type: string description: The SIS identifier for the group category. This field is only included if the user has permission to manage or view SIS information. sis_import_id: type: integer description: The unique identifier for the SIS import. This field is only included if the user has permission to manage SIS information. progress: type: string description: If the group category has not yet finished a randomly student assignment request, a progress object will be attached, which will contain information related to the progress of the assignment request. Refer to the Progress API for more information non_collaborative: type: boolean description: Indicates whether this group category is non-collaborative. A value of true means these group categories rely on the manage_tags permissions and do not have collaborative features Group: type: object properties: id: type: integer example: 17 description: The ID of the group. name: type: string example: Math Group 1 description: The display name of the group. description: type: string description: A description of the group. This is plain text. is_public: type: boolean example: false description: Whether or not the group is public. Currently only community groups can be made public. Also, once a group has been set to public, it cannot be changed back to private. followed_by_user: type: boolean example: false description: Whether or not the current user is following this group. join_level: type: string example: invitation_only description: How people are allowed to join the group. For all groups except for community groups, the user must share the group's parent course or account. For student organized or community groups, where a user can be a member of as many or few as they want, the applicable levels are 'parent_context_auto_join', 'parent_context_request', and 'invitation_only'. For class groups, where students are divided up and should only be part of one group of the category, this value will always be 'invitation_only', and is not relevant. * If 'parent_context_auto_join', anyone can join and will be automatically accepted. * If 'parent_context_request', anyone can request to join, which must be approved by a group moderator. * If 'invitation_only', only those how have received an invitation my join the group, by accepting that invitation. members_count: type: integer example: 0 description: The number of members currently in the group is_full: type: boolean example: false description: Whether the group has reached its membership cap (or its group category's group limit). Reflects the true membership across all sections, even for viewers whose visible member list is restricted to their own section. avatar_url: type: string example: https:///files/avatar_image.png description: The url of the group's avatar context_type: type: string example: Course description: The course or account that the group belongs to. The pattern here is that whatever the context_type is, there will be an _id field named after that type. So if instead context_type was 'account', the course_id field would be replaced by an account_id field. context_name: type: string example: Course 101 description: The course or account name that the group belongs to. course_id: type: integer example: 3 role: type: string description: 'Certain types of groups have special role designations. Currently, these include: ''communities'', ''student_organized'', and ''imported''. Regular course/account groups have a role of null.' group_category_id: type: integer example: 4 description: The ID of the group's category. sis_group_id: type: string example: group4a description: The SIS ID of the group. Only included if the user has permission to view SIS information. sis_import_id: type: integer example: 14 description: The id of the SIS import if created through SIS. Only included if the user has permission to manage SIS information. storage_quota_mb: type: integer example: 50 description: the storage quota for the group, in megabytes permissions: type: object additionalProperties: true example: create_discussion_topic: true create_announcement: true description: 'optional: the permissions the user has for the group. returned only for a single group and include[]=permissions' users: type: array items: type: string x-canvas-declared-type: User description: 'optional: A list of users that are members in the group. Returned only if include[]=users. WARNING: this collection''s size is capped (if there are an extremely large number of users in the group (thousands) not all of them will be returned). If you need to capture all the users in a group with certainty or experiencing slow response consider using the paginated /api/v1/groups//users endpoint.' non_collaborative: type: boolean description: Indicates whether this group category is non-collaborative. A value of true means these group categories rely on the manage_tags permissions and do not have collaborative features GroupMembership: type: object properties: id: type: integer example: 92 description: The id of the membership object group_id: type: integer example: 17 description: The id of the group object to which the membership belongs user_id: type: integer example: 3 description: The id of the user object to which the membership belongs workflow_state: type: string example: accepted description: The current state of the membership. Current possible values are 'accepted', 'invited', and 'requested' moderator: type: boolean example: true description: Whether or not the user is a moderator of the group (the must also be an active member of the group to moderate) just_created: type: boolean example: true description: 'optional: whether or not the record was just created on a create call (POST), i.e. was the user just added to the group, or was the user already a member' sis_import_id: type: integer example: 4 description: The id of the SIS import if created through SIS. Only included if the user has permission to manage SIS information. HistoryEntry: type: object properties: asset_code: type: string example: assignment_123 description: The asset string for the item viewed asset_name: type: string example: Test Assignment description: The name of the item asset_icon: type: string example: icon-assignment description: The icon type shown for the item. One of 'icon-announcement', 'icon-assignment', 'icon-calendar-month', 'icon-discussion', 'icon-document', 'icon-download', 'icon-gradebook', 'icon-home', 'icon-message', 'icon-module', 'icon-outcomes', 'icon-quiz', 'icon-user', 'icon-syllabus' asset_readable_category: type: string example: Assignment description: The associated category describing the asset_icon context_type: type: string example: Course description: The type of context of the item visited. One of 'Course', 'Group', 'User', or 'Account' context_id: type: integer format: int64 example: 123 description: The id of the context, if applicable context_name: type: string example: Something 101 description: The name of the context visited_url: type: string example: https://canvas.example.com/courses/123/assignments/456 description: The URL of the item visited_at: type: string format: date-time example: '2019-08-01T19:49:47Z' description: When the page was visited interaction_seconds: type: integer format: int64 example: 400 description: The estimated time spent on the page in seconds required: - asset_code - asset_name - visited_url - visited_at description: Information about a recently visited item or page in Canvas InstAccessToken: type: object properties: token: type: string example: eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.EstatUwzltksvZn4wbjHYiwleM986vzryrv4R9jqvYDGEY4rt6KPG4Q6lJ3oI0piYbH7h17i8vIWv35cqrgRbb7fzmGQ0Ptj74OEjx-1gGBMZCbZTE4W206XxPHRm9TS4qOAvIq0hsvJroE4xZsVWJFiUIKl_Wd2udbvqwF8bvnMKPAx_ooa-9mWaG1N9kd4EWC3Oxu9wi7j8ZG_TbkLSXAg1KxLaO2zXBcU5_HWrKFRxOjHmWpaOMKWkjUInt-DA6fLRszBZp9BFGoop8S9KDs6f1JebLgyM5gGrP-Gz7kSEAPO9eVXtjpd6N29wMClNI0X-Ppp_40Fp4Z3vocTKQ.c_tcevWI68RuZ0s04fDSEQ.wV8KIPHGfYwxm19MWt3K7VVGm4qqZJruPwAZ8rdUANTzJoqwafqOnYZLCyky8lV7J-m64SMVUmR-BOha_CmJEKVVw7T5x70MTP6-nv4RMVPpcViHsNgE2f1GE9HUauVePw7CrnV0PyVaNq2EZasDgdHdye4iG_-hXXQZRnGYzxl8UceTLBVkpEYHlXKdD7DyQ0IT2BYOcZSpXyW7kEIvAHpNaNbvTPCR2t0SeGbuNf8PpYVjohKDpXhNgQ-Pyl9pxs05TrdjTq1fIctzTLqIN58nfqzoqQld6rSkjcAZZXgr8bOsg8EDFMov5gTv2_Uf-YOm52yD1SbL0lJ-VdpKgXu7XtQ4UmEOj40W4uXF-KmLTjEwQmdbmtKrruhakIeth7EZa3w0Xg6RRyHLqKUheAdTgxAIer8MST8tamZlqW1b9wjMw371zSSjeksF_UjTS9p9i7eTtRPuAbf9geDhKb5e-y29MJaL1eKkhTMiEOPY3O4XGGuqRdRMrbjkNmla_RxiQhFJ3T8Dem-yDRan8gqaJLfRRrvGViz-lty96bQT-Z0hVer1uJhAtkM6RT_DgrnAUP_66LfaupZr6bLCKwnYocF1ICcAzkcYw7l5jHa4DTc2ZLgLi-yfbv2wGXpybAvLfZcO424TxHOuQykCSvbfPPuf06kkjPbYmMg6_GdM3JcQ_50VUXQFZkjH45BH5zX7y-2u0ReM8zxt65RpJAvlivrc8j2_E-u0LhlzCwEgsnd61lG4baaI86IVl4wNXkMDui4CgGvAUAf4AXW7Imw_cF0zI69z0SLfahjaYkdREGIYKStBtPAR04sfsR7o.LHBODYub4W4Vq-SXfdbk1Q description: The InstAccess token itself -- a signed, encrypted JWT JWT: type: object properties: token: type: string example: ZXlKaGJHY2lPaUprYVhJaUxDSmxibU1pT2lKQk1qVTJSME5OSW4wLi5QbnAzS1QzLUJkZ3lQZHgtLm5JT0pOV01iZmdtQ0g3WWtybjhLeHlMbW13cl9yZExXTXF3Y0IwbXkzZDd3V1NDd0JYQkV0UTRtTVNJSVRrX0FJcG0zSU1DeThMcW5NdzA0ckdHVTkweDB3MmNJbjdHeWxOUXdveU5ZZ3UwOEN4TkZteUpCeW5FVktrdU05QlRyZXZ3Y1ZTN2hvaC1WZHRqM19PR3duRm5yUVgwSFhFVFc4R28tUGxoQVUtUnhKT0pNakx1OUxYd2NDUzZsaW9ZMno5NVU3T0hLSGNpaDBmSGVjN2FzekVJT3g4NExUeHlReGxYU3BtbFZ5LVNuYWdfbVJUeU5yNHNsMmlDWFcwSzZCNDhpWHJ1clJVVm1LUkVlVTl4ZVVJcTJPaWNpSHpfemJ0X3FrMjhkdzRyajZXRnBHSlZPNWcwTlUzVHlSWk5qdHg1S2NrTjVSQjZ1X2FzWTBScjhTY2VhNFk3Y2JFX01wcm54cFZTNDFIekVVSVRNdzVMTk1GLVpQZy52LVVDTkVJYk8zQ09EVEhPRnFXLUFR description: The signed, encrypted, base64 encoded JWT LatePolicy: type: object properties: id: type: integer example: 123 description: the unique identifier for the late policy course_id: type: integer example: 123 description: the unique identifier for the course missing_submission_deduction_enabled: type: boolean example: true description: whether to enable missing submission deductions missing_submission_deduction: type: number example: 12.34 description: amount of percentage points to deduct late_submission_deduction_enabled: type: boolean example: true description: whether to enable late submission deductions late_submission_deduction: type: number example: 12.34 description: amount of percentage points to deduct per late_submission_interval late_submission_interval: type: string example: hour description: time interval for late submission deduction enum: - hour - day late_submission_minimum_percent_enabled: type: boolean example: true description: whether to enable late submission minimum percent late_submission_minimum_percent: type: number example: 12.34 description: the minimum score a submission can receive in percentage points created_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the time at which this late policy was originally created updated_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the time at which this late policy was last modified in any way required: course_id LearningObjectDates: type: object properties: id: type: integer example: 4 description: the ID of the learning object (not present for checkpoints) due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the due date for the learning object. returns null if not present or applicable. never applicable for ungraded discussions, pages, and files lock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the lock date (learning object is locked after this date). returns null if not present reply_to_topic_due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the reply_to_topic sub_assignment due_date. returns null if not present required_replies_due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the reply_to_entry sub_assignment due_date. returns null if not present unlock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the unlock date (learning object is unlocked after this date). returns null if not present only_visible_to_overrides: type: boolean example: false description: whether the learning object is only visible to overrides graded: type: boolean example: true description: whether the learning object is graded (and thus has a due date) blueprint_date_locks: type: array items: type: string example: - due_dates - availability_dates description: '[exclusive to blueprint child content only] list of lock types' visible_to_everyone: type: boolean example: true description: whether the learning object is visible to everyone overrides: type: array items: type: string x-canvas-declared-type: AssignmentOverride description: paginated list of AssignmentOverride objects checkpoints: type: array items: $ref: '#/components/schemas/LearningObjectDates' description: list of Checkpoint objects, only present if a learning object has subAssignments tag: type: string example: reply_to_topic description: the tag identifying the type of checkpoint (only present for checkpoints) peer_review_sub_assignment: type: object additionalProperties: true description: peer review sub assignment details. If a peer review sub assignment exists, it is returned regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. LineItem: type: object properties: id: type: string example: http://institution.canvas.com/api/lti/courses/5/line_items/2 description: The fully qualified URL for showing, updating, and deleting the Line Item scoreMaximum: type: number example: '50' description: The maximum score of the Line Item label: type: string example: '50' description: The label of the Line Item. tag: type: string example: '50' description: Tag used to qualify a line Item beyond its ids resourceId: type: string example: '50' description: A Tool Provider specified id for the Line Item. Multiple line items can share the same resourceId within a given context resourceLinkId: type: string example: '50' description: The resource link id the Line Item is attached to https://canvas.instructure.com/lti/submission_type: type: string example: "{\n\t\"type\":\"external_tool\",\n\t\"external_tool_url\":\"https://my.launch.url\",\n}" description: The extension that defines the submission_type of the line_item. Only returns if set through the line_item create endpoint. https://canvas.instructure.com/lti/launch_url: type: string example: https://my.tool.url/launch description: The launch url of the Line Item. Only returned if `include=launch_url` query parameter is passed, and only for Show and List actions. Result__live_assessments: type: object properties: id: type: string example: '42' description: A unique identifier for this result passed: type: boolean example: true description: Whether the user passed or not assessed_at: type: string format: date-time example: '2014-05-13T00:01:57-06:00' description: When this result was recorded links: type: string example: user: '42' assessor: '23' assessment: '5' description: Unique identifiers of objects associated with this result description: A pass/fail results for a student ResultLinks: type: object properties: user: type: string example: '42' description: A unique identifier for the user to whom this result applies assessor: type: string example: '23' description: A unique identifier for the user who created this result assessment: type: string example: '5' description: A unique identifier for the assessment that this result is for description: Unique identifiers of objects associated with a result Assessment: type: object properties: id: type: string example: '42' description: A unique identifier for this live assessment key: type: string example: 2014-05-27,outcome_52 description: A client specified unique identifier for the assessment title: type: string example: May 27th Reading Assessment description: A human readable title for the assessment description: A simple assessment that collects pass/fail results for a student Lti::ContextControl: type: object properties: id: type: integer example: 2 description: the Canvas ID of the Lti::ContextControl object course_id: type: integer example: 2 description: the Canvas ID of the Course that owns this. one of this or account_id will always be present account_id: type: integer example: 2 description: the Canvas ID of the Account that owns this. one of this or course_id will always be present deployment_id: type: integer example: 2 description: the Canvas ID of the ContextExternalTool that owns this, representing an LTI deployment available: type: boolean example: true description: The state of this tool in this context. `true` means the tool is available in this context and in all contexts below it. path: type: string example: a1.a2.c3. description: A representation of the account hierarchy for the context that owns this object. Used for checking availability during LTI operations. display_path: type: array items: type: string example: - Sub Account - Other Account description: For UI display. Names of the accounts in the context's hierarchy. Excludes the root, and the current account if context is an account. context_name: type: string example: My Course description: For UI display. The name of the context this object is associated with depth: type: integer example: 2 description: For UI display. The depth of ContextControls for this particular deployment account chain, which can be different from the number of accounts in the chain. course_count: type: integer example: 402 description: For UI display. The number of courses in this account and all nested subaccounts. 0 when context is a Course. child_control_count: type: integer example: 42 description: For UI display. The number of controls for accounts below this one, including all nested subaccounts. 0 when context is a Course. subaccount_count: type: integer example: 42 description: For UI display. The number of subaccounts for this account. Includes all nested subaccounts. 0 when context is a Course. workflow_state: type: string example: active description: The state of the object enum: - active - deleted created_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the object's creation updated_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the object's last update created_by: type: string x-canvas-declared-type: User example: type: User description: The user that created this object. Not always present. updated_by: type: string x-canvas-declared-type: User example: type: User description: The user that last updated this object. Not always present. description: Represent availability of an LTI registration in a specific context Lti::LaunchDefinition: type: object properties: definition_type: type: string example: ContextExternalTool description: The type of the launch definition. Always 'ContextExternalTool' definition_id: type: string example: '123' description: The Canvas ID of the tool name: type: string example: My Tool description: The display name of the tool for the given placement description: type: string example: This is a tool that does things. description: The description of the tool for the given placement. url: type: string example: https://www.example.com/launch description: The launch URL for the tool domain: type: string example: example.com description: The domain of the tool placements: type: object additionalProperties: true example: assignment_selection: type: Lti::PlacementLaunchDefinition description: Placement-specific config for given placements context_name: type: string example: My Institution description: The name of the account or course where the tool is deployed. Only included if requested via include_context_name parameter. description: A bare-bones representation of an LTI tool used by Canvas to launch the tool Lti::PlacementLaunchDefinition: type: object properties: message_type: type: string example: LtiResourceLinkRequest description: The LTI launch message type url: type: string example: https://www.example.com/launch?placement=assignment_selection description: The launch URL for this placement title: type: string example: My Tool (Assignment Selection) description: The title of the tool for this placement description: A bare-bones LTI configuration for a specific placement Lti::Registration: type: object properties: id: type: integer example: 2 description: the Canvas ID of the Lti::Registration object name: type: string example: My LTI Tool description: Tool-provided registration name admin_nickname: type: string example: My LTI Tool (Campus A) description: Admin-configured friendly display name icon_url: type: string example: https://mytool.com/icon.png description: Tool-provided URL to the tool's icon vendor: type: string example: My Tool LLC description: Tool-provided name of the tool vendor account_id: type: integer example: 1 description: The Canvas id of the account that owns this registration internal_service: type: boolean example: false description: Flag indicating if registration is internally-owned lock_deploying: type: boolean example: false description: Flag indicating if registration is locked for deployment inherited: type: boolean example: false description: Flag indicating if registration is owned by this account, or inherited from Site Admin template_registration_id: type: integer example: 1 description: The Canvas ID of the template registration, if this registration is inherited from a template lti_version: type: string example: '1.3' description: LTI version of the registration, either 1.1 or 1.3 dynamic_registration: type: boolean example: false description: Flag indicating if registration was created using LTI Dynamic Registration. Only present if lti_version is 1.3 workflow_state: type: string example: active description: The state of the registration enum: - active - deleted created_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the registration's creation updated_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the registration's last update created_by: type: string x-canvas-declared-type: string|User example: type: User description: The user that created this registration. Not always present. If a string, this registration was created by Instructure. updated_by: type: string x-canvas-declared-type: string|User example: type: User description: The user that last updated this registration. Not always present. If a string, this registration was last updated by Instructure. root_account_id: type: integer example: 1 description: The Canvas id of the root account account_binding: type: string example: type: Lti::RegistrationAccountBinding description: The binding for this registration and this account configuration: type: string example: type: Lti::ToolConfiguration description: The Canvas-style tool configuration for this registration description: A registration of an LTI tool in Canvas Lti::RegistrationAccountBinding: type: object properties: id: type: integer example: 10 description: the Canvas ID of the Lti::RegistrationAccountBinding object account_id: type: integer example: 1 description: The Canvas id of the account root_account_id: type: integer example: 1 description: The Canvas id of the root account registration_id: type: integer example: 2 description: The Canvas id of the Lti::Registration workflow_state: type: string example: 'on' description: The state of the binding (on, off, allow, deleted) enum: - 'on' - 'off' - allow - deleted created_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the binding's creation updated_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the binding's last update created_by: type: string example: type: User description: The user that created this binding updated_by: type: string example: type: User description: The user that last updated this binding description: A binding between an LTI registration and an account, defining the registration's availability in that account Lti::LegacyConfiguration: type: object properties: title: type: string example: My Tool description: The display name of the tool description: type: string example: My Tool is built by me, for me. description: The description of the tool custom_fields: type: object additionalProperties: true example: context_title: $Context.title special_tool_thing: foo1234 description: A key-value listing of all custom fields the tool has requested target_link_uri: type: string example: https://mytool.com/launch description: The default launch URL for the tool. Overridable by placements. oidc_initiation_url: type: string example: https://mytool.com/1_3/login description: 1.3 specific. URL used for initial login request oidc_initiation_urls: type: object additionalProperties: true example: eu-west-1: https://dub.mytool.com/1_3/login description: 1.3 specific. Region-specific login URLs for data protection compliance public_jwk: type: object additionalProperties: true example: e: AQAB etc: etc description: 1.3 specific. The tool's public JWK in JSON format. Discouraged in favor of a url hosting a JWK set. public_jwk_url: type: string example: https://mytool.com/1_3/jwks description: 1.3 specific. The tool-hosted URL containing its public JWK keyset. Canvas may cache JWKs up to 5 minutes. scopes: type: array items: type: string example: - https://purl.imsglobal.org/spec/lti-ags/scope/lineitem description: 1.3 specific. List of LTI scopes requested by the tool extensions: type: array items: type: object additionalProperties: true description: Array of extensions for the tool description: A legacy configuration format for LTI 1.3 tools. Lti::ToolConfiguration: type: object properties: title: type: string example: My Tool description: The display name of the tool description: type: string example: My Tool is built by me, for me. description: The description of the tool custom_fields: type: object additionalProperties: true example: context_title: $Context.title special_tool_thing: foo1234 description: A key-value listing of all custom fields the tool has requested target_link_uri: type: string example: https://mytool.com/launch description: The default launch URL for the tool. Overridable by placements. domain: type: string example: mytool.com description: The tool's main domain. Highly recommended for deep linking, used to match links to the tool. tool_id: type: string example: MyTool description: Tool-provided identifier, can be anything privacy_level: type: string example: public description: Canvas-defined privacy level for the tool enum: - public - anonymous - name_only - email_only oidc_initiation_url: type: string example: https://mytool.com/1_3/login description: 1.3 specific. URL used for initial login request oidc_initiation_urls: type: object additionalProperties: true example: eu-west-1: https://dub.mytool.com/1_3/login description: 1.3 specific. Region-specific login URLs for data protection compliance public_jwk: type: object additionalProperties: true example: e: AQAB etc: etc description: 1.3 specific. The tool's public JWK in JSON format. Discouraged in favor of a url hosting a JWK set. public_jwk_url: type: string example: https://mytool.com/1_3/jwks description: 1.3 specific. The tool-hosted URL containing its public JWK keyset. Canvas may cache JWKs up to 5 minutes. scopes: type: array items: type: string example: - https://purl.imsglobal.org/spec/lti-ags/scope/lineitem description: 1.3 specific. List of LTI scopes requested by the tool redirect_uris: type: array items: type: string example: - https://mytool.com/launch - https://mytool.com/1_3/launch description: 1.3 specific. List of possible launch URLs for after the Canvas authorize redirect step launch_settings: type: string example: message_type: LtiResourceLinkRequest description: Default launch settings for all placements placements: type: array items: $ref: '#/components/schemas/Lti::Placement' example: - type: Lti::Placement description: List of placements configured by the tool description: A Registration's Canvas-specific tool configuration. Lti::LaunchSettings: type: object properties: message_type: type: string example: LtiResourceLinkRequest description: Default message type for all placements enum: - LtiResourceLinkRequest - LtiDeepLinkingRequest text: type: string example: Hello World description: The text of the link to the tool (if applicable). labels: type: object additionalProperties: true example: en: Hello World es: Hola Mundo description: Canvas-specific i18n for placement text. See the Navigation Placement docs. custom_fields: type: object additionalProperties: true example: special_placement_thing: foo1234 description: Placement-specific custom fields to send in the launch. Merged with tool-level custom fields. selection_height: type: number example: 800 description: Default iframe height. Not valid for all placements. Overrides tool-level launch_height. selection_width: type: number example: 1000 description: Default iframe width. Not valid for all placements. Overrides tool-level launch_width. launch_height: type: number example: 800 description: Default iframe height. Not valid for all placements. Overrides tool-level launch_height. launch_width: type: number example: 1000 description: Default iframe width. Not valid for all placements. Overrides tool-level launch_width. icon_url: type: string example: https://mytool.com/icon.png description: Default icon URL. Not valid for all placements. Overrides tool-level icon_url. canvas_icon_class: type: string example: icon-lti description: The HTML class name of an InstUI Icon. Used instead of an icon_url in select placements. required_permissions: type: string example: manage_course_content_edit,manage_course_content_read description: Comma-separated list of Canvas permission short names required for a user to launch from this placement. windowTarget: type: string example: _blank description: When set to '_blank', opens placement in a new tab. display_type: type: string example: full_width_in_context description: The Canvas layout to use when launching the tool. See the Navigation Placement docs. enum: - default - full_width - full_width_in_context - full_width_with_nav - in_nav_context - borderless url: type: string example: https://mytool.com/launch?placement=course_navigation description: The 1.1 launch URL for this placement. Overrides tool-level url. target_link_uri: type: string example: https://mytool.com/launch?placement=course_navigation description: The 1.3 launch URL for this placement. Overrides tool-level target_link_uri. visibility: type: string example: admins description: Specifies types of users that can see this placement. Only valid for some placements like course_navigation. prefer_sis_email: type: boolean example: false description: 1.1 specific. If true, the tool will send the SIS email in the lis_person_contact_email_primary launch property oauth_compliant: type: boolean example: true description: 1.1 specific. If true, query parameters from the launch URL will not be copied to the POST body. icon_svg_path_64: type: string example: M100,37L70.1,10.5v176H37... description: An SVG to use instead of an icon_url. Only valid for global_navigation. default: type: string example: disabled description: Default display state for course_navigation. If 'enabled', will show in course sidebar. If 'disabled', will be hidden. accept_media_types: type: string example: image/*,video/* description: Comma-separated list of media types that the tool can accept. Only valid for file_item. use_tray: type: boolean example: true description: If true, the tool will be launched in the tray. Only used by the editor_button placement. description: Default launch settings for all placements Lti::Placement: type: object properties: placement: type: string example: course_navigation description: The name of the placement. enum: - account_navigation - analytics_hub - assignment_edit - assignment_group_menu - assignment_index_menu - assignment_menu - assignment_selection - assignment_view - collaboration - conference_selection - course_assignments_menu - course_home_sub_navigation - course_navigation - course_settings_sub_navigation - discussion_topic_index_menu - discussion_topic_menu - file_index_menu - file_menu - global_navigation - homework_submission - link_selection - migration_selection - module_group_menu - module_index_menu - module_index_menu_modal - module_menu_modal - module_menu - post_grades - quiz_index_menu - quiz_menu - resource_selection - similarity_detection - student_context_card - submission_type_selection - tool_configuration - top_navigation - user_navigation - wiki_index_menu - wiki_page_menu - editor_button enabled: type: boolean example: true description: If true, the tool will show in this placement. If false, it will not. message_type: type: string example: LtiResourceLinkRequest description: Default message type for all placements enum: - LtiResourceLinkRequest - LtiDeepLinkingRequest text: type: string example: Hello World description: The text of the link to the tool (if applicable). labels: type: object additionalProperties: true example: en: Hello World es: Hola Mundo description: Canvas-specific i18n for placement text. See the Navigation Placement docs. custom_fields: type: object additionalProperties: true example: special_placement_thing: foo1234 description: Placement-specific custom fields to send in the launch. Merged with tool-level custom fields. selection_height: type: number example: 800 description: Default iframe height. Not valid for all placements. Overrides tool-level launch_height. selection_width: type: number example: 1000 description: Default iframe width. Not valid for all placements. Overrides tool-level launch_width. launch_height: type: number example: 800 description: Default iframe height. Not valid for all placements. Overrides tool-level launch_height. launch_width: type: number example: 1000 description: Default iframe width. Not valid for all placements. Overrides tool-level launch_width. icon_url: type: string example: https://mytool.com/icon.png description: Default icon URL. Not valid for all placements. Overrides tool-level icon_url. canvas_icon_class: type: string example: icon-lti description: The HTML class name of an InstUI Icon. Used instead of an icon_url in select placements. required_permissions: type: string example: manage_course_content_edit,manage_course_content_read description: Comma-separated list of Canvas permission short names required for a user to launch from this placement. windowTarget: type: string example: _blank description: When set to '_blank', opens placement in a new tab. display_type: type: string example: full_width_in_context description: The Canvas layout to use when launching the tool. See the Navigation Placement docs. enum: - default - full_width - full_width_in_context - full_width_with_nav - in_nav_context - borderless url: type: string example: https://mytool.com/launch?placement=course_navigation description: The 1.1 launch URL for this placement. Overrides tool-level url. target_link_uri: type: string example: https://mytool.com/launch?placement=course_navigation description: The 1.3 launch URL for this placement. Overrides tool-level target_link_uri. visibility: type: string example: admins description: Specifies types of users that can see this placement. Only valid for some placements like course_navigation. enum: - admins - members - public prefer_sis_email: type: boolean example: false description: 1.1 specific. If true, the tool will send the SIS email in the lis_person_contact_email_primary launch property oauth_compliant: type: boolean example: true description: 1.1 specific. If true, query parameters from the launch URL will not be copied to the POST body. icon_svg_path_64: type: string example: M100,37L70.1,10.5v176H37... description: An SVG to use instead of an icon_url. Only valid for global_navigation. default: type: string example: disabled description: Default display state for course_navigation. If 'enabled', will show in course sidebar. If 'disabled', will be hidden. accept_media_types: type: string example: image/*,video/* description: Comma-separated list of media types that the tool can accept. Only valid for file_item. use_tray: type: boolean example: true description: If true, the tool will be launched in the tray. Only used by the editor_button placement. description: The tool's configuration for a specific placement Lti::Overlay: type: object properties: title: type: string example: My Tool description: The display name of the tool description: type: string example: My Tool is built by me, for me. description: The description of the tool custom_fields: type: object additionalProperties: true example: context_title: $Context.title special_tool_thing: foo1234 description: A key-value listing of all custom fields the tool has requested target_link_uri: type: string example: https://mytool.com/launch description: The default launch URL for the tool. Overridable by placements. domain: type: string example: mytool.com description: The tool's main domain. Highly recommended for deep linking, used to match links to the tool. privacy_level: type: string example: public description: Canvas-defined privacy level for the tool enum: - public - anonymous - name_only - email_only oidc_initiation_url: type: string example: https://mytool.com/1_3/login description: 1.3 specific. URL used for initial login request disabled_scopes: type: array items: type: string example: - https://purl.imsglobal.org/spec/lti-ags/scope/lineitem description: 1.3 specific. List of LTI scopes that the tool has requested but an admin has disabled disabled_placements: type: array items: type: string example: - course_navigation description: List of placements that the tool has requested but an admin has disabled placements: type: object additionalProperties: true example: course_navigation: $ref: Lti::Placement description: Placement-specific settings changed by an admin description: Changes made by a Canvas admin to a tool's configuration. Lti::OverlayVersion: type: object properties: root_account_id: type: integer example: 1 description: The Canvas id of the root account created_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the version's creation updated_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the version's last update caused_by_reset: type: boolean example: false description: Whether or not this change was caused by a reset of the tool's configuration created_by: type: string x-canvas-declared-type: string|User example: type: User description: The user that created this version. If a string, this registration was created by Instructure. diff: type: array items: type: array items: type: object additionalProperties: true example: - - + - disabled_placements[0] - top_navigation description: A list of changes made in this version compared to the previous version lti_overlay_id: type: integer example: 1 description: The id of the overlay this version is for account_id: type: integer example: 1 description: The id of the account this version is for description: A single version of a tool's configuration overlay Lti::PlacementOverlay: type: object properties: text: type: string example: Hello World description: The text of the link to the tool (if applicable). target_link_uri: type: string example: https://mytool.com/launch description: The default launch URL for the tool. Overridable by placements. message_type: type: string example: LtiResourceLinkRequest description: Default message type for all placements enum: - LtiResourceLinkRequest - LtiDeepLinkingRequest launch_height: type: number example: 800 description: Default iframe height. Not valid for all placements. Overrides tool-level launch_height. launch_width: type: number example: 1000 description: Default iframe width. Not valid for all placements. Overrides tool-level launch_width. icon_url: type: string example: https://mytool.com/icon.png description: Default icon URL. Not valid for all placements. Overrides tool-level icon_url. default: type: string example: disabled description: Default display state for course_navigation. If 'enabled', will show in course sidebar. If 'disabled', will be hidden. description: Changes made by a Canvas admin to a tool's configuration for a specific placement. ListLtiRegistrationsResponse: type: object properties: total: type: integer example: 1 description: The total number of LTI registrations across all pages data: type: array items: $ref: '#/components/schemas/Lti::Registration' example: - $ref: Lti::Registration description: The paginated list of LTI::Registrations description: The response for the List LTI Registrations API endpoint ContextSearchResponse: type: object properties: accounts: type: array items: $ref: '#/components/schemas/SearchableAccount' example: - $ref: Account description: Accounts that match the search query. Limited to 100. courses: type: array items: $ref: '#/components/schemas/SearchableCourse' example: - $ref: Course description: Courses that match the search query. Limited to 100. description: The response for the Search Accounts and Courses API endpoint SearchableAccount: type: object properties: id: type: string example: '1' description: The Canvas DB ID name: type: string example: An Account description: The account name sis_id: type: string example: sis-account-1 description: The SIS ID of the account, if any. Only present if user can read or manage SIS. display_path: type: array items: type: string example: - Sub Account description: Names of the accounts in this account's hierarchy, excluding the root and this account. description: A minimal representation of an Account for Canvas Apps search purposes SearchableCourse: type: object properties: id: type: string example: '1' description: The Canvas DB ID name: type: string example: A Course description: The course name sis_id: type: string example: sis-course-1 description: The SIS ID of the course, if any. Only present if user can read or manage SIS. display_path: type: array items: type: string example: - Sub Account description: Names of the accounts in this course's account hierarchy, excluding the root. course_code: type: string example: COURSE-101 description: The course code description: A minimal representation of a Course for Canvas Apps search purposes Lti::ResourceLink: type: object properties: id: type: integer example: 1 description: The Canvas identifier for the LTI Resource Link. context_id: type: integer example: 1 description: The Canvas identifier for the context that the LTI Resource Link is associated with. context_type: type: string example: Course description: The type of the context that the LTI Resource Link is associated with. enum: - Course - Assignment - Collaboration context_external_tool_id: type: integer example: 1 description: The Canvas identifier for the LTI 1.3 External Tool that the LTI Resource Link was originally installed from. Note that this tool may have been deleted or reinstalled and may not be the tool that would be launched for this url. resource_type: type: string example: assignment description: The type of Canvas content for the resource link. Included for convenience. enum: - assignment - module_item - collaboration - rich_content canvas_launch_url: type: string example: https://example.instructure.com/courses/1/external_tools/retrieve?resource_link_lookup_uuid=ae43ba23-d238-49bc-ab55-ba7f79f77896 description: The Canvas URL that launches the LTI Resource Link. Suitable for use in Canvas rich content resource_link_uuid: type: string example: ae43ba23-d238-49bc-ab55-ba7f79f77896 description: The LTI identifier for the LTI Resource Link, included as the resource_link_id when this link is launched lookup_uuid: type: string example: c522554a-d4be-49ef-b163-9c87fdc6ad6f description: A unique identifier for the LTI Resource Link, present in the rich content representation. Remains the same across content migration. title: type: string example: Assignment 1 description: The title of the LTI Resource Link. Usually tool-provided, or matches the assignment name url: type: string example: https://example.com/lti/launch/content_item/123 description: The tool URL to which the LTI Resource Link will launch lti_1_1_id: type: string example: 6a8aaca162bfc4393804afd4cd53cd94413c48bb description: The LTI 1.1 identifier for the LTI Resource Link, included in lti1p1 migration claim when launched. Only present if tool was migrated from 1.1 to 1.3. created_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the resource link's creation updated_at: type: string example: '2024-01-01T00:00:00Z' description: Timestamp of the resource link's last update workflow_state: type: string example: active description: The state of the resource link enum: - active - deleted associated_content_type: type: string example: ModuleItem description: Type of the associated content this resource link belongs to if present. Now only supports `ModuleItems`, later may be extend others enum: - ModuleItem associated_content_id: type: integer example: 1 description: The Canvas identifier of the associated content, e.g. ModuleItem related to this link. Present if associated_content_type is present MediaTrack: type: object properties: id: type: integer format: int64 user_id: type: integer format: int64 media_object_id: type: integer format: int64 kind: type: string locale: type: string content: type: string created_at: type: string updated_at: type: string webvtt_content: type: string MediaObject: type: object properties: can_add_captions: type: boolean user_entered_title: type: string title: type: string media_id: type: string media_type: type: string media_tracks: type: string media_sources: type: string ProvisionalGrade: type: object properties: provisional_grade_id: type: integer example: 23 description: The identifier for the provisional grade score: type: integer example: 90 description: The numeric score grade: type: string example: A- description: The grade grade_matches_current_submission: type: boolean example: true description: Whether the grade was applied to the most current submission (false if the student resubmitted after grading) graded_at: type: string format: date-time example: '2015-11-01T00:03:21-06:00' description: When the grade was given final: type: boolean example: false description: Whether this is the 'final' provisional grade created by the moderator speedgrader_url: type: string example: http://www.example.com/courses/123/gradebook/speed_grader?... description: A link to view this provisional grade in SpeedGrader Module__modules: type: object properties: id: type: integer example: 123 description: the unique identifier for the module workflow_state: type: string example: active description: 'the state of the module: ''active'', ''deleted''' position: type: integer example: 2 description: the position of this module in the course (1-based) name: type: string example: Imaginary Numbers and You description: the name of this module unlock_at: type: string format: date-time example: '2012-12-31T06:00:00-06:00' description: (Optional) the date this module will unlock require_sequential_progress: type: boolean example: true description: Whether module items must be unlocked in order requirement_type: type: string example: all description: Whether module requires all required items or one required item to be considered complete (one of 'all' or 'one') prerequisite_module_ids: type: array items: type: integer example: - 121 - 122 description: IDs of Modules that must be completed before this one is unlocked items_count: type: integer example: 10 description: The number of items in the module items_url: type: string example: https://canvas.example.com/api/v1/modules/123/items description: The API URL to retrive this module's items items: type: array items: $ref: '#/components/schemas/ModuleItem__modules' description: The contents of this module, as an array of Module Items. (Present only if requested via include[]=items AND the module is not deemed too large by Canvas.) state: type: string example: started description: The state of this Module for the calling user one of 'locked', 'unlocked', 'started', 'completed' (Optional; present only if the caller is a student or if the optional parameter 'student_id' is included) completed_at: type: string format: date-time description: the date the calling user completed the module (Optional; present only if the caller is a student or if the optional parameter 'student_id' is included) publish_final_grade: type: boolean description: if the student's final grade for the course should be published to the SIS upon completion of this module published: type: boolean example: true description: (Optional) Whether this module is published. This field is present only if the caller has permission to view unpublished modules. CompletionRequirement: type: object properties: type: type: string example: min_score description: one of 'must_view', 'must_submit', 'must_contribute', 'min_score', 'min_percentage', 'must_mark_done' min_score: type: integer example: 10 description: minimum score required to complete (only present when type == 'min_score') min_percentage: type: integer example: 70 description: minimum percentage required to complete (only present when type == 'min_percentage') completed: type: boolean example: true description: whether the calling user has met this requirement (Optional; present only if the caller is a student or if the optional parameter 'student_id' is included) ContentDetails: type: object properties: points_possible: type: integer example: 20 due_at: type: string format: date-time example: '2012-12-31T06:00:00-06:00' unlock_at: type: string format: date-time example: '2012-12-31T06:00:00-06:00' lock_at: type: string format: date-time example: '2012-12-31T06:00:00-06:00' locked_for_user: type: boolean example: true lock_explanation: type: string example: This quiz is part of an unpublished module and is not available yet. lock_info: type: string example: asset_string: assignment_4 unlock_at: '2012-12-31T06:00:00-06:00' lock_at: '2012-12-31T06:00:00-06:00' context_module: {} ModuleItem__modules: type: object properties: id: type: integer example: 768 description: the unique identifier for the module item module_id: type: integer example: 123 description: the id of the Module this item appears in position: type: integer example: 1 description: the position of this item in the module (1-based) title: type: string example: 'Square Roots: Irrational numbers or boxy vegetables?' description: the title of this item indent: type: integer example: 0 description: 0-based indent level; module items may be indented to show a hierarchy type: type: string example: Assignment description: the type of object referred to one of 'File', 'Page', 'Discussion', 'Assignment', 'Quiz', 'SubHeader', 'ExternalUrl', 'ExternalTool' content_id: type: integer example: 1337 description: the id of the object referred to applies to 'File', 'Discussion', 'Assignment', 'Quiz', 'ExternalTool' types html_url: type: string example: https://canvas.example.edu/courses/222/modules/items/768 description: link to the item in Canvas url: type: string example: https://canvas.example.edu/api/v1/courses/222/assignments/987 description: (Optional) link to the Canvas API object, if applicable page_url: type: string example: my-page-title description: (only for 'Page' type) unique locator for the linked wiki page external_url: type: string example: https://www.example.com/externalurl description: (only for 'ExternalUrl' and 'ExternalTool' types) external url that the item points to new_tab: type: boolean example: false description: (only for 'ExternalTool' type) whether the external tool opens in a new tab completion_requirement: type: string example: type: min_score min_score: 10 completed: true description: Completion requirement for this module item content_details: type: string example: points_possible: 20 due_at: '2012-12-31T06:00:00-06:00' unlock_at: '2012-12-31T06:00:00-06:00' lock_at: '2012-12-31T06:00:00-06:00' description: (Present only if requested through include[]=content_details) If applicable, returns additional details specific to the associated object published: type: boolean example: true description: (Optional) Whether this module item is published. This field is present only if the caller has permission to view unpublished items. ModuleItemSequenceNode: type: object properties: prev: type: string description: The previous ModuleItem in the sequence current: type: string example: id: 768 module_id: 123 title: A lonely page type: Page description: The ModuleItem being queried next: type: string example: id: 769 module_id: 127 title: Project 1 type: Assignment description: The next ModuleItem in the sequence mastery_path: type: object additionalProperties: true example: locked: true assignment_sets: [] selected_set_id: null awaiting_choice: false still_processing: false modules_url: /courses/11/modules choose_url: /courses/11/modules/items/9/choose modules_tab_disabled: false description: The conditional release rule for the module item, if applicable ModuleItemSequence: type: object properties: items: type: array items: $ref: '#/components/schemas/ModuleItemSequenceNode' example: - prev: null current: id: 768 module_id: 123 title: A lonely page type: Page next: id: 769 module_id: 127 title: Project 1 type: Assignment mastery_path: locked: true assignment_sets: [] selected_set_id: null awaiting_choice: false still_processing: false modules_url: /courses/11/modules choose_url: /courses/11/modules/items/9/choose modules_tab_disabled: false description: an array containing one ModuleItemSequenceNode for each appearence of the asset in the module sequence (up to 10 total) modules: type: array items: $ref: '#/components/schemas/Module__modules' example: - id: 123 name: Overview - id: 127 name: Imaginary Numbers description: an array containing each Module referenced above ModuleAssignmentOverride: type: object properties: id: type: integer example: 4355 description: the ID of the assignment override context_module_id: type: integer example: 567 description: the ID of the module the override applies to title: type: string example: Section 6 description: the title of the override students: type: string description: an array of the override's target students (present only if the override targets an adhoc set of students) course_section: type: string description: the override's target section (present only if the override targets a section) OverrideTarget: type: object properties: id: type: integer example: 7 description: the ID of the user or section that the override is targeting name: type: string example: Section 6 description: the name of the user or section that the override is targeting NamesAndRoleContext: type: object properties: id: type: string example: 4dde05e8ca1973bcca9bffc13e1548820eee93a3 description: LTI Context unique identifier label: type: string example: CS-101 description: LTI Context short name or code title: type: string example: Computer Science 101 description: LTI Context full name description: An abbreviated representation of an LTI Context NamesAndRoleMessage: type: object properties: https://purl.imsglobal.org/spec/lti/claim/message_type: type: string example: LtiResourceLinkRequest description: The type of LTI message being described. Always set to 'LtiResourceLinkRequest' enum: - LtiResourceLinkRequest locale: type: string example: en description: The member's preferred locale https://www.instructure.com/canvas_user_id: type: integer example: 1 description: The member's API ID https://www.instructure.com/canvas_user_login_id: type: string example: showell@school.edu description: The member's primary login username https://purl.imsglobal.org/spec/lti/claim/custom: type: object additionalProperties: true example: message_locale: en person_address_timezone: America/Denver description: Expanded LTI custom parameters that pertain to the member (as opposed to the Context) description: Additional attributes which would appear in the LTI launch message were this member to click the specified resource link (`rlid` query parameter) NamesAndRoleMembership: type: object properties: status: type: string example: Active description: Membership state enum: - Active name: type: string example: Sienna Howell description: Member's full name. Only included if tool privacy level is `public` or `name_only`. picture: type: string example: https://example.instructure.com/images/messages/avatar-50.png description: URL to the member's avatar. Only included if tool privacy level is `public`. given_name: type: string example: Sienna description: Member's 'first' name. Only included if tool privacy level is `public` or `name_only`. family_name: type: string example: Howell description: Member's 'last' name. Only included if tool privacy level is `public` or `name_only`. email: type: string example: showell@school.edu description: Member's email address. Only included if tool privacy level is `public` or `email_only`. lis_person_sourcedid: type: string example: 1238.8763.00 description: Member's primary SIS identifier. Only included if tool privacy level is `public` or `name_only`. user_id: type: string example: 535fa085f22b4655f48cd5a36a9215f64c062838 description: Member's unique LTI identifier. roles: type: array items: type: string example: - http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor - http://purl.imsglobal.org/vocab/lis/v2/membership#ContentDeveloper description: Member's roles in the current Context, expressed as LTI/LIS URNs. message: type: array items: $ref: '#/components/schemas/NamesAndRoleMessage' example: - https://purl.imsglobal.org/spec/lti/claim/message_type: LtiResourceLinkRequest locale: en https://www.instructure.com/canvas_user_id: 1 https://www.instructure.com/canvas_user_login_id: showell@school.edu https://purl.imsglobal.org/spec/lti/claim/custom: message_locale: en person_address_timezone: America/Denver description: Only present when the request specifies a `rlid` query parameter. Contains additional attributes which would appear in the LTI launch message were this member to click the link referenced by the `rlid` query parameter description: A member of a LTI Context in one or more roles NamesAndRoleMemberships: type: object properties: id: type: string example: https://example.instructure.com/api/lti/courses/1/names_and_roles?tlid=f91ca4d8-fa84-4a9b-b08e-47d5527416b0 description: Invocation URL context: type: string example: id: 4dde05e8ca1973bcca9bffc13e1548820eee93a3 label: CS-101 title: Computer Science 101 description: The LTI Context containing the memberships members: type: array items: $ref: '#/components/schemas/NamesAndRoleMembership' example: - status: Active name: Sienna Howell picture: https://example.instructure.com/images/messages/avatar-50.png given_name: Sienna family_name: Howell email: showell@school.edu lis_person_sourcedid: 1238.8763.00 user_id: 535fa085f22b4655f48cd5a36a9215f64c062838 roles: - http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor - http://purl.imsglobal.org/vocab/lis/v2/membership#ContentDeveloper message: - https://purl.imsglobal.org/spec/lti/claim/message_type: LtiResourceLinkRequest locale: en https://www.instructure.com/canvas_user_id: 1 https://www.instructure.com/canvas_user_login_id: showell@school.edu https://purl.imsglobal.org/spec/lti/claim/custom: message_locale: en person_address_timezone: America/Denver - status: Active name: Terrence Walls picture: https://example.instructure.com/images/messages/avatar-51.png given_name: Terrence family_name: Walls email: twalls@school.edu lis_person_sourcedid: 5790.3390.11 user_id: 86157096483e6b3a50bfedc6bac902c0b20a824f roles: - http://purl.imsglobal.org/vocab/lis/v2/membership#Learner message: - https://purl.imsglobal.org/spec/lti/claim/message_type: LtiResourceLinkRequest locale: de https://www.instructure.com/canvas_user_id: 2 https://www.instructure.com/canvas_user_login_id: twalls@school.edu https://purl.imsglobal.org/spec/lti/claim/custom: message_locale: en person_address_timezone: Europe/Berlin description: A list of NamesAndRoleMembership QuizItem: type: object properties: id: type: string example: '35' description: the ID of the quiz item position: type: integer example: 2 description: the position of the item within the quiz. The first item in a quiz is given position 1. points_possible: type: number example: 10.0 description: the number of points available to score on this item entry_type: type: string example: Item description: the type of the item. One of 'Item', 'Stimulus', 'BankEntry', or 'Bank'. entry_editable: type: boolean example: true description: whether the current user can edit the item -- used internally, no need to set stimulus_quiz_entry_id: type: string example: '3' description: the ID of the stimulus that this item is associated with. null if not associated with any stimuli. status: type: string example: mutable description: status of the item. one of 'mutable' or 'immutable'. Used internally, no need to set properties: type: string description: additional properties for the item (currently only populated by items with a BankItem entry) entry: type: string description: |- the specific data associated with the quiz item. These items can be either a QuestionItem, StimulusItem, BankEntryItem, or BankItem, depending on entry_type, and are defined separately description: Individual items within a quiz, whether they're questions, stimuli, banked content, or question banks. QuestionItem: type: object properties: id: type: string example: '123' description: the ID of the item title: type: string example: Linear Algebra 1-104 description: the question title item_body: type: string example:

What is 3 + 6?

description: the question content (can include html for rich content) calculator_type: type: string example: none description: type of calculator the user will have access to during the question ('none', basic' or 'scientific') feedback: type: string description: correct, incorrect, and general feedback for the question (see QuestionFeedback) interaction_type_slug: type: string example: essay description: |- can be thought of as the question type. One of 'multi-answer', 'matching', 'categorization', 'file-upload', 'formula', 'ordering', 'rich-fill-blank', 'hot-spot', 'choice', 'numeric', 'true-false', 'essay', or 'fill-blank' (deprecated). See Appendix: Question Types for more info about each type. interaction_data: type: object additionalProperties: true description: 'an object that contains the question data. See Appendix: Question Types for more info about this field.' properties: type: object additionalProperties: true description: 'an object that contains additional properties for some question types. See Appendix: Question Types for more info about this field.' scoring_data: type: object additionalProperties: true description: 'describes how to score the question. See Appendix: Question Types for more info about this field.' answer_feedback: type: object additionalProperties: true example: 5595b4c2-7dd6-447f-b8f1-9b6d0e0c287a:

Close, but in this case...

description: feedback provided for each answer (rich content, only available on 'choice' question types) scoring_algorithm: type: string example: AllOrNothing description: 'the algorithm used to score the question. See Appendix: Question Types for more info about this field.' created_at: type: string format: date-time example: '2013-01-15T15:00:00Z' description: the time the item was created updated_at: type: string format: date-time example: '2013-01-15T15:04:00Z' description: the time the item was last updated StimulusItem: type: object properties: id: type: string example: '456' description: the ID of the stimulus title: type: string example: Consider the following image description: stimulus title body: type: string example: description: stimulus content (rich content) instructions: type: string example: Some instructions... description: additional stimulus instructions source_url: type: string example: https://example.com description: optional URL; not visible to students orientation: type: string example: left description: where the stimulus appears relative to questions ('top' or 'left') passage: type: boolean example: false description: if the stimulus is treated as a passage (text - no question block) created_at: type: string format: date-time example: '2013-01-15T15:00:00Z' description: the time the stimulus was created updated_at: type: string format: date-time example: '2013-01-15T15:04:00Z' description: the time the stimulus was last updated BankEntryItem: type: object properties: id: type: string example: '789' description: the ID of the bank entry entry_type: type: string example: Item description: the type of the item. Either 'Item' or 'Stimulus'. archived: type: boolean example: false description: whether the banked item is archived entry: type: string description: the item (either a QuestionItem or StimulusItem, depending on entry_type) bank_id: type: string example: '555' description: the ID of the bank this entry belongs to created_at: type: string format: date-time example: '2013-01-15T15:00:00Z' description: the time the item was added to the bank updated_at: type: string format: date-time example: '2013-01-15T15:04:00Z' description: the time the bank entry was last updated BankItem: type: object properties: id: type: string example: '123' description: the ID of the bank title: type: string example: Linear Algebra 1-1 description: the title of the bank archived: type: boolean example: false description: whether the bank is archived entry_count: type: integer example: 20 description: the number of items in the bank, including stimuli item_entry_count: type: integer example: 18 description: the number of items in the bank, excluding stimuli ItemProperties: type: object properties: sample_num: type: integer example: 5 description: for items with a BankItem entry - the number of items to randomly select from the bank. null if all items should be included. QuestionFeedback: type: object properties: neutral: type: string example:

That was a hard one.

description: general feedback to show regardless of answer (rich content) correct: type: string example:

Nice work!

description: feedback to show if the question is answered correctly (rich content) incorrect: type: string example:

Remember to start by...

description: feedback to show if the question is answered incorrectly (rich content) NewQuiz: type: object properties: id: type: string example: '5' description: the ID of the quiz title: type: string example: Hamlet Act 3 Quiz description: the title of the quiz instructions: type: string example:

Welcome to the final exam for...

description: the quiz's instructions assignment_group_id: type: string example: '3' description: the ID of the quiz's assignment group points_possible: type: integer example: 20 description: The total point value given to the quiz due_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: when the quiz is due lock_at: type: string format: date-time description: when to lock the quiz unlock_at: type: string format: date-time example: '2013-01-21T23:59:00-07:00' description: when to unlock the quiz published: type: boolean example: true description: whether the quiz has a published or unpublished draft state grading_type: type: string example: points description: the type of grading the assignment receives ('pass_fail', 'percent', 'letter_grade', 'gpa_scale', or 'points') quiz_settings: type: string description: additional quiz settings (see QuizSettings) QuizSettings: type: object properties: calculator_type: type: string example: scientific description: type of calculator the user will have access to during the quiz ('none', basic' or 'scientific') filter_ip_address: type: boolean example: true description: whether access to the quiz should be restricted to the IP address ranges described in 'filters' filters: type: object additionalProperties: true example: ips: - - 1.1.1.1 - 1.1.1.3 - - 2.2.2.3 - 2.2.2.9 description: IP address ranges from which users can take the quiz, if 'filter_ip_address' is true one_at_a_time_type: type: string example: none description: whether questions should be shown all at once ('none') or one-at-a-time ('question') allow_backtracking: type: boolean example: false description: whether to allow user to return to previous questions when 'one_at_a_time_type' is set to 'question' shuffle_answers: type: boolean example: false description: whether answers should be shuffled during quiz shuffle_questions: type: boolean example: false description: whether questions should be shuffled during quiz require_student_access_code: type: boolean example: true description: whether to require an access code to take the quiz (set as 'student_access_code') student_access_code: type: string example: supersecret description: access code that is required to take the quiz if 'require_student_access_code' is true has_time_limit: type: boolean example: true description: whether the quiz has a time limit (set as 'session_time_limit_in_seconds') session_time_limit_in_seconds: type: integer example: 3600 description: time limit during the quiz (in seconds) multiple_attempts: type: string description: settings to configure multiple quiz attempts (see MultipleAttemptsSettings) result_view_settings: type: string description: settings to restrict student result view (see ResultViewSettings) MultipleAttemptsSettings: type: object properties: multiple_attempts_enabled: type: boolean example: true description: whether to allow multiple attempts attempt_limit: type: boolean example: true description: whether to limit the number of attempts if 'multiple_attempts_enabled' is true. Unlimited attempts if false. max_attempts: type: integer example: 3 description: number of attempts to allow if 'multiple_attempts_enabled' and 'attempt_limit' are true score_to_keep: type: string example: highest description: specifies which score to keep after attempts ('average', 'first', 'highest', or 'latest') cooling_period: type: boolean example: true description: whether to enforce a waiting period after an attempt (set as 'cooling_period_seconds') cooling_period_seconds: type: integer example: 1800 description: required waiting period (in seconds) between attempts. Enforced if 'cooling_period' is true. ResultViewSettings: type: object properties: result_view_restricted: type: boolean example: true description: whether to restrict the student result view display_points_awarded: type: boolean example: true description: whether to show points awarded (overall and per question), if 'result_view_restricted' is true display_points_possible: type: boolean example: true description: whether to show points possible (overall and per question), if 'result_view_restricted' is true display_items: type: boolean example: true description: whether to show questions in the result view, if 'result_view_restricted' is true display_item_response: type: boolean example: true description: whether to show student's responses in the result view, if 'display_items' is true display_item_response_qualifier: type: string example: always description: whether student responses should be shown for all attempts ('always'), only once after each attempt ('once_per_attempt'), only after their last attempt ('after_last_attempt'), or only once after their last attempt ('once_after_last_attempt'). if 'display_item_response' is true show_item_responses_at: type: string format: date-time example: '2024-06-20T20:00:00.000-06:00' description: when student responses should be shown to them, if 'display_item_responses' is true hide_item_responses_at: type: string format: date-time example: '2024-06-21T20:00:00.000-06:00' description: when student responses should be hidden from them, if 'display_item_responses' is true. must be later than 'show_item_responses_at' display_item_response_correctness: type: boolean example: true description: whether to indicate whether the student's response is correct/incorrect, if 'display_item_response' is true display_item_response_correctness_qualifier: type: string example: always description: whether student response correctness should be shown for all attempts ('always') or only after their last attempt ('after_last_attempt'), if 'display_item_response_correctness' is true show_item_response_correctness_at: type: string format: date-time example: '2024-06-20T20:00:00.000-06:00' description: when correctness of student responses should be shown to them, if 'display_item_response_correctness' is true hide_item_response_correctness_at: type: string format: date-time example: '2024-06-21T20:00:00.000-06:00' description: when correctness of student responses should be hidden from them, if 'display_item_response_correctness' is true. must be later than 'show_item_response_correctness_at' display_item_correct_answer: type: boolean example: true description: whether to show the correct answer for each question, if 'display_item_response_correctness' is true display_item_feedback: type: boolean example: true description: whether to show feedback for each item, if 'display_items' is true AccommodationResponse: type: object properties: message: type: string example: Accommodations processed description: Processing result message successful: type: array items: type: object additionalProperties: true example: - user_id: 5 description: List of successfully processed accommodations failed: type: array items: type: object additionalProperties: true example: - user_id: 6 error: User is not in any in-progress quiz sessions for course 3 description: List of accommodations that failed to process description: Response structure for processing accommodations CourseAccommodationRequest: type: object properties: user_id: type: integer example: 3 description: Canvas user ID of the student receiving accommodations extra_time: type: integer example: 60 description: Amount of extra time (in minutes) for quiz submission apply_to_in_progress_quiz_sessions: type: boolean example: true description: Apply accommodations to ongoing quiz sessions reduce_choices_enabled: type: boolean example: true description: Removes one incorrect answer from multiple-choice questions with 4+ choices description: Request format for setting course-level accommodations QuizAccommodationRequest: type: object properties: user_id: type: integer example: 3 description: Canvas user ID of the student receiving accommodations extra_time: type: integer example: 60 description: Amount of extra time (in minutes) for quiz submission extra_attempts: type: integer example: 1 description: Number of additional attempts allowed beyond the quiz limit reduce_choices_enabled: type: boolean example: true description: Removes one incorrect answer from multiple-choice questions with 4+ choices description: Request format for setting quiz-level accommodations Progress__new_quizzes_reports: type: object properties: id: type: integer example: 1 description: the ID of the Progress object context_id: type: integer example: 1 description: the context owning the job. context_type: type: string example: Assignment user_id: type: integer example: 123 description: the id of the user who started the job completion: type: integer example: 100 description: percent completed workflow_state: type: string example: completed description: the state of the job one of 'queued', 'running', 'completed', 'failed' created_at: type: string format: date-time example: '2013-01-15T15:00:00Z' description: the time the job was created updated_at: type: string format: date-time example: '2013-01-15T15:04:00Z' description: the time the job was last updated results: type: object additionalProperties: true example: url: https://canvas.example.edu/api/assignments/1/files/2/download description: for successfully completed jobs, this is a JSON object containing url of the report and other details url: type: string example: https://canvas.example.edu/api/v1/progress/1 description: url where a progress update can be retrieved NoticeCatalog: type: object properties: client_id: type: string example: '10000000000001' description: The LTI tool's client ID (global developer key ID) deployment_id: type: string example: 123:8865aa05b4b79b64a91a86042e43af5ea8ae79eb description: String that identifies the Platform-Tool integration governing the notices notice_handlers: type: array items: $ref: '#/components/schemas/NoticeHandler' example: - handler: '' notice_type: LtiHelloWorldNotice description: List of notice handlers for the tool description: Set of notice handlers (one per notice type) for an LTI tool deployment. NoticeHandler: type: object properties: handler: type: string example: https://example.com/notice_handler description: URL to receive the notice notice_type: type: string example: LtiHelloWorldNotice description: The type of notice max_batch_size: type: integer example: 100 description: The maximum number of notices to include in a single batch, or 'null' if not set. description: A notice handler for a particular tool deployment and notice type. NotificationPreference: type: object properties: href: type: string example: https://canvas.instructure.com/users/1/communication_channels/email/student@example.edu/notification_preferences/new_announcement notification: type: string example: new_announcement description: The notification this preference belongs to category: type: string example: announcement description: The category of that notification frequency: type: string example: daily description: How often to send notifications to this communication channel for the given notification. Possible values are 'immediately', 'daily', 'weekly', and 'never' ToolSetting: type: object properties: resource_type_code: type: string example: originality_reports description: the resource type code of the resource handler to use to display originality reports resource_url: type: string example: http://www.test.com/originality_report description: a URL that may be used to override the launch URL inferred by the specified resource_type_code. If used a 'resource_type_code' must also be specified. OriginalityReport: type: object properties: id: type: integer example: '4' description: The id of the OriginalityReport file_id: type: integer example: '8' description: The id of the file receiving the originality score originality_score: type: number example: '0.16' description: A number between 0 and 100 representing the originality score originality_report_file_id: type: integer example: '23' description: The ID of the file within Canvas containing the originality report document (if provided) originality_report_url: type: string example: http://www.example.com/report description: A non-LTI launch URL where the originality score of the file may be found. tool_setting: type: string description: A ToolSetting object containing optional 'resource_type_code' and 'resource_url' error_report: type: string description: A message describing the error. If set, the workflow_state will become 'error.' submission_time: type: string format: date-time description: The submitted_at date time of the submission. root_account_id: type: integer example: '1' description: The id of the root Account associated with the OriginalityReport OutcomeGroup: type: object properties: id: type: integer example: 1 description: the ID of the outcome group url: type: string example: /api/v1/accounts/1/outcome_groups/1 description: the URL for fetching/updating the outcome group. should be treated as opaque parent_outcome_group: type: string description: an abbreviated OutcomeGroup object representing the parent group of this outcome group, if any. omitted in the abbreviated form. context_id: type: integer example: 1 description: the context owning the outcome group. may be null for global outcome groups. omitted in the abbreviated form. context_type: type: string example: Account title: type: string example: Outcome group title description: title of the outcome group description: type: string example: Outcome group description description: description of the outcome group. omitted in the abbreviated form. vendor_guid: type: string example: customid9000 description: A custom GUID for the learning standard. subgroups_url: type: string example: /api/v1/accounts/1/outcome_groups/1/subgroups description: the URL for listing/creating subgroups under the outcome group. should be treated as opaque outcomes_url: type: string example: /api/v1/accounts/1/outcome_groups/1/outcomes description: the URL for listing/creating outcome links under the outcome group. should be treated as opaque import_url: type: string example: /api/v1/accounts/1/outcome_groups/1/import description: the URL for importing another group into this outcome group. should be treated as opaque. omitted in the abbreviated form. can_edit: type: boolean example: true description: whether the current user can update the outcome group OutcomeLink: type: object properties: url: type: string example: /api/v1/accounts/1/outcome_groups/1/outcomes/1 description: the URL for fetching/updating the outcome link. should be treated as opaque context_id: type: integer example: 1 description: the context owning the outcome link. will match the context owning the outcome group containing the outcome link; included for convenience. may be null for links in global outcome groups. context_type: type: string example: Account outcome_group: type: string description: an abbreviated OutcomeGroup object representing the group containing the outcome link. outcome: type: string description: an abbreviated Outcome object representing the outcome linked into the containing outcome group. assessed: type: boolean example: true description: whether this outcome has been used to assess a student in the context of this outcome link. In other words, this will be set to true if the context is a course, and a student has been assessed with this outcome in that course. can_unlink: type: boolean description: whether this outcome link is manageable and is not the last link to an aligned outcome OutcomeImportData: type: object properties: import_type: type: string example: instructure_csv description: The type of outcome import OutcomeImport: type: object properties: id: type: integer example: 1 description: The unique identifier for the outcome import. learning_outcome_group_id: type: integer example: 1 description: The unique identifier for the group into which the outcomes will be imported to, or NULL. created_at: type: string format: date-time example: '2013-12-01T23:59:00-06:00' description: The date the outcome import was created. ended_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date the outcome import finished. Returns null if not finished. updated_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date the outcome import was last updated. workflow_state: type: string example: imported description: |- The current state of the outcome import. - 'created': The outcome import has been created. - 'importing': The outcome import is currently processing. - 'succeeded': The outcome import has completed successfully. - 'failed': The outcome import failed. data: type: string description: See the OutcomeImportData specification above. progress: type: string example: '100' description: The progress of the outcome import. user: type: string description: The user that initiated the outcome_import. See the Users API for details. processing_errors: type: array items: type: array items: type: object additionalProperties: true example: - - 1 - 'Missing required fields: title' description: An array of row number / error message pairs. Returns the first 25 errors. OutcomeResult: type: object properties: id: type: integer example: '42' description: A unique identifier for this result score: type: integer example: 6 description: The student's score submitted_or_assessed_at: type: string format: date-time example: '2013-02-01T00:00:00-06:00' description: The datetime the resulting OutcomeResult was submitted at, or absent that, when it was assessed. links: type: object additionalProperties: true example: user: '3' learning_outcome: '97' alignment: '53' description: Unique identifiers of objects associated with this result percent: type: number example: '0.65' description: score's percent of maximum points possible for outcome, scaled to reflect any custom mastery levels that differ from the learning outcome description: A student's result for an outcome OutcomeRollupScoreLinks: type: object properties: outcome: type: integer example: 42 description: The id of the related outcome OutcomeRollupScore: type: object properties: score: type: integer example: 3 description: The rollup score for the outcome, based on the student alignment scores related to the outcome. This could be null if the student has no related scores. count: type: integer example: 6 description: The number of alignment scores included in this rollup. links: type: string example: outcome: '42' OutcomeRollupLinks: type: object properties: course: type: integer example: 42 description: If an aggregate result was requested, the course field will be present. Otherwise, the user and section field will be present (Optional) The id of the course that this rollup applies to user: type: integer example: 42 description: (Optional) The id of the user that this rollup applies to section: type: integer example: 57 description: (Optional) The id of the section the user is in OutcomeRollup: type: object properties: scores: type: string description: an array of OutcomeRollupScore objects name: type: string example: John Doe description: The name of the resource for this rollup. For example, the user name. links: type: string example: course: 42 user: 42 section: 57 OutcomeAlignment__outcome_results: type: object properties: id: type: string example: quiz_3 description: A unique identifier for this alignment name: type: string example: Big mid-term test description: The name of this alignment html_url: type: string description: (Optional) A URL for details about this alignment description: An asset aligned with this outcome OutcomePath: type: object properties: id: type: integer example: '42' description: A unique identifier for this outcome parts: type: string description: an array of OutcomePathPart objects description: The full path to an outcome OutcomePathPart: type: object properties: name: type: string example: Spelling out numbers description: The title of the outcome or outcome group description: An outcome or outcome group Outcome: type: object properties: id: type: integer example: 1 description: the ID of the outcome url: type: string example: /api/v1/outcomes/1 description: the URL for fetching/updating the outcome. should be treated as opaque context_id: type: integer example: 1 description: the context owning the outcome. may be null for global outcomes context_type: type: string example: Account title: type: string example: Outcome title description: title of the outcome display_name: type: string example: My Favorite Outcome description: Optional friendly name for reporting description: type: string example: Outcome description description: description of the outcome. omitted in the abbreviated form. vendor_guid: type: string example: customid9000 description: A custom GUID for the learning standard. points_possible: type: integer example: 5 description: maximum points possible. included only if the outcome embeds a rubric criterion. omitted in the abbreviated form. mastery_points: type: integer example: 3 description: points necessary to demonstrate mastery outcomes. included only if the outcome embeds a rubric criterion. omitted in the abbreviated form. calculation_method: type: string example: decaying_average description: the method used to calculate a students score calculation_int: type: integer example: 65 description: this defines the variable value used by the calculation_method. included only if calculation_method uses it ratings: type: array items: type: string x-canvas-declared-type: RubricRating description: possible ratings for this outcome. included only if the outcome embeds a rubric criterion. omitted in the abbreviated form. can_edit: type: boolean example: true description: whether the current user can update the outcome can_unlink: type: boolean example: true description: whether the outcome can be unlinked assessed: type: boolean example: true description: whether this outcome has been used to assess a student has_updateable_rubrics: type: boolean example: true description: whether updates to this outcome will propagate to unassessed rubrics that have imported it OutcomeAlignment__outcomes: type: object properties: id: type: integer example: 1 description: the id of the aligned learning outcome. assignment_id: type: integer example: 2 description: the id of the aligned assignment (null for live assessments). assessment_id: type: integer example: 3 description: the id of the aligned live assessment (null for assignments). submission_types: type: string example: online_text_entry,online_url description: a string representing the different submission types of an aligned assignment. url: type: string example: /courses/1/assignments/5 description: the URL for the aligned assignment. title: type: string example: Unit 1 test description: the title of the aligned assignment. Page: type: object properties: page_id: type: integer example: 1 description: the ID of the page url: type: string example: my-page-title description: the unique locator for the page title: type: string example: My Page Title description: the title of the page created_at: type: string format: date-time example: '2012-08-06T16:46:33-06:00' description: the creation date for the page updated_at: type: string format: date-time example: '2012-08-08T14:25:20-06:00' description: the date the page was last updated hide_from_students: type: boolean example: false description: '(DEPRECATED) whether this page is hidden from students (note: this is always reflected as the inverse of the published value)' editing_roles: type: string example: teachers,students description: roles allowed to edit the page; comma-separated list comprising a combination of 'teachers', 'students', 'members', and/or 'public' if not supplied, course defaults are used last_edited_by: type: string description: the User who last edited the page (this may not be present if the page was imported from another system) body: type: string example:

Page Content

description: the page content, in HTML (present when requesting a single page; optionally included when listing pages) published: type: boolean example: true description: whether the page is published (true) or draft state (false). publish_at: type: string format: date-time example: '2022-09-01T00:00:00' description: scheduled publication date for this page front_page: type: boolean example: false description: whether this page is the front page for the wiki locked_for_user: type: boolean example: false description: Whether or not this is locked for the user. lock_info: type: string description: (Optional) Information for the user about the lock. Present when locked_for_user is true. lock_explanation: type: string example: This page is locked until September 1 at 12:00am description: (Optional) An explanation of why this is locked for the user. Present when locked_for_user is true. editor: type: string example: rce description: The editor used to create and edit this page. May be one of 'rce' or 'block_editor'. block_editor_attributes: type: object additionalProperties: true example: id: 278 version: '0.2' blocks: '{...block json here...}' description: The block editor attributes for this page. (optionally included, and only if this is a block editor created page) PageRevision: type: object properties: revision_id: type: integer example: 7 description: an identifier for this revision of the page updated_at: type: string format: date-time example: '2012-08-07T11:23:58-06:00' description: the time when this revision was saved latest: type: boolean example: true description: whether this is the latest revision or not edited_by: type: string description: the User who saved this revision, if applicable (this may not be present if the page was imported from another system) url: type: string example: old-page-title description: the following fields are not included in the index action and may be omitted from the show action via summary=1 the historic url of the page title: type: string example: Old Page Title description: the historic page title body: type: string example:

Old Page Content

description: the historic page contents PeerReview: type: object properties: assessor_id: type: integer example: 23 description: The assessors user id asset_id: type: integer example: 13 description: The id for the asset associated with this Peer Review asset_type: type: string example: Submission description: The type of the asset id: type: integer example: 1 description: The id of the Peer Review user_id: type: integer example: 7 description: The user id for the owner of the asset workflow_state: type: string example: assigned description: The state of the Peer Review, either 'assigned' or 'completed' user: type: string example: User description: the User object for the owner of the asset if the user include parameter is provided (see user API) (optional) assessor: type: string example: User description: The User object for the assessor if the user include parameter is provided (see user API) (optional) submission_comments: type: string example: SubmissionComment description: The submission comments associated with this Peer Review if the submission_comment include parameter is provided (see submissions API) (optional) LtiAssignment: type: object properties: id: type: integer example: 4 name: type: string example: Midterm Review description: type: string example:

Do the following:

... points_possible: type: integer example: 10 due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: The due date for the assignment. If a user id is supplied and an assignment override is in place this field will reflect the due date as it applies to the user. lti_id: type: string example: 86157096483e6b3a50bfedc6bac902c0b20a824f course_id: type: integer example: 10000000000060 lti_course_id: type: string example: 66157096483e6b3a50bfedc6bac902c0b20a8241 description: A Canvas assignment Submission__plagiarism_detection_submissions: type: object properties: lti_course_id: type: string example: 66157096483e6b3a50bfedc6bac902c0b20a8241 course_id: type: integer example: 10000000000060 assignment_id: type: integer example: 23 description: The submission's assignment id attempt: type: integer example: 1 description: This is the submission attempt number. body: type: string example: There are three factors too... description: The content of the submission, if it was submitted directly in a text field. submission_type: type: string example: online_text_entry description: 'The types of submission ex: (''online_text_entry''|''online_url''|''online_upload''|''media_recording''|''student_annotation'')' submitted_at: type: string format: date-time example: '2012-01-01T01:00:00Z' description: The timestamp when the assignment was submitted url: type: string description: The URL of the submission (for 'online_url' submissions). user_id: type: integer example: 134 description: The id of the user who created the submission eula_agreement_timestamp: type: string example: '1508250487578' description: UTC timestamp showing when the user agreed to the EULA (if given by the tool provider) workflow_state: type: string example: submitted description: The current state of the submission attachments: type: string description: Files that are attached to the submission File__plagiarism_detection_submissions: type: object properties: size: type: integer example: 4 content-type: type: string example: text/plain url: type: string example: http://www.example.com/files/569/download?download_frd=1 id: type: integer example: 569 display_name: type: string example: file.txt created_at: type: string format: date-time example: '2012-07-06T14:58:50Z' updated_at: type: string format: date-time example: '2012-07-06T14:58:50Z' PlannerNote: type: object properties: id: type: integer example: 234 description: The ID of the planner note title: type: string example: Bring books tomorrow description: The title for a planner note description: type: string example: I need to bring books tomorrow for my course on biology description: The description of the planner note user_id: type: integer example: 1578941 description: The id of the associated user creating the planner note workflow_state: type: string example: active description: The current published state of the planner note course_id: type: integer example: 1578941 description: The course that the note is in relation too, if applicable todo_date: type: string format: date-time example: '2017-05-09T10:12:00Z' description: The datetime of when the planner note should show up on their planner linked_object_type: type: string example: assignment description: the type of the linked learning object linked_object_id: type: integer example: 131072 description: the id of the linked learning object linked_object_html_url: type: string example: https://canvas.example.com/courses/1578941/assignments/131072 description: the Canvas web URL of the linked learning object linked_object_url: type: string example: https://canvas.example.com/api/v1/courses/1578941/assignments/131072 description: the API URL of the linked learning object description: A planner note PlannerOverride: type: object properties: id: type: integer example: 234 description: The ID of the planner override plannable_type: type: string example: Assignment description: The type of the associated object for the planner override plannable_id: type: integer example: 1578941 description: The id of the associated object for the planner override user_id: type: integer example: 1578941 description: The id of the associated user for the planner override assignment_id: type: integer example: 1578941 description: The id of the plannable's associated assignment, if it has one workflow_state: type: string example: published description: The current published state of the item, synced with the associated object marked_complete: type: boolean example: false description: Controls whether or not the associated plannable item is marked complete on the planner dismissed: type: boolean example: false description: Controls whether or not the associated plannable item shows up in the opportunities list created_at: type: string format: date-time example: '2017-05-09T10:12:00Z' description: The datetime of when the planner override was created updated_at: type: string format: date-time example: '2017-05-09T10:12:00Z' description: The datetime of when the planner override was updated deleted_at: type: string format: date-time example: '2017-05-15T12:12:00Z' description: The datetime of when the planner override was deleted, if applicable description: User-controlled setting for whether an item should be displayed on the planner or not PollChoice: type: object properties: id: type: integer example: 1023 description: The unique identifier for the poll choice. poll_id: type: integer example: 1779 description: The id of the poll this poll choice belongs to. is_correct: type: boolean example: 'true' description: Specifies whether or not this poll choice is a 'correct' choice. text: type: string example: Choice A description: The text of the poll choice. position: type: integer example: 1 description: The order of the poll choice in relation to it's sibling poll choices. required: - id - poll_id - text PollSession: type: object properties: id: type: integer example: 1023 description: The unique identifier for the poll session. poll_id: type: integer example: 55 description: The id of the Poll this poll session is associated with course_id: type: integer example: 1111 description: The id of the Course this poll session is associated with course_section_id: type: integer example: 444 description: The id of the Course Section this poll session is associated with is_published: type: boolean example: 'true' description: Specifies whether or not this poll session has been published for students to participate in. has_public_results: type: boolean example: 'true' description: Specifies whether the results are viewable by students. created_at: type: string example: '2014-01-07T15:16:18Z' description: The time at which the poll session was created. results: type: object additionalProperties: true example: '144': 10 '145': 3 '146': 27 '147': 8 description: The results of the submissions of the poll. Each key is the poll choice id, and the value is the count of submissions. poll_submissions: type: string description: If the poll session has public results, this will return an array of all submissions, viewable by both students and teachers. If the results are not public, for students it will return their submission only. required: - id - poll_id - course_id PollSubmission: type: object properties: id: type: integer example: 1023 description: The unique identifier for the poll submission. poll_choice_id: type: integer example: 155 description: The unique identifier of the poll choice chosen for this submission. user_id: type: integer example: 4555 description: the unique identifier of the user who submitted this poll submission. created_at: type: string example: '2013-11-07T13:16:18Z' description: The date and time the poll submission was submitted. required: - id - poll_choice Poll: type: object properties: id: type: integer example: 1023 description: The unique identifier for the poll. question: type: string example: What do you consider most important to your learning in this course? description: The question/title of the poll. description: type: string example: This poll is to determine what priorities the students in the course have. description: A short description of the poll. created_at: type: string example: '2014-01-07T15:16:18Z' description: The time at which the poll was created. user_id: type: integer example: 105 description: The unique identifier for the user that created the poll. total_results: type: object additionalProperties: true example: '543': 20 '544': 5 '545': 17 description: An aggregate of the results of all associated poll sessions, with the poll choice id as the key, and the aggregated submission count as the value. required: - id - question ProficiencyRating: type: object properties: description: type: string example: Exceeds Mastery description: The description of the rating points: type: number example: 4 description: A non-negative number of points for the rating mastery: type: boolean example: false description: Indicates the rating where mastery is first achieved color: type: string example: 02672D description: The hex color code of the rating Proficiency: type: object properties: ratings: type: array items: {} example: [] description: An array of proficiency ratings. See the ProficiencyRating specification above. Progress__progress: type: object properties: id: type: integer example: 1 description: the ID of the Progress object context_id: type: integer example: 1 description: the context owning the job. context_type: type: string example: Account user_id: type: integer example: 123 description: the id of the user who started the job tag: type: string example: course_batch_update description: the type of operation completion: type: integer example: 100 description: percent completed workflow_state: type: string example: completed description: the state of the job one of 'queued', 'running', 'completed', 'failed' created_at: type: string format: date-time example: '2013-01-15T15:00:00Z' description: the time the job was created updated_at: type: string format: date-time example: '2013-01-15T15:04:00Z' description: the time the job was last updated message: type: string example: 17 courses processed description: optional details about the job results: type: object additionalProperties: true example: id: '123' description: optional results of the job. omitted when job is still pending url: type: string example: https://canvas.example.edu/api/lti/courses/1/progress/1 description: url where a progress update can be retrieved with an LTI access token QuizAssignmentOverrideSet: type: object properties: quiz_id: type: string example: '1' description: ID of the quiz those dates are for. due_dates: type: string description: An array of quiz assignment overrides. For students, this array will always contain a single item which is the set of dates that apply to that student. For teachers and staff, it may contain more. all_dates: type: string description: An array of all assignment overrides active for the quiz. This is visible only to teachers and staff. description: Set of assignment-overridden dates for a quiz. QuizAssignmentOverrideSetContainer: type: object properties: quiz_assignment_overrides: type: array items: $ref: '#/components/schemas/QuizAssignmentOverrideSet' description: The QuizAssignmentOverrideSet description: Container for set of assignment-overridden dates for a quiz. QuizAssignmentOverride: type: object properties: id: type: integer example: 1 description: ID of the assignment override, unless this is the base construct, in which case the 'id' field is omitted. due_at: type: string format: date-time example: '2014-02-21T06:59:59Z' description: The date after which any quiz submission is considered late. unlock_at: type: string format: date-time description: Date when the quiz becomes available for taking. lock_at: type: string format: date-time example: '2014-02-21T06:59:59Z' description: When the quiz will stop being available for taking. A value of null means it can always be taken. title: type: string example: Project X description: Title of the section this assignment override is for, if any. base: type: boolean example: true description: If this property is present, it means that dates in this structure are not based on an assignment override, but are instead for all students. description: Set of assignment-overridden dates for a quiz. QuizExtension: type: object properties: quiz_id: type: integer format: int64 example: 2 description: The ID of the Quiz the quiz extension belongs to. user_id: type: integer format: int64 example: 3 description: The ID of the Student that needs the quiz extension. extra_attempts: type: integer format: int64 example: 1 description: Number of times the student is allowed to re-take the quiz over the multiple-attempt limit. extra_time: type: integer format: int64 example: 60 description: Amount of extra time allowed for the quiz submission, in minutes. manually_unlocked: type: boolean example: true description: The student can take the quiz even if it's locked for everyone else end_at: type: string example: '2013-11-07T13:16:18Z' description: The time at which the quiz submission will be overdue, and be flagged as a late submission. required: - quiz_id - user_id QuizIPFilter: type: object properties: name: type: string example: Current Filter description: A unique name for the filter. account: type: string example: Some Quiz description: Name of the Account (or Quiz) the IP filter is defined in. filter: type: string example: 192.168.1.1/24 description: An IP address (or range mask) this filter embodies. required: - name - account - filter QuizGroup: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the question group. quiz_id: type: integer format: int64 example: 2 description: The ID of the Quiz the question group belongs to. name: type: string example: Fraction questions description: The name of the question group. pick_count: type: integer format: int64 example: 3 description: The number of questions to pick from the group to display to the student. question_points: type: integer format: int64 example: 10 description: The amount of points allotted to each question in the group. assessment_question_bank_id: type: integer format: int64 example: 2 description: The ID of the Assessment question bank to pull questions from. position: type: integer format: int64 example: 1 description: The order in which the question group will be retrieved and displayed. required: - id - quiz_id QuizQuestion: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the quiz question. quiz_id: type: integer format: int64 example: 2 description: The ID of the Quiz the question belongs to. assessment_question_bank_id: type: integer format: int64 example: 3 description: The ID of the assessment question bank this question belongs to. If assessment_question_bank_id has been enabled by SiteAdmin. created_at: type: string example: '2013-01-23T23:59:00-07:00' description: The date and time when the quiz question was created. position: type: integer format: int64 example: 1 description: The order in which the question will be retrieved and displayed. question_name: type: string example: Prime Number Identification description: The name of the question. question_type: type: string example: multiple_choice_question description: The type of the question. question_text: type: string example: Which of the following is NOT a prime number? description: The text of the question. points_possible: type: integer format: int64 example: 5 description: The maximum amount of points possible received for getting this question correct. correct_comments: type: string example: That's correct! description: The comments to display if the student answers the question correctly. incorrect_comments: type: string example: Unfortunately, that IS a prime number. description: The comments to display if the student answers incorrectly. neutral_comments: type: string example: Goldbach's conjecture proposes that every even integer greater than 2 can be expressed as the sum of two prime numbers. description: The comments to display regardless of how the student answered. answers: type: array items: $ref: '#/components/schemas/Answer' description: An array of available answers to display to the student. required: - id - quiz_id Answer: type: object properties: id: type: integer format: int64 example: 6656 description: The unique identifier for the answer. Do not supply if this answer is part of a new question answer_text: type: string example: Constantinople description: The text of the answer. answer_weight: type: integer format: int64 example: 100 description: An integer to determine correctness of the answer. Incorrect answers should be 0, correct answers should be 100. answer_comments: type: string example: Remember to check your spelling prior to submitting this answer. description: Specific contextual comments for a particular answer. text_after_answers: type: string example: ' is the capital of Utah.' description: Used in missing word questions. The text to follow the missing word answer_match_left: type: string example: Salt Lake City description: Used in matching questions. The static value of the answer that will be displayed on the left for students to match for. answer_match_right: type: string example: Utah description: Used in matching questions. The correct match for the value given in answer_match_left. Will be displayed in a dropdown with the other answer_match_right values.. matching_answer_incorrect_matches: type: string example: |- Nevada California Washington description: |- Used in matching questions. A list of distractors, delimited by new lines ( ) that will be seeded with all the answer_match_right values. numerical_answer_type: type: string example: exact_answer description: Used in numerical questions. Values can be 'exact_answer', 'range_answer', or 'precision_answer'. exact: type: integer format: int64 example: 42 description: Used in numerical questions of type 'exact_answer'. The value the answer should equal. margin: type: integer format: int64 example: 4 description: Used in numerical questions of type 'exact_answer'. The margin of error allowed for the student's answer. approximate: type: number example: 1234600000.0 description: Used in numerical questions of type 'precision_answer'. The value the answer should equal. precision: type: integer format: int64 example: 4 description: Used in numerical questions of type 'precision_answer'. The numerical precision that will be used when comparing the student's answer. start: type: integer format: int64 example: 1 description: Used in numerical questions of type 'range_answer'. The start of the allowed range (inclusive). end: type: integer format: int64 example: 10 description: Used in numerical questions of type 'range_answer'. The end of the allowed range (inclusive). blank_id: type: integer format: int64 example: 1170 description: Used in fill in multiple blank and multiple dropdowns questions. required: - answer_text - answer_weight QuizReport: type: object properties: id: type: integer example: 5 description: the ID of the quiz report quiz_id: type: integer example: 4 description: the ID of the quiz report_type: type: string example: student_analysis description: 'which type of report this is possible values: ''student_analysis'', ''item_analysis''' readable_type: type: string example: Student Analysis description: a human-readable (and localized) version of the report_type includes_all_versions: type: boolean example: true description: boolean indicating whether the report represents all submissions or only the most recent ones for each student anonymous: type: boolean example: false description: boolean indicating whether the report is for an anonymous survey. if true, no student names will be included in the csv generatable: type: boolean example: true description: boolean indicating whether the report can be generated, which is true unless the quiz is a survey one created_at: type: string format: date-time example: '2013-05-01T12:34:56-07:00' description: when the report was created updated_at: type: string format: date-time example: '2013-05-01T12:34:56-07:00' description: when the report was last updated url: type: string example: http://canvas.example.com/api/v1/courses/1/quizzes/1/reports/1 description: the API endpoint for this report file: type: string description: if the report has finished generating, a File object that represents it. refer to the Files API for more information about the format progress_url: type: string description: 'if the report has not yet finished generating, a URL where information about its progress can be retrieved. refer to the Progress API for more information (Note: not available in JSON-API format)' progress: type: string description: 'if the report is being generated, a Progress object that represents the operation. Refer to the Progress API for more information about the format. (Note: available only in JSON-API format)' QuizStatistics: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the quiz statistics report. quiz_id: type: integer format: int64 example: 2 description: "The ID of the Quiz the statistics report is for. \nNOTE: AVAILABLE ONLY IN NON-JSON-API REQUESTS." multiple_attempts_exist: type: boolean example: true description: Whether there are any students that have made mutliple submissions for this quiz. includes_all_versions: type: boolean example: true description: In the presence of multiple attempts, this field describes whether the statistics describe all the submission attempts and not only the latest ones. generated_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: The time at which the statistics were generated, which is usually after the occurrence of a quiz event, like a student submitting it. url: type: string example: http://canvas.example.edu/api/v1/courses/1/quizzes/2/statistics description: The API HTTP/HTTPS URL to this quiz statistics. html_url: type: string example: http://canvas.example.edu/courses/1/quizzes/2/statistics description: The HTTP/HTTPS URL to the page where the statistics can be seen visually. question_statistics: type: string description: Question-specific statistics for each question and its answers. submission_statistics: type: string description: Question-specific statistics for each question and its answers. links: type: string description: "JSON-API construct that contains links to media related to this quiz statistics object. \nNOTE: AVAILABLE ONLY IN JSON-API REQUESTS." required: - id - quiz_id QuizStatisticsLinks: type: object properties: quiz: type: string example: http://canvas.example.edu/api/v1/courses/1/quizzes/2 description: HTTP/HTTPS API URL to the quiz this statistics describe. description: Links to media related to QuizStatistics. QuizStatisticsQuestionStatistics: type: object properties: responses: type: integer format: int64 example: 3 description: Number of students who have provided an answer to this question. Blank or empty responses are not counted. answers: type: string description: Statistics related to each individual pre-defined answer. description: Statistics for submissions made to a specific quiz question. QuizStatisticsAnswerStatistics: type: object properties: id: type: integer format: int64 example: 3866 description: ID of the answer. text: type: string example: Blue. description: The text attached to the answer. weight: type: integer format: int64 example: 100 description: An integer to determine correctness of the answer. Incorrect answers should be 0, correct answers should 100 responses: type: integer format: int64 example: 2 description: Number of students who have chosen this answer. description: Statistics for a specific pre-defined answer in a Multiple-Choice or True/False quiz question. QuizStatisticsAnswerPointBiserial: type: object properties: answer_id: type: integer format: int64 example: 3866 description: ID of the answer the point biserial is for. point_biserial: type: number example: -0.802955068546966 description: The point biserial value for this answer. Value ranges between -1 and 1. correct: type: boolean example: true description: Convenience attribute that denotes whether this is the correct answer as opposed to being a distractor. This is mutually exclusive with the `distractor` value distractor: type: boolean example: false description: Convenience attribute that denotes whether this is a distractor answer and not the correct one. This is mutually exclusive with the `correct` value description: A point-biserial construct for a single pre-defined answer in a Multiple-Choice or True/False question. QuizStatisticsSubmissionStatistics: type: object properties: unique_count: type: integer format: int64 example: 3 description: The number of students who have taken the quiz. score_average: type: number example: 4.33333333333333 description: The mean of the student submission scores. score_high: type: number example: 6 description: The highest submission score. score_low: type: number example: 3 description: The lowest submission score. score_stdev: type: number example: 1.24721912892465 description: Standard deviation of the submission scores. scores: type: object additionalProperties: true example: '50': 1 '34': 5 '100': 1 description: A percentile distribution of the student scores, each key is the percentile (ranges between 0 and 100%) while the value is the number of students who received that score. correct_count_average: type: number example: 3.66666666666667 description: The mean of the number of questions answered correctly by each student. incorrect_count_average: type: number example: 5 description: The mean of the number of questions answered incorrectly by each student. duration_average: type: number example: 42.333333333 description: The average time spent by students while taking the quiz. description: Generic statistics for all submissions for a quiz. QuizSubmissionEvent: type: object properties: created_at: type: string format: date-time example: '2014-10-08T19:29:58Z' description: a timestamp record of creation time event_type: type: string example: question_answered description: the type of event being sent event_data: type: object additionalProperties: true example: answer: '42' description: custom contextual data for the specific event type description: An event passed from the Quiz Submission take page QuizSubmissionQuestion: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the QuizQuestion this answer is for. flagged: type: boolean example: true description: Whether this question is flagged. answer: type: string description: The provided answer (if any) for this question. The format of this parameter depends on the type of the question, see the Appendix for more information. answers: type: array items: type: string description: The possible answers for this question when those possible answers are necessary. The presence of this parameter is dependent on permissions. required: - id QuizSubmissionUserList: type: object properties: {} QuizSubmissionUserListMeta: type: object properties: {} JSONAPIPagination: type: object properties: {} QuizSubmission: type: object properties: id: type: integer format: int64 example: 1 description: The ID of the quiz submission. quiz_id: type: integer format: int64 example: 2 description: The ID of the Quiz the quiz submission belongs to. user_id: type: integer format: int64 example: 3 description: The ID of the Student that made the quiz submission. submission_id: type: integer format: int64 example: 1 description: The ID of the Submission the quiz submission represents. started_at: type: string example: '2013-11-07T13:16:18Z' description: The time at which the student started the quiz submission. finished_at: type: string example: '2013-11-07T13:16:18Z' description: The time at which the student submitted the quiz submission. end_at: type: string example: '2013-11-07T13:16:18Z' description: The time at which the quiz submission will be overdue, and be flagged as a late submission. attempt: type: integer format: int64 example: 3 description: For quizzes that allow multiple attempts, this field specifies the quiz submission attempt number. extra_attempts: type: integer format: int64 example: 1 description: Number of times the student was allowed to re-take the quiz over the multiple-attempt limit. extra_time: type: integer format: int64 example: 60 description: Amount of extra time allowed for the quiz submission, in minutes. manually_unlocked: type: boolean example: true description: The student can take the quiz even if it's locked for everyone else time_spent: type: integer format: int64 example: 300 description: Amount of time spent, in seconds. score: type: integer format: int64 example: 3 description: The score of the quiz submission, if graded. score_before_regrade: type: integer format: int64 example: 2 description: The original score of the quiz submission prior to any re-grading. kept_score: type: integer format: int64 example: 5 description: For quizzes that allow multiple attempts, this is the score that will be used, which might be the score of the latest, or the highest, quiz submission. fudge_points: type: integer format: int64 example: 1 description: Number of points the quiz submission's score was fudged by. has_seen_results: type: boolean example: true description: Whether the student has viewed their results to the quiz. workflow_state: type: string example: untaken description: 'The current state of the quiz submission. Possible values: [''untaken''|''pending_review''|''complete''|''settings_only''|''preview''].' overdue_and_needs_submission: type: boolean example: 'false' description: Indicates whether the quiz submission is overdue and needs submission required: - id - quiz_id Quiz: type: object properties: id: type: integer example: 5 description: the ID of the quiz title: type: string example: Hamlet Act 3 Quiz description: the title of the quiz html_url: type: string example: http://canvas.example.edu/courses/1/quizzes/2 description: the HTTP/HTTPS URL to the quiz mobile_url: type: string example: http://canvas.example.edu/courses/1/quizzes/2?persist_healdess=1&force_user=1 description: a url suitable for loading the quiz in a mobile webview. it will persiste the headless session and, for quizzes in public courses, will force the user to login preview_url: type: string example: http://canvas.example.edu/courses/1/quizzes/2/take?preview=1 description: A url that can be visited in the browser with a POST request to preview a quiz as the teacher. Only present when the user may grade description: type: string example: This is a quiz on Act 3 of Hamlet description: the description of the quiz quiz_type: type: string example: assignment description: 'type of quiz possible values: ''practice_quiz'', ''assignment'', ''graded_survey'', ''survey''' assignment_group_id: type: integer example: 3 description: 'the ID of the quiz''s assignment group:' time_limit: type: integer example: 5 description: quiz time limit in minutes shuffle_answers: type: boolean example: false description: shuffle answers for students? hide_results: type: string example: always description: 'let students see their quiz responses? possible values: null, ''always'', ''until_after_last_attempt''' show_correct_answers: type: boolean example: true description: show which answers were correct when results are shown? only valid if hide_results=null show_correct_answers_last_attempt: type: boolean example: true description: restrict the show_correct_answers option above to apply only to the last submitted attempt of a quiz that allows multiple attempts. only valid if show_correct_answers=true and allowed_attempts > 1 show_correct_answers_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: when should the correct answers be visible by students? only valid if show_correct_answers=true hide_correct_answers_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: prevent the students from seeing correct answers after the specified date has passed. only valid if show_correct_answers=true one_time_results: type: boolean example: true description: prevent the students from seeing their results more than once (right after they submit the quiz) scoring_policy: type: string example: keep_highest description: 'which quiz score to keep (only if allowed_attempts != 1) possible values: ''keep_highest'', ''keep_latest''' allowed_attempts: type: integer example: 3 description: how many times a student can take the quiz -1 = unlimited attempts one_question_at_a_time: type: boolean example: false description: show one question at a time? question_count: type: integer example: 12 description: the number of questions in the quiz points_possible: type: integer example: 20 description: The total point value given to the quiz cant_go_back: type: boolean example: false description: lock questions after answering? only valid if one_question_at_a_time=true access_code: type: string example: 2beornot2be description: access code to restrict quiz access ip_filter: type: string example: 123.123.123.123 description: IP address or range that quiz access is limited to due_at: type: string format: date-time example: '2013-01-23T23:59:00-07:00' description: when the quiz is due lock_at: type: string format: date-time description: when to lock the quiz unlock_at: type: string format: date-time example: '2013-01-21T23:59:00-07:00' description: when to unlock the quiz published: type: boolean example: true description: whether the quiz has a published or unpublished draft state. unpublishable: type: boolean example: true description: Whether the assignment's 'published' state can be changed to false. Will be false if there are student submissions for the quiz. locked_for_user: type: boolean example: false description: Whether or not this is locked for the user. lock_info: type: string description: (Optional) Information for the user about the lock. Present when locked_for_user is true. lock_explanation: type: string example: This quiz is locked until September 1 at 12:00am description: (Optional) An explanation of why this is locked for the user. Present when locked_for_user is true. speedgrader_url: type: string example: http://canvas.instructure.com/courses/1/speed_grader?assignment_id=1 description: Link to SpeedGrader for this quiz. Will not be present if quiz is unpublished quiz_extensions_url: type: string example: http://canvas.instructure.com/courses/1/quizzes/2/quiz_extensions description: Link to endpoint to send extensions for this quiz. permissions: type: string description: Permissions the user has for the quiz all_dates: type: array items: type: string x-canvas-declared-type: AssignmentDate description: list of due dates for the quiz version_number: type: integer example: 3 description: Current version number of the quiz question_types: type: array items: type: string example: - multiple_choice - essay description: List of question types in the quiz anonymous_submissions: type: boolean example: false description: Whether survey submissions will be kept anonymous (only applicable to 'graded_survey', 'survey' quiz types) QuizPermissions: type: object properties: read: type: boolean example: true description: whether the user can view the quiz submit: type: boolean example: true description: whether the user may submit a submission for the quiz create: type: boolean example: true description: whether the user may create a new quiz manage: type: boolean example: true description: whether the user may edit, update, or delete the quiz read_statistics: type: boolean example: true description: whether the user may view quiz statistics for this quiz review_grades: type: boolean example: true description: whether the user may review grades for all quiz submissions for this quiz update: type: boolean example: true description: whether the user may update the quiz description: Permissions the user has for the quiz Result__result: type: object properties: id: type: string example: http://institution.canvas.com/api/lti/courses/5/line_items/2/results/1 description: The fully qualified URL for showing the Result userId: type: string example: 50 | 'abcasdf' description: The lti_user_id or the Canvas user_id resultScore: type: number example: '50' description: The score of the result as defined by Canvas, scaled to the resultMaximum resultMaximum: type: number example: '50' description: Maximum possible score for this result; 1 is the default value and will be assumed if not specified otherwise. Minimum value of 0 required. comment: type: string description: Comment visible to the student about the result. scoreOf: type: string example: http://institution.canvas.com/api/lti/courses/5/line_items/2 description: URL of the line item this belongs to RolePermissions: type: object properties: enabled: type: boolean example: true description: Whether the role has the permission locked: type: boolean example: false description: Whether the permission is locked by this role applies_to_self: type: boolean example: true description: Whether the permission applies to the account this role is in. Only present if enabled is true applies_to_descendants: type: boolean example: false description: Whether the permission cascades down to sub accounts of the account this role is in. Only present if enabled is true readonly: type: boolean example: false description: Whether the permission can be modified in this role (i.e. whether the permission is locked by an upstream role). explicit: type: boolean example: true description: Whether the value of enabled is specified explicitly by this role, or inherited from an upstream role. prior_default: type: boolean example: false description: The value that would have been inherited from upstream if the role had not explicitly set a value. Only present if explicit is true. Role: type: object properties: id: type: integer example: 1 description: The id of the role label: type: string example: New Role description: The label of the role. role: type: string example: New Role description: The label of the role. (Deprecated alias for 'label') base_role_type: type: string example: AccountMembership description: The role type that is being used as a base for this role. For account-level roles, this is 'AccountMembership'. For course-level roles, it is an enrollment type. is_account_role: type: boolean example: true description: Whether this role applies to account memberships (i.e., not linked to an enrollment in a course). account: type: object additionalProperties: true example: id: 1019 name: CGNU parent_account_id: 73 root_account_id: 1 sis_account_id: cgnu description: JSON representation of the account the role is defined in. workflow_state: type: string example: active description: 'The state of the role: ''active'', ''inactive'', or ''built_in''' created_at: type: string format: date-time example: '2020-12-01T16:20:00-06:00' description: The date and time the role was created. last_updated_at: type: string format: date-time example: '2023-10-31T23:59:00-06:00' description: The date and time the role was last updated. permissions: type: object additionalProperties: true example: read_course_content: enabled: true locked: false readonly: false explicit: true prior_default: false read_course_list: enabled: true locked: true readonly: true explicit: false read_question_banks: enabled: false locked: true readonly: false explicit: true prior_default: false read_reports: enabled: true locked: false readonly: false explicit: false description: A dictionary of permissions keyed by name (see 'List assignable permissions' API). Permission: type: object properties: key: type: string example: manage_lti_add description: The API identifier for the permission label: type: string example: LTI - add description: The human-readable label for the permission group: type: string example: manage_lti description: The group this permission belongs to, if it is part of a granular permission group group_label: type: string example: Manage LTI description: The human-readable label for the group this permission belongs to available_to: type: array items: type: string example: - AccountAdmin - AccountMembership - TeacherEnrollment - TaEnrollment - DesignerEnrollment description: The base role types this permission can be enabled for true_for: type: array items: type: string example: - AccountAdmin - TeacherEnrollment - TaEnrollment - DesignerEnrollment description: The base role types this permission is enabled for by default description: A permission that can be granted to a role PermissionHelpText: type: object properties: details: type: array items: type: object additionalProperties: true example: - title: Add External Tools description: Allows users to add external tools (LTI) to courses. description: Detailed explanations about what the permission does. considerations: type: array items: type: object additionalProperties: true example: - title: Security Risk description: Granting this permission may expose your system to security vulnerabilities. description: A list of considerations or warnings about using the permission. description: Information about a permission, including its purpose and considerations for use. Rubric: type: object properties: id: type: integer example: 1 description: the ID of the rubric title: type: string example: some title description: title of the rubric context_id: type: integer example: 1 description: the context owning the rubric context_type: type: string example: Course points_possible: type: integer example: '10.0' reusable: type: boolean example: 'false' read_only: type: boolean example: 'true' free_form_criterion_comments: type: boolean example: 'true' description: whether or not free-form comments are used hide_score_total: type: boolean example: 'true' data: type: array items: $ref: '#/components/schemas/RubricCriterion' description: An array with all of this Rubric's grading Criteria assessments: type: array items: $ref: '#/components/schemas/RubricAssessment' description: If an assessment type is included in the 'include' parameter, includes an array of rubric assessment objects for a given rubric, based on the assessment type requested. If the user does not request an assessment type this key will be absent. associations: type: array items: $ref: '#/components/schemas/RubricAssociation' description: If an association type is included in the 'include' parameter, includes an array of rubric association objects for a given rubric, based on the association type requested. If the user does not request an association type this key will be absent. RubricCriterion: type: object properties: id: type: string example: _10 description: the ID of the criterion description: type: string long_description: type: string points: type: integer example: '5' criterion_use_range: type: boolean example: 'false' ratings: type: array items: $ref: '#/components/schemas/RubricRating__rubrics' description: the possible ratings for this Criterion RubricRating__rubrics: type: object properties: id: type: string example: name_2 criterion_id: type: string example: _10 description: type: string long_description: type: string points: type: integer example: '5' RubricAssessment: type: object properties: id: type: integer example: 1 description: the ID of the rubric rubric_id: type: integer example: 1 description: the rubric the assessment belongs to rubric_association_id: type: integer example: '2' score: type: integer example: '5.0' artifact_type: type: string example: Submission description: the object of the assessment artifact_id: type: integer example: '3' description: the id of the object of the assessment artifact_attempt: type: integer example: '2' description: the current number of attempts made on the object of the assessment assessment_type: type: string example: grading description: the type of assessment. values will be either 'grading', 'peer_review', or 'provisional_grade' assessor_id: type: integer example: '6' description: user id of the person who made the assessment data: type: array items: type: object additionalProperties: true description: (Optional) If 'full' is included in the 'style' parameter, returned assessments will have their full details contained in their data hash. If the user does not request a style, this key will be absent. comments: type: array items: type: string description: (Optional) If 'comments_only' is included in the 'style' parameter, returned assessments will include only the comments portion of their data hash. If the user does not request a style, this key will be absent. RubricAssociation: type: object properties: id: type: integer example: 1 description: the ID of the association rubric_id: type: integer example: '1' description: the ID of the rubric association_id: type: integer example: 1 description: the ID of the object this association links to association_type: type: string example: Course description: the type of object this association links to use_for_grading: type: boolean example: 'true' description: Whether or not the associated rubric is used for grade calculation summary_data: type: string example: '' purpose: type: string example: grading description: Whether or not the association is for grading (and thus linked to an assignment) or if it's to indicate the rubric should appear in its context. Values will be grading or bookmark. hide_score_total: type: boolean example: 'true' description: Whether or not the score total is displayed within the rubric. This option is only available if the rubric is not used for grading. hide_points: type: boolean example: 'true' hide_outcome_results: type: boolean example: 'true' Score: type: object properties: userId: type: string example: 50 | 'abcasdf' description: The lti_user_id or the Canvas user_id scoreGiven: type: number example: '50' description: The Current score received in the tool for this line item and user, scaled to the scoreMaximum scoreMaximum: type: number example: '50' description: Maximum possible score for this result; it must be present if scoreGiven is present. comment: type: string description: Comment visible to the student about this score. timestamp: type: string example: '2017-04-16T18:54:36.736+00:00' description: Date and time when the score was modified in the tool. Should use subsecond precision. activityProgress: type: string example: Completed description: Indicate to Canvas the status of the user towards the activity's completion. Must be one of Initialized, Started, InProgress, Submitted, Completed gradingProgress: type: string example: FullyGraded description: Indicate to Canvas the status of the grading process. A value of PendingManual will require intervention by a grader. Values of NotReady, Failed, and Pending will cause the scoreGiven to be ignored. FullyGraded values will require no action. Possible values are NotReady, Failed, Pending, PendingManual, FullyGraded submission: type: object additionalProperties: true example: submittedAt: '2017-04-14T18:54:36.736+00:00' description: 'Contains metadata about the submission attempt, like submittedAt: Date and time that the submission was originally created - should use ISO8601-formatted date with subsecond precision.' Section: type: object properties: id: type: integer example: 1 description: The unique identifier for the section. name: type: string example: Section A description: The name of the section. sis_section_id: type: string example: s34643 description: The sis id of the section. This field is only included if the user has permission to view SIS information. integration_id: type: string example: '3452342345' description: 'Optional: The integration ID of the section. This field is only included if the user has permission to view SIS information.' sis_import_id: type: integer example: 47 description: The unique identifier for the SIS import if created through SIS. This field is only included if the user has permission to manage SIS information. course_id: type: integer example: 7 description: The unique Canvas identifier for the course in which the section belongs sis_course_id: type: string example: 7 description: The unique SIS identifier for the course in which the section belongs. This field is only included if the user has permission to view SIS information. start_at: type: string format: date-time example: '2012-06-01T00:00:00-06:00' description: the start date for the section, if applicable end_at: type: string format: date-time description: the end date for the section, if applicable restrict_enrollments_to_section_dates: type: boolean description: Restrict user enrollments to the start and end dates of the section nonxlist_course_id: type: integer description: The unique identifier of the original course of a cross-listed section total_students: type: integer example: 13 description: 'optional: the total number of active and invited students in the section' students: type: array items: type: string x-canvas-declared-type: User description: 'optional: A list of students that are included in the section. Returned only if include[]=students. WARNING: this collection''s size is capped (if there are an extremely large number of users in the section (thousands) not all of them will be returned). If you need to capture all the users in a section with certainty or experiencing slow response consider using the paginated /api/v1/sections//users endpoint.' SharedBrandConfig: type: object properties: id: type: integer example: 987 description: The shared_brand_config identifier. account_id: type: string example: '' description: The id of the account it should be shared within. brand_config_md5: type: string example: 1d31002c95842f8fe16da7dfcc0d1f39 description: The md5 (since BrandConfigs are identified by MD5 and not numeric id) of the BrandConfig to share. name: type: string example: Crimson and Gold Verson 1 description: The name to share this theme as created_at: type: string format: date-time example: '2012-07-13T10:55:20-06:00' description: When this was created updated_at: type: string format: date-time example: '2012-07-13T10:55:20-06:00' description: When this was last updated SisImportError: type: object properties: sis_import_id: type: integer example: '1' description: The unique identifier for the SIS import. file: type: string example: courses.csv description: The file where the error message occurred. message: type: string example: No short_name given for course C001 description: The error message that from the record. row_info: type: string example: 'account_1, Sub account 1,, active ' description: The contents of the line that had the error. row: type: integer example: '34' description: The line number where the error occurred. Some Importers do not yet support this. This is a 1 based index starting with the header row. SisImportData: type: object properties: import_type: type: string example: instructure_csv description: The type of SIS import supplied_batches: type: array items: type: string example: - term - course - section - user - enrollment description: Which files were included in the SIS import counts: type: string description: The number of rows processed for each type of import SisImportStatistic: type: object properties: created: type: integer example: 18 description: This is the number of items that were created. concluded: type: integer example: 3 description: This is the number of items that marked as completed. This only applies to courses and enrollments. deactivated: type: integer example: 1 description: This is the number of Enrollments that were marked as 'inactive'. This only applies to enrollments. restored: type: integer example: 2 description: This is the number of items that were set to an active state from a completed, inactive, or deleted state. deleted: type: integer example: 40 description: This is the number of items that were deleted. SisImportStatistics: type: object properties: total_state_changes: type: integer example: 382 description: This is the total number of items that were changed in the sis import. There are a few caveats that can cause this number to not add up to the individual counts. There are some state changes that happen that have no impact to the object. An example would be changing a course from 'created' to 'claimed'. Both of these would be considered an active course, but would increment this counter. In this example the course would not increment the created or restored counters for course statistic. Account: type: string description: This contains that statistics for accounts. EnrollmentTerm: type: string description: This contains that statistics for terms. CommunicationChannel: type: string description: This contains that statistics for communication channels. This is an indirect effect from creating or deleting a user. AbstractCourse: type: string description: This contains that statistics for abstract courses. Course: type: string description: This contains that statistics for courses. CourseSection: type: string description: This contains that statistics for course sections. Enrollment: type: string description: This contains that statistics for enrollments. GroupCategory: type: string description: This contains that statistics for group categories. Group: type: string description: This contains that statistics for groups. GroupMembership: type: string description: This contains that statistics for group memberships. This can be a direct impact from the import or indirect from an enrollment being deleted. Pseudonym: type: string description: 'This contains that statistics for pseudonyms. Pseudonyms are logins for users, and are the object that ties an enrollment to a user. This would be impacted from the user importer. ' UserObserver: type: string description: This contains that statistics for user observers. AccountUser: type: string description: This contains that statistics for account users. SisImportCounts: type: object properties: accounts: type: integer example: 0 terms: type: integer example: 3 abstract_courses: type: integer example: 0 courses: type: integer example: 121 sections: type: integer example: 278 xlists: type: integer example: 0 users: type: integer example: 346 enrollments: type: integer example: 1542 groups: type: integer example: 0 group_memberships: type: integer example: 0 grade_publishing_results: type: integer example: 0 batch_courses_deleted: type: integer example: 11 description: the number of courses that were removed because they were not included in the batch for batch_mode imports. Only included if courses were deleted batch_sections_deleted: type: integer example: 0 description: the number of sections that were removed because they were not included in the batch for batch_mode imports. Only included if sections were deleted batch_enrollments_deleted: type: integer example: 150 description: the number of enrollments that were removed because they were not included in the batch for batch_mode imports. Only included if enrollments were deleted error_count: type: integer example: 0 warning_count: type: integer example: 0 SisImport: type: object properties: id: type: integer example: 1 description: The unique identifier for the SIS import. created_at: type: string format: date-time example: '2013-12-01T23:59:00-06:00' description: The date the SIS import was created. ended_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date the SIS import finished. Returns null if not finished. updated_at: type: string format: date-time example: '2013-12-02T00:03:21-06:00' description: The date the SIS import was last updated. workflow_state: type: string example: imported description: |- The current state of the SIS import. - 'initializing': The SIS import is being created, if this gets stuck in initializing, it will not import and will continue on to next import. - 'created': The SIS import has been created. - 'importing': The SIS import is currently processing. - 'cleanup_batch': The SIS import is currently cleaning up courses, sections, and enrollments not included in the batch for batch_mode imports. - 'imported': The SIS import has completed successfully. - 'imported_with_messages': The SIS import completed with errors or warnings. - 'aborted': The SIS import was aborted. - 'failed_with_messages': The SIS import failed with errors. - 'failed': The SIS import failed. - 'restoring': The SIS import is restoring states of imported items. - 'partially_restored': The SIS import is restored some of the states of imported items. This is generally due to passing a param like undelete only. - 'restored': The SIS import is restored all of the states of imported items. data: type: string description: data statistics: type: string description: statistics progress: type: string example: '100' description: The progress of the SIS import. The progress will reset when using batch_mode and have a different progress for the cleanup stage errors_attachment: type: string description: The errors_attachment api object of the SIS import. Only available if there are errors or warning and import has completed. user: type: string description: The user that initiated the sis_batch. See the Users API for details. processing_warnings: type: array items: type: array items: type: string example: - - students.csv - user John Doe has already claimed john_doe's requested login information, skipping description: Only imports that are complete will get this data. An array of CSV_file/warning_message pairs. processing_errors: type: array items: type: array items: type: string example: - - students.csv - Error while importing CSV. Please contact support. description: An array of CSV_file/error_message pairs. batch_mode: type: boolean example: 'true' description: Whether the import was run in batch mode. batch_mode_term_id: type: string example: '1234' description: The term the batch was limited to. multi_term_batch_mode: type: boolean example: 'false' description: Enables batch mode against all terms in term file. Requires change_threshold to be set. skip_deletes: type: boolean example: 'false' description: When set the import will skip any deletes. override_sis_stickiness: type: boolean example: 'false' description: Whether UI changes were overridden. add_sis_stickiness: type: boolean example: 'false' description: Whether stickiness was added to the batch changes. clear_sis_stickiness: type: boolean example: 'false' description: Whether stickiness was cleared. diffing_threshold_exceeded: type: boolean example: 'true' description: Whether a diffing job failed because the threshold limit got exceeded. diffing_data_set_identifier: type: string example: account-5-enrollments description: The identifier of the data set that this SIS batch diffs against diffing_remaster: type: boolean example: 'false' description: Whether diffing remaster data was enabled. diffed_against_import_id: type: integer example: 1 description: The ID of the SIS Import that this import was diffed against csv_attachments: type: array items: type: array items: type: string format: binary example: [] description: An array of CSV files for processing SisAssignment: type: object properties: id: type: integer example: 4 description: The unique identifier for the assignment. course_id: type: integer example: 6 description: The unique identifier for the course. name: type: string example: some assignment description: the name of the assignment created_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: The time at which this assignment was originally created due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the due date for the assignment. returns null if not present. NOTE: If this assignment has assignment overrides, this field will be the due date as it applies to the user requesting information from the API.' unlock_at: type: string format: date-time example: '2013-01-01T00:00:00-06:00' description: (Optional) Time at which this was/will be unlocked. lock_at: type: string format: date-time example: '2013-02-01T00:00:00-06:00' description: (Optional) Time at which this was/will be locked. points_possible: type: integer example: 12 description: The maximum points possible for the assignment submission_types: type: array items: type: string example: - online_text_entry description: 'the types of submissions allowed for this assignment list containing one or more of the following: ''discussion_topic'', ''online_quiz'', ''on_paper'', ''none'', ''external_tool'', ''online_text_entry'', ''online_url'', ''online_upload'', ''media_recording'', ''student_annotation''' integration_id: type: string example: '12341234' description: Third Party integration id for assignment integration_data: type: string example: other_data description: (optional, Third Party integration data for assignment) include_in_final_grade: type: boolean example: true description: If false, the assignment will be omitted from the student's final grade assignment_group: type: array items: $ref: '#/components/schemas/AssignmentGroupAttributes' description: Includes attributes of a assignment_group for convenience. For more details see Assignments API. sections: type: array items: $ref: '#/components/schemas/SectionAttributes' description: Includes attributes of a section for convenience. For more details see Sections API. user_overrides: type: array items: $ref: '#/components/schemas/UserAssignmentOverrideAttributes' description: Includes attributes of a user assignment overrides. For more details see Assignments API. description: Assignments that have post_to_sis enabled with other objects for convenience AssignmentGroupAttributes: type: object properties: id: type: integer example: 1 description: the id of the Assignment Group name: type: string example: group2 description: the name of the Assignment Group group_weight: type: integer example: 20 description: the weight of the Assignment Group sis_source_id: type: string example: '1234' description: the sis source id of the Assignment Group integration_data: type: object additionalProperties: true example: '5678': 0954 description: the integration data of the Assignment Group description: Some of the attributes of an Assignment Group. See Assignments API for more details SectionAttributes: type: object properties: id: type: integer example: 1 description: The unique identifier for the section. name: type: string example: Section A description: The name of the section. sis_id: type: string example: s34643 description: The sis id of the section. integration_id: type: string example: '3452342345' description: 'Optional: The integration ID of the section.' origin_course: type: string description: The course to which the section belongs or the course from which the section was cross-listed xlist_course: type: string description: 'Optional: Attributes of the xlist course. Only present when the section has been cross-listed. See Courses API for more details' override: type: string description: 'Optional: Attributes of the assignment override that apply to the section. See Assignment API for more details' description: Some of the attributes of a section. For more details see Sections API. CourseAttributes: type: object properties: id: type: integer example: 7 description: The unique Canvas identifier for the origin course name: type: string example: Section A description: The name of the origin course. sis_id: type: string example: c34643 description: The sis id of the origin_course. integration_id: type: string example: I-2 description: The integration ID of the origin_course. description: Attributes of a course object. See Courses API for more details SectionAssignmentOverrideAttributes: type: object properties: override_title: type: string example: some section override description: The title for the assignment override due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the due date for the assignment. returns null if not present. NOTE: If this assignment has assignment overrides, this field will be the due date as it applies to the user requesting information from the API.' unlock_at: type: string format: date-time example: '2013-01-01T00:00:00-06:00' description: (Optional) Time at which this was/will be unlocked. lock_at: type: string format: date-time example: '2013-02-01T00:00:00-06:00' description: (Optional) Time at which this was/will be locked. description: Attributes of an assignment override that apply to the section object. See Assignments API for more details UserAssignmentOverrideAttributes: type: object properties: id: type: integer example: 218 description: The unique Canvas identifier for the assignment override title: type: string example: Override title description: The title of the assignment override. due_at: type: string format: date-time example: '2013-01-01T00:00:00-06:00' description: The time at which this assignment is due unlock_at: type: string format: date-time example: '2013-01-01T00:00:00-06:00' description: (Optional) Time at which this was/will be unlocked. lock_at: type: string format: date-time example: '2013-02-01T00:00:00-06:00' description: (Optional) Time at which this was/will be locked. students: type: array items: $ref: '#/components/schemas/StudentAttributes' description: Includes attributes of a student for convenience. For more details see Users API. description: Attributes of assignment overrides that apply to users. See Assignments API for more details StudentAttributes: type: object properties: user_id: type: integer example: 511 description: The unique Canvas identifier for the user sis_user_id: type: string example: SHEL93921 description: The SIS ID associated with the user. This field is only included if the user came from a SIS import and has permissions to view SIS information. description: Attributes of student. See Users API for more details SearchResult: type: object properties: content_id: type: integer format: int64 example: 2 description: The ID of the matching object. content_type: type: string example: WikiPage description: The type of the matching object. title: type: string example: Nicolaus Copernicus description: The title of the matching object. body: type: string example: Nicolaus Copernicus was a Renaissance-era mathematician and astronomer who... description: The body of the matching object. html_url: type: string example: https://canvas.example.com/courses/123/pages/nicolaus-copernicus description: The Canvas URL of the matching object. distance: type: number example: '0.212' description: The distance between the search query and the result. Smaller numbers indicate closer matches. description: Reference to an object that matches a smart search MediaComment: type: object properties: content-type: type: string example: audio/mp4 display_name: type: string example: something media_id: type: string example: '3232' media_type: type: string example: audio url: type: string example: http://example.com/media_url SubmissionComment: type: object properties: id: type: integer example: 37 author_id: type: integer example: 134 author_name: type: string example: Toph Beifong author: type: string example: '{}' description: Abbreviated user object UserDisplay (see users API). comment: type: string example: Well here's the thing... created_at: type: string format: date-time example: '2012-01-01T01:00:00Z' edited_at: type: string format: date-time example: '2012-01-02T01:00:00Z' media_comment: type: string Submission__submissions: type: object properties: assignment_id: type: integer example: 23 description: The submission's assignment id assignment: type: string description: The submission's assignment (see the assignments API) (optional) course: type: string description: The submission's course (see the course API) (optional) attempt: type: integer example: 1 description: This is the submission attempt number. body: type: string example: There are three factors too... description: The content of the submission, if it was submitted directly in a text field. grade: type: string example: A- description: The grade for the submission, translated into the assignment grading scheme (so a letter grade, for example). grade_matches_current_submission: type: boolean example: true description: A boolean flag which is false if the student has re-submitted since the submission was last graded. html_url: type: string example: http://example.com/courses/255/assignments/543/submissions/134 description: URL to the submission. This will require the user to log in. preview_url: type: string example: http://example.com/courses/255/assignments/543/submissions/134?preview=1 description: URL to the submission preview. This will require the user to log in. score: type: number example: 13.5 description: The raw score submission_comments: type: array items: $ref: '#/components/schemas/SubmissionComment' description: Associated comments for a submission (optional) submission_type: type: string example: online_text_entry description: 'The types of submission ex: (''online_text_entry''|''online_url''|''online_upload''|''online_quiz''|''media_recording''|''student_annotation'')' submitted_at: type: string format: date-time example: '2012-01-01T01:00:00Z' description: The timestamp when the assignment was submitted url: type: string description: The URL of the submission (for 'online_url' submissions). user_id: type: integer example: 134 description: The id of the user who created the submission grader_id: type: integer example: 86 description: The id of the user who graded the submission. This will be null for submissions that haven't been graded yet. It will be a positive number if a real user has graded the submission and a negative number if the submission was graded by a process (e.g. Quiz autograder and autograding LTI tools). Specifically autograded quizzes set grader_id to the negative of the quiz id. Submissions autograded by LTI tools set grader_id to the negative of the tool id. graded_at: type: string format: date-time example: '2012-01-02T03:05:34Z' user: type: string description: The submissions user (see user API) (optional) late: type: boolean example: false description: Whether the submission was made after the applicable due date assignment_visible: type: boolean example: true description: Whether the assignment is visible to the user who submitted the assignment. Submissions where `assignment_visible` is false no longer count towards the student's grade and the assignment can no longer be accessed by the student. `assignment_visible` becomes false for submissions that do not have a grade and whose assignment is no longer assigned to the student's section. excused: type: boolean example: true description: Whether the assignment is excused. Excused assignments have no impact on a user's grade. missing: type: boolean example: true description: Whether the assignment is missing. late_policy_status: type: string example: missing description: The status of the submission in relation to the late policy. Can be late, missing, extended, none, or null. points_deducted: type: number example: 12.3 description: The amount of points automatically deducted from the score by the missing/late policy for a late or missing assignment. seconds_late: type: number example: 300 description: The amount of time, in seconds, that an submission is late by. workflow_state: type: string example: submitted description: The current state of the submission extra_attempts: type: number example: 10 description: Extra submission attempts allowed for the given user and assignment. anonymous_id: type: string example: acJ4Q description: A unique short ID identifying this submission without reference to the owning user. Only included if the caller has administrator access for the current account. posted_at: type: string format: date-time example: '2020-01-02T11:10:30Z' description: The date this submission was posted to the student, or nil if it has not been posted. read_status: type: string example: read description: The read status of this submission for the given user (optional). Including read_status will mark submission(s) as read. redo_request: type: boolean example: 'true' description: This indicates whether the submission has been reassigned by the instructor. Tab: type: object properties: html_url: type: string example: /courses/1/external_tools/4 id: type: string example: context_external_tool_4 label: type: string example: WordPress type: type: string example: external hidden: type: boolean example: true description: only included if true visibility: type: string example: public description: 'possible values are: public, members, admins, and none' position: type: integer example: 2 description: 1 based TemporaryEnrollmentPairing: type: object properties: id: type: integer example: 1 description: the ID of the temporary enrollment pairing workflow_state: type: string example: active description: The current status of the temporary enrollment pairing description: A pairing unique to that enrollment period given to a recipient of that temporary enrollment. PairingCode: type: object properties: user_id: type: integer format: int64 example: 2 description: The ID of the user. code: type: string example: abc123 description: The actual code to be sent to other APIs expires_at: type: string example: '2012-05-30T17:45:25Z' description: When the code expires workflow_state: type: string example: active description: The current status of the code description: A code used for linking a user to a student to observe them. UserDisplay: type: object properties: id: type: integer format: int64 example: 2 description: The ID of the user. short_name: type: string example: Shelly description: A short name the user has selected, for use in conversations or other less formal places through the site. avatar_image_url: type: string example: https://en.gravatar.com/avatar/d8cb8c8cd40ddf0cd05241443a591868?s=80&r=g description: If avatars are enabled, this field will be included and contain a url to retrieve the user's avatar. html_url: type: string example: https://school.instructure.com/courses/:course_id/users/:user_id description: URL to access user, either nested to a context or directly. description: This mini-object is used for secondary user responses, when we just want to provide enough information to display a user. AnonymousUserDisplay: type: object properties: anonymous_id: type: string example: xn29Q description: A unique short ID identifying this user within the scope of a particular assignment. avatar_image_url: type: string example: https://en.gravatar.com/avatar/d8cb8c8cd40ddf0cd05241443a591868?s=80&r=g description: A URL to retrieve a generic avatar. display_name: type: string example: Student 2 description: The anonymized display name for the student. description: This mini-object is returned in place of UserDisplay when returning student data for anonymous assignments, and includes an anonymous ID to identify a user within the scope of a single assignment. User: type: object properties: id: type: integer format: int64 example: 2 description: The ID of the user. name: type: string example: Sheldon Cooper description: The name of the user. sortable_name: type: string example: Cooper, Sheldon description: The name of the user that is should be used for sorting groups of users, such as in the gradebook. last_name: type: string example: Cooper description: The last name of the user. first_name: type: string example: Sheldon description: The first name of the user. short_name: type: string example: Shelly description: A short name the user has selected, for use in conversations or other less formal places through the site. sis_user_id: type: string example: SHEL93921 description: The SIS ID associated with the user. This field is only included if the user came from a SIS import and has permissions to view SIS information. sis_import_id: type: integer format: int64 example: '18' description: The id of the SIS import. This field is only included if the user came from a SIS import and has permissions to manage SIS information. integration_id: type: string example: ABC59802 description: The integration_id associated with the user. This field is only included if the user came from a SIS import and has permissions to view SIS information. login_id: type: string example: sheldon@caltech.example.com description: The unique login id for the user. This is what the user uses to log in to Canvas. avatar_url: type: string example: https://en.gravatar.com/avatar/d8cb8c8cd40ddf0cd05241443a591868?s=80&r=g description: If avatars are enabled, this field will be included and contain a url to retrieve the user's avatar. avatar_state: type: string example: approved description: 'Optional: If avatars are enabled and caller is admin, this field can be requested and will contain the current state of the user''s avatar.' enrollments: type: array items: type: string x-canvas-declared-type: Enrollment description: 'Optional: This field can be requested with certain API calls, and will return a list of the users active enrollments. See the List enrollments API for more details about the format of these records.' email: type: string example: sheldon@caltech.example.com description: 'Optional: This field can be requested with certain API calls, and will return the users primary email address.' locale: type: string example: tlh description: 'Optional: This field can be requested with certain API calls, and will return the users locale in RFC 5646 format.' last_login: type: string example: '2012-05-30T17:45:25Z' description: 'Optional: This field is only returned in certain API calls, and will return a timestamp representing the last time the user logged in to canvas.' time_zone: type: string example: America/Denver description: 'Optional: This field is only returned in certain API calls, and will return the IANA time zone name of the user''s preferred timezone.' bio: type: string example: I like the Muppets. description: 'Optional: The user''s bio.' pronouns: type: string example: he/him description: 'Optional: This field is only returned if pronouns are enabled, and will return the pronouns of the user.' required: - id description: A Canvas user, e.g. a student, teacher, administrator, observer, etc. Profile: type: object properties: id: type: integer example: 1234 description: The ID of the user. name: type: string example: Sample User description: Sample User short_name: type: string example: Sample User description: Sample User sortable_name: type: string example: user, sample description: user, sample title: type: string bio: type: string pronunciation: type: string example: Sample name pronunciation description: Name pronunciation primary_email: type: string example: sample_user@example.com description: sample_user@example.com login_id: type: string example: sample_user@example.com description: sample_user@example.com sis_user_id: type: string example: sis1 description: sis1 lti_user_id: type: string avatar_url: type: string example: ..url.. description: The avatar_url can change over time, so we recommend not caching it for more than a few hours calendar: type: string time_zone: type: string example: America/Denver description: 'Optional: This field is only returned in certain API calls, and will return the IANA time zone name of the user''s preferred timezone.' locale: type: string description: The users locale. k5_user: type: boolean example: true description: 'Optional: Whether or not the user is a K5 user. This field is nil if the user settings are not for the user making the request.' use_classic_font_in_k5: type: boolean example: false description: 'Optional: Whether or not the user should see the classic font on the dashboard. Only applies if k5_user is true. This field is nil if the user settings are not for the user making the request.' description: Profile details for a Canvas user. Avatar: type: object properties: type: type: string example: gravatar description: '[''gravatar''|''attachment''|''no_pic''] The type of avatar record, for categorization purposes.' url: type: string example: https://secure.gravatar.com/avatar/2284... description: The url of the avatar token: type: string example: description: 'A unique representation of the avatar record which can be used to set the avatar with the user update endpoint. Note: this is an internal representation and is subject to change without notice. It should be consumed with this api endpoint and used in the user update endpoint, and should not be constructed by the client.' display_name: type: string example: user, sample description: A textual description of the avatar record. id: type: integer example: 12 description: '[''attachment'' type only] the internal id of the attachment' content-type: type: string example: image/jpeg description: '[''attachment'' type only] the content-type of the attachment.' filename: type: string example: profile.jpg description: '[''attachment'' type only] the filename of the attachment' size: type: integer example: 32649 description: '[''attachment'' type only] the size of the attachment' required: - type - url - token - display_name description: Possible avatar for a user. PageView: type: object properties: id: type: string example: 3e246700-e305-0130-51de-02e33aa501ef description: A UUID representing the page view. This is also the unique request id app_name: type: string example: Canvas for iOS description: If the request is from an API request, the app that generated the access token url: type: string example: https://canvas.instructure.com/conversations description: The URL requested context_type: type: string example: Course description: The type of context for the request asset_type: type: string example: Discussion description: The type of asset in the context for the request, if any controller: type: string example: discussions description: The rails controller that handled the request action: type: string example: index description: The rails action that handled the request contributed: type: boolean example: 'false' description: This field is deprecated, and will always be false interaction_seconds: type: number example: '7.21' description: An approximation of how long the user spent on the page, in seconds created_at: type: string format: date-time example: '2013-10-01T19:49:47Z' description: When the request was made user_request: type: boolean example: 'true' description: A flag indicating whether the request was user-initiated, or automatic (such as an AJAX call). Not available in history CSV. render_time: type: number example: '0.369' description: How long the response took to render, in seconds. Not available in history CSV. user_agent: type: string example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1 description: The user-agent of the browser or program that made the request participated: type: boolean example: 'false' description: True if the request counted as participating, such as submitting homework http_method: type: string example: GET description: The HTTP method such as GET or POST remote_ip: type: string example: 173.194.46.71 description: The origin IP address of the request session_id: type: string example: b4f5c8e0-e2f3-0130-51e0-02e33aa501ef description: The session identifier for the user session that made the request developer_key_id: type: number example: '42' description: The ID of the developer key that authorized the API request, if applicable asset_user_access_id: type: number example: '9876' description: The ID of the asset (e.g. an assignment) associated with this page view, if applicable links: type: string example: user: 1234 account: 1234 description: The page view links to define the relationships required: - id description: The record of a user page view access in Canvas PageViewLinks: type: object properties: user: type: integer format: int64 example: '1234' description: The ID of the user for this page view context: type: integer format: int64 example: '1234' description: The ID of the context for the request (course id if context_type is Course, etc) asset: type: integer format: int64 example: '1234' description: The ID of the asset for the request, if any. Not available in history CSV. real_user: type: integer format: int64 example: '1234' description: The ID of the actual user who made this request, if the request was made by a user who was masquerading account: type: integer format: int64 example: '1234' description: The ID of the account context for this page view description: The links of a page view access in Canvas AsyncApiErrorResponse: type: object properties: errors: type: array items: type: string example: - start_date and end_date must be the first day of the month - end_date must be after start_date - end_date cannot be in a future month - The requested data cannot be older than %d months description: Array of error messages describing what went wrong with the request description: Error response structure returned by the API when validation or processing failures occur AsyncQueryResponse: type: object properties: poll_url: type: string example: /api/v1/users/123/page_views/query/550e8400-e29b-41d4-a716-446655440000 description: URL endpoint to poll for query status updates required: - poll_url description: Response returned when successfully initiating a page views query AsyncQueryStatusResponse: type: object properties: query_id: type: string example: 550e8400-e29b-41d4-a716-446655440000 description: The UUID of the query being polled status: type: string example: finished description: Current processing status of the query enum: - queued - processing - finished - failed format: type: string example: csv description: The format that results will be returned in enum: - csv - json results_url: type: string example: /api/v1/users/123/page_views/query/550e8400-e29b-41d4-a716-446655440000/results description: URL to retrieve query results. Only present when status is 'finished' error_code: type: string example: RESULT_SIZE_LIMIT_EXCEEDED description: Error code indicating the reason for query failure, if applicable required: - query_id - status - format description: Response containing the current status of a page views query AsyncQueryResultsResponse: type: object properties: content: type: string description: The query results data in the requested format (CSV or JSON) filename: type: string example: 550e8400-e29b-41d4-a716-446655440000.csv description: Suggested filename for the downloaded results content_type: type: string example: text/csv description: MIME type of the response content enum: - text/csv - application/jsonl content_encoding: type: string example: gzip description: Content encoding if the response is compressed description: File download response containing page views query results CourseNickname: type: object properties: course_id: type: integer example: 88 description: the ID of the course name: type: string example: S1048576 DPMS1200 Intro to Newtonian Mechanics description: the actual name of the course nickname: type: string example: Physics description: the calling user's nickname for the course Grade__what_if_grades: type: object properties: grade: type: number example: 120.0 description: The grade for the course total: type: number example: 24.0 description: The total points earned in the course possible: type: number example: 20.0 description: The total points possible for the course dropped: type: array items: {} example: [] description: The dropped grades for the course AssignmentGroupGrade: type: object properties: id: type: integer example: 123 description: The ID of the Assignment Group global_id: type: integer example: 10000000000001 description: The global ID of the Assignment Group score: type: number example: 20.0 description: The score for the Assignment Group possible: type: number example: 10.0 description: The total points possible for the Assignment Group weight: type: number example: 0.0 description: The weight for the Assignment Group grade: type: number example: 200.0 description: The grade for the Assignment Group dropped: type: array items: {} example: [] description: The dropped grades for the Assignment Group GradeGroup: type: object properties: submission_id: type: string Grades: type: object properties: current: type: string current_groups: type: string final: type: string final_groups: type: string Submission__what_if_grades: type: object properties: id: type: integer example: 123 description: The ID of the submission student_entered_score: type: string example: '20.0' description: The score the student wants to test securitySchemes: bearerAuth: type: http scheme: bearer description: 'Canvas OAuth2 access token sent as "Authorization: Bearer ". See https://canvas.instructure.com/doc/api/file.oauth.html' oauth2: type: oauth2 description: Canvas OAuth2. See https://canvas.instructure.com/doc/api/file.oauth.html and https://canvas.instructure.com/doc/api/file.oauth_endpoints.html flows: authorizationCode: authorizationUrl: https://canvas.instructure.com/login/oauth2/auth tokenUrl: https://canvas.instructure.com/login/oauth2/token refreshUrl: https://canvas.instructure.com/login/oauth2/token scopes: {}