From 4438e77cdf7f096f97d3c1b2054ee3b8a65b2bf5 Mon Sep 17 00:00:00 2001 From: Damian Sweeney <dsweeney@unimelb.net.au> Date: Mon, 12 Aug 2024 09:40:50 +1000 Subject: [PATCH] Added a sample collection file as requested --- collection-2024-08-12.json | 43724 +++++++++++++++++++++++++++++++++++ 1 file changed, 43724 insertions(+) create mode 100644 collection-2024-08-12.json diff --git a/collection-2024-08-12.json b/collection-2024-08-12.json new file mode 100644 index 0000000..e25da7d --- /dev/null +++ b/collection-2024-08-12.json @@ -0,0 +1,43724 @@ +{ + "info": { + "name": "Canvas API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Access Tokens", + "item": [ + { + "name": "Delete an access token", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/tokens/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "tokens", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "The ID can be the actual database ID of the token, or the 'token_hint' value." + }, + "response": [] + } + ] + }, + { + "name": "Account Calendars", + "item": [ + { + "name": "List available account calendars", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/account_calendars", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "account_calendars" + ], + "variable": [] + }, + "description": "Returns a paginated list of account calendars available to the current user.\nIncludes visible account calendars where the user has an account association." + }, + "response": [] + }, + { + "name": "Get a single account calendar", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/account_calendars/:account_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "account_calendars", + ":account_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Get details about a specific account calendar." + }, + "response": [] + }, + { + "name": "Update a calendar", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/account_calendars/:account_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "account_calendars", + ":account_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Set an account calendar's visibility and auto_subscribe values. Requires the\n`manage_account_calendar_visibility` permission on the account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "visible", + "value": "", + "type": "text", + "description": "Allow administrators with `manage_account_calendar_events` permission\nto create events on this calendar, and allow users to view this\ncalendar and its events." + }, + { + "key": "auto_subscribe", + "value": "", + "type": "text", + "description": "When true, users will automatically see events from this account in their\ncalendar, even if they haven't manually added that calendar." + } + ] + } + }, + "response": [] + }, + { + "name": "Update several calendars", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/account_calendars", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "account_calendars" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Set visibility and/or auto_subscribe on many calendars simultaneously. Requires\nthe `manage_account_calendar_visibility` permission on the account.\n\nAccepts a JSON array of objects containing 2-3 keys each: `id`\n(the account's id, required), `visible` (a boolean indicating whether\nthe account calendar is visible), and `auto_subscribe` (a boolean indicating\nwhether users should see these events in their calendar without manually\nsubscribing).\n\nReturns the count of updated accounts." + }, + "response": [] + }, + { + "name": "List all account calendars", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/account_calendars", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "account_calendars" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of account calendars for the provided account and\nits first level of sub-accounts. Includes hidden calendars in the response.\nRequires the `manage_account_calendar_visibility` permission." + }, + "response": [] + }, + { + "name": "Count of all visible account calendars", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/visible_calendars_count", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "visible_calendars_count" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the number of visible account calendars." + }, + "response": [] + } + ] + }, + { + "name": "Account Domain Lookups", + "item": [ + { + "name": "Search account domains", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/search", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + "search" + ], + "variable": [] + }, + "description": "Returns a list of up to 5 matching account domains\n\nPartial match on name / domain are supported" + }, + "response": [] + } + ] + }, + { + "name": "Account Notifications", + "item": [ + { + "name": "Index of active global notification for the user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/account_notifications", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "account_notifications" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a list of all global notifications in the account for the current user\nAny notifications that have been closed by the user will not be returned, unless\na include_past parameter is passed in as true." + }, + "response": [] + }, + { + "name": "Show a global notification", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/account_notifications/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "account_notifications", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns a global notification for the current user\nA notification that has been closed by the user will not be returned" + }, + "response": [] + }, + { + "name": "Close notification for user", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/account_notifications/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "account_notifications", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "If the current user no long wants to see this notification it can be excused with this call" + }, + "response": [] + }, + { + "name": "Create a global notification", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/account_notifications", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "account_notifications" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create and return a new global notification for an account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "account_notification[subject]", + "value": "", + "type": "text", + "description": "The subject of the notification." + }, + { + "key": "account_notification[message]", + "value": "", + "type": "text", + "description": "The message body of the notification." + }, + { + "key": "account_notification[start_at]", + "value": "", + "type": "text", + "description": "The start date and time of the notification in ISO8601 format.\ne.g. 2014-01-01T01:00Z" + }, + { + "key": "account_notification[end_at]", + "value": "", + "type": "text", + "description": "The end date and time of the notification in ISO8601 format.\ne.g. 2014-01-01T01:00Z" + }, + { + "key": "account_notification[icon]", + "value": "", + "type": "text", + "description": "The icon to display with the notification.\nNote: Defaults to warning." + }, + { + "key": "account_notification_roles", + "value": "", + "type": "text", + "description": "The role(s) to send global notification to. Note: ommitting this field will send to everyone\nExample:\n account_notification_roles: [\"StudentEnrollment\", \"TeacherEnrollment\"]" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a global notification", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/account_notifications/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "account_notifications", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update global notification for an account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "account_notification[subject]", + "value": "", + "type": "text", + "description": "The subject of the notification." + }, + { + "key": "account_notification[message]", + "value": "", + "type": "text", + "description": "The message body of the notification." + }, + { + "key": "account_notification[start_at]", + "value": "", + "type": "text", + "description": "The start date and time of the notification in ISO8601 format.\ne.g. 2014-01-01T01:00Z" + }, + { + "key": "account_notification[end_at]", + "value": "", + "type": "text", + "description": "The end date and time of the notification in ISO8601 format.\ne.g. 2014-01-01T01:00Z" + }, + { + "key": "account_notification[icon]", + "value": "", + "type": "text", + "description": "The icon to display with the notification." + }, + { + "key": "account_notification_roles", + "value": "", + "type": "text", + "description": "The role(s) to send global notification to. Note: ommitting this field will send to everyone\nExample:\n account_notification_roles: [\"StudentEnrollment\", \"TeacherEnrollment\"]" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Account Reports", + "item": [ + { + "name": "List Available Reports", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/reports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "reports" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of reports for the current context." + }, + "response": [] + }, + { + "name": "Start a Report", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/reports/:report", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "reports", + ":report" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "report", + "description": "ID" + } + ] + }, + "description": "Generates a report instance for the account. Note that \"report\" in the\nrequest must match one of the available report names. To fetch a list of\navailable report names and parameters for each report (including whether or\nnot those parameters are required), see\n{api:AccountReportsController#available_reports List Available Reports}.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "parameters", + "value": "", + "type": "text", + "description": "The parameters will vary for each report. To fetch a list\nof available parameters for each report, see {api:AccountReportsController#available_reports List Available Reports}.\nA few example parameters have been provided below. Note that the example\nparameters provided below may not be valid for every report." + }, + { + "key": "parameters[skip_message]", + "value": "", + "type": "text", + "description": "If true, no message will be sent\nto the user upon completion of the report." + }, + { + "key": "parameters[course_id]", + "value": "", + "type": "text", + "description": "The id of the course to report on.\nNote: this parameter has been listed to serve as an example and may not be\nvalid for every report." + }, + { + "key": "parameters[users]", + "value": "", + "type": "text", + "description": "If true, user data will be included. If\nfalse, user data will be omitted. Note: this parameter has been listed to\nserve as an example and may not be valid for every report." + } + ] + } + }, + "response": [] + }, + { + "name": "Index of Reports", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/reports/:report", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "reports", + ":report" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "report", + "description": "ID" + } + ] + }, + "description": "Shows all reports that have been run for the account of a specific type." + }, + "response": [] + }, + { + "name": "Status of a Report", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/reports/:report/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "reports", + ":report", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "report", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the status of a report." + }, + "response": [] + }, + { + "name": "Delete a Report", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/reports/:report/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "reports", + ":report", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "report", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deletes a generated report instance." + }, + "response": [] + } + ] + }, + { + "name": "Accounts", + "item": [ + { + "name": "List accounts", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts" + ], + "variable": [] + }, + "description": "A paginated list of accounts that the current user can view or manage.\nTypically, students and even teachers will get an empty list in response,\nonly account admins can view the accounts that they are in." + }, + "response": [] + }, + { + "name": "Get accounts that admins can manage", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/manageable_accounts", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "manageable_accounts" + ], + "variable": [] + }, + "description": "A paginated list of accounts where the current user has permission to create\nor manage courses. List will be empty for students and teachers as only admins\ncan view which accounts they are in." + }, + "response": [] + }, + { + "name": "Get accounts that users can create courses in", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/course_creation_accounts", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "course_creation_accounts" + ], + "variable": [] + }, + "description": "A paginated list of accounts where the current user has permission to create\ncourses." + }, + "response": [] + }, + { + "name": "List accounts for course admins", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/course_accounts", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "course_accounts" + ], + "variable": [] + }, + "description": "A paginated list of accounts that the current user can view through their\nadmin course enrollments. (Teacher, TA, or designer enrollments).\nOnly returns \"id\", \"name\", \"workflow_state\", \"root_account_id\" and \"parent_account_id\"" + }, + "response": [] + }, + { + "name": "Get a single account", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Retrieve information on an individual account, given by id or sis\nsis_account_id." + }, + "response": [] + }, + { + "name": "Settings", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "settings" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a JSON object containing a subset of settings for the specified account.\nIt's possible an empty set will be returned if no settings are applicable.\nThe caller must be an Account admin with the manage_account_settings permission." + }, + "response": [] + }, + { + "name": "List environment settings", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/settings/environment", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "settings", + "environment" + ], + "variable": [] + }, + "description": "Return a hash of global settings for the root account\nThis is the same information supplied to the web interface as +ENV.SETTINGS+." + }, + "response": [] + }, + { + "name": "Permissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/permissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "permissions" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns permission information for the calling user and the given account.\nYou may use `self` as the account id to check permissions against the domain root account.\nThe caller must have an account role or admin (teacher/TA/designer) enrollment in a course\nin the account.\n\nSee also the {api:CoursesController#permissions Course} and {api:GroupsController#permissions Group}\ncounterparts." + }, + "response": [] + }, + { + "name": "Get the sub-accounts of an account", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sub_accounts", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sub_accounts" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "List accounts that are sub-accounts of the given account." + }, + "response": [] + }, + { + "name": "Get the Terms of Service", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/terms_of_service", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "terms_of_service" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the terms of service for that account" + }, + "response": [] + }, + { + "name": "Get help links", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/help_links", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "help_links" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the help links for that account" + }, + "response": [] + }, + { + "name": "Get the manually-created courses sub-account for the domain root account", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/manually_created_courses_account", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "manually_created_courses_account" + ], + "variable": [] + }, + "description": "" + }, + "response": [] + }, + { + "name": "List active courses in an account", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "courses" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Retrieve a paginated list of courses in this account." + }, + "response": [] + }, + { + "name": "Update an account", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "account[name]", + "value": "", + "type": "text", + "description": "Updates the account name" + }, + { + "key": "account[sis_account_id]", + "value": "", + "type": "text", + "description": "Updates the account sis_account_id\nMust have manage_sis permission and must not be a root_account." + }, + { + "key": "account[default_time_zone]", + "value": "", + "type": "text", + "description": "The default time zone of the account. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "account[default_storage_quota_mb]", + "value": "", + "type": "text", + "description": "The default course storage quota to be used, if not otherwise specified." + }, + { + "key": "account[default_user_storage_quota_mb]", + "value": "", + "type": "text", + "description": "The default user storage quota to be used, if not otherwise specified." + }, + { + "key": "account[default_group_storage_quota_mb]", + "value": "", + "type": "text", + "description": "The default group storage quota to be used, if not otherwise specified." + }, + { + "key": "account[course_template_id]", + "value": "", + "type": "text", + "description": "The ID of a course to be used as a template for all newly created courses.\nEmpty means to inherit the setting from parent account, 0 means to not\nuse a template even if a parent account has one set. The course must be\nmarked as a template." + }, + { + "key": "account[settings][restrict_student_past_view][value]", + "value": "", + "type": "text", + "description": "Restrict students from viewing courses after end date" + }, + { + "key": "account[settings][restrict_student_past_view][locked]", + "value": "", + "type": "text", + "description": "Lock this setting for sub-accounts and courses" + }, + { + "key": "account[settings][restrict_student_future_view][value]", + "value": "", + "type": "text", + "description": "Restrict students from viewing courses before start date" + }, + { + "key": "account[settings][microsoft_sync_enabled]", + "value": "", + "type": "text", + "description": "Determines whether this account has Microsoft Teams Sync enabled or not.\n\nNote that if you are altering Microsoft Teams sync settings you must enable\nthe Microsoft Group enrollment syncing feature flag. In addition, if you are enabling\nMicrosoft Teams sync, you must also specify a tenant, login attribute, and a remote attribute.\nSpecifying a suffix to use is optional." + }, + { + "key": "account[settings][microsoft_sync_tenant]", + "value": "", + "type": "text", + "description": "The tenant this account should use when using Microsoft Teams Sync.\nThis should be an Azure Active Directory domain name." + }, + { + "key": "account[settings][microsoft_sync_login_attribute]", + "value": "", + "type": "text", + "description": "The attribute this account should use to lookup users when using Microsoft Teams Sync.\nMust be one of \"sub\", \"email\", \"oid\", \"preferred_username\", or \"integration_id\"." + }, + { + "key": "account[settings][microsoft_sync_login_attribute_suffix]", + "value": "", + "type": "text", + "description": "A suffix that will be appended to the result of the login attribute when associating\nCanvas users with Microsoft users. Must be under 255 characters and contain no whitespace.\nThis field is optional." + }, + { + "key": "account[settings][microsoft_sync_remote_attribute]", + "value": "", + "type": "text", + "description": "The Active Directory attribute to use when associating Canvas users with Microsoft users.\nMust be one of \"mail\", \"mailNickname\", or \"userPrincipalName\"." + }, + { + "key": "account[settings][restrict_student_future_view][locked]", + "value": "", + "type": "text", + "description": "Lock this setting for sub-accounts and courses" + }, + { + "key": "account[settings][lock_all_announcements][value]", + "value": "", + "type": "text", + "description": "Disable comments on announcements" + }, + { + "key": "account[settings][lock_all_announcements][locked]", + "value": "", + "type": "text", + "description": "Lock this setting for sub-accounts and courses" + }, + { + "key": "account[settings][usage_rights_required][value]", + "value": "", + "type": "text", + "description": "Copyright and license information must be provided for files before they are published." + }, + { + "key": "account[settings][usage_rights_required][locked]", + "value": "", + "type": "text", + "description": "Lock this setting for sub-accounts and courses" + }, + { + "key": "account[settings][restrict_student_future_listing][value]", + "value": "", + "type": "text", + "description": "Restrict students from viewing future enrollments in course list" + }, + { + "key": "account[settings][restrict_student_future_listing][locked]", + "value": "", + "type": "text", + "description": "Lock this setting for sub-accounts and courses" + }, + { + "key": "account[settings][conditional_release][value]", + "value": "", + "type": "text", + "description": "Enable or disable individual learning paths for students based on assessment" + }, + { + "key": "account[settings][conditional_release][locked]", + "value": "", + "type": "text", + "description": "Lock this setting for sub-accounts and courses" + }, + { + "key": "account[settings][password_policy]", + "value": "", + "type": "text", + "description": "Hash of optional password policy configuration parameters for a root account\n\n+allow_login_suspension+ boolean:: Allow suspension of user logins upon reaching maximum_login_attempts\n\n+require_number_characters+ boolean:: Require the use of number characters when setting up a new password\n\n+require_symbol_characters+ boolean:: Require the use of symbol characters when setting up a new password\n\n+minimum_character_length+ integer:: Minimum number of characters required for a new password\n\n+maximum_login_attempts+ integer:: Maximum number of login attempts before a user is locked out\n\n_Required_ feature option:\n Enhance password options" + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + }, + { + "key": "account[settings][lock_outcome_proficiency][value]", + "value": "", + "type": "text", + "description": "[DEPRECATED] Restrict instructors from changing mastery scale" + }, + { + "key": "account[lock_outcome_proficiency][locked]", + "value": "", + "type": "text", + "description": "[DEPRECATED] Lock this setting for sub-accounts and courses" + }, + { + "key": "account[settings][lock_proficiency_calculation][value]", + "value": "", + "type": "text", + "description": "[DEPRECATED] Restrict instructors from changing proficiency calculation method" + }, + { + "key": "account[lock_proficiency_calculation][locked]", + "value": "", + "type": "text", + "description": "[DEPRECATED] Lock this setting for sub-accounts and courses" + }, + { + "key": "account[services]", + "value": "", + "type": "text", + "description": "Give this a set of keys and boolean values to enable or disable services matching the keys" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a user from the root account", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/users/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "users", + ":user_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Delete a user record from a Canvas root account. If a user is associated\nwith multiple root accounts (in a multi-tenant instance of Canvas), this\naction will NOT remove them from the other accounts.\n\nWARNING: This API will allow a user to remove themselves from the account.\nIf they do this, they won't be able to make API calls or log into Canvas at\nthat account." + }, + "response": [] + }, + { + "name": "Restore a deleted user from a root account", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/users/:user_id/restore", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "users", + ":user_id", + "restore" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Restore a user record along with the most recently deleted pseudonym\nfrom a Canvas root account." + }, + "response": [] + }, + { + "name": "Create a new sub-account", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sub_accounts", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sub_accounts" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Add a new sub-account to a given account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "account[name]", + "value": "", + "type": "text", + "description": "The name of the new sub-account." + }, + { + "key": "account[sis_account_id]", + "value": "", + "type": "text", + "description": "The account's identifier in the Student Information System." + }, + { + "key": "account[default_storage_quota_mb]", + "value": "", + "type": "text", + "description": "The default course storage quota to be used, if not otherwise specified." + }, + { + "key": "account[default_user_storage_quota_mb]", + "value": "", + "type": "text", + "description": "The default user storage quota to be used, if not otherwise specified." + }, + { + "key": "account[default_group_storage_quota_mb]", + "value": "", + "type": "text", + "description": "The default group storage quota to be used, if not otherwise specified." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a sub-account", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sub_accounts/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sub_accounts", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Cannot delete an account with active courses or active sub_accounts.\nCannot delete a root_account" + }, + "response": [] + } + ] + }, + { + "name": "Accounts (LTI)", + "item": [ + { + "name": "Get account", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/accounts/:account_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "accounts", + ":account_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Retrieve information on an individual account, given by local or global ID." + }, + "response": [] + } + ] + }, + { + "name": "Admins", + "item": [ + { + "name": "Make an account admin", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/admins", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "admins" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Flag an existing user as an admin within the account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user_id", + "value": "", + "type": "text", + "description": "The id of the user to promote." + }, + { + "key": "role", + "value": "", + "type": "text", + "description": "[DEPRECATED] The user's admin relationship with the account will be\ncreated with the given role. Defaults to 'AccountAdmin'." + }, + { + "key": "role_id", + "value": "", + "type": "text", + "description": "The user's admin relationship with the account will be created with the given role. Defaults to the built-in role for 'AccountAdmin'." + }, + { + "key": "send_confirmation", + "value": "", + "type": "text", + "description": "Send a notification email to\nthe new admin if true. Default is true." + } + ] + } + }, + "response": [] + }, + { + "name": "Remove account admin", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/admins/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "admins", + ":user_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Remove the rights associated with an account admin role from a user." + }, + "response": [] + }, + { + "name": "List account admins", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/admins", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "admins" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the admins in the account" + }, + "response": [] + }, + { + "name": "List my admin roles", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/admins/self", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "admins", + "self" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the current user's roles in the account. The results are the same\nas those returned by the {api:AdminsController#index List account admins} endpoint with\n+user_id+ set to +self+, except the \"Admins - Add / Remove\" permission is not required." + }, + "response": [] + } + ] + }, + { + "name": "Analytics", + "item": [ + { + "name": "Get department-level participation data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/terms/:term_id/activity", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "terms", + ":term_id", + "activity" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "term_id", + "description": "ID" + } + ] + }, + "description": "Returns page view hits summed across all courses in the department. Two\ngroupings of these counts are returned; one by day (+by_date+), the other\nby category (+by_category+). The possible categories are announcements,\nassignments, collaborations, conferences, discussions, files, general,\ngrades, groups, modules, other, pages, and quizzes.\n\nThis and the other department-level endpoints have three variations which\nall return the same style of data but for different subsets of courses. All\nshare the prefix /api/v1/accounts/<account_id>/analytics. The possible\nsuffixes are:\n\n * /current: includes all available courses in the default term\n * /completed: includes all concluded courses in the default term\n * /terms/<term_id>: includes all available or concluded courses in the\n given term.\n\nCourses not yet offered or which have been deleted are never included.\n\n/current and /completed are intended for use when the account has only one\nterm. /terms/<term_id> is intended for use when the account has multiple\nterms.\n\nThe action follows the suffix." + }, + "response": [] + }, + { + "name": "Get department-level participation data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/current/activity", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "current", + "activity" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns page view hits summed across all courses in the department. Two\ngroupings of these counts are returned; one by day (+by_date+), the other\nby category (+by_category+). The possible categories are announcements,\nassignments, collaborations, conferences, discussions, files, general,\ngrades, groups, modules, other, pages, and quizzes.\n\nThis and the other department-level endpoints have three variations which\nall return the same style of data but for different subsets of courses. All\nshare the prefix /api/v1/accounts/<account_id>/analytics. The possible\nsuffixes are:\n\n * /current: includes all available courses in the default term\n * /completed: includes all concluded courses in the default term\n * /terms/<term_id>: includes all available or concluded courses in the\n given term.\n\nCourses not yet offered or which have been deleted are never included.\n\n/current and /completed are intended for use when the account has only one\nterm. /terms/<term_id> is intended for use when the account has multiple\nterms.\n\nThe action follows the suffix." + }, + "response": [] + }, + { + "name": "Get department-level participation data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/completed/activity", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "completed", + "activity" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns page view hits summed across all courses in the department. Two\ngroupings of these counts are returned; one by day (+by_date+), the other\nby category (+by_category+). The possible categories are announcements,\nassignments, collaborations, conferences, discussions, files, general,\ngrades, groups, modules, other, pages, and quizzes.\n\nThis and the other department-level endpoints have three variations which\nall return the same style of data but for different subsets of courses. All\nshare the prefix /api/v1/accounts/<account_id>/analytics. The possible\nsuffixes are:\n\n * /current: includes all available courses in the default term\n * /completed: includes all concluded courses in the default term\n * /terms/<term_id>: includes all available or concluded courses in the\n given term.\n\nCourses not yet offered or which have been deleted are never included.\n\n/current and /completed are intended for use when the account has only one\nterm. /terms/<term_id> is intended for use when the account has multiple\nterms.\n\nThe action follows the suffix." + }, + "response": [] + }, + { + "name": "Get department-level grade data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/terms/:term_id/grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "terms", + ":term_id", + "grades" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "term_id", + "description": "ID" + } + ] + }, + "description": "Returns the distribution of grades for students in courses in the\ndepartment. Each data point is one student's current grade in one course;\nif a student is in multiple courses, he contributes one value per course,\nbut if he's enrolled multiple times in the same course (e.g. a lecture\nsection and a lab section), he only constributes on value for that course.\n\nGrades are binned to the nearest integer score; anomalous grades outside\nthe 0 to 100 range are ignored. The raw counts are returned, not yet\nnormalized by the total count.\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level grade data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/current/grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "current", + "grades" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the distribution of grades for students in courses in the\ndepartment. Each data point is one student's current grade in one course;\nif a student is in multiple courses, he contributes one value per course,\nbut if he's enrolled multiple times in the same course (e.g. a lecture\nsection and a lab section), he only constributes on value for that course.\n\nGrades are binned to the nearest integer score; anomalous grades outside\nthe 0 to 100 range are ignored. The raw counts are returned, not yet\nnormalized by the total count.\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level grade data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/completed/grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "completed", + "grades" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the distribution of grades for students in courses in the\ndepartment. Each data point is one student's current grade in one course;\nif a student is in multiple courses, he contributes one value per course,\nbut if he's enrolled multiple times in the same course (e.g. a lecture\nsection and a lab section), he only constributes on value for that course.\n\nGrades are binned to the nearest integer score; anomalous grades outside\nthe 0 to 100 range are ignored. The raw counts are returned, not yet\nnormalized by the total count.\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level statistics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/terms/:term_id/statistics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "terms", + ":term_id", + "statistics" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "term_id", + "description": "ID" + } + ] + }, + "description": "Returns numeric statistics about the department and term (or filter).\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level statistics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/current/statistics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "current", + "statistics" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns numeric statistics about the department and term (or filter).\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level statistics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/completed/statistics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "completed", + "statistics" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns numeric statistics about the department and term (or filter).\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level statistics, broken down by subaccount", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/terms/:term_id/statistics_by_subaccount", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "terms", + ":term_id", + "statistics_by_subaccount" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "term_id", + "description": "ID" + } + ] + }, + "description": "Returns numeric statistics about the department subaccounts and term (or filter).\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level statistics, broken down by subaccount", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/current/statistics_by_subaccount", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "current", + "statistics_by_subaccount" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns numeric statistics about the department subaccounts and term (or filter).\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get department-level statistics, broken down by subaccount", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/analytics/completed/statistics_by_subaccount", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "analytics", + "completed", + "statistics_by_subaccount" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns numeric statistics about the department subaccounts and term (or filter).\n\nShares the same variations on endpoint as the participation data." + }, + "response": [] + }, + { + "name": "Get course-level participation data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/analytics/activity", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "analytics", + "activity" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns page view hits and participation numbers grouped by day through the\nentire history of the course. Page views is returned as a hash, where the\nhash keys are dates in the format \"YYYY-MM-DD\". The page_views result set\nincludes page views broken out by access category. Participations is\nreturned as an array of dates in the format \"YYYY-MM-DD\"." + }, + "response": [] + }, + { + "name": "Get course-level assignment data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/analytics/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "analytics", + "assignments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a list of assignments for the course sorted by due date. For\neach assignment returns basic assignment information, the grade breakdown,\nand a breakdown of on-time/late status of homework submissions." + }, + "response": [] + }, + { + "name": "Get course-level student summary data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/analytics/student_summaries", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "analytics", + "student_summaries" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a summary of per-user access information for all students in\na course. This includes total page views, total participations, and a\nbreakdown of on-time/late status for all homework submissions in the course.\n\nEach student's summary also includes the maximum number of page views and\nparticipations by any student in the course, which may be useful for some\nvisualizations (since determining maximums client side can be tricky with\npagination)." + }, + "response": [] + }, + { + "name": "Get user-in-a-course-level participation data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/analytics/users/:student_id/activity", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "analytics", + "users", + ":student_id", + "activity" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "student_id", + "description": "ID" + } + ] + }, + "description": "Returns page view hits grouped by hour, and participation details through the\nentire history of the course.\n\n`page_views` are returned as a hash, where the keys are iso8601 dates, bucketed by the hour.\n`participations` are returned as an array of hashes, sorted oldest to newest." + }, + "response": [] + }, + { + "name": "Get user-in-a-course-level assignment data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/analytics/users/:student_id/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "analytics", + "users", + ":student_id", + "assignments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "student_id", + "description": "ID" + } + ] + }, + "description": "Returns a list of assignments for the course sorted by due date. For\neach assignment returns basic assignment information, the grade breakdown\n(including the student's actual grade), and the basic submission\ninformation for the student's submission if it exists." + }, + "response": [] + }, + { + "name": "Get user-in-a-course-level messaging data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/analytics/users/:student_id/communication", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "analytics", + "users", + ":student_id", + "communication" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "student_id", + "description": "ID" + } + ] + }, + "description": "Returns messaging \"hits\" grouped by day through the entire history of the\ncourse. Returns a hash containing the number of instructor-to-student messages,\nand student-to-instructor messages, where the hash keys are dates\nin the format \"YYYY-MM-DD\". Message hits include Conversation messages and\ncomments on homework submissions." + }, + "response": [] + } + ] + }, + { + "name": "Announcement External Feeds", + "item": [ + { + "name": "List external feeds", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_feeds", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_feeds" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of External Feeds this course or group." + }, + "response": [] + }, + { + "name": "List external feeds", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/external_feeds", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "external_feeds" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of External Feeds this course or group." + }, + "response": [] + }, + { + "name": "Create an external feed", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_feeds", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_feeds" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new external feed for the course or group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "url", + "value": "", + "type": "text", + "description": "The url to the external rss or atom feed" + }, + { + "key": "header_match", + "value": "", + "type": "text", + "description": "If given, only feed entries that contain this string in their title will be imported" + }, + { + "key": "verbosity", + "value": "", + "type": "text", + "description": "Defaults to \"full\"" + } + ] + } + }, + "response": [] + }, + { + "name": "Create an external feed", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/external_feeds", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "external_feeds" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Create a new external feed for the course or group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "url", + "value": "", + "type": "text", + "description": "The url to the external rss or atom feed" + }, + { + "key": "header_match", + "value": "", + "type": "text", + "description": "If given, only feed entries that contain this string in their title will be imported" + }, + { + "key": "verbosity", + "value": "", + "type": "text", + "description": "Defaults to \"full\"" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete an external feed", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_feeds/:external_feed_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_feeds", + ":external_feed_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "external_feed_id", + "description": "ID" + } + ] + }, + "description": "Deletes the external feed." + }, + "response": [] + }, + { + "name": "Delete an external feed", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/external_feeds/:external_feed_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "external_feeds", + ":external_feed_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "external_feed_id", + "description": "ID" + } + ] + }, + "description": "Deletes the external feed." + }, + "response": [] + } + ] + }, + { + "name": "Announcements", + "item": [ + { + "name": "List announcements", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/announcements", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "announcements" + ], + "variable": [] + }, + "description": "Returns the paginated list of announcements for the given courses and date range. Note that\na +context_code+ field is added to the responses so you can tell which course each announcement\nbelongs to." + }, + "response": [] + } + ] + }, + { + "name": "API Token Scopes", + "item": [ + { + "name": "List scopes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/scopes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "scopes" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "A list of scopes that can be applied to developer keys and access tokens." + }, + "response": [] + } + ] + }, + { + "name": "Appointment Groups", + "item": [ + { + "name": "List appointment groups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups" + ], + "variable": [] + }, + "description": "Retrieve the paginated list of appointment groups that can be reserved or\nmanaged by the current user." + }, + "response": [] + }, + { + "name": "Create an appointment group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups" + ], + "variable": [] + }, + "description": "Create and return a new appointment group. If new_appointments are\nspecified, the response will return a new_appointments array (same format\nas appointments array, see \"List appointment groups\" action)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "appointment_group[context_codes]", + "value": "", + "type": "text", + "description": "Array of context codes (courses, e.g. course_1) this group should be\nlinked to (1 or more). Users in the course(s) with appropriate permissions\nwill be able to sign up for this appointment group." + }, + { + "key": "appointment_group[sub_context_codes]", + "value": "", + "type": "text", + "description": "Array of sub context codes (course sections or a single group category)\nthis group should be linked to. Used to limit the appointment group to\nparticular sections. If a group category is specified, students will sign\nup in groups and the participant_type will be \"Group\" instead of \"User\"." + }, + { + "key": "appointment_group[title]", + "value": "", + "type": "text", + "description": "Short title for the appointment group." + }, + { + "key": "appointment_group[description]", + "value": "", + "type": "text", + "description": "Longer text description of the appointment group." + }, + { + "key": "appointment_group[location_name]", + "value": "", + "type": "text", + "description": "Location name of the appointment group." + }, + { + "key": "appointment_group[location_address]", + "value": "", + "type": "text", + "description": "Location address." + }, + { + "key": "appointment_group[publish]", + "value": "", + "type": "text", + "description": "Indicates whether this appointment group should be published (i.e. made\navailable for signup). Once published, an appointment group cannot be\nunpublished. Defaults to false." + }, + { + "key": "appointment_group[participants_per_appointment]", + "value": "", + "type": "text", + "description": "Maximum number of participants that may register for each time slot.\nDefaults to null (no limit)." + }, + { + "key": "appointment_group[min_appointments_per_participant]", + "value": "", + "type": "text", + "description": "Minimum number of time slots a user must register for. If not set, users\ndo not need to sign up for any time slots." + }, + { + "key": "appointment_group[max_appointments_per_participant]", + "value": "", + "type": "text", + "description": "Maximum number of time slots a user may register for." + }, + { + "key": "appointment_group[new_appointments][X]", + "value": "", + "type": "text", + "description": "Nested array of start time/end time pairs indicating time slots for this\nappointment group. Refer to the example request." + }, + { + "key": "appointment_group[participant_visibility]", + "value": "", + "type": "text", + "description": "\"private\":: participants cannot see who has signed up for a particular\n time slot\n\"protected\":: participants can see who has signed up. Defaults to\n \"private\"." + }, + { + "key": "appointment_group[allow_observer_signup]", + "value": "", + "type": "text", + "description": "Whether observer users can sign-up for an appointment. Defaults to false." + } + ] + } + }, + "response": [] + }, + { + "name": "Get a single appointment group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns information for a single appointment group" + }, + "response": [] + }, + { + "name": "Update an appointment group", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update and return an appointment group. If new_appointments are specified,\nthe response will return a new_appointments array (same format as\nappointments array, see \"List appointment groups\" action).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "appointment_group[context_codes]", + "value": "", + "type": "text", + "description": "Array of context codes (courses, e.g. course_1) this group should be\nlinked to (1 or more). Users in the course(s) with appropriate permissions\nwill be able to sign up for this appointment group." + }, + { + "key": "appointment_group[sub_context_codes]", + "value": "", + "type": "text", + "description": "Array of sub context codes (course sections or a single group category)\nthis group should be linked to. Used to limit the appointment group to\nparticular sections. If a group category is specified, students will sign\nup in groups and the participant_type will be \"Group\" instead of \"User\"." + }, + { + "key": "appointment_group[title]", + "value": "", + "type": "text", + "description": "Short title for the appointment group." + }, + { + "key": "appointment_group[description]", + "value": "", + "type": "text", + "description": "Longer text description of the appointment group." + }, + { + "key": "appointment_group[location_name]", + "value": "", + "type": "text", + "description": "Location name of the appointment group." + }, + { + "key": "appointment_group[location_address]", + "value": "", + "type": "text", + "description": "Location address." + }, + { + "key": "appointment_group[publish]", + "value": "", + "type": "text", + "description": "Indicates whether this appointment group should be published (i.e. made\navailable for signup). Once published, an appointment group cannot be\nunpublished. Defaults to false." + }, + { + "key": "appointment_group[participants_per_appointment]", + "value": "", + "type": "text", + "description": "Maximum number of participants that may register for each time slot.\nDefaults to null (no limit)." + }, + { + "key": "appointment_group[min_appointments_per_participant]", + "value": "", + "type": "text", + "description": "Minimum number of time slots a user must register for. If not set, users\ndo not need to sign up for any time slots." + }, + { + "key": "appointment_group[max_appointments_per_participant]", + "value": "", + "type": "text", + "description": "Maximum number of time slots a user may register for." + }, + { + "key": "appointment_group[new_appointments][X]", + "value": "", + "type": "text", + "description": "Nested array of start time/end time pairs indicating time slots for this\nappointment group. Refer to the example request." + }, + { + "key": "appointment_group[participant_visibility]", + "value": "", + "type": "text", + "description": "\"private\":: participants cannot see who has signed up for a particular\n time slot\n\"protected\":: participants can see who has signed up. Defaults to \"private\"." + }, + { + "key": "appointment_group[allow_observer_signup]", + "value": "", + "type": "text", + "description": "Whether observer users can sign-up for an appointment." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete an appointment group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete an appointment group (and associated time slots and reservations)\nand return the deleted group" + }, + "response": [] + }, + { + "name": "List user participants", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups/:id/users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups", + ":id", + "users" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of users that are (or may be) participating in this\nappointment group. Refer to the Users API for the response fields. Returns\nno results for appointment groups with the \"Group\" participant_type." + }, + "response": [] + }, + { + "name": "List student group participants", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups/:id/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups", + ":id", + "groups" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of student groups that are (or may be) participating in\nthis appointment group. Refer to the Groups API for the response fields.\nReturns no results for appointment groups with the \"User\" participant_type." + }, + "response": [] + }, + { + "name": "Get next appointment", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/appointment_groups/next_appointment", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "appointment_groups", + "next_appointment" + ], + "variable": [] + }, + "description": "Return the next appointment available to sign up for. The appointment\nis returned in a one-element array. If no future appointments are\navailable, an empty array is returned." + }, + "response": [] + } + ] + }, + { + "name": "Assignment Extensions", + "item": [ + { + "name": "Set extensions for student assignment submissions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/extensions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "extensions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "<b>Responses</b>\n\n* <b>200 OK</b> if the request was successful\n* <b>403 Forbidden</b> if you are not allowed to extend assignments for this course\n* <b>400 Bad Request</b> if any of the extensions are invalid", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment_extensions[user_id]", + "value": "", + "type": "text", + "description": "The ID of the user we want to add assignment extensions for." + }, + { + "key": "assignment_extensions[extra_attempts]", + "value": "", + "type": "text", + "description": "Number of times the student is allowed to re-take the assignment over the\nlimit." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Assignment Groups", + "item": [ + { + "name": "List assignment groups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignment_groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignment_groups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of assignment groups for the current context.\nThe returned groups are sorted by their position field." + }, + "response": [] + }, + { + "name": "Get an Assignment Group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignment_groups/:assignment_group_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignment_groups", + ":assignment_group_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_group_id", + "description": "ID" + } + ] + }, + "description": "Returns the assignment group with the given id." + }, + "response": [] + }, + { + "name": "Create an Assignment Group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignment_groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignment_groups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new assignment group for this course.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The assignment group's name" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "The position of this assignment group in relation to the other assignment groups" + }, + { + "key": "group_weight", + "value": "", + "type": "text", + "description": "The percent of the total grade that this assignment group represents" + }, + { + "key": "sis_source_id", + "value": "", + "type": "text", + "description": "The sis source id of the Assignment Group" + }, + { + "key": "integration_data", + "value": "", + "type": "text", + "description": "The integration data of the Assignment Group" + } + ] + } + }, + "response": [] + }, + { + "name": "Edit an Assignment Group", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignment_groups/:assignment_group_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignment_groups", + ":assignment_group_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_group_id", + "description": "ID" + } + ] + }, + "description": "Modify an existing Assignment Group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The assignment group's name" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "The position of this assignment group in relation to the other assignment groups" + }, + { + "key": "group_weight", + "value": "", + "type": "text", + "description": "The percent of the total grade that this assignment group represents" + }, + { + "key": "sis_source_id", + "value": "", + "type": "text", + "description": "The sis source id of the Assignment Group" + }, + { + "key": "integration_data", + "value": "", + "type": "text", + "description": "The integration data of the Assignment Group" + }, + { + "key": "rules", + "value": "", + "type": "text", + "description": "The grading rules that are applied within this assignment group\nSee the Assignment Group object definition for format" + } + ] + } + }, + "response": [] + }, + { + "name": "Destroy an Assignment Group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignment_groups/:assignment_group_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignment_groups", + ":assignment_group_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_group_id", + "description": "ID" + } + ] + }, + "description": "Deletes the assignment group with the given id." + }, + "response": [] + } + ] + }, + { + "name": "Assignments", + "item": [ + { + "name": "Delete an assignment", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete the given assignment." + }, + "response": [] + }, + { + "name": "List assignments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of assignments for the current course or assignment group." + }, + "response": [] + }, + { + "name": "List assignments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignment_groups/:assignment_group_id/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignment_groups", + ":assignment_group_id", + "assignments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_group_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of assignments for the current course or assignment group." + }, + "response": [] + }, + { + "name": "List assignments for user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/courses/:course_id/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "courses", + ":course_id", + "assignments" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of assignments for the specified user if the current user has rights to view.\nSee {api:AssignmentsApiController#index List assignments} for valid arguments." + }, + "response": [] + }, + { + "name": "Duplicate assignment", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/duplicate", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "duplicate" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Duplicate an assignment and return a json based on result_type argument.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "result_type", + "value": "", + "type": "text", + "description": "Optional information:\nWhen the root account has the feature `newquizzes_on_quiz_page` enabled\nand this argument is set to \"Quiz\" the response will be serialized into a\nquiz format({file:doc/api/quizzes.html#Quiz});\nWhen this argument isn't specified the response will be serialized into an\nassignment format;" + } + ] + } + }, + "response": [] + }, + { + "name": "Get a single assignment", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the assignment with the given id." + }, + "response": [] + }, + { + "name": "Create an assignment", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new assignment for this course. The assignment is created in the\nactive state.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment[name]", + "value": "", + "type": "text", + "description": "The assignment name." + }, + { + "key": "assignment[position]", + "value": "", + "type": "text", + "description": "The position of this assignment in the group when displaying\nassignment lists." + }, + { + "key": "assignment[submission_types]", + "value": "", + "type": "text", + "description": "List of supported submission types for the assignment.\nUnless the assignment is allowing online submissions, the array should\nonly have one element.\n\nIf not allowing online submissions, your options are:\n \"online_quiz\"\n \"none\"\n \"on_paper\"\n \"discussion_topic\"\n \"external_tool\"\n\nIf you are allowing online submissions, you can have one or many\nallowed submission types:\n\n \"online_upload\"\n \"online_text_entry\"\n \"online_url\"\n \"media_recording\" (Only valid when the Kaltura plugin is enabled)\n \"student_annotation\"" + }, + { + "key": "assignment[allowed_extensions]", + "value": "", + "type": "text", + "description": "Allowed extensions if submission_types includes \"online_upload\"\n\nExample:\n allowed_extensions: [\"docx\",\"ppt\"]" + }, + { + "key": "assignment[turnitin_enabled]", + "value": "", + "type": "text", + "description": "Only applies when the Turnitin plugin is enabled for a course and\nthe submission_types array includes \"online_upload\".\nToggles Turnitin submissions for the assignment.\nWill be ignored if Turnitin is not available for the course." + }, + { + "key": "assignment[vericite_enabled]", + "value": "", + "type": "text", + "description": "Only applies when the VeriCite plugin is enabled for a course and\nthe submission_types array includes \"online_upload\".\nToggles VeriCite submissions for the assignment.\nWill be ignored if VeriCite is not available for the course." + }, + { + "key": "assignment[turnitin_settings]", + "value": "", + "type": "text", + "description": "Settings to send along to turnitin. See Assignment object definition for\nformat." + }, + { + "key": "assignment[integration_data]", + "value": "", + "type": "text", + "description": "Data used for SIS integrations. Requires admin-level token with the \"Manage SIS\" permission. JSON string required." + }, + { + "key": "assignment[integration_id]", + "value": "", + "type": "text", + "description": "Unique ID from third party integrations" + }, + { + "key": "assignment[peer_reviews]", + "value": "", + "type": "text", + "description": "If submission_types does not include external_tool,discussion_topic,\nonline_quiz, or on_paper, determines whether or not peer reviews\nwill be turned on for the assignment." + }, + { + "key": "assignment[automatic_peer_reviews]", + "value": "", + "type": "text", + "description": "Whether peer reviews will be assigned automatically by Canvas or if\nteachers must manually assign peer reviews. Does not apply if peer reviews\nare not enabled." + }, + { + "key": "assignment[notify_of_update]", + "value": "", + "type": "text", + "description": "If true, Canvas will send a notification to students in the class\nnotifying them that the content has changed." + }, + { + "key": "assignment[group_category_id]", + "value": "", + "type": "text", + "description": "If present, the assignment will become a group assignment assigned\nto the group." + }, + { + "key": "assignment[grade_group_students_individually]", + "value": "", + "type": "text", + "description": "If this is a group assignment, teachers have the options to grade\nstudents individually. If false, Canvas will apply the assignment's\nscore to each member of the group. If true, the teacher can manually\nassign scores to each member of the group." + }, + { + "key": "assignment[external_tool_tag_attributes]", + "value": "", + "type": "text", + "description": "Hash of external tool parameters if submission_types is [\"external_tool\"].\nSee Assignment object definition for format." + }, + { + "key": "assignment[points_possible]", + "value": "", + "type": "text", + "description": "The maximum points possible on the assignment." + }, + { + "key": "assignment[grading_type]", + "value": "", + "type": "text", + "description": "The strategy used for grading the assignment.\nThe assignment defaults to \"points\" if this field is omitted." + }, + { + "key": "assignment[due_at]", + "value": "", + "type": "text", + "description": "The day/time the assignment is due. Must be between the lock dates if there are lock dates.\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z." + }, + { + "key": "assignment[lock_at]", + "value": "", + "type": "text", + "description": "The day/time the assignment is locked after. Must be after the due date if there is a due date.\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z." + }, + { + "key": "assignment[unlock_at]", + "value": "", + "type": "text", + "description": "The day/time the assignment is unlocked. Must be before the due date if there is a due date.\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z." + }, + { + "key": "assignment[description]", + "value": "", + "type": "text", + "description": "The assignment's description, supports HTML." + }, + { + "key": "assignment[assignment_group_id]", + "value": "", + "type": "text", + "description": "The assignment group id to put the assignment in.\nDefaults to the top assignment group in the course." + }, + { + "key": "assignment[assignment_overrides]", + "value": "", + "type": "text", + "description": "List of overrides for the assignment." + }, + { + "key": "assignment[only_visible_to_overrides]", + "value": "", + "type": "text", + "description": "Whether this assignment is only visible to overrides\n(Only useful if 'differentiated assignments' account setting is on)" + }, + { + "key": "assignment[published]", + "value": "", + "type": "text", + "description": "Whether this assignment is published.\n(Only useful if 'draft state' account setting is on)\nUnpublished assignments are not visible to students." + }, + { + "key": "assignment[grading_standard_id]", + "value": "", + "type": "text", + "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.\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'." + }, + { + "key": "assignment[omit_from_final_grade]", + "value": "", + "type": "text", + "description": "Whether this assignment is counted towards a student's final grade." + }, + { + "key": "assignment[hide_in_gradebook]", + "value": "", + "type": "text", + "description": "Whether this assignment is shown in the gradebook." + }, + { + "key": "assignment[quiz_lti]", + "value": "", + "type": "text", + "description": "Whether this assignment should use the Quizzes 2 LTI tool. Sets the\nsubmission type to 'external_tool' and configures the external tool\nattributes to use the Quizzes 2 LTI tool configured for this course.\nHas no effect if no Quizzes 2 LTI tool is configured." + }, + { + "key": "assignment[moderated_grading]", + "value": "", + "type": "text", + "description": "Whether this assignment is moderated." + }, + { + "key": "assignment[grader_count]", + "value": "", + "type": "text", + "description": "The maximum number of provisional graders who may issue grades for this\nassignment. Only relevant for moderated assignments. Must be a positive\nvalue, and must be set to 1 if the course has fewer than two active\ninstructors. Otherwise, the maximum value is the number of active\ninstructors in the course minus one, or 10 if the course has more than 11\nactive instructors." + }, + { + "key": "assignment[final_grader_id]", + "value": "", + "type": "text", + "description": "The user ID of the grader responsible for choosing final grades for this\nassignment. Only relevant for moderated assignments." + }, + { + "key": "assignment[grader_comments_visible_to_graders]", + "value": "", + "type": "text", + "description": "Boolean indicating if provisional graders' comments are visible to other\nprovisional graders. Only relevant for moderated assignments." + }, + { + "key": "assignment[graders_anonymous_to_graders]", + "value": "", + "type": "text", + "description": "Boolean indicating if provisional graders' identities are hidden from\nother provisional graders. Only relevant for moderated assignments." + }, + { + "key": "assignment[graders_names_visible_to_final_grader]", + "value": "", + "type": "text", + "description": "Boolean indicating if provisional grader identities are visible to the\nthe final grader. Only relevant for moderated assignments." + }, + { + "key": "assignment[anonymous_grading]", + "value": "", + "type": "text", + "description": "Boolean indicating if the assignment is graded anonymously. If true,\ngraders cannot see student identities." + }, + { + "key": "assignment[allowed_attempts]", + "value": "", + "type": "text", + "description": "The number of submission attempts allowed for this assignment. Set to -1 for unlimited attempts." + }, + { + "key": "assignment[annotatable_attachment_id]", + "value": "", + "type": "text", + "description": "The Attachment ID of the document being annotated.\n\nOnly applies when submission_types includes \"student_annotation\"." + } + ] + } + }, + "response": [] + }, + { + "name": "Edit an assignment", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing assignment.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment[name]", + "value": "", + "type": "text", + "description": "The assignment name." + }, + { + "key": "assignment[position]", + "value": "", + "type": "text", + "description": "The position of this assignment in the group when displaying\nassignment lists." + }, + { + "key": "assignment[submission_types]", + "value": "", + "type": "text", + "description": "Only applies if the assignment doesn't have student submissions.\n\nList of supported submission types for the assignment.\nUnless the assignment is allowing online submissions, the array should\nonly have one element.\n\nIf not allowing online submissions, your options are:\n \"online_quiz\"\n \"none\"\n \"on_paper\"\n \"discussion_topic\"\n \"external_tool\"\n\nIf you are allowing online submissions, you can have one or many\nallowed submission types:\n\n \"online_upload\"\n \"online_text_entry\"\n \"online_url\"\n \"media_recording\" (Only valid when the Kaltura plugin is enabled)\n \"student_annotation\"" + }, + { + "key": "assignment[allowed_extensions]", + "value": "", + "type": "text", + "description": "Allowed extensions if submission_types includes \"online_upload\"\n\nExample:\n allowed_extensions: [\"docx\",\"ppt\"]" + }, + { + "key": "assignment[turnitin_enabled]", + "value": "", + "type": "text", + "description": "Only applies when the Turnitin plugin is enabled for a course and\nthe submission_types array includes \"online_upload\".\nToggles Turnitin submissions for the assignment.\nWill be ignored if Turnitin is not available for the course." + }, + { + "key": "assignment[vericite_enabled]", + "value": "", + "type": "text", + "description": "Only applies when the VeriCite plugin is enabled for a course and\nthe submission_types array includes \"online_upload\".\nToggles VeriCite submissions for the assignment.\nWill be ignored if VeriCite is not available for the course." + }, + { + "key": "assignment[turnitin_settings]", + "value": "", + "type": "text", + "description": "Settings to send along to turnitin. See Assignment object definition for\nformat." + }, + { + "key": "assignment[sis_assignment_id]", + "value": "", + "type": "text", + "description": "The sis id of the Assignment" + }, + { + "key": "assignment[integration_data]", + "value": "", + "type": "text", + "description": "Data used for SIS integrations. Requires admin-level token with the \"Manage SIS\" permission. JSON string required." + }, + { + "key": "assignment[integration_id]", + "value": "", + "type": "text", + "description": "Unique ID from third party integrations" + }, + { + "key": "assignment[peer_reviews]", + "value": "", + "type": "text", + "description": "If submission_types does not include external_tool,discussion_topic,\nonline_quiz, or on_paper, determines whether or not peer reviews\nwill be turned on for the assignment." + }, + { + "key": "assignment[automatic_peer_reviews]", + "value": "", + "type": "text", + "description": "Whether peer reviews will be assigned automatically by Canvas or if\nteachers must manually assign peer reviews. Does not apply if peer reviews\nare not enabled." + }, + { + "key": "assignment[notify_of_update]", + "value": "", + "type": "text", + "description": "If true, Canvas will send a notification to students in the class\nnotifying them that the content has changed." + }, + { + "key": "assignment[group_category_id]", + "value": "", + "type": "text", + "description": "If present, the assignment will become a group assignment assigned\nto the group." + }, + { + "key": "assignment[grade_group_students_individually]", + "value": "", + "type": "text", + "description": "If this is a group assignment, teachers have the options to grade\nstudents individually. If false, Canvas will apply the assignment's\nscore to each member of the group. If true, the teacher can manually\nassign scores to each member of the group." + }, + { + "key": "assignment[external_tool_tag_attributes]", + "value": "", + "type": "text", + "description": "Hash of external tool parameters if submission_types is [\"external_tool\"].\nSee Assignment object definition for format." + }, + { + "key": "assignment[points_possible]", + "value": "", + "type": "text", + "description": "The maximum points possible on the assignment." + }, + { + "key": "assignment[grading_type]", + "value": "", + "type": "text", + "description": "The strategy used for grading the assignment.\nThe assignment defaults to \"points\" if this field is omitted." + }, + { + "key": "assignment[due_at]", + "value": "", + "type": "text", + "description": "The day/time the assignment is due.\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z." + }, + { + "key": "assignment[lock_at]", + "value": "", + "type": "text", + "description": "The day/time the assignment is locked after. Must be after the due date if there is a due date.\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z." + }, + { + "key": "assignment[unlock_at]", + "value": "", + "type": "text", + "description": "The day/time the assignment is unlocked. Must be before the due date if there is a due date.\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z." + }, + { + "key": "assignment[description]", + "value": "", + "type": "text", + "description": "The assignment's description, supports HTML." + }, + { + "key": "assignment[assignment_group_id]", + "value": "", + "type": "text", + "description": "The assignment group id to put the assignment in.\nDefaults to the top assignment group in the course." + }, + { + "key": "assignment[assignment_overrides]", + "value": "", + "type": "text", + "description": "List of overrides for the assignment.\nIf the +assignment[assignment_overrides]+ key is absent, any existing\noverrides are kept as is. If the +assignment[assignment_overrides]+ key is\npresent, existing overrides are updated or deleted (and new ones created,\nas necessary) to match the provided list." + }, + { + "key": "assignment[only_visible_to_overrides]", + "value": "", + "type": "text", + "description": "Whether this assignment is only visible to overrides\n(Only useful if 'differentiated assignments' account setting is on)" + }, + { + "key": "assignment[published]", + "value": "", + "type": "text", + "description": "Whether this assignment is published.\n(Only useful if 'draft state' account setting is on)\nUnpublished assignments are not visible to students." + }, + { + "key": "assignment[grading_standard_id]", + "value": "", + "type": "text", + "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.\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'." + }, + { + "key": "assignment[omit_from_final_grade]", + "value": "", + "type": "text", + "description": "Whether this assignment is counted towards a student's final grade." + }, + { + "key": "assignment[hide_in_gradebook]", + "value": "", + "type": "text", + "description": "Whether this assignment is shown in the gradebook." + }, + { + "key": "assignment[moderated_grading]", + "value": "", + "type": "text", + "description": "Whether this assignment is moderated." + }, + { + "key": "assignment[grader_count]", + "value": "", + "type": "text", + "description": "The maximum number of provisional graders who may issue grades for this\nassignment. Only relevant for moderated assignments. Must be a positive\nvalue, and must be set to 1 if the course has fewer than two active\ninstructors. Otherwise, the maximum value is the number of active\ninstructors in the course minus one, or 10 if the course has more than 11\nactive instructors." + }, + { + "key": "assignment[final_grader_id]", + "value": "", + "type": "text", + "description": "The user ID of the grader responsible for choosing final grades for this\nassignment. Only relevant for moderated assignments." + }, + { + "key": "assignment[grader_comments_visible_to_graders]", + "value": "", + "type": "text", + "description": "Boolean indicating if provisional graders' comments are visible to other\nprovisional graders. Only relevant for moderated assignments." + }, + { + "key": "assignment[graders_anonymous_to_graders]", + "value": "", + "type": "text", + "description": "Boolean indicating if provisional graders' identities are hidden from\nother provisional graders. Only relevant for moderated assignments." + }, + { + "key": "assignment[graders_names_visible_to_final_grader]", + "value": "", + "type": "text", + "description": "Boolean indicating if provisional grader identities are visible to the\nthe final grader. Only relevant for moderated assignments." + }, + { + "key": "assignment[anonymous_grading]", + "value": "", + "type": "text", + "description": "Boolean indicating if the assignment is graded anonymously. If true,\ngraders cannot see student identities." + }, + { + "key": "assignment[allowed_attempts]", + "value": "", + "type": "text", + "description": "The number of submission attempts allowed for this assignment. Set to -1 or null for\nunlimited attempts." + }, + { + "key": "assignment[annotatable_attachment_id]", + "value": "", + "type": "text", + "description": "The Attachment ID of the document being annotated.\n\nOnly applies when submission_types includes \"student_annotation\"." + }, + { + "key": "assignment[force_updated_at]", + "value": "", + "type": "text", + "description": "If true, updated_at will be set even if no changes were made." + }, + { + "key": "assignment[submission_types]", + "value": "", + "type": "text", + "description": "Only applies if the assignment doesn't have student submissions." + } + ] + } + }, + "response": [] + }, + { + "name": "Bulk update assignment dates", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/bulk_update", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + "bulk_update" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Update due dates and availability dates for multiple assignments in a course.\n\nAccepts a JSON array of objects containing two keys each: +id+, the assignment id,\nand +all_dates+, an array of +AssignmentDate+ structures containing the base and/or override\ndates for the assignment, as returned from the {api:AssignmentsApiController#index List assignments}\nendpoint with +include[]=all_dates+.\n\nThis endpoint cannot create or destroy assignment overrides; any existing assignment overrides\nthat are not referenced in the arguments will be left alone. If an override is given, any dates\nthat are not supplied with it will be defaulted. To clear a date, specify null explicitly.\n\nAll referenced assignments will be validated before any are saved. A list of errors will\nbe returned if any provided dates are invalid, and no changes will be saved.\n\nThe bulk update is performed in a background job, use the {api:ProgressController#show Progress API}\nto check its status." + }, + "response": [] + }, + { + "name": "List assignment overrides", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of overrides for this assignment that target\nsections/groups/students visible to the current user." + }, + "response": [] + }, + { + "name": "Get a single assignment override", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/overrides/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "overrides", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns details of the the override with the given id." + }, + "response": [] + }, + { + "name": "Redirect to the assignment override for a group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/assignments/:assignment_id/override", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "assignments", + ":assignment_id", + "override" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Responds with a redirect to the override for the given group, if any\n(404 otherwise)." + }, + "response": [] + }, + { + "name": "Redirect to the assignment override for a section", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:course_section_id/assignments/:assignment_id/override", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":course_section_id", + "assignments", + ":assignment_id", + "override" + ], + "variable": [ + { + "key": "course_section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Responds with a redirect to the override for the given section, if any\n(404 otherwise)." + }, + "response": [] + }, + { + "name": "Create an assignment override", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "One of student_ids, group_id, or course_section_id must be present. At most\none should be present; if multiple are present only the most specific\n(student_ids first, then group_id, then course_section_id) is used and any\nothers are ignored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment_override[student_ids]", + "value": "", + "type": "text", + "description": "The IDs of\nthe override's target students. If present, the IDs must each identify a\nuser with an active student enrollment in the course that is not already\ntargetted by a different adhoc override." + }, + { + "key": "assignment_override[title]", + "value": "", + "type": "text", + "description": "The title of the adhoc\nassignment override. Required if student_ids is present, ignored\notherwise (the title is set to the name of the targetted group or section\ninstead)." + }, + { + "key": "assignment_override[group_id]", + "value": "", + "type": "text", + "description": "The ID of the\noverride's target group. If present, the following conditions must be met\nfor the override to be successful:\n\n1. the assignment MUST be a group assignment (a group_category_id is assigned to it)\n2. the ID must identify an active group in the group set the assignment is in\n3. the ID must not be targetted by a different override\n\nSee {Appendix: Group assignments} for more info." + }, + { + "key": "assignment_override[course_section_id]", + "value": "", + "type": "text", + "description": "The ID\nof the override's target section. If present, must identify an active\nsection of the assignment's course not already targetted by a different\noverride." + }, + { + "key": "assignment_override[due_at]", + "value": "", + "type": "text", + "description": "The day/time\nthe overridden assignment is due. Accepts times in ISO 8601 format, e.g.\n2014-10-21T18:48:00Z. If absent, this override will not affect due date.\nMay be present but null to indicate the override removes any previous due\ndate." + }, + { + "key": "assignment_override[unlock_at]", + "value": "", + "type": "text", + "description": "The day/time\nthe overridden assignment becomes unlocked. Accepts times in ISO 8601\nformat, e.g. 2014-10-21T18:48:00Z. If absent, this override will not\naffect the unlock date. May be present but null to indicate the override\nremoves any previous unlock date." + }, + { + "key": "assignment_override[lock_at]", + "value": "", + "type": "text", + "description": "The day/time\nthe overridden assignment becomes locked. Accepts times in ISO 8601\nformat, e.g. 2014-10-21T18:48:00Z. If absent, this override will not\naffect the lock date. May be present but null to indicate the override\nremoves any previous lock date." + } + ] + } + }, + "response": [] + }, + { + "name": "Update an assignment override", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/overrides/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "overrides", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "All current overridden values must be supplied if they are to be retained;\ne.g. if due_at was overridden, but this PUT omits a value for due_at,\ndue_at will no longer be overridden. If the override is adhoc and\nstudent_ids is not supplied, the target override set is unchanged. Target\noverride sets cannot be changed for group or section overrides.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment_override[student_ids]", + "value": "", + "type": "text", + "description": "The IDs of the\noverride's target students. If present, the IDs must each identify a\nuser with an active student enrollment in the course that is not already\ntargetted by a different adhoc override. Ignored unless the override\nbeing updated is adhoc." + }, + { + "key": "assignment_override[title]", + "value": "", + "type": "text", + "description": "The title of an adhoc\nassignment override. Ignored unless the override being updated is adhoc." + }, + { + "key": "assignment_override[due_at]", + "value": "", + "type": "text", + "description": "The day/time\nthe overridden assignment is due. Accepts times in ISO 8601 format, e.g.\n2014-10-21T18:48:00Z. If absent, this override will not affect due date.\nMay be present but null to indicate the override removes any previous due\ndate." + }, + { + "key": "assignment_override[unlock_at]", + "value": "", + "type": "text", + "description": "The day/time\nthe overridden assignment becomes unlocked. Accepts times in ISO 8601\nformat, e.g. 2014-10-21T18:48:00Z. If absent, this override will not\naffect the unlock date. May be present but null to indicate the override\nremoves any previous unlock date." + }, + { + "key": "assignment_override[lock_at]", + "value": "", + "type": "text", + "description": "The day/time\nthe overridden assignment becomes locked. Accepts times in ISO 8601\nformat, e.g. 2014-10-21T18:48:00Z. If absent, this override will not\naffect the lock date. May be present but null to indicate the override\nremoves any previous lock date." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete an assignment override", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/overrides/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "overrides", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deletes an override and returns its former details." + }, + "response": [] + }, + { + "name": "Batch retrieve overrides in a course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + "overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a list of specified overrides in this course, providing\nthey target sections/groups/students visible to the current user.\nReturns null elements in the list for requests that were not found." + }, + "response": [] + }, + { + "name": "Batch create overrides in a course", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + "overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Creates the specified overrides for each assignment. Handles creation in a\ntransaction, so all records are created or none are.\n\nOne of student_ids, group_id, or course_section_id must be present. At most\none should be present; if multiple are present only the most specific\n(student_ids first, then group_id, then course_section_id) is used and any\nothers are ignored.\n\nErrors are reported in an errors attribute, an array of errors corresponding\nto inputs. Global errors will be reported as a single element errors array", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment_overrides", + "value": "", + "type": "text", + "description": "Attributes for the new assignment overrides.\nSee {api:AssignmentOverridesController#create Create an assignment override} for available\nattributes" + } + ] + } + }, + "response": [] + }, + { + "name": "Batch update overrides in a course", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + "overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Updates a list of specified overrides for each assignment. Handles overrides\nin a transaction, so either all updates are applied or none.\nSee {api:AssignmentOverridesController#update Update an assignment override} for\navailable attributes.\n\nAll current overridden values must be supplied if they are to be retained;\ne.g. if due_at was overridden, but this PUT omits a value for due_at,\ndue_at will no longer be overridden. If the override is adhoc and\nstudent_ids is not supplied, the target override set is unchanged. Target\noverride sets cannot be changed for group or section overrides.\n\nErrors are reported in an errors attribute, an array of errors corresponding\nto inputs. Global errors will be reported as a single element errors array", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment_overrides", + "value": "", + "type": "text", + "description": "Attributes for the updated overrides." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Authentication Providers", + "item": [ + { + "name": "List authentication providers", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/authentication_providers", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "authentication_providers" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of authentication providers" + }, + "response": [] + }, + { + "name": "Add authentication provider", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/authentication_providers", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "authentication_providers" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Add external authentication provider(s) for the account.\nServices may be Apple, CAS, Facebook, GitHub, Google, LDAP, LinkedIn,\nMicrosoft, OpenID Connect, SAML, or X.com.\n\nEach authentication provider is specified as a set of parameters as\ndescribed below. A provider specification must include an 'auth_type'\nparameter with a value of 'apple', 'canvas', 'cas', 'clever', 'facebook',\n'github', 'google', 'ldap', 'linkedin', 'microsoft', 'openid_connect',\n'saml', or 'twitter'. The other recognized parameters depend on this\nauth_type; unrecognized parameters are discarded. Provider specifications\nnot specifying a valid auth_type are ignored.\n\nYou can set the 'position' for any provider. The config in the 1st position\nis considered the default. You can set 'jit_provisioning' for any provider\nbesides Canvas. You can set 'mfa_required' for any provider.\n\nFor Apple, the additional recognized parameters are:\n\n- client_id [Required]\n\n The developer\u2019s client identifier, as provided by WWDR. Not available if\n configured globally for Canvas.\n\n- login_attribute [Optional]\n\n The attribute to use to look up the user's login in Canvas. Either\n 'sub' (the default), or 'email'\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'email',\n 'firstName', 'lastName', and 'sub'.\n\nFor Canvas, the additional recognized parameter is:\n\n- self_registration\n\n 'all', 'none', or 'observer' - who is allowed to register as a new user\n\nFor CAS, the additional recognized parameters are:\n\n- auth_base\n\n The CAS server's URL.\n\n- log_in_url [Optional]\n\n An alternate SSO URL for logging into CAS. You probably should not set\n this.\n\nFor Clever, the additional recognized parameters are:\n\n- client_id [Required]\n\n The Clever application's Client ID. Not available if configured globally\n for Canvas.\n\n- client_secret [Required]\n\n The Clever application's Client Secret. Not available if configured\n globally for Canvas.\n\n- district_id [Optional]\n\n A district's Clever ID. Leave this blank to let Clever handle the details\n with its District Picker. This is required for Clever Instant Login to\n work in a multi-tenant environment.\n\n- login_attribute [Optional]\n\n The attribute to use to look up the user's login in Canvas. Either\n 'id' (the default), 'sis_id', 'email', 'student_number', or\n 'teacher_number'. Note that some fields may not be populated for\n all users at Clever.\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'id',\n 'sis_id', 'email', 'student_number', and 'teacher_number'.\n\nFor Facebook, the additional recognized parameters are:\n\n- app_id [Required]\n\n The Facebook App ID. Not available if configured globally for Canvas.\n\n- app_secret [Required]\n\n The Facebook App Secret. Not available if configured globally for Canvas.\n\n- login_attribute [Optional]\n\n The attribute to use to look up the user's login in Canvas. Either\n 'id' (the default), or 'email'\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'email',\n 'first_name', 'id', 'last_name', 'locale', and 'name'.\n\nFor GitHub, the additional recognized parameters are:\n\n- domain [Optional]\n\n The domain of a GitHub Enterprise installation. I.e.\n github.mycompany.com. If not set, it will default to the public\n github.com.\n\n- client_id [Required]\n\n The GitHub application's Client ID. Not available if configured globally\n for Canvas.\n\n- client_secret [Required]\n\n The GitHub application's Client Secret. Not available if configured\n globally for Canvas.\n\n- login_attribute [Optional]\n\n The attribute to use to look up the user's login in Canvas. Either\n 'id' (the default), or 'login'\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'email',\n 'id', 'login', and 'name'.\n\nFor Google, the additional recognized parameters are:\n\n- client_id [Required]\n\n The Google application's Client ID. Not available if configured globally\n for Canvas.\n\n- client_secret [Required]\n\n The Google application's Client Secret. Not available if configured\n globally for Canvas.\n\n- hosted_domain [Optional]\n\n A Google Apps domain to restrict logins to. See\n https://developers.google.com/identity/protocols/OpenIDConnect?hl=en#hd-param\n\n- login_attribute [Optional]\n\n The attribute to use to look up the user's login in Canvas. Either\n 'sub' (the default), or 'email'\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'email',\n 'family_name', 'given_name', 'locale', 'name', and 'sub'.\n\nFor LDAP, the additional recognized parameters are:\n\n- auth_host\n\n The LDAP server's URL.\n\n- auth_port [Optional, Integer]\n\n The LDAP server's TCP port. (default: 389)\n\n- auth_over_tls [Optional]\n\n Whether to use TLS. Can be 'simple_tls', or 'start_tls'. For backwards\n compatibility, booleans are also accepted, with true meaning simple_tls.\n If not provided, it will default to start_tls.\n\n- auth_base [Optional]\n\n A default treebase parameter for searches performed against the LDAP\n server.\n\n- auth_filter\n\n LDAP search filter. Use !{{login}} as a placeholder for the username\n supplied by the user. For example: \"(sAMAccountName=!{{login}})\".\n\n- identifier_format [Optional]\n\n The LDAP attribute to use to look up the Canvas login. Omit to use\n the username supplied by the user.\n\n- auth_username\n\n Username\n\n- auth_password\n\n Password\n\nFor LinkedIn, the additional recognized parameters are:\n\n- client_id [Required]\n\n The LinkedIn application's Client ID. Not available if configured globally\n for Canvas.\n\n- client_secret [Required]\n\n The LinkedIn application's Client Secret. Not available if configured\n globally for Canvas.\n\n- login_attribute [Optional]\n\n The attribute to use to look up the user's login in Canvas. Either\n 'id' (the default), or 'emailAddress'\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'emailAddress',\n 'firstName', 'id', 'formattedName', and 'lastName'.\n\nFor Microsoft, the additional recognized parameters are:\n\n- application_id [Required]\n\n The application's ID.\n\n- application_secret [Required]\n\n The application's Client Secret (Password)\n\n- tenant [Optional]\n\n See https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2-protocols/\n Valid values are 'common', 'organizations', 'consumers', or an Azure Active Directory Tenant\n (as either a UUID or domain, such as contoso.onmicrosoft.com). Defaults to 'common'\n\n- login_attribute [Optional]\n\n See https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2-tokens/#idtokens\n Valid values are 'sub', 'email', 'oid', or 'preferred_username'. Note\n that email may not always be populated in the user's profile at\n Microsoft. Oid will not be populated for personal Microsoft accounts.\n Defaults to 'sub'\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'email',\n 'name', 'preferred_username', 'oid', and 'sub'.\n\nFor OpenID Connect, the additional recognized parameters are:\n\n- client_id [Required]\n\n The application's Client ID.\n\n- client_secret [Required]\n\n The application's Client Secret.\n\n- authorize_url [Required]\n\n The URL for getting starting the OAuth 2.0 web flow\n\n- token_url [Required]\n\n The URL for exchanging the OAuth 2.0 authorization code for an Access\n Token and ID Token\n\n- scope [Optional]\n\n Space separated additional scopes to request for the token. Note that\n you need not specify the 'openid' scope, or any scopes that can be\n automatically inferred by the rules defined at\n http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims\n\n- end_session_endpoint [Optional]\n\n URL to send the end user to after logging out of Canvas. See\n https://openid.net/specs/openid-connect-session-1_0.html#RPLogout\n\n- userinfo_endpoint [Optional]\n\n URL to request additional claims from. If the initial ID Token received\n from the provider cannot be used to satisfy the login_attribute and\n all federated_attributes, this endpoint will be queried for additional\n information.\n\n- login_attribute [Optional]\n\n The attribute of the ID Token to look up the user's login in Canvas.\n Defaults to 'sub'.\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Any value is allowed for the provider\n attribute names, but standard claims are listed at\n http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims\n\nFor SAML, the additional recognized parameters are:\n\n- metadata [Optional]\n\n An XML document to parse as SAML metadata, and automatically populate idp_entity_id,\n log_in_url, log_out_url, certificate_fingerprint, and identifier_format\n\n- metadata_uri [Optional]\n\n A URI to download the SAML metadata from, and automatically populate idp_entity_id,\n log_in_url, log_out_url, certificate_fingerprint, and identifier_format. This URI\n will also be saved, and the metadata periodically refreshed, automatically. If\n the metadata contains multiple entities, also supply idp_entity_id to distinguish\n which one you want (otherwise the only entity in the metadata will be inferred).\n If you provide the URI 'urn:mace:incommon' or 'http://ukfederation.org.uk',\n the InCommon or UK Access Management Federation metadata aggregate, respectively,\n will be used instead, and additional validation checks will happen (including\n validating that the metadata has been properly signed with the\n appropriate key).\n\n- idp_entity_id\n\n The SAML IdP's entity ID\n\n- log_in_url\n\n The SAML service's SSO target URL\n\n- log_out_url [Optional]\n\n The SAML service's SLO target URL\n\n- certificate_fingerprint\n\n The SAML service's certificate fingerprint.\n\n- identifier_format\n\n The SAML service's identifier format. Must be one of:\n\n - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\n - urn:oasis:names:tc:SAML:2.0:nameid-format:entity\n - urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos\n - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\n - urn:oasis:names:tc:SAML:2.0:nameid-format:transient\n - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\n - urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName\n - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName\n\n- requested_authn_context [Optional]\n\n The SAML AuthnContext\n\n- sig_alg [Optional]\n\n If set, +AuthnRequest+, +LogoutRequest+, and +LogoutResponse+ messages\n are signed with the corresponding algorithm. Supported algorithms are:\n\n - {http://www.w3.org/2000/09/xmldsig#rsa-sha1}\n - {http://www.w3.org/2001/04/xmldsig-more#rsa-sha256}\n\n RSA-SHA1 and RSA-SHA256 are acceptable aliases.\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Any value is allowed for the provider attribute names.\n\nFor X.com, the additional recognized parameters are:\n\n- consumer_key [Required]\n\n The X.com Consumer Key. Not available if configured globally for Canvas.\n\n- consumer_secret [Required]\n\n The X.com Consumer Secret. Not available if configured globally for Canvas.\n\n- login_attribute [Optional]\n\n The attribute to use to look up the user's login in Canvas. Either\n 'user_id' (the default), or 'screen_name'\n\n- parent_registration [Optional] - DEPRECATED 2017-11-03\n\n Accepts a boolean value, true designates the authentication service\n for use on parent registrations. Only one service can be selected\n at a time so if set to true all others will be set to false\n\n- federated_attributes [Optional]\n\n See FederatedAttributesConfig. Valid provider attributes are 'name',\n 'screen_name', 'time_zone', and 'user_id'." + }, + "response": [] + }, + { + "name": "Update authentication provider", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/authentication_providers/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "authentication_providers", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an authentication provider using the same options as the create endpoint.\nYou can not update an existing provider to a new authentication type." + }, + "response": [] + }, + { + "name": "Get authentication provider", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/authentication_providers/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "authentication_providers", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get the specified authentication provider" + }, + "response": [] + }, + { + "name": "Delete authentication provider", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/authentication_providers/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "authentication_providers", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete the config" + }, + "response": [] + }, + { + "name": "show account auth settings", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sso_settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sso_settings" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "The way to get the current state of each account level setting\nthat's relevant to Single Sign On configuration\n\nYou can list the current state of each setting with \"update_sso_settings\"" + }, + "response": [] + }, + { + "name": "update account auth settings", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sso_settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sso_settings" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "For various cases of mixed SSO configurations, you may need to set some\nconfiguration at the account level to handle the particulars of your\nsetup.\n\nThis endpoint accepts a PUT request to set several possible account\nsettings. All setting are optional on each request, any that are not\nprovided at all are simply retained as is. Any that provide the key but\na null-ish value (blank string, null, undefined) will be UN-set.\n\nYou can list the current state of each setting with \"show_sso_settings\"" + }, + "response": [] + } + ] + }, + { + "name": "Authentications Log", + "item": [ + { + "name": "Query by login.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/authentication/logins/:login_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "authentication", + "logins", + ":login_id" + ], + "variable": [ + { + "key": "login_id", + "description": "ID" + } + ] + }, + "description": "List authentication events for a given login." + }, + "response": [] + }, + { + "name": "Query by account.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/authentication/accounts/:account_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "authentication", + "accounts", + ":account_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "List authentication events for a given account." + }, + "response": [] + }, + { + "name": "Query by user.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/authentication/users/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "authentication", + "users", + ":user_id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "List authentication events for a given user." + }, + "response": [] + } + ] + }, + { + "name": "Blackout Dates", + "item": [ + { + "name": "List blackout dates", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blackout_dates", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blackout_dates" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the list of blackout dates for the current context." + }, + "response": [] + }, + { + "name": "List blackout dates", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/blackout_dates", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "blackout_dates" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the list of blackout dates for the current context." + }, + "response": [] + }, + { + "name": "Get a single blackout date", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blackout_dates/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blackout_dates", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the blackout date with the given id." + }, + "response": [] + }, + { + "name": "Get a single blackout date", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/blackout_dates/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "blackout_dates", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the blackout date with the given id." + }, + "response": [] + }, + { + "name": "New Blackout Date", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blackout_dates/new", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blackout_dates", + "new" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Initialize an unsaved Blackout Date for the given context." + }, + "response": [] + }, + { + "name": "New Blackout Date", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/blackout_dates/new", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "blackout_dates", + "new" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Initialize an unsaved Blackout Date for the given context." + }, + "response": [] + }, + { + "name": "Create Blackout Date", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blackout_dates", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blackout_dates" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a blackout date for the given context.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "start_date", + "value": "", + "type": "text", + "description": "The start date of the blackout date." + }, + { + "key": "end_date", + "value": "", + "type": "text", + "description": "The end date of the blackout date." + }, + { + "key": "event_title", + "value": "", + "type": "text", + "description": "The title of the blackout date." + } + ] + } + }, + "response": [] + }, + { + "name": "Create Blackout Date", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/blackout_dates", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "blackout_dates" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a blackout date for the given context.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "start_date", + "value": "", + "type": "text", + "description": "The start date of the blackout date." + }, + { + "key": "end_date", + "value": "", + "type": "text", + "description": "The end date of the blackout date." + }, + { + "key": "event_title", + "value": "", + "type": "text", + "description": "The title of the blackout date." + } + ] + } + }, + "response": [] + }, + { + "name": "Update Blackout Date", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blackout_dates/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blackout_dates", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a blackout date for the given context.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "start_date", + "value": "", + "type": "text", + "description": "The start date of the blackout date." + }, + { + "key": "end_date", + "value": "", + "type": "text", + "description": "The end date of the blackout date." + }, + { + "key": "event_title", + "value": "", + "type": "text", + "description": "The title of the blackout date." + } + ] + } + }, + "response": [] + }, + { + "name": "Update Blackout Date", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/blackout_dates/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "blackout_dates", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a blackout date for the given context.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "start_date", + "value": "", + "type": "text", + "description": "The start date of the blackout date." + }, + { + "key": "end_date", + "value": "", + "type": "text", + "description": "The end date of the blackout date." + }, + { + "key": "event_title", + "value": "", + "type": "text", + "description": "The title of the blackout date." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete Blackout Date", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blackout_dates/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blackout_dates", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a blackout date for the given context." + }, + "response": [] + }, + { + "name": "Delete Blackout Date", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/blackout_dates/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "blackout_dates", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a blackout date for the given context." + }, + "response": [] + }, + { + "name": "Update a list of Blackout Dates", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blackout_dates", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blackout_dates" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create, update, and delete blackout dates to sync the db with the incoming data.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "blackout_dates:", + "value": "", + "type": "text", + "description": "[blackout_date, ...]\nAn object containing the array of BlackoutDates we want to exist after this operation.\nFor array entries, if it has an id it will be updated, if not created, and if\nan existing BlackoutDate id is missing from the array, it will be deleted." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Blueprint Courses", + "item": [ + { + "name": "Get blueprint information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + } + ] + }, + "description": "Using 'default' as the template_id should suffice for the current implmentation (as there should be only one template per course).\nHowever, using specific template ids may become necessary in the future" + }, + "response": [] + }, + { + "name": "Get associated course information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/associated_courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "associated_courses" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + } + ] + }, + "description": "Returns a list of courses that are configured to receive updates from this blueprint" + }, + "response": [] + }, + { + "name": "Update associated courses", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/update_associations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "update_associations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + } + ] + }, + "description": "Send a list of course ids to add or remove new associations for the template.\nCannot add courses that do not belong to the blueprint course's account. Also cannot add\nother blueprint courses or courses that already have an association with another blueprint course.\n\nAfter associating new courses, {api:MasterCourses::MasterTemplatesController#queue_migration start a sync} to populate their contents from the blueprint.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course_ids_to_add", + "value": "", + "type": "text", + "description": "Courses to add as associated courses" + }, + { + "key": "course_ids_to_remove", + "value": "", + "type": "text", + "description": "Courses to remove as associated courses" + } + ] + } + }, + "response": [] + }, + { + "name": "Begin a migration to push to associated courses", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "migrations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + } + ] + }, + "description": "Begins a migration to push recently updated content to all associated courses.\nOnly one migration can be running at a time.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment", + "value": "", + "type": "text", + "description": "An optional comment to be included in the sync history." + }, + { + "key": "send_notification", + "value": "", + "type": "text", + "description": "Send a notification to the calling user when the sync completes." + }, + { + "key": "copy_settings", + "value": "", + "type": "text", + "description": "Whether course settings should be copied over to associated courses.\nDefaults to true for newly associated courses." + }, + { + "key": "publish_after_initial_sync", + "value": "", + "type": "text", + "description": "If set, newly associated courses will be automatically published after the sync completes" + } + ] + } + }, + "response": [] + }, + { + "name": "Set or remove restrictions on a blueprint course object", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/restrict_item", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "restrict_item" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + } + ] + }, + "description": "If a blueprint course object is restricted, editing will be limited for copies in associated courses.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "content_type", + "value": "", + "type": "text", + "description": "[String, \"assignment\"|\"attachment\"|\"discussion_topic\"|\"external_tool\"|\"lti-quiz\"|\"quiz\"|\"wiki_page\"]\nThe type of the object." + }, + { + "key": "content_id", + "value": "", + "type": "text", + "description": "The ID of the object." + }, + { + "key": "restricted", + "value": "", + "type": "text", + "description": "Whether to apply restrictions." + }, + { + "key": "restrictions", + "value": "", + "type": "text", + "description": "(Optional) If the object is restricted, this specifies a set of restrictions. If not specified,\nthe course-level restrictions will be used. See {api:CoursesController#update Course API update documentation}" + } + ] + } + }, + "response": [] + }, + { + "name": "Get unsynced changes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/unsynced_changes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "unsynced_changes" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + } + ] + }, + "description": "Retrieve a list of learning objects that have changed since the last blueprint sync operation.\nIf no syncs have been completed, a ChangeRecord with a change_type of +initial_sync+ is returned." + }, + "response": [] + }, + { + "name": "List blueprint migrations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "migrations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + } + ] + }, + "description": "Shows a paginated list of migrations for the template, starting with the most recent. This endpoint can be called on a\nblueprint course. See also {api:MasterCourses::MasterTemplatesController#imports_index the associated course side}." + }, + "response": [] + }, + { + "name": "Show a blueprint migration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "migrations", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Shows the status of a migration. This endpoint can be called on a blueprint course. See also\n{api:MasterCourses::MasterTemplatesController#imports_show the associated course side}." + }, + "response": [] + }, + { + "name": "Get migration details", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_templates/:template_id/migrations/:id/details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_templates", + ":template_id", + "migrations", + ":id", + "details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "template_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Show the changes that were propagated in a blueprint migration. This endpoint can be called on a\nblueprint course. See also {api:MasterCourses::MasterTemplatesController#import_details the associated course side}." + }, + "response": [] + }, + { + "name": "List blueprint subscriptions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_subscriptions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_subscriptions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a list of blueprint subscriptions for the given course. (Currently a course may have no more than one.)" + }, + "response": [] + }, + { + "name": "List blueprint imports", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_subscriptions/:subscription_id/migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_subscriptions", + ":subscription_id", + "migrations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "subscription_id", + "description": "ID" + } + ] + }, + "description": "Shows a paginated list of migrations imported into a course associated with a blueprint, starting with the most recent. See also\n{api:MasterCourses::MasterTemplatesController#migrations_index the blueprint course side}.\n\nUse 'default' as the subscription_id to use the currently active blueprint subscription." + }, + "response": [] + }, + { + "name": "Show a blueprint import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_subscriptions/:subscription_id/migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_subscriptions", + ":subscription_id", + "migrations", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "subscription_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Shows the status of an import into a course associated with a blueprint. See also\n{api:MasterCourses::MasterTemplatesController#migrations_show the blueprint course side}." + }, + "response": [] + }, + { + "name": "Get import details", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/blueprint_subscriptions/:subscription_id/migrations/:id/details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "blueprint_subscriptions", + ":subscription_id", + "migrations", + ":id", + "details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "subscription_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Show the changes that were propagated to a course associated with a blueprint. See also\n{api:MasterCourses::MasterTemplatesController#migration_details the blueprint course side}." + }, + "response": [] + } + ] + }, + { + "name": "Bookmarks", + "item": [ + { + "name": "List bookmarks", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/bookmarks", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "bookmarks" + ], + "variable": [] + }, + "description": "Returns the paginated list of bookmarks." + }, + "response": [] + }, + { + "name": "Create bookmark", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/bookmarks", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "bookmarks" + ], + "variable": [] + }, + "description": "Creates a bookmark.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the bookmark" + }, + { + "key": "url", + "value": "", + "type": "text", + "description": "The url of the bookmark" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "The position of the bookmark. Defaults to the bottom." + }, + { + "key": "data", + "value": "", + "type": "text", + "description": "The data associated with the bookmark" + } + ] + } + }, + "response": [] + }, + { + "name": "Get bookmark", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/bookmarks/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "bookmarks", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the details for a bookmark." + }, + "response": [] + }, + { + "name": "Update bookmark", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/bookmarks/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "bookmarks", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Updates a bookmark", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the bookmark" + }, + { + "key": "url", + "value": "", + "type": "text", + "description": "The url of the bookmark" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "The position of the bookmark. Defaults to the bottom." + }, + { + "key": "data", + "value": "", + "type": "text", + "description": "The data associated with the bookmark" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete bookmark", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/bookmarks/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "bookmarks", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deletes a bookmark" + }, + "response": [] + } + ] + }, + { + "name": "Brand Configs", + "item": [ + { + "name": "Get the brand config variables that should be used for this domain", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/brand_variables", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "brand_variables" + ], + "variable": [] + }, + "description": "Will redirect to a static json file that has all of the brand\nvariables used by this account. Even though this is a redirect,\ndo not store the redirected url since if the account makes any changes\nit will redirect to a new url. Needs no authentication." + }, + "response": [] + } + ] + }, + { + "name": "Calendar Events", + "item": [ + { + "name": "List calendar events", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events" + ], + "variable": [] + }, + "description": "Retrieve the paginated list of calendar events or assignments for the current user" + }, + "response": [] + }, + { + "name": "List calendar events for a user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/calendar_events", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "calendar_events" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the paginated list of calendar events or assignments for the specified user.\nTo view calendar events for a user other than yourself,\nyou must either be an observer of that user or an administrator." + }, + "response": [] + }, + { + "name": "Create a calendar event", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events" + ], + "variable": [] + }, + "description": "Create and return a new calendar event", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "calendar_event[context_code]", + "value": "", + "type": "text", + "description": "Context code of the course, group, user, or account whose calendar\nthis event should be added to." + }, + { + "key": "calendar_event[title]", + "value": "", + "type": "text", + "description": "Short title for the calendar event." + }, + { + "key": "calendar_event[description]", + "value": "", + "type": "text", + "description": "Longer HTML description of the event." + }, + { + "key": "calendar_event[start_at]", + "value": "", + "type": "text", + "description": "Start date/time of the event." + }, + { + "key": "calendar_event[end_at]", + "value": "", + "type": "text", + "description": "End date/time of the event." + }, + { + "key": "calendar_event[location_name]", + "value": "", + "type": "text", + "description": "Location name of the event." + }, + { + "key": "calendar_event[location_address]", + "value": "", + "type": "text", + "description": "Location address" + }, + { + "key": "calendar_event[time_zone_edited]", + "value": "", + "type": "text", + "description": "Time zone of the user editing the event. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "calendar_event[all_day]", + "value": "", + "type": "text", + "description": "When true event is considered to span the whole day and times are ignored." + }, + { + "key": "calendar_event[child_event_data][X][start_at]", + "value": "", + "type": "text", + "description": "Section-level start time(s) if this is a course event. X can be any\nidentifier, provided that it is consistent across the start_at, end_at\nand context_code" + }, + { + "key": "calendar_event[child_event_data][X][end_at]", + "value": "", + "type": "text", + "description": "Section-level end time(s) if this is a course event." + }, + { + "key": "calendar_event[child_event_data][X][context_code]", + "value": "", + "type": "text", + "description": "Context code(s) corresponding to the section-level start and end time(s)." + }, + { + "key": "calendar_event[duplicate][count]", + "value": "", + "type": "text", + "description": "Number of times to copy/duplicate the event. Count cannot exceed 200." + }, + { + "key": "calendar_event[duplicate][interval]", + "value": "", + "type": "text", + "description": "Defaults to 1 if duplicate `count` is set. The interval between the duplicated events." + }, + { + "key": "calendar_event[duplicate][frequency]", + "value": "", + "type": "text", + "description": "Defaults to \"weekly\". The frequency at which to duplicate the event" + }, + { + "key": "calendar_event[duplicate][append_iterator]", + "value": "", + "type": "text", + "description": "Defaults to false. If set to `true`, an increasing counter number will be appended to the event title\nwhen the event is duplicated. (e.g. Event 1, Event 2, Event 3, etc)" + }, + { + "key": "calendar_event[rrule]", + "value": "", + "type": "text", + "description": "The recurrence rule to create a series of recurring events.\nIts value is the {https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html iCalendar RRULE}\ndefining how the event repeats. Unending series not supported." + }, + { + "key": "calendar_event[blackout_date]", + "value": "", + "type": "text", + "description": "If the blackout_date is true, this event represents a holiday or some\nother special day that does not count in course pacing." + } + ] + } + }, + "response": [] + }, + { + "name": "Get a single calendar event or assignment", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Reserve a time slot", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events/:id/reservations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events", + ":id", + "reservations" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Reserves a particular time slot and return the new reservation", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "participant_id", + "value": "", + "type": "text", + "description": "User or group id for whom you are making the reservation (depends on the\nparticipant type). Defaults to the current user (or user's candidate group)." + }, + { + "key": "comments", + "value": "", + "type": "text", + "description": "Comments to associate with this reservation" + }, + { + "key": "cancel_existing", + "value": "", + "type": "text", + "description": "Defaults to false. If true, cancel any previous reservation(s) for this\nparticipant and appointment group." + } + ] + } + }, + "response": [] + }, + { + "name": "Reserve a time slot", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events/:id/reservations/:participant_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events", + ":id", + "reservations", + ":participant_id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "participant_id", + "description": "User or group id for whom you are making the reservation (depends on the\nparticipant type). Defaults to the current user (or user's candidate group)." + } + ] + }, + "description": "Reserves a particular time slot and return the new reservation", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comments", + "value": "", + "type": "text", + "description": "Comments to associate with this reservation" + }, + { + "key": "cancel_existing", + "value": "", + "type": "text", + "description": "Defaults to false. If true, cancel any previous reservation(s) for this\nparticipant and appointment group." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a calendar event", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update and return a calendar event", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "calendar_event[context_code]", + "value": "", + "type": "text", + "description": "Context code of the course, group, user, or account to move this event to.\nScheduler appointments and events with section-specific times cannot be moved between calendars." + }, + { + "key": "calendar_event[title]", + "value": "", + "type": "text", + "description": "Short title for the calendar event." + }, + { + "key": "calendar_event[description]", + "value": "", + "type": "text", + "description": "Longer HTML description of the event." + }, + { + "key": "calendar_event[start_at]", + "value": "", + "type": "text", + "description": "Start date/time of the event." + }, + { + "key": "calendar_event[end_at]", + "value": "", + "type": "text", + "description": "End date/time of the event." + }, + { + "key": "calendar_event[location_name]", + "value": "", + "type": "text", + "description": "Location name of the event." + }, + { + "key": "calendar_event[location_address]", + "value": "", + "type": "text", + "description": "Location address" + }, + { + "key": "calendar_event[time_zone_edited]", + "value": "", + "type": "text", + "description": "Time zone of the user editing the event. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "calendar_event[all_day]", + "value": "", + "type": "text", + "description": "When true event is considered to span the whole day and times are ignored." + }, + { + "key": "calendar_event[child_event_data][X][start_at]", + "value": "", + "type": "text", + "description": "Section-level start time(s) if this is a course event. X can be any\nidentifier, provided that it is consistent across the start_at, end_at\nand context_code" + }, + { + "key": "calendar_event[child_event_data][X][end_at]", + "value": "", + "type": "text", + "description": "Section-level end time(s) if this is a course event." + }, + { + "key": "calendar_event[child_event_data][X][context_code]", + "value": "", + "type": "text", + "description": "Context code(s) corresponding to the section-level start and end time(s)." + }, + { + "key": "calendar_event[rrule]", + "value": "", + "type": "text", + "description": "Valid if the event whose ID is in the URL is part of a series.\nThis defines the shape of the recurring event series after it's updated.\nIts value is the iCalendar RRULE. Unending series are not supported." + }, + { + "key": "which", + "value": "", + "type": "text", + "description": "Valid if the event whose ID is in the URL is part of a series.\nUpdate just the event whose ID is in in the URL, all events\nin the series, or the given event and all those following.\nSome updates may create a new series. For example, changing the start time\nof this and all following events from the middle of a series." + }, + { + "key": "calendar_event[blackout_date]", + "value": "", + "type": "text", + "description": "If the blackout_date is true, this event represents a holiday or some\nother special day that does not count in course pacing." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a calendar event", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete an event from the calendar and return the deleted event" + }, + "response": [] + }, + { + "name": "Save enabled account calendars", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/calendar_events/save_enabled_account_calendars", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "calendar_events", + "save_enabled_account_calendars" + ], + "variable": [] + }, + "description": "Creates and updates the enabled_account_calendars and mark_feature_as_seen user preferences", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "mark_feature_as_seen", + "value": "", + "type": "text", + "description": "Flag to mark account calendars feature as seen" + }, + { + "key": "enabled_account_calendars", + "value": "", + "type": "text", + "description": "An array of account Ids to remember in the calendars list of the user" + } + ] + } + }, + "response": [] + }, + { + "name": "Set a course timetable", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/calendar_events/timetable", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "calendar_events", + "timetable" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Creates and updates \"timetable\" events for a course.\nCan automaticaly generate a series of calendar events based on simple schedules\n(e.g. \"Monday and Wednesday at 2:00pm\" )\n\nExisting timetable events for the course and course sections\nwill be updated if they still are part of the timetable.\nOtherwise, they will be deleted.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "timetables[course_section_id]", + "value": "", + "type": "text", + "description": "An array of timetable objects for the course section specified by course_section_id.\nIf course_section_id is set to \"all\", events will be created for the entire course." + }, + { + "key": "timetables[course_section_id][weekdays]", + "value": "", + "type": "text", + "description": "A comma-separated list of abbreviated weekdays\n(Mon-Monday, Tue-Tuesday, Wed-Wednesday, Thu-Thursday, Fri-Friday, Sat-Saturday, Sun-Sunday)" + }, + { + "key": "timetables[course_section_id][start_time]", + "value": "", + "type": "text", + "description": "Time to start each event at (e.g. \"9:00 am\")" + }, + { + "key": "timetables[course_section_id][end_time]", + "value": "", + "type": "text", + "description": "Time to end each event at (e.g. \"9:00 am\")" + }, + { + "key": "timetables[course_section_id][location_name]", + "value": "", + "type": "text", + "description": "A location name to set for each event" + } + ] + } + }, + "response": [] + }, + { + "name": "Get course timetable", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/calendar_events/timetable", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "calendar_events", + "timetable" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the last timetable set by the\n{api:CalendarEventsApiController#set_course_timetable Set a course timetable} endpoint" + }, + "response": [] + }, + { + "name": "Create or update events directly for a course timetable", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/calendar_events/timetable_events", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "calendar_events", + "timetable_events" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Creates and updates \"timetable\" events for a course or course section.\nSimilar to {api:CalendarEventsApiController#set_course_timetable setting a course timetable},\nbut instead of generating a list of events based on a timetable schedule,\nthis endpoint expects a complete list of events.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course_section_id", + "value": "", + "type": "text", + "description": "Events will be created for the course section specified by course_section_id.\nIf not present, events will be created for the entire course." + }, + { + "key": "events", + "value": "", + "type": "text", + "description": "An array of event objects to use." + }, + { + "key": "events[start_at]", + "value": "", + "type": "text", + "description": "Start time for the event" + }, + { + "key": "events[end_at]", + "value": "", + "type": "text", + "description": "End time for the event" + }, + { + "key": "events[location_name]", + "value": "", + "type": "text", + "description": "Location name for the event" + }, + { + "key": "events[code]", + "value": "", + "type": "text", + "description": "A unique identifier that can be used to update the event at a later time\nIf one is not specified, an identifier will be generated based on the start and end times" + }, + { + "key": "events[title]", + "value": "", + "type": "text", + "description": "Title for the meeting. If not present, will default to the associated course's name" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Collaborations", + "item": [ + { + "name": "List collaborations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/collaborations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "collaborations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of collaborations the current user has access to in the\ncontext of the course provided in the url. NOTE: this only returns\nExternalToolCollaboration type collaborations.\n\n curl https://<canvas>/api/v1/courses/1/collaborations/" + }, + "response": [] + }, + { + "name": "List collaborations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/collaborations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "collaborations" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of collaborations the current user has access to in the\ncontext of the course provided in the url. NOTE: this only returns\nExternalToolCollaboration type collaborations.\n\n curl https://<canvas>/api/v1/courses/1/collaborations/" + }, + "response": [] + }, + { + "name": "List members of a collaboration.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/collaborations/:id/members", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "collaborations", + ":id", + "members" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the collaborators of a given collaboration" + }, + "response": [] + }, + { + "name": "List potential members", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/potential_collaborators", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "potential_collaborators" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the users who can potentially be added to a\ncollaboration in the given context.\n\nFor courses, this consists of all enrolled users. For groups, it is comprised of the\ngroup members plus the admins of the course containing the group." + }, + "response": [] + }, + { + "name": "List potential members", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/potential_collaborators", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "potential_collaborators" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the users who can potentially be added to a\ncollaboration in the given context.\n\nFor courses, this consists of all enrolled users. For groups, it is comprised of the\ngroup members plus the admins of the course containing the group." + }, + "response": [] + } + ] + }, + { + "name": "CommMessages", + "item": [ + { + "name": "List of CommMessages for a user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/comm_messages", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "comm_messages" + ], + "variable": [] + }, + "description": "Retrieve a paginated list of messages sent to a user." + }, + "response": [] + } + ] + }, + { + "name": "Communication Channels", + "item": [ + { + "name": "List user communication channels", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of communication channels for the specified user,\nsorted by position." + }, + "response": [] + }, + { + "name": "Create a communication channel", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Creates a new communication channel for the specified user.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "communication_channel[address]", + "value": "", + "type": "text", + "description": "An email address or SMS number. Not required for \"push\" type channels." + }, + { + "key": "communication_channel[type]", + "value": "", + "type": "text", + "description": "The type of communication channel.\n\nIn order to enable push notification support, the server must be\nproperly configured (via `sns_creds` in Vault) to communicate with Amazon\nSimple Notification Services, and the developer key used to create\nthe access token from this request must have an SNS ARN configured on\nit." + }, + { + "key": "communication_channel[token]", + "value": "", + "type": "text", + "description": "A registration id, device token, or equivalent token given to an app when\nregistering with a push notification provider. Only valid for \"push\" type channels." + }, + { + "key": "skip_confirmation", + "value": "", + "type": "text", + "description": "Only valid for site admins and account admins making requests; If true, the channel is\nautomatically validated and no confirmation email or SMS is sent.\nOtherwise, the user must respond to a confirmation message to confirm the\nchannel." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a communication channel", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete an existing communication channel." + }, + "response": [] + }, + { + "name": "Delete a communication channel", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels/:type/:address", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels", + ":type", + ":address" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "type", + "description": "ID" + }, + { + "key": "address", + "description": "ID" + } + ] + }, + "description": "Delete an existing communication channel." + }, + "response": [] + }, + { + "name": "Delete a push notification endpoint", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/communication_channels/push", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "communication_channels", + "push" + ], + "variable": [] + }, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Conferences", + "item": [ + { + "name": "List conferences", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/conferences", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "conferences" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the paginated list of conferences for this context\n\nThis API returns a JSON object containing the list of conferences,\nthe key for the list of conferences is \"conferences\"" + }, + "response": [] + }, + { + "name": "List conferences", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/conferences", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "conferences" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the paginated list of conferences for this context\n\nThis API returns a JSON object containing the list of conferences,\nthe key for the list of conferences is \"conferences\"" + }, + "response": [] + }, + { + "name": "List conferences for the current user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conferences", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conferences" + ], + "variable": [] + }, + "description": "Retrieve the paginated list of conferences for all courses and groups\nthe current user belongs to\n\nThis API returns a JSON object containing the list of conferences.\nThe key for the list of conferences is \"conferences\"." + }, + "response": [] + } + ] + }, + { + "name": "Content Exports", + "item": [ + { + "name": "List content exports", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_exports" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the past and pending content export jobs for a course,\ngroup, or user. Exports are returned newest first." + }, + "response": [] + }, + { + "name": "List content exports", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_exports" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the past and pending content export jobs for a course,\ngroup, or user. Exports are returned newest first." + }, + "response": [] + }, + { + "name": "List content exports", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_exports" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the past and pending content export jobs for a course,\ngroup, or user. Exports are returned newest first." + }, + "response": [] + }, + { + "name": "Show content export", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_exports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_exports", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get information about a single content export." + }, + "response": [] + }, + { + "name": "Show content export", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_exports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_exports", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get information about a single content export." + }, + "response": [] + }, + { + "name": "Show content export", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_exports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_exports", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get information about a single content export." + }, + "response": [] + }, + { + "name": "Export content", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_exports" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Begin a content export job for a course, group, or user.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the export. The migration's progress is linked to with the\n_progress_url_ value.\n\nWhen the export completes, use the {api:ContentExportsApiController#show Show content export} endpoint\nto retrieve a download URL for the exported content.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "export_type", + "value": "", + "type": "text", + "description": "\"common_cartridge\":: Export the contents of the course in the Common Cartridge (.imscc) format\n\"qti\":: Export quizzes from a course in the QTI format\n\"zip\":: Export files from a course, group, or user in a zip file" + }, + { + "key": "skip_notifications", + "value": "", + "type": "text", + "description": "Don't send the notifications about the export to the user. Default: false" + }, + { + "key": "select", + "value": "", + "type": "text", + "description": "The select parameter allows exporting specific data. The keys are object types like 'files',\n'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an\ninteger or a string.\n\nMultiple object types can be selected in the same call. However, not all object types are\nvalid for every export_type. Common Cartridge supports all object types. Zip and QTI only\nsupport the object types as described below.\n\n\"folders\":: Also supported for zip export_type.\n\"files\":: Also supported for zip export_type.\n\"quizzes\":: Also supported for qti export_type." + } + ] + } + }, + "response": [] + }, + { + "name": "Export content", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_exports" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Begin a content export job for a course, group, or user.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the export. The migration's progress is linked to with the\n_progress_url_ value.\n\nWhen the export completes, use the {api:ContentExportsApiController#show Show content export} endpoint\nto retrieve a download URL for the exported content.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "export_type", + "value": "", + "type": "text", + "description": "\"common_cartridge\":: Export the contents of the course in the Common Cartridge (.imscc) format\n\"qti\":: Export quizzes from a course in the QTI format\n\"zip\":: Export files from a course, group, or user in a zip file" + }, + { + "key": "skip_notifications", + "value": "", + "type": "text", + "description": "Don't send the notifications about the export to the user. Default: false" + }, + { + "key": "select", + "value": "", + "type": "text", + "description": "The select parameter allows exporting specific data. The keys are object types like 'files',\n'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an\ninteger or a string.\n\nMultiple object types can be selected in the same call. However, not all object types are\nvalid for every export_type. Common Cartridge supports all object types. Zip and QTI only\nsupport the object types as described below.\n\n\"folders\":: Also supported for zip export_type.\n\"files\":: Also supported for zip export_type.\n\"quizzes\":: Also supported for qti export_type." + } + ] + } + }, + "response": [] + }, + { + "name": "Export content", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_exports" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Begin a content export job for a course, group, or user.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the export. The migration's progress is linked to with the\n_progress_url_ value.\n\nWhen the export completes, use the {api:ContentExportsApiController#show Show content export} endpoint\nto retrieve a download URL for the exported content.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "export_type", + "value": "", + "type": "text", + "description": "\"common_cartridge\":: Export the contents of the course in the Common Cartridge (.imscc) format\n\"qti\":: Export quizzes from a course in the QTI format\n\"zip\":: Export files from a course, group, or user in a zip file" + }, + { + "key": "skip_notifications", + "value": "", + "type": "text", + "description": "Don't send the notifications about the export to the user. Default: false" + }, + { + "key": "select", + "value": "", + "type": "text", + "description": "The select parameter allows exporting specific data. The keys are object types like 'files',\n'folders', 'pages', etc. The value for each key is a list of object ids. An id can be an\ninteger or a string.\n\nMultiple object types can be selected in the same call. However, not all object types are\nvalid for every export_type. Common Cartridge supports all object types. Zip and QTI only\nsupport the object types as described below.\n\n\"folders\":: Also supported for zip export_type.\n\"files\":: Also supported for zip export_type.\n\"quizzes\":: Also supported for qti export_type." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Content Migrations", + "item": [ + { + "name": "List migration issues", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations/:content_migration_id/migration_issues", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations", + ":content_migration_id", + "migration_issues" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated migration issues" + }, + "response": [] + }, + { + "name": "List migration issues", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/:content_migration_id/migration_issues", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + ":content_migration_id", + "migration_issues" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated migration issues" + }, + "response": [] + }, + { + "name": "List migration issues", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations/:content_migration_id/migration_issues", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations", + ":content_migration_id", + "migration_issues" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated migration issues" + }, + "response": [] + }, + { + "name": "List migration issues", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations/:content_migration_id/migration_issues", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations", + ":content_migration_id", + "migration_issues" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated migration issues" + }, + "response": [] + }, + { + "name": "Get a migration issue", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual migration issue" + }, + "response": [] + }, + { + "name": "Get a migration issue", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual migration issue" + }, + "response": [] + }, + { + "name": "Get a migration issue", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual migration issue" + }, + "response": [] + }, + { + "name": "Get a migration issue", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual migration issue" + }, + "response": [] + }, + { + "name": "Update a migration issue", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update the workflow_state of a migration issue", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "Set the workflow_state of the issue." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a migration issue", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update the workflow_state of a migration issue", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "Set the workflow_state of the issue." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a migration issue", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update the workflow_state of a migration issue", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "Set the workflow_state of the issue." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a migration issue", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations/:content_migration_id/migration_issues/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations", + ":content_migration_id", + "migration_issues", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "content_migration_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update the workflow_state of a migration issue", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "Set the workflow_state of the issue." + } + ] + } + }, + "response": [] + }, + { + "name": "List content migrations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated content migrations" + }, + "response": [] + }, + { + "name": "List content migrations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated content migrations" + }, + "response": [] + }, + { + "name": "List content migrations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated content migrations" + }, + "response": [] + }, + { + "name": "List content migrations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns paginated content migrations" + }, + "response": [] + }, + { + "name": "Get a content migration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual content migration" + }, + "response": [] + }, + { + "name": "Get a content migration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual content migration" + }, + "response": [] + }, + { + "name": "Get a content migration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual content migration" + }, + "response": [] + }, + { + "name": "Get a content migration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual content migration" + }, + "response": [] + }, + { + "name": "Create a content migration", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a content migration. If the migration requires a file to be uploaded\nthe actual processing of the file will start once the file upload process is completed.\nFile uploading works as described in the {file:file_uploads.html File Upload Documentation}\nexcept that the values are set on a *pre_attachment* sub-hash.\n\nFor migrations that don't require a file to be uploaded, like course copy, the\nprocessing will begin as soon as the migration is created.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the migration. The migration's progress is linked to with the\n_progress_url_ value.\n\nThe two general workflows are:\n\nIf no file upload is needed:\n\n1. POST to create\n2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\nFor file uploading:\n\n1. POST to create with file info in *pre_attachment*\n2. Do {file:file_uploads.html file upload processing} using the data in the *pre_attachment* data\n3. {api:ContentMigrationsController#show GET} the ContentMigration\n4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\n (required if doing .zip file upload)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "migration_type", + "value": "", + "type": "text", + "description": "The type of the migration. Use the\n{api:ContentMigrationsController#available_migrators Migrator} endpoint to\nsee all available migrators. Default allowed values:\ncanvas_cartridge_importer, common_cartridge_importer,\ncourse_copy_importer, zip_file_importer, qti_converter, moodle_converter" + }, + { + "key": "pre_attachment[name]", + "value": "", + "type": "text", + "description": "Required if uploading a file. This is the first step in uploading a file\nto the content migration. See the {file:file_uploads.html File Upload\nDocumentation} for details on the file upload workflow." + }, + { + "key": "pre_attachment[*]", + "value": "", + "type": "text", + "description": "Other file upload properties, See {file:file_uploads.html File Upload\nDocumentation}" + }, + { + "key": "settings[file_url]", + "value": "", + "type": "text", + "description": "A URL to download the file from. Must not require authentication." + }, + { + "key": "settings[content_export_id]", + "value": "", + "type": "text", + "description": "The id of a ContentExport to import. This allows you to import content previously exported from Canvas\nwithout needing to download and re-upload it." + }, + { + "key": "settings[source_course_id]", + "value": "", + "type": "text", + "description": "The course to copy from for a course copy migration. (required if doing\ncourse copy)" + }, + { + "key": "settings[folder_id]", + "value": "", + "type": "text", + "description": "The folder to unzip the .zip file into for a zip_file_import." + }, + { + "key": "settings[overwrite_quizzes]", + "value": "", + "type": "text", + "description": "Whether to overwrite quizzes with the same identifiers between content\npackages." + }, + { + "key": "settings[question_bank_id]", + "value": "", + "type": "text", + "description": "The existing question bank ID to import questions into if not specified in\nthe content package." + }, + { + "key": "settings[question_bank_name]", + "value": "", + "type": "text", + "description": "The question bank to import questions into if not specified in the content\npackage, if both bank id and name are set, id will take precedence." + }, + { + "key": "settings[insert_into_module_id]", + "value": "", + "type": "text", + "description": "The id of a module in the target course. This will add all imported items\n(that can be added to a module) to the given module." + }, + { + "key": "settings[insert_into_module_type]", + "value": "", + "type": "text", + "description": "If provided (and +insert_into_module_id+ is supplied),\nonly add objects of the specified type to the module." + }, + { + "key": "settings[insert_into_module_position]", + "value": "", + "type": "text", + "description": "The (1-based) position to insert the imported items into the course\n(if +insert_into_module_id+ is supplied). If this parameter\nis omitted, items will be added to the end of the module." + }, + { + "key": "settings[move_to_assignment_group_id]", + "value": "", + "type": "text", + "description": "The id of an assignment group in the target course. If provided, all\nimported assignments will be moved to the given assignment group." + }, + { + "key": "settings[importer_skips]", + "value": "", + "type": "text", + "description": "Set of importers to skip, even if otherwise selected by migration settings." + }, + { + "key": "settings[import_blueprint_settings]", + "value": "", + "type": "text", + "description": "Import the \"use as blueprint course\" setting as well as the list of locked items\nfrom the source course or package. The destination course must not be associated\nwith an existing blueprint course and cannot have any student or observer enrollments." + }, + { + "key": "date_shift_options[shift_dates]", + "value": "", + "type": "text", + "description": "Whether to shift dates in the copied course" + }, + { + "key": "date_shift_options[old_start_date]", + "value": "", + "type": "text", + "description": "The original start date of the source content/course" + }, + { + "key": "date_shift_options[old_end_date]", + "value": "", + "type": "text", + "description": "The original end date of the source content/course" + }, + { + "key": "date_shift_options[new_start_date]", + "value": "", + "type": "text", + "description": "The new start date for the content/course" + }, + { + "key": "date_shift_options[new_end_date]", + "value": "", + "type": "text", + "description": "The new end date for the source content/course" + }, + { + "key": "date_shift_options[day_substitutions][X]", + "value": "", + "type": "text", + "description": "Move anything scheduled for day 'X' to the specified day. (0-Sunday,\n1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday)" + }, + { + "key": "date_shift_options[remove_dates]", + "value": "", + "type": "text", + "description": "Whether to remove dates in the copied course. Cannot be used\nin conjunction with *shift_dates*." + }, + { + "key": "selective_import", + "value": "", + "type": "text", + "description": "If set, perform a selective import instead of importing all content.\nThe migration will identify the contents of the package and then stop\nin the +waiting_for_select+ workflow state. At this point, use the\n{api:ContentMigrationsController#content_list List items endpoint}\nto enumerate the contents of the package, identifying the copy\nparameters for the desired content. Then call the\n{api:ContentMigrationsController#update Update endpoint} and provide these\ncopy parameters to start the import." + }, + { + "key": "select", + "value": "", + "type": "text", + "description": "For +course_copy_importer+ migrations, this parameter allows you to select\nthe objects to copy without using the +selective_import+ argument and\n+waiting_for_select+ state as is required for uploaded imports (though that\nworkflow is also supported for course copy migrations).\nThe keys are object types like 'files', 'folders', 'pages', etc. The value\nfor each key is a list of object ids. An id can be an integer or a string.\nMultiple object types can be selected in the same call." + } + ] + } + }, + "response": [] + }, + { + "name": "Create a content migration", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a content migration. If the migration requires a file to be uploaded\nthe actual processing of the file will start once the file upload process is completed.\nFile uploading works as described in the {file:file_uploads.html File Upload Documentation}\nexcept that the values are set on a *pre_attachment* sub-hash.\n\nFor migrations that don't require a file to be uploaded, like course copy, the\nprocessing will begin as soon as the migration is created.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the migration. The migration's progress is linked to with the\n_progress_url_ value.\n\nThe two general workflows are:\n\nIf no file upload is needed:\n\n1. POST to create\n2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\nFor file uploading:\n\n1. POST to create with file info in *pre_attachment*\n2. Do {file:file_uploads.html file upload processing} using the data in the *pre_attachment* data\n3. {api:ContentMigrationsController#show GET} the ContentMigration\n4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\n (required if doing .zip file upload)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "migration_type", + "value": "", + "type": "text", + "description": "The type of the migration. Use the\n{api:ContentMigrationsController#available_migrators Migrator} endpoint to\nsee all available migrators. Default allowed values:\ncanvas_cartridge_importer, common_cartridge_importer,\ncourse_copy_importer, zip_file_importer, qti_converter, moodle_converter" + }, + { + "key": "pre_attachment[name]", + "value": "", + "type": "text", + "description": "Required if uploading a file. This is the first step in uploading a file\nto the content migration. See the {file:file_uploads.html File Upload\nDocumentation} for details on the file upload workflow." + }, + { + "key": "pre_attachment[*]", + "value": "", + "type": "text", + "description": "Other file upload properties, See {file:file_uploads.html File Upload\nDocumentation}" + }, + { + "key": "settings[file_url]", + "value": "", + "type": "text", + "description": "A URL to download the file from. Must not require authentication." + }, + { + "key": "settings[content_export_id]", + "value": "", + "type": "text", + "description": "The id of a ContentExport to import. This allows you to import content previously exported from Canvas\nwithout needing to download and re-upload it." + }, + { + "key": "settings[source_course_id]", + "value": "", + "type": "text", + "description": "The course to copy from for a course copy migration. (required if doing\ncourse copy)" + }, + { + "key": "settings[folder_id]", + "value": "", + "type": "text", + "description": "The folder to unzip the .zip file into for a zip_file_import." + }, + { + "key": "settings[overwrite_quizzes]", + "value": "", + "type": "text", + "description": "Whether to overwrite quizzes with the same identifiers between content\npackages." + }, + { + "key": "settings[question_bank_id]", + "value": "", + "type": "text", + "description": "The existing question bank ID to import questions into if not specified in\nthe content package." + }, + { + "key": "settings[question_bank_name]", + "value": "", + "type": "text", + "description": "The question bank to import questions into if not specified in the content\npackage, if both bank id and name are set, id will take precedence." + }, + { + "key": "settings[insert_into_module_id]", + "value": "", + "type": "text", + "description": "The id of a module in the target course. This will add all imported items\n(that can be added to a module) to the given module." + }, + { + "key": "settings[insert_into_module_type]", + "value": "", + "type": "text", + "description": "If provided (and +insert_into_module_id+ is supplied),\nonly add objects of the specified type to the module." + }, + { + "key": "settings[insert_into_module_position]", + "value": "", + "type": "text", + "description": "The (1-based) position to insert the imported items into the course\n(if +insert_into_module_id+ is supplied). If this parameter\nis omitted, items will be added to the end of the module." + }, + { + "key": "settings[move_to_assignment_group_id]", + "value": "", + "type": "text", + "description": "The id of an assignment group in the target course. If provided, all\nimported assignments will be moved to the given assignment group." + }, + { + "key": "settings[importer_skips]", + "value": "", + "type": "text", + "description": "Set of importers to skip, even if otherwise selected by migration settings." + }, + { + "key": "settings[import_blueprint_settings]", + "value": "", + "type": "text", + "description": "Import the \"use as blueprint course\" setting as well as the list of locked items\nfrom the source course or package. The destination course must not be associated\nwith an existing blueprint course and cannot have any student or observer enrollments." + }, + { + "key": "date_shift_options[shift_dates]", + "value": "", + "type": "text", + "description": "Whether to shift dates in the copied course" + }, + { + "key": "date_shift_options[old_start_date]", + "value": "", + "type": "text", + "description": "The original start date of the source content/course" + }, + { + "key": "date_shift_options[old_end_date]", + "value": "", + "type": "text", + "description": "The original end date of the source content/course" + }, + { + "key": "date_shift_options[new_start_date]", + "value": "", + "type": "text", + "description": "The new start date for the content/course" + }, + { + "key": "date_shift_options[new_end_date]", + "value": "", + "type": "text", + "description": "The new end date for the source content/course" + }, + { + "key": "date_shift_options[day_substitutions][X]", + "value": "", + "type": "text", + "description": "Move anything scheduled for day 'X' to the specified day. (0-Sunday,\n1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday)" + }, + { + "key": "date_shift_options[remove_dates]", + "value": "", + "type": "text", + "description": "Whether to remove dates in the copied course. Cannot be used\nin conjunction with *shift_dates*." + }, + { + "key": "selective_import", + "value": "", + "type": "text", + "description": "If set, perform a selective import instead of importing all content.\nThe migration will identify the contents of the package and then stop\nin the +waiting_for_select+ workflow state. At this point, use the\n{api:ContentMigrationsController#content_list List items endpoint}\nto enumerate the contents of the package, identifying the copy\nparameters for the desired content. Then call the\n{api:ContentMigrationsController#update Update endpoint} and provide these\ncopy parameters to start the import." + }, + { + "key": "select", + "value": "", + "type": "text", + "description": "For +course_copy_importer+ migrations, this parameter allows you to select\nthe objects to copy without using the +selective_import+ argument and\n+waiting_for_select+ state as is required for uploaded imports (though that\nworkflow is also supported for course copy migrations).\nThe keys are object types like 'files', 'folders', 'pages', etc. The value\nfor each key is a list of object ids. An id can be an integer or a string.\nMultiple object types can be selected in the same call." + } + ] + } + }, + "response": [] + }, + { + "name": "Create a content migration", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Create a content migration. If the migration requires a file to be uploaded\nthe actual processing of the file will start once the file upload process is completed.\nFile uploading works as described in the {file:file_uploads.html File Upload Documentation}\nexcept that the values are set on a *pre_attachment* sub-hash.\n\nFor migrations that don't require a file to be uploaded, like course copy, the\nprocessing will begin as soon as the migration is created.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the migration. The migration's progress is linked to with the\n_progress_url_ value.\n\nThe two general workflows are:\n\nIf no file upload is needed:\n\n1. POST to create\n2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\nFor file uploading:\n\n1. POST to create with file info in *pre_attachment*\n2. Do {file:file_uploads.html file upload processing} using the data in the *pre_attachment* data\n3. {api:ContentMigrationsController#show GET} the ContentMigration\n4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\n (required if doing .zip file upload)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "migration_type", + "value": "", + "type": "text", + "description": "The type of the migration. Use the\n{api:ContentMigrationsController#available_migrators Migrator} endpoint to\nsee all available migrators. Default allowed values:\ncanvas_cartridge_importer, common_cartridge_importer,\ncourse_copy_importer, zip_file_importer, qti_converter, moodle_converter" + }, + { + "key": "pre_attachment[name]", + "value": "", + "type": "text", + "description": "Required if uploading a file. This is the first step in uploading a file\nto the content migration. See the {file:file_uploads.html File Upload\nDocumentation} for details on the file upload workflow." + }, + { + "key": "pre_attachment[*]", + "value": "", + "type": "text", + "description": "Other file upload properties, See {file:file_uploads.html File Upload\nDocumentation}" + }, + { + "key": "settings[file_url]", + "value": "", + "type": "text", + "description": "A URL to download the file from. Must not require authentication." + }, + { + "key": "settings[content_export_id]", + "value": "", + "type": "text", + "description": "The id of a ContentExport to import. This allows you to import content previously exported from Canvas\nwithout needing to download and re-upload it." + }, + { + "key": "settings[source_course_id]", + "value": "", + "type": "text", + "description": "The course to copy from for a course copy migration. (required if doing\ncourse copy)" + }, + { + "key": "settings[folder_id]", + "value": "", + "type": "text", + "description": "The folder to unzip the .zip file into for a zip_file_import." + }, + { + "key": "settings[overwrite_quizzes]", + "value": "", + "type": "text", + "description": "Whether to overwrite quizzes with the same identifiers between content\npackages." + }, + { + "key": "settings[question_bank_id]", + "value": "", + "type": "text", + "description": "The existing question bank ID to import questions into if not specified in\nthe content package." + }, + { + "key": "settings[question_bank_name]", + "value": "", + "type": "text", + "description": "The question bank to import questions into if not specified in the content\npackage, if both bank id and name are set, id will take precedence." + }, + { + "key": "settings[insert_into_module_id]", + "value": "", + "type": "text", + "description": "The id of a module in the target course. This will add all imported items\n(that can be added to a module) to the given module." + }, + { + "key": "settings[insert_into_module_type]", + "value": "", + "type": "text", + "description": "If provided (and +insert_into_module_id+ is supplied),\nonly add objects of the specified type to the module." + }, + { + "key": "settings[insert_into_module_position]", + "value": "", + "type": "text", + "description": "The (1-based) position to insert the imported items into the course\n(if +insert_into_module_id+ is supplied). If this parameter\nis omitted, items will be added to the end of the module." + }, + { + "key": "settings[move_to_assignment_group_id]", + "value": "", + "type": "text", + "description": "The id of an assignment group in the target course. If provided, all\nimported assignments will be moved to the given assignment group." + }, + { + "key": "settings[importer_skips]", + "value": "", + "type": "text", + "description": "Set of importers to skip, even if otherwise selected by migration settings." + }, + { + "key": "settings[import_blueprint_settings]", + "value": "", + "type": "text", + "description": "Import the \"use as blueprint course\" setting as well as the list of locked items\nfrom the source course or package. The destination course must not be associated\nwith an existing blueprint course and cannot have any student or observer enrollments." + }, + { + "key": "date_shift_options[shift_dates]", + "value": "", + "type": "text", + "description": "Whether to shift dates in the copied course" + }, + { + "key": "date_shift_options[old_start_date]", + "value": "", + "type": "text", + "description": "The original start date of the source content/course" + }, + { + "key": "date_shift_options[old_end_date]", + "value": "", + "type": "text", + "description": "The original end date of the source content/course" + }, + { + "key": "date_shift_options[new_start_date]", + "value": "", + "type": "text", + "description": "The new start date for the content/course" + }, + { + "key": "date_shift_options[new_end_date]", + "value": "", + "type": "text", + "description": "The new end date for the source content/course" + }, + { + "key": "date_shift_options[day_substitutions][X]", + "value": "", + "type": "text", + "description": "Move anything scheduled for day 'X' to the specified day. (0-Sunday,\n1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday)" + }, + { + "key": "date_shift_options[remove_dates]", + "value": "", + "type": "text", + "description": "Whether to remove dates in the copied course. Cannot be used\nin conjunction with *shift_dates*." + }, + { + "key": "selective_import", + "value": "", + "type": "text", + "description": "If set, perform a selective import instead of importing all content.\nThe migration will identify the contents of the package and then stop\nin the +waiting_for_select+ workflow state. At this point, use the\n{api:ContentMigrationsController#content_list List items endpoint}\nto enumerate the contents of the package, identifying the copy\nparameters for the desired content. Then call the\n{api:ContentMigrationsController#update Update endpoint} and provide these\ncopy parameters to start the import." + }, + { + "key": "select", + "value": "", + "type": "text", + "description": "For +course_copy_importer+ migrations, this parameter allows you to select\nthe objects to copy without using the +selective_import+ argument and\n+waiting_for_select+ state as is required for uploaded imports (though that\nworkflow is also supported for course copy migrations).\nThe keys are object types like 'files', 'folders', 'pages', etc. The value\nfor each key is a list of object ids. An id can be an integer or a string.\nMultiple object types can be selected in the same call." + } + ] + } + }, + "response": [] + }, + { + "name": "Create a content migration", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Create a content migration. If the migration requires a file to be uploaded\nthe actual processing of the file will start once the file upload process is completed.\nFile uploading works as described in the {file:file_uploads.html File Upload Documentation}\nexcept that the values are set on a *pre_attachment* sub-hash.\n\nFor migrations that don't require a file to be uploaded, like course copy, the\nprocessing will begin as soon as the migration is created.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the migration. The migration's progress is linked to with the\n_progress_url_ value.\n\nThe two general workflows are:\n\nIf no file upload is needed:\n\n1. POST to create\n2. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\nFor file uploading:\n\n1. POST to create with file info in *pre_attachment*\n2. Do {file:file_uploads.html file upload processing} using the data in the *pre_attachment* data\n3. {api:ContentMigrationsController#show GET} the ContentMigration\n4. Use the {api:ProgressController#show Progress} specified in _progress_url_ to monitor progress\n\n (required if doing .zip file upload)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "migration_type", + "value": "", + "type": "text", + "description": "The type of the migration. Use the\n{api:ContentMigrationsController#available_migrators Migrator} endpoint to\nsee all available migrators. Default allowed values:\ncanvas_cartridge_importer, common_cartridge_importer,\ncourse_copy_importer, zip_file_importer, qti_converter, moodle_converter" + }, + { + "key": "pre_attachment[name]", + "value": "", + "type": "text", + "description": "Required if uploading a file. This is the first step in uploading a file\nto the content migration. See the {file:file_uploads.html File Upload\nDocumentation} for details on the file upload workflow." + }, + { + "key": "pre_attachment[*]", + "value": "", + "type": "text", + "description": "Other file upload properties, See {file:file_uploads.html File Upload\nDocumentation}" + }, + { + "key": "settings[file_url]", + "value": "", + "type": "text", + "description": "A URL to download the file from. Must not require authentication." + }, + { + "key": "settings[content_export_id]", + "value": "", + "type": "text", + "description": "The id of a ContentExport to import. This allows you to import content previously exported from Canvas\nwithout needing to download and re-upload it." + }, + { + "key": "settings[source_course_id]", + "value": "", + "type": "text", + "description": "The course to copy from for a course copy migration. (required if doing\ncourse copy)" + }, + { + "key": "settings[folder_id]", + "value": "", + "type": "text", + "description": "The folder to unzip the .zip file into for a zip_file_import." + }, + { + "key": "settings[overwrite_quizzes]", + "value": "", + "type": "text", + "description": "Whether to overwrite quizzes with the same identifiers between content\npackages." + }, + { + "key": "settings[question_bank_id]", + "value": "", + "type": "text", + "description": "The existing question bank ID to import questions into if not specified in\nthe content package." + }, + { + "key": "settings[question_bank_name]", + "value": "", + "type": "text", + "description": "The question bank to import questions into if not specified in the content\npackage, if both bank id and name are set, id will take precedence." + }, + { + "key": "settings[insert_into_module_id]", + "value": "", + "type": "text", + "description": "The id of a module in the target course. This will add all imported items\n(that can be added to a module) to the given module." + }, + { + "key": "settings[insert_into_module_type]", + "value": "", + "type": "text", + "description": "If provided (and +insert_into_module_id+ is supplied),\nonly add objects of the specified type to the module." + }, + { + "key": "settings[insert_into_module_position]", + "value": "", + "type": "text", + "description": "The (1-based) position to insert the imported items into the course\n(if +insert_into_module_id+ is supplied). If this parameter\nis omitted, items will be added to the end of the module." + }, + { + "key": "settings[move_to_assignment_group_id]", + "value": "", + "type": "text", + "description": "The id of an assignment group in the target course. If provided, all\nimported assignments will be moved to the given assignment group." + }, + { + "key": "settings[importer_skips]", + "value": "", + "type": "text", + "description": "Set of importers to skip, even if otherwise selected by migration settings." + }, + { + "key": "settings[import_blueprint_settings]", + "value": "", + "type": "text", + "description": "Import the \"use as blueprint course\" setting as well as the list of locked items\nfrom the source course or package. The destination course must not be associated\nwith an existing blueprint course and cannot have any student or observer enrollments." + }, + { + "key": "date_shift_options[shift_dates]", + "value": "", + "type": "text", + "description": "Whether to shift dates in the copied course" + }, + { + "key": "date_shift_options[old_start_date]", + "value": "", + "type": "text", + "description": "The original start date of the source content/course" + }, + { + "key": "date_shift_options[old_end_date]", + "value": "", + "type": "text", + "description": "The original end date of the source content/course" + }, + { + "key": "date_shift_options[new_start_date]", + "value": "", + "type": "text", + "description": "The new start date for the content/course" + }, + { + "key": "date_shift_options[new_end_date]", + "value": "", + "type": "text", + "description": "The new end date for the source content/course" + }, + { + "key": "date_shift_options[day_substitutions][X]", + "value": "", + "type": "text", + "description": "Move anything scheduled for day 'X' to the specified day. (0-Sunday,\n1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5-Friday, 6-Saturday)" + }, + { + "key": "date_shift_options[remove_dates]", + "value": "", + "type": "text", + "description": "Whether to remove dates in the copied course. Cannot be used\nin conjunction with *shift_dates*." + }, + { + "key": "selective_import", + "value": "", + "type": "text", + "description": "If set, perform a selective import instead of importing all content.\nThe migration will identify the contents of the package and then stop\nin the +waiting_for_select+ workflow state. At this point, use the\n{api:ContentMigrationsController#content_list List items endpoint}\nto enumerate the contents of the package, identifying the copy\nparameters for the desired content. Then call the\n{api:ContentMigrationsController#update Update endpoint} and provide these\ncopy parameters to start the import." + }, + { + "key": "select", + "value": "", + "type": "text", + "description": "For +course_copy_importer+ migrations, this parameter allows you to select\nthe objects to copy without using the +selective_import+ argument and\n+waiting_for_select+ state as is required for uploaded imports (though that\nworkflow is also supported for course copy migrations).\nThe keys are object types like 'files', 'folders', 'pages', etc. The value\nfor each key is a list of object ids. An id can be an integer or a string.\nMultiple object types can be selected in the same call." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a content migration", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you\ncan't change the migration type. However, changing most settings after the\nmigration process has started will not do anything. Generally updating the\ncontent migration will be used when there is a file upload problem, or when\nimporting content selectively. If the first upload has a problem you can\nsupply new _pre_attachment_ values to start the process again." + }, + "response": [] + }, + { + "name": "Update a content migration", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you\ncan't change the migration type. However, changing most settings after the\nmigration process has started will not do anything. Generally updating the\ncontent migration will be used when there is a file upload problem, or when\nimporting content selectively. If the first upload has a problem you can\nsupply new _pre_attachment_ values to start the process again." + }, + "response": [] + }, + { + "name": "Update a content migration", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you\ncan't change the migration type. However, changing most settings after the\nmigration process has started will not do anything. Generally updating the\ncontent migration will be used when there is a file upload problem, or when\nimporting content selectively. If the first upload has a problem you can\nsupply new _pre_attachment_ values to start the process again." + }, + "response": [] + }, + { + "name": "Update a content migration", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a content migration. Takes same arguments as {api:ContentMigrationsController#create create} except that you\ncan't change the migration type. However, changing most settings after the\nmigration process has started will not do anything. Generally updating the\ncontent migration will be used when there is a file upload problem, or when\nimporting content selectively. If the first upload has a problem you can\nsupply new _pre_attachment_ values to start the process again." + }, + "response": [] + }, + { + "name": "List Migration Systems", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations/migrators", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations", + "migrators" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Lists the currently available migration types. These values may change." + }, + "response": [] + }, + { + "name": "List Migration Systems", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/migrators", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + "migrators" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Lists the currently available migration types. These values may change." + }, + "response": [] + }, + { + "name": "List Migration Systems", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations/migrators", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations", + "migrators" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Lists the currently available migration types. These values may change." + }, + "response": [] + }, + { + "name": "List Migration Systems", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations/migrators", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations", + "migrators" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Lists the currently available migration types. These values may change." + }, + "response": [] + }, + { + "name": "List items for selective import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/content_migrations/:id/selective_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "content_migrations", + ":id", + "selective_data" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Enumerates the content available for selective import in a tree structure. Each node provides\na +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint}\nto selectively copy the content associated with that tree node and its children. Each node may also\nprovide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters\nfor a subset of the resources in a given node.\n\nIf no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this:\n\n [{\n \"type\": \"course_settings\",\n \"property\": \"copy[all_course_settings]\",\n \"title\": \"Course Settings\"\n },\n {\n \"type\": \"context_modules\",\n \"property\": \"copy[all_context_modules]\",\n \"title\": \"Modules\",\n \"count\": 5,\n \"sub_items_url\": \"http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules\"\n },\n {\n \"type\": \"assignments\",\n \"property\": \"copy[all_assignments]\",\n \"title\": \"Assignments\",\n \"count\": 2,\n \"sub_items_url\": \"http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments\"\n }]\n\nWhen a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+\nresults in a node for each assignment group and a sub_item for each assignment, like this:\n\n [{\n \"type\": \"assignment_groups\",\n \"title\": \"An Assignment Group\",\n \"property\": \"copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]\",\n \"sub_items\": [{\n \"type\": \"assignments\",\n \"title\": \"Assignment 1\",\n \"property\": \"copy[assignments][id_i2102a7fa93b29226774949298626719d]\"\n }, {\n \"type\": \"assignments\",\n \"title\": \"Assignment 2\",\n \"property\": \"copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]\"\n }]\n }]\n\n\nTo import the items corresponding to a particular tree node, use the +property+ as a parameter to the\n{api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example:\n\n copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1\n\nYou can include multiple copy parameters to selectively import multiple items or groups of items." + }, + "response": [] + }, + { + "name": "List items for selective import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/:id/selective_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + ":id", + "selective_data" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Enumerates the content available for selective import in a tree structure. Each node provides\na +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint}\nto selectively copy the content associated with that tree node and its children. Each node may also\nprovide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters\nfor a subset of the resources in a given node.\n\nIf no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this:\n\n [{\n \"type\": \"course_settings\",\n \"property\": \"copy[all_course_settings]\",\n \"title\": \"Course Settings\"\n },\n {\n \"type\": \"context_modules\",\n \"property\": \"copy[all_context_modules]\",\n \"title\": \"Modules\",\n \"count\": 5,\n \"sub_items_url\": \"http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules\"\n },\n {\n \"type\": \"assignments\",\n \"property\": \"copy[all_assignments]\",\n \"title\": \"Assignments\",\n \"count\": 2,\n \"sub_items_url\": \"http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments\"\n }]\n\nWhen a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+\nresults in a node for each assignment group and a sub_item for each assignment, like this:\n\n [{\n \"type\": \"assignment_groups\",\n \"title\": \"An Assignment Group\",\n \"property\": \"copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]\",\n \"sub_items\": [{\n \"type\": \"assignments\",\n \"title\": \"Assignment 1\",\n \"property\": \"copy[assignments][id_i2102a7fa93b29226774949298626719d]\"\n }, {\n \"type\": \"assignments\",\n \"title\": \"Assignment 2\",\n \"property\": \"copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]\"\n }]\n }]\n\n\nTo import the items corresponding to a particular tree node, use the +property+ as a parameter to the\n{api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example:\n\n copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1\n\nYou can include multiple copy parameters to selectively import multiple items or groups of items." + }, + "response": [] + }, + { + "name": "List items for selective import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_migrations/:id/selective_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_migrations", + ":id", + "selective_data" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Enumerates the content available for selective import in a tree structure. Each node provides\na +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint}\nto selectively copy the content associated with that tree node and its children. Each node may also\nprovide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters\nfor a subset of the resources in a given node.\n\nIf no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this:\n\n [{\n \"type\": \"course_settings\",\n \"property\": \"copy[all_course_settings]\",\n \"title\": \"Course Settings\"\n },\n {\n \"type\": \"context_modules\",\n \"property\": \"copy[all_context_modules]\",\n \"title\": \"Modules\",\n \"count\": 5,\n \"sub_items_url\": \"http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules\"\n },\n {\n \"type\": \"assignments\",\n \"property\": \"copy[all_assignments]\",\n \"title\": \"Assignments\",\n \"count\": 2,\n \"sub_items_url\": \"http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments\"\n }]\n\nWhen a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+\nresults in a node for each assignment group and a sub_item for each assignment, like this:\n\n [{\n \"type\": \"assignment_groups\",\n \"title\": \"An Assignment Group\",\n \"property\": \"copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]\",\n \"sub_items\": [{\n \"type\": \"assignments\",\n \"title\": \"Assignment 1\",\n \"property\": \"copy[assignments][id_i2102a7fa93b29226774949298626719d]\"\n }, {\n \"type\": \"assignments\",\n \"title\": \"Assignment 2\",\n \"property\": \"copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]\"\n }]\n }]\n\n\nTo import the items corresponding to a particular tree node, use the +property+ as a parameter to the\n{api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example:\n\n copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1\n\nYou can include multiple copy parameters to selectively import multiple items or groups of items." + }, + "response": [] + }, + { + "name": "List items for selective import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_migrations/:id/selective_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_migrations", + ":id", + "selective_data" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Enumerates the content available for selective import in a tree structure. Each node provides\na +property+ copy argument that can be supplied to the {api:ContentMigrationsController#update Update endpoint}\nto selectively copy the content associated with that tree node and its children. Each node may also\nprovide a +sub_items_url+ or an array of +sub_items+ which you can use to obtain copy parameters\nfor a subset of the resources in a given node.\n\nIf no +type+ is sent you will get a list of the top-level sections in the content. It will look something like this:\n\n [{\n \"type\": \"course_settings\",\n \"property\": \"copy[all_course_settings]\",\n \"title\": \"Course Settings\"\n },\n {\n \"type\": \"context_modules\",\n \"property\": \"copy[all_context_modules]\",\n \"title\": \"Modules\",\n \"count\": 5,\n \"sub_items_url\": \"http://example.com/api/v1/courses/22/content_migrations/77/selective_data?type=context_modules\"\n },\n {\n \"type\": \"assignments\",\n \"property\": \"copy[all_assignments]\",\n \"title\": \"Assignments\",\n \"count\": 2,\n \"sub_items_url\": \"http://localhost:3000/api/v1/courses/22/content_migrations/77/selective_data?type=assignments\"\n }]\n\nWhen a +type+ is provided, nodes may be further divided via +sub_items+. For example, using +type=assignments+\nresults in a node for each assignment group and a sub_item for each assignment, like this:\n\n [{\n \"type\": \"assignment_groups\",\n \"title\": \"An Assignment Group\",\n \"property\": \"copy[assignment_groups][id_i855cf145e5acc7435e1bf1c6e2126e5f]\",\n \"sub_items\": [{\n \"type\": \"assignments\",\n \"title\": \"Assignment 1\",\n \"property\": \"copy[assignments][id_i2102a7fa93b29226774949298626719d]\"\n }, {\n \"type\": \"assignments\",\n \"title\": \"Assignment 2\",\n \"property\": \"copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]\"\n }]\n }]\n\n\nTo import the items corresponding to a particular tree node, use the +property+ as a parameter to the\n{api:ContentMigrationsController#update Update endpoint} and assign a value of 1, for example:\n\n copy[assignments][id_i310cba275dc3f4aa8a3306bbbe380979]=1\n\nYou can include multiple copy parameters to selectively import multiple items or groups of items." + }, + "response": [] + }, + { + "name": "Get asset id mapping", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_migrations/:id/asset_id_mapping", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_migrations", + ":id", + "asset_id_mapping" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Given a complete course copy or blueprint import content migration, return a mapping of asset ids\nfrom the source course to the destination course that were copied in this migration or an earlier one\nwith the same course pair and migration_type (course copy or blueprint).\n\nThe returned object's keys are asset types as they appear in API URLs (+announcements+, +assignments+,\n+discussion_topics+, +files+, +module_items+, +modules+, +pages+, and +quizzes+). The values are a mapping\nfrom id in source course to id in destination course for objects of this type." + }, + "response": [] + } + ] + }, + { + "name": "Content Security Policy Settings", + "item": [ + { + "name": "Get current settings for account or course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/csp_settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "csp_settings" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Update multiple modules in an account." + }, + "response": [] + }, + { + "name": "Get current settings for account or course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/csp_settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "csp_settings" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Update multiple modules in an account." + }, + "response": [] + }, + { + "name": "Enable, disable, or clear explicit CSP setting", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/csp_settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "csp_settings" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Either explicitly sets CSP to be on or off for courses and sub-accounts,\nor clear the explicit settings to default to those set by a parent account\n\nNote: If \"inherited\" and \"settings_locked\" are both true for this account or course,\nthen the CSP setting cannot be modified.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "status", + "value": "", + "type": "text", + "description": "If set to \"enabled\" for an account, CSP will be enabled for all its courses and sub-accounts (that\nhave not explicitly enabled or disabled it), using the allowed domains set on this account.\nIf set to \"disabled\", CSP will be disabled for this account or course and for all sub-accounts\nthat have not explicitly re-enabled it.\nIf set to \"inherited\", this account or course will reset to the default state where CSP settings\nare inherited from the first parent account to have them explicitly set." + } + ] + } + }, + "response": [] + }, + { + "name": "Enable, disable, or clear explicit CSP setting", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/csp_settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "csp_settings" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Either explicitly sets CSP to be on or off for courses and sub-accounts,\nor clear the explicit settings to default to those set by a parent account\n\nNote: If \"inherited\" and \"settings_locked\" are both true for this account or course,\nthen the CSP setting cannot be modified.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "status", + "value": "", + "type": "text", + "description": "If set to \"enabled\" for an account, CSP will be enabled for all its courses and sub-accounts (that\nhave not explicitly enabled or disabled it), using the allowed domains set on this account.\nIf set to \"disabled\", CSP will be disabled for this account or course and for all sub-accounts\nthat have not explicitly re-enabled it.\nIf set to \"inherited\", this account or course will reset to the default state where CSP settings\nare inherited from the first parent account to have them explicitly set." + } + ] + } + }, + "response": [] + }, + { + "name": "Lock or unlock current CSP settings for sub-accounts and courses", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/csp_settings/lock", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "csp_settings", + "lock" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Can only be set if CSP is explicitly enabled or disabled on this account (i.e. \"inherited\" is false).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "settings_locked", + "value": "", + "type": "text", + "description": "Whether sub-accounts and courses will be prevented from overriding settings inherited from this account." + } + ] + } + }, + "response": [] + }, + { + "name": "Add an allowed domain to account", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/csp_settings/domains", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "csp_settings", + "domains" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Adds an allowed domain for the current account. Note: this will not take effect\nunless CSP is explicitly enabled on this account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "domain", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Add multiple allowed domains to an account", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/csp_settings/domains/batch_create", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "csp_settings", + "domains", + "batch_create" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Adds multiple allowed domains for the current account. Note: this will not take effect\nunless CSP is explicitly enabled on this account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "domains", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Retrieve reported CSP Violations for account", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/csp_log", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "csp_log" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Must be called on a root account." + }, + "response": [] + }, + { + "name": "Remove a domain from account", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/csp_settings/domains", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "csp_settings", + "domains" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Removes an allowed domain from the current account." + }, + "response": [] + } + ] + }, + { + "name": "Content Shares", + "item": [ + { + "name": "Create a content share", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Share content directly between two or more users", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "receiver_ids", + "value": "", + "type": "text", + "description": "IDs of users to share the content with." + }, + { + "key": "content_type", + "value": "", + "type": "text", + "description": "Type of content you are sharing." + }, + { + "key": "content_id", + "value": "", + "type": "text", + "description": "The id of the content that you are sharing" + } + ] + } + }, + "response": [] + }, + { + "name": "List content shares", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares/sent", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares", + "sent" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return a paginated list of content shares a user has sent or received. Use +self+ as the user_id\nto retrieve your own content shares. Only linked observers and administrators may view other users'\ncontent shares." + }, + "response": [] + }, + { + "name": "List content shares", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares/received", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares", + "received" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return a paginated list of content shares a user has sent or received. Use +self+ as the user_id\nto retrieve your own content shares. Only linked observers and administrators may view other users'\ncontent shares." + }, + "response": [] + }, + { + "name": "Get unread shares count", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares/unread_count", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares", + "unread_count" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return the number of content shares a user has received that have not yet been read. Use +self+ as the user_id\nto retrieve your own content shares. Only linked observers and administrators may view other users'\ncontent shares." + }, + "response": [] + }, + { + "name": "Get content share", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Return information about a single content share. You may use +self+ as the user_id to retrieve your own content share." + }, + "response": [] + }, + { + "name": "Remove content share", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Remove a content share from your list. Use +self+ as the user_id. Note that this endpoint does not delete other users'\ncopies of the content share." + }, + "response": [] + }, + { + "name": "Add users to content share", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares/:id/add_users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares", + ":id", + "add_users" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Send a previously created content share to additional users", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "receiver_ids", + "value": "", + "type": "text", + "description": "IDs of users to share the content with." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a content share", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_shares/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_shares", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Mark a content share read or unread", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "read_state", + "value": "", + "type": "text", + "description": "Read state for the content share" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Conversations", + "item": [ + { + "name": "List conversations", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations" + ], + "variable": [] + }, + "description": "Returns the paginated list of conversations for the current user, most\nrecent ones first." + }, + "response": [] + }, + { + "name": "Create a conversation", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations" + ], + "variable": [] + }, + "description": "Create a new conversation with one or more recipients. If there is already\nan existing private conversation with the given recipients, it will be\nreused.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "recipients", + "value": "", + "type": "text", + "description": "An array of recipient ids. These may be user ids or course/group ids\nprefixed with \"course_\" or \"group_\" respectively, e.g.\nrecipients[]=1&recipients[]=2&recipients[]=course_3. If the course/group\nhas over 100 enrollments, 'bulk_message' and 'group_conversation' must be\nset to true." + }, + { + "key": "subject", + "value": "", + "type": "text", + "description": "The subject of the conversation. This is ignored when reusing a\nconversation. Maximum length is 255 characters." + }, + { + "key": "body", + "value": "", + "type": "text", + "description": "The message to be sent" + }, + { + "key": "force_new", + "value": "", + "type": "text", + "description": "Forces a new message to be created, even if there is an existing private conversation." + }, + { + "key": "group_conversation", + "value": "", + "type": "text", + "description": "Defaults to false. When false, individual private conversations will be\ncreated with each recipient. If true, this will be a group conversation\n(i.e. all recipients may see all messages and replies). Must be set true if\nthe number of recipients is over the set maximum (default is 100)." + }, + { + "key": "attachment_ids", + "value": "", + "type": "text", + "description": "An array of attachments ids. These must be files that have been previously\nuploaded to the sender's \"conversation attachments\" folder." + }, + { + "key": "media_comment_id", + "value": "", + "type": "text", + "description": "Media comment id of an audio or video file to be associated with this\nmessage." + }, + { + "key": "media_comment_type", + "value": "", + "type": "text", + "description": "Type of the associated media file" + }, + { + "key": "user_note", + "value": "", + "type": "text", + "description": "Will add a faculty journal entry for each recipient as long as the user\nmaking the api call has permission, the recipient is a student and\nfaculty journals are enabled in the account." + }, + { + "key": "mode", + "value": "", + "type": "text", + "description": "Determines whether the messages will be created/sent synchronously or\nasynchronously. Defaults to sync, and this option is ignored if this is a\ngroup conversation or there is just one recipient (i.e. it must be a bulk\nprivate message). When sent async, the response will be an empty array\n(batch status can be queried via the {api:ConversationsController#batches batches API})" + }, + { + "key": "scope", + "value": "", + "type": "text", + "description": "Used when generating \"visible\" in the API response. See the explanation\nunder the {api:ConversationsController#index index API action}" + }, + { + "key": "filter", + "value": "", + "type": "text", + "description": "Used when generating \"visible\" in the API response. See the explanation\nunder the {api:ConversationsController#index index API action}" + }, + { + "key": "filter_mode", + "value": "", + "type": "text", + "description": "Used when generating \"visible\" in the API response. See the explanation\nunder the {api:ConversationsController#index index API action}" + }, + { + "key": "context_code", + "value": "", + "type": "text", + "description": "The course or group that is the context for this conversation. Same format\nas courses or groups in the recipients argument." + } + ] + } + }, + "response": [] + }, + { + "name": "Get running batches", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/batches", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + "batches" + ], + "variable": [] + }, + "description": "Returns any currently running conversation batches for the current user.\nConversation batches are created when a bulk private message is sent\nasynchronously (see the mode argument to the {api:ConversationsController#create create API action})." + }, + "response": [] + }, + { + "name": "Get a single conversation", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns information for a single conversation for the current user. Response includes all\nfields that are present in the list/index action as well as messages\nand extended participant information." + }, + "response": [] + }, + { + "name": "Edit a conversation", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Updates attributes for a single conversation.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "conversation[workflow_state]", + "value": "", + "type": "text", + "description": "Change the state of this conversation" + }, + { + "key": "conversation[subscribed]", + "value": "", + "type": "text", + "description": "Toggle the current user's subscription to the conversation (only valid for\ngroup conversations). If unsubscribed, the user will still have access to\nthe latest messages, but the conversation won't be automatically flagged\nas unread, nor will it jump to the top of the inbox." + }, + { + "key": "conversation[starred]", + "value": "", + "type": "text", + "description": "Toggle the starred state of the current user's view of the conversation." + }, + { + "key": "scope", + "value": "", + "type": "text", + "description": "Used when generating \"visible\" in the API response. See the explanation\nunder the {api:ConversationsController#index index API action}" + }, + { + "key": "filter", + "value": "", + "type": "text", + "description": "Used when generating \"visible\" in the API response. See the explanation\nunder the {api:ConversationsController#index index API action}" + }, + { + "key": "filter_mode", + "value": "", + "type": "text", + "description": "Used when generating \"visible\" in the API response. See the explanation\nunder the {api:ConversationsController#index index API action}" + } + ] + } + }, + "response": [] + }, + { + "name": "Mark all as read", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/mark_all_as_read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + "mark_all_as_read" + ], + "variable": [] + }, + "description": "Mark all conversations as read." + }, + "response": [] + }, + { + "name": "Delete a conversation", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete this conversation and its messages. Note that this only deletes\nthis user's view of the conversation.\n\nResponse includes same fields as UPDATE action" + }, + "response": [] + }, + { + "name": "Add recipients", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/:id/add_recipients", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + ":id", + "add_recipients" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Add recipients to an existing group conversation. Response is similar to\nthe GET/show action, except that only includes the\nlatest message (e.g. \"joe was added to the conversation by bob\")", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "recipients", + "value": "", + "type": "text", + "description": "An array of recipient ids. These may be user ids or course/group ids\nprefixed with \"course_\" or \"group_\" respectively, e.g.\nrecipients[]=1&recipients[]=2&recipients[]=course_3" + } + ] + } + }, + "response": [] + }, + { + "name": "Add a message", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/:id/add_message", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + ":id", + "add_message" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Add a message to an existing conversation. Response is similar to the\nGET/show action, except that only includes the\nlatest message (i.e. what we just sent)\n\nAn array of user ids. Defaults to all of the current conversation\nrecipients. To explicitly send a message to no other recipients,\nthis array should consist of the logged-in user id.\n\nAn array of message ids from this conversation to send to recipients\nof the new message. Recipients who already had a copy of included\nmessages will not be affected.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "body", + "value": "", + "type": "text", + "description": "The message to be sent." + }, + { + "key": "attachment_ids", + "value": "", + "type": "text", + "description": "An array of attachments ids. These must be files that have been previously\nuploaded to the sender's \"conversation attachments\" folder." + }, + { + "key": "media_comment_id", + "value": "", + "type": "text", + "description": "Media comment id of an audio of video file to be associated with this\nmessage." + }, + { + "key": "media_comment_type", + "value": "", + "type": "text", + "description": "Type of the associated media file." + }, + { + "key": "recipients", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "included_messages", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "user_note", + "value": "", + "type": "text", + "description": "Will add a faculty journal entry for each recipient as long as the user\nmaking the api call has permission, the recipient is a student and\nfaculty journals are enabled in the account." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a message", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/:id/remove_messages", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + ":id", + "remove_messages" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete messages from this conversation. Note that this only affects this\nuser's view of the conversation. If all messages are deleted, the\nconversation will be as well (equivalent to DELETE)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "remove", + "value": "", + "type": "text", + "description": "Array of message ids to be deleted" + } + ] + } + }, + "response": [] + }, + { + "name": "Batch update conversations", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations" + ], + "variable": [] + }, + "description": "Perform a change on a set of conversations. Operates asynchronously; use the {api:ProgressController#show progress endpoint}\nto query the status of an operation.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "conversation_ids", + "value": "", + "type": "text", + "description": "List of conversations to update. Limited to 500 conversations." + }, + { + "key": "event", + "value": "", + "type": "text", + "description": "The action to take on each conversation." + } + ] + } + }, + "response": [] + }, + { + "name": "Find recipients", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/find_recipients", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + "find_recipients" + ], + "variable": [] + }, + "description": "Deprecated, see the {api:SearchController#recipients Find recipients endpoint} in the Search API" + }, + "response": [] + }, + { + "name": "Unread count", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/unread_count", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + "unread_count" + ], + "variable": [] + }, + "description": "Get the number of unread conversations for the current user" + }, + "response": [] + } + ] + }, + { + "name": "Course Audit log", + "item": [ + { + "name": "Query by course.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/course/courses/:course_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "course", + "courses", + ":course_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "List course change events for a given course." + }, + "response": [] + }, + { + "name": "Query by account.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/course/accounts/:account_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "course", + "accounts", + ":account_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "List course change events for a given account." + }, + "response": [] + } + ] + }, + { + "name": "Course Pace", + "item": [ + { + "name": "Show a Course pace", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/course_pacing/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "course_pacing", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "course_id", + "description": "The id of the course" + } + ] + }, + "description": "Returns a course pace for the course and pace id provided" + }, + "response": [] + }, + { + "name": "Create a Course pace", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/course_pacing", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "course_pacing" + ], + "variable": [ + { + "key": "course_id", + "description": "The id of the course" + } + ] + }, + "description": "", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "end_date", + "value": "", + "type": "text", + "description": "End date of the course pace" + }, + { + "key": "end_date_context", + "value": "", + "type": "text", + "description": "End date context (course, section, hupothetical)" + }, + { + "key": "start_date", + "value": "", + "type": "text", + "description": "Start date of the course pace" + }, + { + "key": "start_date_context", + "value": "", + "type": "text", + "description": "Start date context (course, section, hupothetical)" + }, + { + "key": "exclude_weekends", + "value": "", + "type": "text", + "description": "Course pace dates excludes weekends if true" + }, + { + "key": "hard_end_dates", + "value": "", + "type": "text", + "description": "Course pace uess hard end dates if true" + }, + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "The state of the course pace" + }, + { + "key": "course_pace_module_item_attributes", + "value": "", + "type": "text", + "description": "Module Items attributes" + }, + { + "key": "context_id", + "value": "", + "type": "text", + "description": "Pace Context ID" + }, + { + "key": "context_type", + "value": "", + "type": "text", + "description": "Pace Context Type (Course, Section, User)" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a Course pace", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/course_pacing/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "course_pacing", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "course_id", + "description": "The id of the course" + } + ] + }, + "description": "Returns the updated course pace", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course_pace_id", + "value": "", + "type": "text", + "description": "The id of the course pace" + }, + { + "key": "end_date", + "value": "", + "type": "text", + "description": "End date of the course pace" + }, + { + "key": "exclude_weekends", + "value": "", + "type": "text", + "description": "Course pace dates excludes weekends if true" + }, + { + "key": "hard_end_dates", + "value": "", + "type": "text", + "description": "Course pace uess hard end dates if true" + }, + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "The state of the course pace" + }, + { + "key": "course_pace_module_item_attributes", + "value": "", + "type": "text", + "description": "Module Items attributes" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a Course pace", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/course_pacing/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "course_pacing", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "course_id", + "description": "The id of the course" + } + ] + }, + "description": "Returns the updated course pace" + }, + "response": [] + } + ] + }, + { + "name": "Course Quiz Extensions", + "item": [ + { + "name": "Set extensions for student quiz submissions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quiz_extensions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quiz_extensions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "<b>Responses</b>\n\n* <b>200 OK</b> if the request was successful\n* <b>403 Forbidden</b> if you are not allowed to extend quizzes for this course", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user_id", + "value": "", + "type": "text", + "description": "The ID of the user we want to add quiz extensions for." + }, + { + "key": "extra_attempts", + "value": "", + "type": "text", + "description": "Number of times the student is allowed to re-take the quiz over the\nmultiple-attempt limit. This is limited to 1000 attempts or less." + }, + { + "key": "extra_time", + "value": "", + "type": "text", + "description": "The number of extra minutes to allow for all attempts. This will\nadd to the existing time limit on the submission. This is limited to\n10080 minutes (1 week)" + }, + { + "key": "manually_unlocked", + "value": "", + "type": "text", + "description": "Allow the student to take the quiz even if it's locked for\neveryone else." + }, + { + "key": "extend_from_now", + "value": "", + "type": "text", + "description": "The number of minutes to extend the quiz from the current time. This is\nmutually exclusive to extend_from_end_at. This is limited to 1440\nminutes (24 hours)" + }, + { + "key": "extend_from_end_at", + "value": "", + "type": "text", + "description": "The number of minutes to extend the quiz beyond the quiz's current\nending time. This is mutually exclusive to extend_from_now. This is\nlimited to 1440 minutes (24 hours)" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Courses", + "item": [ + { + "name": "List your courses", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses" + ], + "variable": [] + }, + "description": "Returns the paginated list of active courses for the current user." + }, + "response": [] + }, + { + "name": "List courses for a user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "courses" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "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." + }, + "response": [] + }, + { + "name": "Get user progress", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/users/:user_id/progress", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "users", + ":user_id", + "progress" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return progress information for the user and course\n\nYou can supply +self+ as the user_id to query your own progress in a course. To query another user's progress,\nyou must be a teacher in the course, an administrator, or a linked observer of the user." + }, + "response": [] + }, + { + "name": "Create a new course", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "courses" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a new course", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course[name]", + "value": "", + "type": "text", + "description": "The name of the course. If omitted, the course will be named \"Unnamed\nCourse.\"" + }, + { + "key": "course[course_code]", + "value": "", + "type": "text", + "description": "The course code for the course." + }, + { + "key": "course[start_at]", + "value": "", + "type": "text", + "description": "Course start date in ISO8601 format, e.g. 2011-01-01T01:00Z\nThis value is ignored unless 'restrict_enrollments_to_course_dates' is set to true." + }, + { + "key": "course[end_at]", + "value": "", + "type": "text", + "description": "Course end date in ISO8601 format. e.g. 2011-01-01T01:00Z\nThis value is ignored unless 'restrict_enrollments_to_course_dates' is set to true." + }, + { + "key": "course[license]", + "value": "", + "type": "text", + "description": "The name of the licensing. Should be one of the following abbreviations\n(a descriptive name is included in parenthesis for reference):\n- 'private' (Private Copyrighted)\n- 'cc_by_nc_nd' (CC Attribution Non-Commercial No Derivatives)\n- 'cc_by_nc_sa' (CC Attribution Non-Commercial Share Alike)\n- 'cc_by_nc' (CC Attribution Non-Commercial)\n- 'cc_by_nd' (CC Attribution No Derivatives)\n- 'cc_by_sa' (CC Attribution Share Alike)\n- 'cc_by' (CC Attribution)\n- 'public_domain' (Public Domain)." + }, + { + "key": "course[is_public]", + "value": "", + "type": "text", + "description": "Set to true if course is public to both authenticated and unauthenticated users." + }, + { + "key": "course[is_public_to_auth_users]", + "value": "", + "type": "text", + "description": "Set to true if course is public only to authenticated users." + }, + { + "key": "course[public_syllabus]", + "value": "", + "type": "text", + "description": "Set to true to make the course syllabus public." + }, + { + "key": "course[public_syllabus_to_auth]", + "value": "", + "type": "text", + "description": "Set to true to make the course syllabus public for authenticated users." + }, + { + "key": "course[public_description]", + "value": "", + "type": "text", + "description": "A publicly visible description of the course." + }, + { + "key": "course[allow_student_wiki_edits]", + "value": "", + "type": "text", + "description": "If true, students will be able to modify the course wiki." + }, + { + "key": "course[allow_wiki_comments]", + "value": "", + "type": "text", + "description": "If true, course members will be able to comment on wiki pages." + }, + { + "key": "course[allow_student_forum_attachments]", + "value": "", + "type": "text", + "description": "If true, students can attach files to forum posts." + }, + { + "key": "course[open_enrollment]", + "value": "", + "type": "text", + "description": "Set to true if the course is open enrollment." + }, + { + "key": "course[self_enrollment]", + "value": "", + "type": "text", + "description": "Set to true if the course is self enrollment." + }, + { + "key": "course[restrict_enrollments_to_course_dates]", + "value": "", + "type": "text", + "description": "Set to true to restrict user enrollments to the start and end dates of the\ncourse. This value must be set to true\nin order to specify a course start date and/or end date." + }, + { + "key": "course[term_id]", + "value": "", + "type": "text", + "description": "The unique ID of the term to create to course in." + }, + { + "key": "course[sis_course_id]", + "value": "", + "type": "text", + "description": "The unique SIS identifier." + }, + { + "key": "course[integration_id]", + "value": "", + "type": "text", + "description": "The unique Integration identifier." + }, + { + "key": "course[hide_final_grades]", + "value": "", + "type": "text", + "description": "If this option is set to true, the totals in student grades summary will\nbe hidden." + }, + { + "key": "course[apply_assignment_group_weights]", + "value": "", + "type": "text", + "description": "Set to true to weight final grade based on assignment groups percentages." + }, + { + "key": "course[time_zone]", + "value": "", + "type": "text", + "description": "The time zone for the course. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "offer", + "value": "", + "type": "text", + "description": "If this option is set to true, the course will be available to students\nimmediately." + }, + { + "key": "enroll_me", + "value": "", + "type": "text", + "description": "Set to true to enroll the current user as the teacher." + }, + { + "key": "course[default_view]", + "value": "", + "type": "text", + "description": "The type of page that users will see when they first visit the course\n* 'feed' Recent Activity Dashboard\n* 'modules' Course Modules/Sections Page\n* 'assignments' Course Assignments List\n* 'syllabus' Course Syllabus Page\nother types may be added in the future" + }, + { + "key": "course[syllabus_body]", + "value": "", + "type": "text", + "description": "The syllabus body for the course" + }, + { + "key": "course[grading_standard_id]", + "value": "", + "type": "text", + "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." + }, + { + "key": "course[grade_passback_setting]", + "value": "", + "type": "text", + "description": "Optional. The grade_passback_setting for the course. Only 'nightly_sync', 'disabled', and '' are allowed" + }, + { + "key": "course[course_format]", + "value": "", + "type": "text", + "description": "Optional. Specifies the format of the course. (Should be 'on_campus', 'online', or 'blended')" + }, + { + "key": "enable_sis_reactivation", + "value": "", + "type": "text", + "description": "When true, will first try to re-activate a deleted course with matching sis_course_id if possible." + } + ] + } + }, + "response": [] + }, + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "files" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Upload a file to the course.\n\nThis API endpoint is the first step in uploading a file to a course.\nSee the {file:file_uploads.html File Upload Documentation} for details on\nthe file upload workflow.\n\nOnly those with the \"Manage Files\" permission on a course can upload files\nto the course. By default, this is Teachers, TAs and Designers." + }, + "response": [] + }, + { + "name": "List students", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/students", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "students" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of students enrolled in this course.\n\nDEPRECATED: Please use the {api:CoursesController#users course users} endpoint\nand pass \"student\" as the enrollment_type." + }, + "response": [] + }, + { + "name": "List users in course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "users" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of users in this course. And optionally the user's enrollments in the course." + }, + "response": [] + }, + { + "name": "List users in course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/search_users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "search_users" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of users in this course. And optionally the user's enrollments in the course." + }, + "response": [] + }, + { + "name": "List recently logged in students", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/recent_students", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "recent_students" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of users in this course, ordered by how recently they have\nlogged in. The records include the 'last_login' field which contains\na timestamp of the last time that user logged into canvas. The querying\nuser must have the 'View usage reports' permission." + }, + "response": [] + }, + { + "name": "Get single user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/users/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "users", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Return information on a single user.\n\nAccepts the same include[] parameters as the :users: action, and returns a\nsingle user with the same fields as that action." + }, + "response": [] + }, + { + "name": "Search for content share users", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_share_users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_share_users" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of users you can share content with. Requires the content share\nfeature and the user must have the manage content permission for the course." + }, + "response": [] + }, + { + "name": "Preview processed html", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/preview_html", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "preview_html" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Preview html content processed for this course", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "html", + "value": "", + "type": "text", + "description": "The html content to process" + } + ] + } + }, + "response": [] + }, + { + "name": "Course activity stream", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/activity_stream", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "activity_stream" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the current user's course-specific activity stream, paginated.\n\nFor full documentation, see the API documentation for the user activity\nstream, in the user api." + }, + "response": [] + }, + { + "name": "Course activity stream summary", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/activity_stream/summary", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "activity_stream", + "summary" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a summary of the current user's course-specific activity stream.\n\nFor full documentation, see the API documentation for the user activity\nstream summary, in the user api." + }, + "response": [] + }, + { + "name": "Course TODO items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/todo", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "todo" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the current user's course-specific todo items.\n\nFor full documentation, see the API documentation for the user todo items, in the user api." + }, + "response": [] + }, + { + "name": "Delete/Conclude a course", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete or conclude an existing course" + }, + "response": [] + }, + { + "name": "Get course settings", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "settings" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns some of a course's settings." + }, + "response": [] + }, + { + "name": "Update course settings", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "settings" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Can update the following course settings:", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "allow_final_grade_override", + "value": "", + "type": "text", + "description": "Let student final grades for a grading period or the total grades for the course be overridden" + }, + { + "key": "allow_student_discussion_topics", + "value": "", + "type": "text", + "description": "Let students create discussion topics" + }, + { + "key": "allow_student_forum_attachments", + "value": "", + "type": "text", + "description": "Let students attach files to discussions" + }, + { + "key": "allow_student_discussion_editing", + "value": "", + "type": "text", + "description": "Let students edit or delete their own discussion replies" + }, + { + "key": "allow_student_organized_groups", + "value": "", + "type": "text", + "description": "Let students organize their own groups" + }, + { + "key": "allow_student_discussion_reporting", + "value": "", + "type": "text", + "description": "Let students report offensive discussion content" + }, + { + "key": "allow_student_anonymous_discussion_topics", + "value": "", + "type": "text", + "description": "Let students create anonymous discussion topics" + }, + { + "key": "filter_speed_grader_by_student_group", + "value": "", + "type": "text", + "description": "Filter SpeedGrader to only the selected student group" + }, + { + "key": "hide_final_grades", + "value": "", + "type": "text", + "description": "Hide totals in student grades summary" + }, + { + "key": "hide_distribution_graphs", + "value": "", + "type": "text", + "description": "Hide grade distribution graphs from students" + }, + { + "key": "hide_sections_on_course_users_page", + "value": "", + "type": "text", + "description": "Disallow students from viewing students in sections they do not belong to" + }, + { + "key": "lock_all_announcements", + "value": "", + "type": "text", + "description": "Disable comments on announcements" + }, + { + "key": "usage_rights_required", + "value": "", + "type": "text", + "description": "Copyright and license information must be provided for files before they are published." + }, + { + "key": "restrict_student_past_view", + "value": "", + "type": "text", + "description": "Restrict students from viewing courses after end date" + }, + { + "key": "restrict_student_future_view", + "value": "", + "type": "text", + "description": "Restrict students from viewing courses before start date" + }, + { + "key": "show_announcements_on_home_page", + "value": "", + "type": "text", + "description": "Show the most recent announcements on the Course home page (if a Wiki, defaults to five announcements, configurable via home_page_announcement_limit).\nCanvas for Elementary subjects ignore this setting." + }, + { + "key": "home_page_announcement_limit", + "value": "", + "type": "text", + "description": "Limit the number of announcements on the home page if enabled via show_announcements_on_home_page" + }, + { + "key": "syllabus_course_summary", + "value": "", + "type": "text", + "description": "Show the course summary (list of assignments and calendar events) on the syllabus page. Default is true." + }, + { + "key": "default_due_time", + "value": "", + "type": "text", + "description": "Set the default due time for assignments. This is the time that will be pre-selected in the Canvas user interface\nwhen setting a due date for an assignment. It does not change when any existing assignment is due. It should be\ngiven in 24-hour HH:MM:SS format. The default is \"23:59:59\". Use \"inherit\" to inherit the account setting." + }, + { + "key": "conditional_release", + "value": "", + "type": "text", + "description": "Enable or disable individual learning paths for students based on assessment" + } + ] + } + }, + "response": [] + }, + { + "name": "Return test student for course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/student_view_student", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "student_view_student" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns information for a test student in this course. Creates a test\nstudent if one does not already exist for the course. The caller must have\npermission to access the course's student view." + }, + "response": [] + }, + { + "name": "Get a single course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Return information on a single course.\n\nAccepts the same include[] parameters as the list action plus:" + }, + "response": [] + }, + { + "name": "Get a single course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/courses/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "courses", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Return information on a single course.\n\nAccepts the same include[] parameters as the list action plus:" + }, + "response": [] + }, + { + "name": "Update a course", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing course.\n\nArguments are the same as Courses#create, with a few exceptions (enroll_me).\n\nIf a user has content management rights, but not full course editing rights, the only attribute\neditable through this endpoint will be \"syllabus_body\"\n\nIf an account has set prevent_course_availability_editing_by_teachers, a teacher cannot change\ncourse[start_at], course[conclude_at], or course[restrict_enrollments_to_course_dates] here.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course[account_id]", + "value": "", + "type": "text", + "description": "The unique ID of the account to move the course to." + }, + { + "key": "course[name]", + "value": "", + "type": "text", + "description": "The name of the course. If omitted, the course will be named \"Unnamed\nCourse.\"" + }, + { + "key": "course[course_code]", + "value": "", + "type": "text", + "description": "The course code for the course." + }, + { + "key": "course[start_at]", + "value": "", + "type": "text", + "description": "Course start date in ISO8601 format, e.g. 2011-01-01T01:00Z\nThis value is ignored unless 'restrict_enrollments_to_course_dates' is set to true,\nor the course is already published." + }, + { + "key": "course[end_at]", + "value": "", + "type": "text", + "description": "Course end date in ISO8601 format. e.g. 2011-01-01T01:00Z\nThis value is ignored unless 'restrict_enrollments_to_course_dates' is set to true." + }, + { + "key": "course[license]", + "value": "", + "type": "text", + "description": "The name of the licensing. Should be one of the following abbreviations\n(a descriptive name is included in parenthesis for reference):\n- 'private' (Private Copyrighted)\n- 'cc_by_nc_nd' (CC Attribution Non-Commercial No Derivatives)\n- 'cc_by_nc_sa' (CC Attribution Non-Commercial Share Alike)\n- 'cc_by_nc' (CC Attribution Non-Commercial)\n- 'cc_by_nd' (CC Attribution No Derivatives)\n- 'cc_by_sa' (CC Attribution Share Alike)\n- 'cc_by' (CC Attribution)\n- 'public_domain' (Public Domain)." + }, + { + "key": "course[is_public]", + "value": "", + "type": "text", + "description": "Set to true if course is public to both authenticated and unauthenticated users." + }, + { + "key": "course[is_public_to_auth_users]", + "value": "", + "type": "text", + "description": "Set to true if course is public only to authenticated users." + }, + { + "key": "course[public_syllabus]", + "value": "", + "type": "text", + "description": "Set to true to make the course syllabus public." + }, + { + "key": "course[public_syllabus_to_auth]", + "value": "", + "type": "text", + "description": "Set to true to make the course syllabus to public for authenticated users." + }, + { + "key": "course[public_description]", + "value": "", + "type": "text", + "description": "A publicly visible description of the course." + }, + { + "key": "course[allow_student_wiki_edits]", + "value": "", + "type": "text", + "description": "If true, students will be able to modify the course wiki." + }, + { + "key": "course[allow_wiki_comments]", + "value": "", + "type": "text", + "description": "If true, course members will be able to comment on wiki pages." + }, + { + "key": "course[allow_student_forum_attachments]", + "value": "", + "type": "text", + "description": "If true, students can attach files to forum posts." + }, + { + "key": "course[open_enrollment]", + "value": "", + "type": "text", + "description": "Set to true if the course is open enrollment." + }, + { + "key": "course[self_enrollment]", + "value": "", + "type": "text", + "description": "Set to true if the course is self enrollment." + }, + { + "key": "course[restrict_enrollments_to_course_dates]", + "value": "", + "type": "text", + "description": "Set to true to restrict user enrollments to the start and end dates of the\ncourse. Setting this value to false will\nremove the course end date (if it exists), as well as the course start date\n(if the course is unpublished)." + }, + { + "key": "course[term_id]", + "value": "", + "type": "text", + "description": "The unique ID of the term to create to course in." + }, + { + "key": "course[sis_course_id]", + "value": "", + "type": "text", + "description": "The unique SIS identifier." + }, + { + "key": "course[integration_id]", + "value": "", + "type": "text", + "description": "The unique Integration identifier." + }, + { + "key": "course[hide_final_grades]", + "value": "", + "type": "text", + "description": "If this option is set to true, the totals in student grades summary will\nbe hidden." + }, + { + "key": "course[time_zone]", + "value": "", + "type": "text", + "description": "The time zone for the course. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "course[apply_assignment_group_weights]", + "value": "", + "type": "text", + "description": "Set to true to weight final grade based on assignment groups percentages." + }, + { + "key": "course[storage_quota_mb]", + "value": "", + "type": "text", + "description": "Set the storage quota for the course, in megabytes. The caller must have\nthe \"Manage storage quotas\" account permission." + }, + { + "key": "offer", + "value": "", + "type": "text", + "description": "If this option is set to true, the course will be available to students\nimmediately." + }, + { + "key": "course[event]", + "value": "", + "type": "text", + "description": "The action to take on each course.\n* 'claim' makes a course no longer visible to students. This action is also called \"unpublish\" on the web site.\n A course cannot be unpublished if students have received graded submissions.\n* 'offer' makes a course visible to students. This action is also called \"publish\" on the web site.\n* 'conclude' prevents future enrollments and makes a course read-only for all participants. The course still appears\n in prior-enrollment lists.\n* 'delete' completely removes the course from the web site (including course menus and prior-enrollment lists).\n All enrollments are deleted. Course content may be physically deleted at a future date.\n* 'undelete' attempts to recover a course that has been deleted. This action requires account administrative rights.\n (Recovery is not guaranteed; please conclude rather than delete a course if there is any possibility the course\n will be used again.) The recovered course will be unpublished. Deleted enrollments will not be recovered." + }, + { + "key": "course[default_view]", + "value": "", + "type": "text", + "description": "The type of page that users will see when they first visit the course\n* 'feed' Recent Activity Dashboard\n* 'wiki' Wiki Front Page\n* 'modules' Course Modules/Sections Page\n* 'assignments' Course Assignments List\n* 'syllabus' Course Syllabus Page\nother types may be added in the future" + }, + { + "key": "course[syllabus_body]", + "value": "", + "type": "text", + "description": "The syllabus body for the course" + }, + { + "key": "course[syllabus_course_summary]", + "value": "", + "type": "text", + "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+." + }, + { + "key": "course[grading_standard_id]", + "value": "", + "type": "text", + "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." + }, + { + "key": "course[grade_passback_setting]", + "value": "", + "type": "text", + "description": "Optional. The grade_passback_setting for the course. Only 'nightly_sync' and '' are allowed" + }, + { + "key": "course[course_format]", + "value": "", + "type": "text", + "description": "Optional. Specifies the format of the course. (Should be either 'on_campus' or 'online')" + }, + { + "key": "course[image_id]", + "value": "", + "type": "text", + "description": "This is a file ID corresponding to an image file in the course that will\nbe used as the course image.\nThis will clear the course's image_url setting if set. If you attempt\nto provide image_url and image_id in a request it will fail." + }, + { + "key": "course[image_url]", + "value": "", + "type": "text", + "description": "This is a URL to an image to be used as the course image.\nThis will clear the course's image_id setting if set. If you attempt\nto provide image_url and image_id in a request it will fail." + }, + { + "key": "course[remove_image]", + "value": "", + "type": "text", + "description": "If this option is set to true, the course image url and course image\nID are both set to nil" + }, + { + "key": "course[remove_banner_image]", + "value": "", + "type": "text", + "description": "If this option is set to true, the course banner image url and course\nbanner image ID are both set to nil" + }, + { + "key": "course[blueprint]", + "value": "", + "type": "text", + "description": "Sets the course as a blueprint course." + }, + { + "key": "course[blueprint_restrictions]", + "value": "", + "type": "text", + "description": "Sets a default set to apply to blueprint course objects when restricted,\nunless _use_blueprint_restrictions_by_object_type_ is enabled.\nSee the {api:Blueprint_Courses:BlueprintRestriction Blueprint Restriction} documentation" + }, + { + "key": "course[use_blueprint_restrictions_by_object_type]", + "value": "", + "type": "text", + "description": "When enabled, the _blueprint_restrictions_ parameter will be ignored in favor of\nthe _blueprint_restrictions_by_object_type_ parameter" + }, + { + "key": "course[blueprint_restrictions_by_object_type]", + "value": "", + "type": "text", + "description": "Allows setting multiple {api:Blueprint_Courses:BlueprintRestriction Blueprint Restriction}\nto apply to blueprint course objects of the matching type when restricted.\nThe possible object types are \"assignment\", \"attachment\", \"discussion_topic\", \"quiz\" and \"wiki_page\".\nExample usage:\n course[blueprint_restrictions_by_object_type][assignment][content]=1" + }, + { + "key": "course[homeroom_course]", + "value": "", + "type": "text", + "description": "Sets the course as a homeroom course. The setting takes effect only when the course is associated\nwith a Canvas for Elementary-enabled account." + }, + { + "key": "course[sync_enrollments_from_homeroom]", + "value": "", + "type": "text", + "description": "Syncs enrollments from the homeroom that is set in homeroom_course_id. The setting only takes effect when the\ncourse is associated with a Canvas for Elementary-enabled account and sync_enrollments_from_homeroom is enabled." + }, + { + "key": "course[homeroom_course_id]", + "value": "", + "type": "text", + "description": "Sets the Homeroom Course id to be used with sync_enrollments_from_homeroom. The setting only takes effect when the\ncourse is associated with a Canvas for Elementary-enabled account and sync_enrollments_from_homeroom is enabled." + }, + { + "key": "course[template]", + "value": "", + "type": "text", + "description": "Enable or disable the course as a template that can be selected by an account" + }, + { + "key": "course[course_color]", + "value": "", + "type": "text", + "description": "Sets a color in hex code format to be associated with the course. The setting takes effect only when the course\nis associated with a Canvas for Elementary-enabled account." + }, + { + "key": "course[friendly_name]", + "value": "", + "type": "text", + "description": "Set a friendly name for the course. If this is provided and the course is associated with a Canvas for\nElementary account, it will be shown instead of the course name. This setting takes priority over\ncourse nicknames defined by individual users." + }, + { + "key": "course[enable_course_paces]", + "value": "", + "type": "text", + "description": "Enable or disable Course Pacing for the course. This setting only has an effect when the Course Pacing feature flag is\nenabled for the sub-account. Otherwise, Course Pacing are always disabled.\n Note: Course Pacing is in active development." + }, + { + "key": "course[conditional_release]", + "value": "", + "type": "text", + "description": "Enable or disable individual learning paths for students based on assessment" + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + } + ] + } + }, + "response": [] + }, + { + "name": "Update courses", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "courses" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Update multiple courses in an account. Operates asynchronously; use the {api:ProgressController#show progress endpoint}\nto query the status of an operation.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course_ids", + "value": "", + "type": "text", + "description": "List of ids of courses to update. At most 500 courses may be updated in one call." + }, + { + "key": "event", + "value": "", + "type": "text", + "description": "The action to take on each course. Must be one of 'offer', 'conclude', 'delete', or 'undelete'.\n* 'offer' makes a course visible to students. This action is also called \"publish\" on the web site.\n* 'conclude' prevents future enrollments and makes a course read-only for all participants. The course still appears\n in prior-enrollment lists.\n* 'delete' completely removes the course from the web site (including course menus and prior-enrollment lists).\n All enrollments are deleted. Course content may be physically deleted at a future date.\n* 'undelete' attempts to recover a course that has been deleted. (Recovery is not guaranteed; please conclude\n rather than delete a course if there is any possibility the course will be used again.) The recovered course\n will be unpublished. Deleted enrollments will not be recovered." + } + ] + } + }, + "response": [] + }, + { + "name": "Reset a course", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/reset_content", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "reset_content" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Deletes the current course, and creates a new equivalent course with\nno content, but all sections and users moved over." + }, + "response": [] + }, + { + "name": "Get effective due dates", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/effective_due_dates", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "effective_due_dates" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "For each assignment in the course, returns each assigned student's ID\nand their corresponding due date along with some grading period data.\nReturns a collection with keys representing assignment IDs and values as a\ncollection containing keys representing student IDs and values representing\nthe student's effective due_at, the grading_period_id of which the due_at falls\nin, and whether or not the grading period is closed (in_closed_grading_period)\n\nThe list of assignment IDs for which effective student due dates are\nrequested. If not provided, all assignments in the course will be used." + }, + "response": [] + }, + { + "name": "Permissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/permissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "permissions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns permission information for the calling user in the given course.\nSee also the {api:AccountsController#permissions Account} and\n{api:GroupsController#permissions Group} counterparts." + }, + "response": [] + }, + { + "name": "Get bulk user progress", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/bulk_user_progress", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "bulk_user_progress" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns progress information for all users enrolled in the given course.\n\nYou must be a user who has permission to view all grades in the course (such as a teacher or administrator)." + }, + "response": [] + }, + { + "name": "Remove quiz migration alert", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:id/dismiss_migration_limitation_message", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":id", + "dismiss_migration_limitation_message" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Remove alert about the limitations of quiz migrations that is displayed\nto a user in a course\n\nyou must be logged in to use this endpoint" + }, + "response": [] + }, + { + "name": "Get course copy status", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/course_copy/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "course_copy", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "DEPRECATED: Please use the {api:ContentMigrationsController#create Content Migrations API}\n\nRetrieve the status of a course copy" + }, + "response": [] + }, + { + "name": "Copy course content", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/course_copy", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "course_copy" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "DEPRECATED: Please use the {api:ContentMigrationsController#create Content Migrations API}\n\nCopies content from one course into another. The default is to copy all course\ncontent. You can control specific types to copy by using either the 'except' option\nor the 'only' option.\n\nThe response is the same as the course copy status endpoint", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "source_course", + "value": "", + "type": "text", + "description": "ID or SIS-ID of the course to copy the content from" + }, + { + "key": "except", + "value": "", + "type": "text", + "description": "A list of the course content types to exclude, all areas not listed will\nbe copied." + }, + { + "key": "only", + "value": "", + "type": "text", + "description": "A list of the course content types to copy, all areas not listed will not\nbe copied." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Custom Gradebook Columns", + "item": [ + { + "name": "List custom gradebook columns", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_columns", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_columns" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all custom gradebook columns for a course" + }, + "response": [] + }, + { + "name": "Create a custom gradebook column", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_columns", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_columns" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a custom gradebook column", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "column[title]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "column[position]", + "value": "", + "type": "text", + "description": "The position of the column relative to other custom columns" + }, + { + "key": "column[hidden]", + "value": "", + "type": "text", + "description": "Hidden columns are not displayed in the gradebook" + }, + { + "key": "column[teacher_notes]", + "value": "", + "type": "text", + "description": "Set this if the column is created by a teacher. The gradebook only\nsupports one teacher_notes column." + }, + { + "key": "column[read_only]", + "value": "", + "type": "text", + "description": "Set this to prevent the column from being editable in the gradebook ui" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a custom gradebook column", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_columns/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_columns", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Accepts the same parameters as custom gradebook column creation" + }, + "response": [] + }, + { + "name": "Delete a custom gradebook column", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_columns/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_columns", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Permanently deletes a custom column and its associated data" + }, + "response": [] + }, + { + "name": "Reorder custom columns", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_columns/reorder", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_columns", + "reorder" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Puts the given columns in the specified order\n\n<b>200 OK</b> is returned if successful", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "order", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "List entries for a column", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_columns/:id/data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_columns", + ":id", + "data" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "This does not list entries for students without associated data." + }, + "response": [] + }, + { + "name": "Update column data", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_columns/:id/data/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_columns", + ":id", + "data", + ":user_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Set the content of a custom column", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "column_data[content]", + "value": "", + "type": "text", + "description": "Column content. Setting this to blank will delete the datum object." + } + ] + } + }, + "response": [] + }, + { + "name": "Bulk update column data", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/custom_gradebook_column_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "custom_gradebook_column_data" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Set the content of custom columns\n\n{\n \"column_data\": [\n {\n \"column_id\": example_column_id,\n \"user_id\": example_student_id,\n \"content\": example_content\n },\n {\n \"column_id\": example_column_id,\n \"user_id\": example_student_id,\n \"content: example_content\n }\n ]\n}", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "column_data", + "value": "", + "type": "text", + "description": "Column content. Setting this to an empty string will delete the data object." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Discussion Topics", + "item": [ + { + "name": "List discussion topics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of discussion topics for this course or group." + }, + "response": [] + }, + { + "name": "List discussion topics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of discussion topics for this course or group." + }, + "response": [] + }, + { + "name": "Create a new discussion topic", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create an new discussion topic for the course or group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "message", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "discussion_type", + "value": "", + "type": "text", + "description": "The type of discussion. Defaults to side_comment if not value is given. Accepted values are 'side_comment', for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions." + }, + { + "key": "published", + "value": "", + "type": "text", + "description": "Whether this topic is published (true) or draft state (false). Only\nteachers and TAs have the ability to create draft state topics." + }, + { + "key": "delayed_post_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will not be published until that time." + }, + { + "key": "allow_rating", + "value": "", + "type": "text", + "description": "Whether or not users can rate entries in this topic." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will be scheduled to lock at the\nprovided timestamp. If the timestamp is in the past, the topic will be\nlocked." + }, + { + "key": "podcast_enabled", + "value": "", + "type": "text", + "description": "If true, the topic will have an associated podcast feed." + }, + { + "key": "podcast_has_student_posts", + "value": "", + "type": "text", + "description": "If true, the podcast will include posts from students as well. Implies\npodcast_enabled." + }, + { + "key": "require_initial_post", + "value": "", + "type": "text", + "description": "If true then a user may not respond to other replies until that user has\nmade an initial reply. Defaults to false." + }, + { + "key": "assignment", + "value": "", + "type": "text", + "description": "To create an assignment discussion, pass the assignment parameters as a\nsub-object. See the {api:AssignmentsApiController#create Create an Assignment API}\nfor the available parameters. The name parameter will be ignored, as it's\ntaken from the discussion title. If you want to make a discussion that was\nan assignment NOT an assignment, pass set_assignment = false as part of\nthe assignment object" + }, + { + "key": "is_announcement", + "value": "", + "type": "text", + "description": "If true, this topic is an announcement. It will appear in the\nannouncement's section rather than the discussions section. This requires\nannouncment-posting permissions." + }, + { + "key": "pinned", + "value": "", + "type": "text", + "description": "If true, this topic will be listed in the \"Pinned Discussion\" section" + }, + { + "key": "position_after", + "value": "", + "type": "text", + "description": "By default, discussions are sorted chronologically by creation date, you\ncan pass the id of another topic to have this one show up after the other\nwhen they are listed." + }, + { + "key": "group_category_id", + "value": "", + "type": "text", + "description": "If present, the topic will become a group discussion assigned\nto the group." + }, + { + "key": "only_graders_can_rate", + "value": "", + "type": "text", + "description": "If true, only graders will be allowed to rate entries." + }, + { + "key": "sort_by_rating", + "value": "", + "type": "text", + "description": "If true, entries will be sorted by rating." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "A multipart/form-data form-field-style attachment.\nAttachments larger than 1 kilobyte are subject to quota restrictions." + }, + { + "key": "specific_sections", + "value": "", + "type": "text", + "description": "A comma-separated list of sections ids to which the discussion topic\nshould be made specific to. If it is not desired to make the discussion\ntopic specific to sections, then this parameter may be omitted or set to\n\"all\". Can only be present only on announcements and only those that are\nfor a course (as opposed to a group)." + } + ] + } + }, + "response": [] + }, + { + "name": "Create a new discussion topic", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Create an new discussion topic for the course or group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "message", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "discussion_type", + "value": "", + "type": "text", + "description": "The type of discussion. Defaults to side_comment if not value is given. Accepted values are 'side_comment', for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions." + }, + { + "key": "published", + "value": "", + "type": "text", + "description": "Whether this topic is published (true) or draft state (false). Only\nteachers and TAs have the ability to create draft state topics." + }, + { + "key": "delayed_post_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will not be published until that time." + }, + { + "key": "allow_rating", + "value": "", + "type": "text", + "description": "Whether or not users can rate entries in this topic." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will be scheduled to lock at the\nprovided timestamp. If the timestamp is in the past, the topic will be\nlocked." + }, + { + "key": "podcast_enabled", + "value": "", + "type": "text", + "description": "If true, the topic will have an associated podcast feed." + }, + { + "key": "podcast_has_student_posts", + "value": "", + "type": "text", + "description": "If true, the podcast will include posts from students as well. Implies\npodcast_enabled." + }, + { + "key": "require_initial_post", + "value": "", + "type": "text", + "description": "If true then a user may not respond to other replies until that user has\nmade an initial reply. Defaults to false." + }, + { + "key": "assignment", + "value": "", + "type": "text", + "description": "To create an assignment discussion, pass the assignment parameters as a\nsub-object. See the {api:AssignmentsApiController#create Create an Assignment API}\nfor the available parameters. The name parameter will be ignored, as it's\ntaken from the discussion title. If you want to make a discussion that was\nan assignment NOT an assignment, pass set_assignment = false as part of\nthe assignment object" + }, + { + "key": "is_announcement", + "value": "", + "type": "text", + "description": "If true, this topic is an announcement. It will appear in the\nannouncement's section rather than the discussions section. This requires\nannouncment-posting permissions." + }, + { + "key": "pinned", + "value": "", + "type": "text", + "description": "If true, this topic will be listed in the \"Pinned Discussion\" section" + }, + { + "key": "position_after", + "value": "", + "type": "text", + "description": "By default, discussions are sorted chronologically by creation date, you\ncan pass the id of another topic to have this one show up after the other\nwhen they are listed." + }, + { + "key": "group_category_id", + "value": "", + "type": "text", + "description": "If present, the topic will become a group discussion assigned\nto the group." + }, + { + "key": "only_graders_can_rate", + "value": "", + "type": "text", + "description": "If true, only graders will be allowed to rate entries." + }, + { + "key": "sort_by_rating", + "value": "", + "type": "text", + "description": "If true, entries will be sorted by rating." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "A multipart/form-data form-field-style attachment.\nAttachments larger than 1 kilobyte are subject to quota restrictions." + }, + { + "key": "specific_sections", + "value": "", + "type": "text", + "description": "A comma-separated list of sections ids to which the discussion topic\nshould be made specific to. If it is not desired to make the discussion\ntopic specific to sections, then this parameter may be omitted or set to\n\"all\". Can only be present only on announcements and only those that are\nfor a course (as opposed to a group)." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a topic", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Update an existing discussion topic for the course or group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "message", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "discussion_type", + "value": "", + "type": "text", + "description": "The type of discussion. Defaults to side_comment if not value is given. Accepted values are 'side_comment', for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions." + }, + { + "key": "published", + "value": "", + "type": "text", + "description": "Whether this topic is published (true) or draft state (false). Only\nteachers and TAs have the ability to create draft state topics." + }, + { + "key": "delayed_post_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will not be published until that time." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will be scheduled to lock at the\nprovided timestamp. If the timestamp is in the past, the topic will be\nlocked." + }, + { + "key": "podcast_enabled", + "value": "", + "type": "text", + "description": "If true, the topic will have an associated podcast feed." + }, + { + "key": "podcast_has_student_posts", + "value": "", + "type": "text", + "description": "If true, the podcast will include posts from students as well. Implies\npodcast_enabled." + }, + { + "key": "require_initial_post", + "value": "", + "type": "text", + "description": "If true then a user may not respond to other replies until that user has\nmade an initial reply. Defaults to false." + }, + { + "key": "assignment", + "value": "", + "type": "text", + "description": "To create an assignment discussion, pass the assignment parameters as a\nsub-object. See the {api:AssignmentsApiController#create Create an Assignment API}\nfor the available parameters. The name parameter will be ignored, as it's\ntaken from the discussion title. If you want to make a discussion that was\nan assignment NOT an assignment, pass set_assignment = false as part of\nthe assignment object" + }, + { + "key": "is_announcement", + "value": "", + "type": "text", + "description": "If true, this topic is an announcement. It will appear in the\nannouncement's section rather than the discussions section. This requires\nannouncment-posting permissions." + }, + { + "key": "pinned", + "value": "", + "type": "text", + "description": "If true, this topic will be listed in the \"Pinned Discussion\" section" + }, + { + "key": "position_after", + "value": "", + "type": "text", + "description": "By default, discussions are sorted chronologically by creation date, you\ncan pass the id of another topic to have this one show up after the other\nwhen they are listed." + }, + { + "key": "group_category_id", + "value": "", + "type": "text", + "description": "If present, the topic will become a group discussion assigned\nto the group." + }, + { + "key": "allow_rating", + "value": "", + "type": "text", + "description": "If true, users will be allowed to rate entries." + }, + { + "key": "only_graders_can_rate", + "value": "", + "type": "text", + "description": "If true, only graders will be allowed to rate entries." + }, + { + "key": "sort_by_rating", + "value": "", + "type": "text", + "description": "If true, entries will be sorted by rating." + }, + { + "key": "specific_sections", + "value": "", + "type": "text", + "description": "A comma-separated list of sections ids to which the discussion topic\nshould be made specific too. If it is not desired to make the discussion\ntopic specific to sections, then this parameter may be omitted or set to\n\"all\". Can only be present only on announcements and only those that are\nfor a course (as opposed to a group)." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a topic", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Update an existing discussion topic for the course or group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "message", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "discussion_type", + "value": "", + "type": "text", + "description": "The type of discussion. Defaults to side_comment if not value is given. Accepted values are 'side_comment', for discussions that only allow one level of nested comments, and 'threaded' for fully threaded discussions." + }, + { + "key": "published", + "value": "", + "type": "text", + "description": "Whether this topic is published (true) or draft state (false). Only\nteachers and TAs have the ability to create draft state topics." + }, + { + "key": "delayed_post_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will not be published until that time." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "If a timestamp is given, the topic will be scheduled to lock at the\nprovided timestamp. If the timestamp is in the past, the topic will be\nlocked." + }, + { + "key": "podcast_enabled", + "value": "", + "type": "text", + "description": "If true, the topic will have an associated podcast feed." + }, + { + "key": "podcast_has_student_posts", + "value": "", + "type": "text", + "description": "If true, the podcast will include posts from students as well. Implies\npodcast_enabled." + }, + { + "key": "require_initial_post", + "value": "", + "type": "text", + "description": "If true then a user may not respond to other replies until that user has\nmade an initial reply. Defaults to false." + }, + { + "key": "assignment", + "value": "", + "type": "text", + "description": "To create an assignment discussion, pass the assignment parameters as a\nsub-object. See the {api:AssignmentsApiController#create Create an Assignment API}\nfor the available parameters. The name parameter will be ignored, as it's\ntaken from the discussion title. If you want to make a discussion that was\nan assignment NOT an assignment, pass set_assignment = false as part of\nthe assignment object" + }, + { + "key": "is_announcement", + "value": "", + "type": "text", + "description": "If true, this topic is an announcement. It will appear in the\nannouncement's section rather than the discussions section. This requires\nannouncment-posting permissions." + }, + { + "key": "pinned", + "value": "", + "type": "text", + "description": "If true, this topic will be listed in the \"Pinned Discussion\" section" + }, + { + "key": "position_after", + "value": "", + "type": "text", + "description": "By default, discussions are sorted chronologically by creation date, you\ncan pass the id of another topic to have this one show up after the other\nwhen they are listed." + }, + { + "key": "group_category_id", + "value": "", + "type": "text", + "description": "If present, the topic will become a group discussion assigned\nto the group." + }, + { + "key": "allow_rating", + "value": "", + "type": "text", + "description": "If true, users will be allowed to rate entries." + }, + { + "key": "only_graders_can_rate", + "value": "", + "type": "text", + "description": "If true, only graders will be allowed to rate entries." + }, + { + "key": "sort_by_rating", + "value": "", + "type": "text", + "description": "If true, entries will be sorted by rating." + }, + { + "key": "specific_sections", + "value": "", + "type": "text", + "description": "A comma-separated list of sections ids to which the discussion topic\nshould be made specific too. If it is not desired to make the discussion\ntopic specific to sections, then this parameter may be omitted or set to\n\"all\". Can only be present only on announcements and only those that are\nfor a course (as opposed to a group)." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a topic", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Deletes the discussion topic. This will also delete the assignment, if it's\nan assignment discussion." + }, + "response": [] + }, + { + "name": "Delete a topic", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Deletes the discussion topic. This will also delete the assignment, if it's\nan assignment discussion." + }, + "response": [] + }, + { + "name": "Reorder pinned topics", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/reorder", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + "reorder" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Puts the pinned discussion topics in the specified order.\nAll pinned topics should be included.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "order", + "value": "", + "type": "text", + "description": "The ids of the pinned discussion topics in the desired order.\n(For example, \"order=104,102,103\".)" + } + ] + } + }, + "response": [] + }, + { + "name": "Reorder pinned topics", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/reorder", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + "reorder" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Puts the pinned discussion topics in the specified order.\nAll pinned topics should be included.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "order", + "value": "", + "type": "text", + "description": "The ids of the pinned discussion topics in the desired order.\n(For example, \"order=104,102,103\".)" + } + ] + } + }, + "response": [] + }, + { + "name": "Update an entry", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing discussion entry.\n\nThe entry must have been created by the current user, or the current user\nmust have admin rights to the discussion. If the edit is not allowed, a 401 will be returned.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "message", + "value": "", + "type": "text", + "description": "The updated body of the entry." + } + ] + } + }, + "response": [] + }, + { + "name": "Update an entry", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing discussion entry.\n\nThe entry must have been created by the current user, or the current user\nmust have admin rights to the discussion. If the edit is not allowed, a 401 will be returned.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "message", + "value": "", + "type": "text", + "description": "The updated body of the entry." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete an entry", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a discussion entry.\n\nThe entry must have been created by the current user, or the current user\nmust have admin rights to the discussion. If the delete is not allowed, a 401 will be returned.\n\nThe discussion will be marked deleted, and the user_id and message will be cleared out." + }, + "response": [] + }, + { + "name": "Delete an entry", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a discussion entry.\n\nThe entry must have been created by the current user, or the current user\nmust have admin rights to the discussion. If the delete is not allowed, a 401 will be returned.\n\nThe discussion will be marked deleted, and the user_id and message will be cleared out." + }, + "response": [] + }, + { + "name": "Get a single topic", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual discussion topic. See the List action for the response formatting." + }, + "response": [] + }, + { + "name": "Get a single topic", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Returns data on an individual discussion topic. See the List action for the response formatting." + }, + "response": [] + }, + { + "name": "Summary", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/summaries", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "summaries" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Generates a summary for a discussion topic." + }, + "response": [] + }, + { + "name": "Summary", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/summaries", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "summaries" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Generates a summary for a discussion topic." + }, + "response": [] + }, + { + "name": "Disable summary", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/summaries/disable", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "summaries", + "disable" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Disables the summary for a discussion topic." + }, + "response": [] + }, + { + "name": "Disable summary", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/summaries/disable", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "summaries", + "disable" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Disables the summary for a discussion topic." + }, + "response": [] + }, + { + "name": "Summary Feedback", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/summaries/:summary_id/feedback", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "summaries", + ":summary_id", + "feedback" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "summary_id", + "description": "ID" + } + ] + }, + "description": "Persists feedback on a discussion topic summary.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "_action", + "value": "", + "type": "text", + "description": "Required\nThe action to take on the summary. Possible values are:\n- \"seen\": Marks the summary as seen. This action saves the feedback if it's not already persisted.\n- \"like\": Marks the summary as liked.\n- \"dislike\": Marks the summary as disliked.\n- \"reset_like\": Resets the like status of the summary.\n- \"regenerate\": Regenerates the summary feedback.\n- \"disable_summary\": Disables the summary feedback.\nAny other value will result in an error response." + } + ] + } + }, + "response": [] + }, + { + "name": "Summary Feedback", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/summaries/:summary_id/feedback", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "summaries", + ":summary_id", + "feedback" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "summary_id", + "description": "ID" + } + ] + }, + "description": "Persists feedback on a discussion topic summary.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "_action", + "value": "", + "type": "text", + "description": "Required\nThe action to take on the summary. Possible values are:\n- \"seen\": Marks the summary as seen. This action saves the feedback if it's not already persisted.\n- \"like\": Marks the summary as liked.\n- \"dislike\": Marks the summary as disliked.\n- \"reset_like\": Resets the like status of the summary.\n- \"regenerate\": Regenerates the summary feedback.\n- \"disable_summary\": Disables the summary feedback.\nAny other value will result in an error response." + } + ] + } + }, + "response": [] + }, + { + "name": "Get the full topic", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/view", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "view" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Return a cached structure of the discussion topic, containing all entries,\ntheir authors, and their message bodies.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.\n\nIn some rare situations, this cached structure may not be available yet. In\nthat case, the server will respond with a 503 error, and the caller should\ntry again soon.\n\nThe response is an object containing the following keys:\n* \"participants\": A list of summary information on users who have posted to\n the discussion. Each value is an object containing their id, display_name,\n and avatar_url.\n* \"unread_entries\": A list of entry ids that are unread by the current\n user. this implies that any entry not in this list is read.\n* \"entry_ratings\": A map of entry ids to ratings by the current user. Entries\n not in this list have no rating. Only populated if rating is enabled.\n* \"forced_entries\": A list of entry ids that have forced_read_state set to\n true. This flag is meant to indicate the entry's read_state has been\n manually set to 'unread' by the user, so the entry should not be\n automatically marked as read.\n* \"view\": A threaded view of all the entries in the discussion, containing\n the id, user_id, and message.\n* \"new_entries\": Because this view is eventually consistent, it's possible\n that newly created or updated entries won't yet be reflected in the view.\n If the application wants to also get a flat list of all entries not yet\n reflected in the view, pass include_new_entries=1 to the request and this\n array of entries will be returned. These entries are returned in a flat\n array, in ascending created_at order." + }, + "response": [] + }, + { + "name": "Get the full topic", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/view", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "view" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Return a cached structure of the discussion topic, containing all entries,\ntheir authors, and their message bodies.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.\n\nIn some rare situations, this cached structure may not be available yet. In\nthat case, the server will respond with a 503 error, and the caller should\ntry again soon.\n\nThe response is an object containing the following keys:\n* \"participants\": A list of summary information on users who have posted to\n the discussion. Each value is an object containing their id, display_name,\n and avatar_url.\n* \"unread_entries\": A list of entry ids that are unread by the current\n user. this implies that any entry not in this list is read.\n* \"entry_ratings\": A map of entry ids to ratings by the current user. Entries\n not in this list have no rating. Only populated if rating is enabled.\n* \"forced_entries\": A list of entry ids that have forced_read_state set to\n true. This flag is meant to indicate the entry's read_state has been\n manually set to 'unread' by the user, so the entry should not be\n automatically marked as read.\n* \"view\": A threaded view of all the entries in the discussion, containing\n the id, user_id, and message.\n* \"new_entries\": Because this view is eventually consistent, it's possible\n that newly created or updated entries won't yet be reflected in the view.\n If the application wants to also get a flat list of all entries not yet\n reflected in the view, pass include_new_entries=1 to the request and this\n array of entries will be returned. These entries are returned in a flat\n array, in ascending created_at order." + }, + "response": [] + }, + { + "name": "Post an entry", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Create a new entry in a discussion topic. Returns a json representation of\nthe created entry (see documentation for 'entries' method) on success.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "message", + "value": "", + "type": "text", + "description": "The body of the entry." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "a multipart/form-data form-field-style\nattachment. Attachments larger than 1 kilobyte are subject to quota\nrestrictions." + } + ] + } + }, + "response": [] + }, + { + "name": "Post an entry", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Create a new entry in a discussion topic. Returns a json representation of\nthe created entry (see documentation for 'entries' method) on success.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "message", + "value": "", + "type": "text", + "description": "The body of the entry." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "a multipart/form-data form-field-style\nattachment. Attachments larger than 1 kilobyte are subject to quota\nrestrictions." + } + ] + } + }, + "response": [] + }, + { + "name": "Duplicate discussion topic", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/duplicate", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "duplicate" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Duplicate a discussion topic according to context (Course/Group)" + }, + "response": [] + }, + { + "name": "Duplicate discussion topic", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/duplicate", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "duplicate" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Duplicate a discussion topic according to context (Course/Group)" + }, + "response": [] + }, + { + "name": "List topic entries", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the (paginated) top-level entries in a discussion topic.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.\n\nWill include the 10 most recent replies, if any, for each entry returned.\n\nIf the topic is a root topic with children corresponding to groups of a\ngroup assignment, entries from those subtopics for which the user belongs\nto the corresponding group will be returned.\n\nOrdering of returned entries is newest-first by posting timestamp (reply\nactivity is ignored)." + }, + "response": [] + }, + { + "name": "List topic entries", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the (paginated) top-level entries in a discussion topic.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.\n\nWill include the 10 most recent replies, if any, for each entry returned.\n\nIf the topic is a root topic with children corresponding to groups of a\ngroup assignment, entries from those subtopics for which the user belongs\nto the corresponding group will be returned.\n\nOrdering of returned entries is newest-first by posting timestamp (reply\nactivity is ignored)." + }, + "response": [] + }, + { + "name": "Post a reply", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:entry_id/replies", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "replies" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Add a reply to an entry in a discussion topic. Returns a json\nrepresentation of the created reply (see documentation for 'replies'\nmethod) on success.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "message", + "value": "", + "type": "text", + "description": "The body of the entry." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "a multipart/form-data form-field-style\nattachment. Attachments larger than 1 kilobyte are subject to quota\nrestrictions." + } + ] + } + }, + "response": [] + }, + { + "name": "Post a reply", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:entry_id/replies", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "replies" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Add a reply to an entry in a discussion topic. Returns a json\nrepresentation of the created reply (see documentation for 'replies'\nmethod) on success.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "message", + "value": "", + "type": "text", + "description": "The body of the entry." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "a multipart/form-data form-field-style\nattachment. Attachments larger than 1 kilobyte are subject to quota\nrestrictions." + } + ] + } + }, + "response": [] + }, + { + "name": "List entry replies", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:entry_id/replies", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "replies" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the (paginated) replies to a top-level entry in a discussion\ntopic.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.\n\nOrdering of returned entries is newest-first by creation timestamp." + }, + "response": [] + }, + { + "name": "List entry replies", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:entry_id/replies", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "replies" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the (paginated) replies to a top-level entry in a discussion\ntopic.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'.\n\nOrdering of returned entries is newest-first by creation timestamp." + }, + "response": [] + }, + { + "name": "List entries", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entry_list", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entry_list" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Retrieve a paginated list of discussion entries, given a list of ids.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'." + }, + "response": [] + }, + { + "name": "List entries", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entry_list", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entry_list" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Retrieve a paginated list of discussion entries, given a list of ids.\n\nMay require (depending on the topic) that the user has posted in the topic.\nIf it is required, and the user has not posted, will respond with a 403\nForbidden status and the body 'require_initial_post'." + }, + "response": [] + }, + { + "name": "Mark topic as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the initial text of the discussion topic as read.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark topic as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "read" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the initial text of the discussion topic as read.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark all topic as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/read_all", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + "read_all" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Mark the initial text of all the discussion topics as read in the context.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark all topic as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/read_all", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + "read_all" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Mark the initial text of all the discussion topics as read in the context.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark topic as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the initial text of the discussion topic as unread.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark topic as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "read" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the initial text of the discussion topic as unread.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark all entries as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/read_all", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "read_all" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the discussion topic and all its entries as read.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "forced_read_state", + "value": "", + "type": "text", + "description": "A boolean value to set all of the entries' forced_read_state. No change\nis made if this argument is not specified." + } + ] + } + }, + "response": [] + }, + { + "name": "Mark all entries as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/read_all", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "read_all" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the discussion topic and all its entries as read.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "forced_read_state", + "value": "", + "type": "text", + "description": "A boolean value to set all of the entries' forced_read_state. No change\nis made if this argument is not specified." + } + ] + } + }, + "response": [] + }, + { + "name": "Mark all entries as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/read_all", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "read_all" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the discussion topic and all its entries as unread.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark all entries as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/read_all", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "read_all" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Mark the discussion topic and all its entries as unread.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark entry as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:entry_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Mark a discussion entry as read.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "forced_read_state", + "value": "", + "type": "text", + "description": "A boolean value to set the entry's forced_read_state. No change is made if\nthis argument is not specified." + } + ] + } + }, + "response": [] + }, + { + "name": "Mark entry as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:entry_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "read" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Mark a discussion entry as read.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "forced_read_state", + "value": "", + "type": "text", + "description": "A boolean value to set the entry's forced_read_state. No change is made if\nthis argument is not specified." + } + ] + } + }, + "response": [] + }, + { + "name": "Mark entry as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:entry_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Mark a discussion entry as unread.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark entry as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:entry_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "read" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Mark a discussion entry as unread.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Rate entry", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:entry_id/rating", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "rating" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Rate a discussion entry.\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "rating", + "value": "", + "type": "text", + "description": "A rating to set on this entry. Only 0 and 1 are accepted." + } + ] + } + }, + "response": [] + }, + { + "name": "Rate entry", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:entry_id/rating", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "entries", + ":entry_id", + "rating" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + }, + { + "key": "entry_id", + "description": "ID" + } + ] + }, + "description": "Rate a discussion entry.\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "rating", + "value": "", + "type": "text", + "description": "A rating to set on this entry. Only 0 and 1 are accepted." + } + ] + } + }, + "response": [] + }, + { + "name": "Subscribe to a topic", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/subscribed", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "subscribed" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Subscribe to a topic to receive notifications about new entries\n\nOn success, the response will be 204 No Content with an empty body" + }, + "response": [] + }, + { + "name": "Subscribe to a topic", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/subscribed", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "subscribed" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Subscribe to a topic to receive notifications about new entries\n\nOn success, the response will be 204 No Content with an empty body" + }, + "response": [] + }, + { + "name": "Unsubscribe from a topic", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:topic_id/subscribed", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":topic_id", + "subscribed" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Unsubscribe from a topic to stop receiving notifications about new entries\n\nOn success, the response will be 204 No Content with an empty body" + }, + "response": [] + }, + { + "name": "Unsubscribe from a topic", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/discussion_topics/:topic_id/subscribed", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "discussion_topics", + ":topic_id", + "subscribed" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "topic_id", + "description": "ID" + } + ] + }, + "description": "Unsubscribe from a topic to stop receiving notifications about new entries\n\nOn success, the response will be 204 No Content with an empty body" + }, + "response": [] + } + ] + }, + { + "name": "Enrollment Terms", + "item": [ + { + "name": "Create enrollment term", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/terms", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "terms" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a new enrollment term for the specified account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "enrollment_term[name]", + "value": "", + "type": "text", + "description": "The name of the term." + }, + { + "key": "enrollment_term[start_at]", + "value": "", + "type": "text", + "description": "The day/time the term starts.\nAccepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z." + }, + { + "key": "enrollment_term[end_at]", + "value": "", + "type": "text", + "description": "The day/time the term ends.\nAccepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z." + }, + { + "key": "enrollment_term[sis_term_id]", + "value": "", + "type": "text", + "description": "The unique SIS identifier for the term." + }, + { + "key": "enrollment_term[overrides][enrollment_type][start_at]", + "value": "", + "type": "text", + "description": "The day/time the term starts, overridden for the given enrollment type.\n*enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment" + }, + { + "key": "enrollment_term[overrides][enrollment_type][end_at]", + "value": "", + "type": "text", + "description": "The day/time the term ends, overridden for the given enrollment type.\n*enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment" + } + ] + } + }, + "response": [] + }, + { + "name": "Update enrollment term", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/terms/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "terms", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing enrollment term for the specified account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "enrollment_term[name]", + "value": "", + "type": "text", + "description": "The name of the term." + }, + { + "key": "enrollment_term[start_at]", + "value": "", + "type": "text", + "description": "The day/time the term starts.\nAccepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z." + }, + { + "key": "enrollment_term[end_at]", + "value": "", + "type": "text", + "description": "The day/time the term ends.\nAccepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z." + }, + { + "key": "enrollment_term[sis_term_id]", + "value": "", + "type": "text", + "description": "The unique SIS identifier for the term." + }, + { + "key": "enrollment_term[overrides][enrollment_type][start_at]", + "value": "", + "type": "text", + "description": "The day/time the term starts, overridden for the given enrollment type.\n*enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment" + }, + { + "key": "enrollment_term[overrides][enrollment_type][end_at]", + "value": "", + "type": "text", + "description": "The day/time the term ends, overridden for the given enrollment type.\n*enrollment_type* can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment" + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete enrollment term", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/terms/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "terms", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete the specified enrollment term." + }, + "response": [] + }, + { + "name": "List enrollment terms", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/terms", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "terms" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "An object with a paginated list of all of the terms in the account." + }, + "response": [] + }, + { + "name": "Retrieve enrollment term", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/terms/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "terms", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Retrieves the details for an enrollment term in the account. Includes overrides by default." + }, + "response": [] + } + ] + }, + { + "name": "Enrollments", + "item": [ + { + "name": "List enrollments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/enrollments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "enrollments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Depending on the URL given, return a paginated list of either (1) all of\nthe enrollments in a course, (2) all of the enrollments in a section or (3)\nall of a user's enrollments. This includes student, teacher, TA, and\nobserver enrollments.\n\nIf a user has multiple enrollments in a context (e.g. as a teacher\nand a student or in multiple course sections), each enrollment will be\nlisted separately.\n\nnote: Currently, only a root level admin user can return other users' enrollments.\nA user can, however, return his/her own enrollments.\n\nEnrollments scoped to a course context will include inactive states by default\nif the caller has account admin authorization and the state[] parameter is omitted." + }, + "response": [] + }, + { + "name": "List enrollments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/enrollments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "enrollments" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + } + ] + }, + "description": "Depending on the URL given, return a paginated list of either (1) all of\nthe enrollments in a course, (2) all of the enrollments in a section or (3)\nall of a user's enrollments. This includes student, teacher, TA, and\nobserver enrollments.\n\nIf a user has multiple enrollments in a context (e.g. as a teacher\nand a student or in multiple course sections), each enrollment will be\nlisted separately.\n\nnote: Currently, only a root level admin user can return other users' enrollments.\nA user can, however, return his/her own enrollments.\n\nEnrollments scoped to a course context will include inactive states by default\nif the caller has account admin authorization and the state[] parameter is omitted." + }, + "response": [] + }, + { + "name": "List enrollments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/enrollments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "enrollments" + ], + "variable": [ + { + "key": "user_id", + "description": "Filter by user_id (only valid for course or section enrollment\nqueries). If set to the current user's id, this is a way to\ndetermine if the user has any enrollments in the course or section,\nindependent of whether the user has permission to view other people\non the roster." + } + ] + }, + "description": "Depending on the URL given, return a paginated list of either (1) all of\nthe enrollments in a course, (2) all of the enrollments in a section or (3)\nall of a user's enrollments. This includes student, teacher, TA, and\nobserver enrollments.\n\nIf a user has multiple enrollments in a context (e.g. as a teacher\nand a student or in multiple course sections), each enrollment will be\nlisted separately.\n\nnote: Currently, only a root level admin user can return other users' enrollments.\nA user can, however, return his/her own enrollments.\n\nEnrollments scoped to a course context will include inactive states by default\nif the caller has account admin authorization and the state[] parameter is omitted." + }, + "response": [] + }, + { + "name": "Enrollment by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/enrollments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "enrollments", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "The ID of the enrollment object" + } + ] + }, + "description": "Get an Enrollment object by Enrollment ID" + }, + "response": [] + }, + { + "name": "Enroll a user", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/enrollments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "enrollments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new user enrollment for a course or section.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "enrollment[start_at]", + "value": "", + "type": "text", + "description": "The start time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z" + }, + { + "key": "enrollment[end_at]", + "value": "", + "type": "text", + "description": "The end time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z" + }, + { + "key": "enrollment[user_id]", + "value": "", + "type": "text", + "description": "The ID of the user to be enrolled in the course." + }, + { + "key": "enrollment[type]", + "value": "", + "type": "text", + "description": "Enroll the user as a student, teacher, TA, observer, or designer. If no\nvalue is given, the type will be inferred by enrollment[role] if supplied,\notherwise 'StudentEnrollment' will be used." + }, + { + "key": "enrollment[role]", + "value": "", + "type": "text", + "description": "Assigns a custom course-level role to the user." + }, + { + "key": "enrollment[role_id]", + "value": "", + "type": "text", + "description": "Assigns a custom course-level role to the user." + }, + { + "key": "enrollment[enrollment_state]", + "value": "", + "type": "text", + "description": "If set to 'active,' student will be immediately enrolled in the course.\nOtherwise they will be required to accept a course invitation. Default is\n'invited.'.\n\nIf set to 'inactive', student will be listed in the course roster for\nteachers, but will not be able to participate in the course until\ntheir enrollment is activated." + }, + { + "key": "enrollment[course_section_id]", + "value": "", + "type": "text", + "description": "The ID of the course section to enroll the student in. If the\nsection-specific URL is used, this argument is redundant and will be\nignored." + }, + { + "key": "enrollment[limit_privileges_to_course_section]", + "value": "", + "type": "text", + "description": "If set, the enrollment will only allow the user to see and interact with\nusers enrolled in the section given by course_section_id.\n* For teachers and TAs, this includes grading privileges.\n* Section-limited students will not see any users (including teachers\n and TAs) not enrolled in their sections.\n* Users may have other enrollments that grant privileges to\n multiple sections in the same course." + }, + { + "key": "enrollment[notify]", + "value": "", + "type": "text", + "description": "If true, a notification will be sent to the enrolled user.\nNotifications are not sent by default." + }, + { + "key": "enrollment[self_enrollment_code]", + "value": "", + "type": "text", + "description": "If the current user is not allowed to manage enrollments in this\ncourse, but the course allows self-enrollment, the user can self-\nenroll as a student in the default section by passing in a valid\ncode. When self-enrolling, the user_id must be 'self'. The\nenrollment_state will be set to 'active' and all other arguments\nwill be ignored." + }, + { + "key": "enrollment[self_enrolled]", + "value": "", + "type": "text", + "description": "If true, marks the enrollment as a self-enrollment, which gives\nstudents the ability to drop the course if desired. Defaults to false." + }, + { + "key": "enrollment[associated_user_id]", + "value": "", + "type": "text", + "description": "For an observer enrollment, the ID of a student to observe.\nThis is a one-off operation; to automatically observe all a\nstudent's enrollments (for example, as a parent), please use\nthe {api:UserObserveesController#create User Observees API}." + }, + { + "key": "enrollment[sis_user_id]", + "value": "", + "type": "text", + "description": "Required if the user is being enrolled from another trusted account.\nThe unique identifier for the user (sis_user_id) must also be\naccompanied by the root_account parameter. The user_id will be ignored." + }, + { + "key": "enrollment[integration_id]", + "value": "", + "type": "text", + "description": "Required if the user is being enrolled from another trusted account.\nThe unique identifier for the user (integration_id) must also be\naccompanied by the root_account parameter. The user_id will be ignored." + }, + { + "key": "root_account", + "value": "", + "type": "text", + "description": "The domain of the account to search for the user. Will be a no-op\nunless the sis_user_id or integration_id parameter is also included." + } + ] + } + }, + "response": [] + }, + { + "name": "Enroll a user", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/enrollments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "enrollments" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + } + ] + }, + "description": "Create a new user enrollment for a course or section.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "enrollment[start_at]", + "value": "", + "type": "text", + "description": "The start time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z" + }, + { + "key": "enrollment[end_at]", + "value": "", + "type": "text", + "description": "The end time of the enrollment, in ISO8601 format. e.g. 2012-04-18T23:08:51Z" + }, + { + "key": "enrollment[user_id]", + "value": "", + "type": "text", + "description": "The ID of the user to be enrolled in the course." + }, + { + "key": "enrollment[type]", + "value": "", + "type": "text", + "description": "Enroll the user as a student, teacher, TA, observer, or designer. If no\nvalue is given, the type will be inferred by enrollment[role] if supplied,\notherwise 'StudentEnrollment' will be used." + }, + { + "key": "enrollment[role]", + "value": "", + "type": "text", + "description": "Assigns a custom course-level role to the user." + }, + { + "key": "enrollment[role_id]", + "value": "", + "type": "text", + "description": "Assigns a custom course-level role to the user." + }, + { + "key": "enrollment[enrollment_state]", + "value": "", + "type": "text", + "description": "If set to 'active,' student will be immediately enrolled in the course.\nOtherwise they will be required to accept a course invitation. Default is\n'invited.'.\n\nIf set to 'inactive', student will be listed in the course roster for\nteachers, but will not be able to participate in the course until\ntheir enrollment is activated." + }, + { + "key": "enrollment[course_section_id]", + "value": "", + "type": "text", + "description": "The ID of the course section to enroll the student in. If the\nsection-specific URL is used, this argument is redundant and will be\nignored." + }, + { + "key": "enrollment[limit_privileges_to_course_section]", + "value": "", + "type": "text", + "description": "If set, the enrollment will only allow the user to see and interact with\nusers enrolled in the section given by course_section_id.\n* For teachers and TAs, this includes grading privileges.\n* Section-limited students will not see any users (including teachers\n and TAs) not enrolled in their sections.\n* Users may have other enrollments that grant privileges to\n multiple sections in the same course." + }, + { + "key": "enrollment[notify]", + "value": "", + "type": "text", + "description": "If true, a notification will be sent to the enrolled user.\nNotifications are not sent by default." + }, + { + "key": "enrollment[self_enrollment_code]", + "value": "", + "type": "text", + "description": "If the current user is not allowed to manage enrollments in this\ncourse, but the course allows self-enrollment, the user can self-\nenroll as a student in the default section by passing in a valid\ncode. When self-enrolling, the user_id must be 'self'. The\nenrollment_state will be set to 'active' and all other arguments\nwill be ignored." + }, + { + "key": "enrollment[self_enrolled]", + "value": "", + "type": "text", + "description": "If true, marks the enrollment as a self-enrollment, which gives\nstudents the ability to drop the course if desired. Defaults to false." + }, + { + "key": "enrollment[associated_user_id]", + "value": "", + "type": "text", + "description": "For an observer enrollment, the ID of a student to observe.\nThis is a one-off operation; to automatically observe all a\nstudent's enrollments (for example, as a parent), please use\nthe {api:UserObserveesController#create User Observees API}." + }, + { + "key": "enrollment[sis_user_id]", + "value": "", + "type": "text", + "description": "Required if the user is being enrolled from another trusted account.\nThe unique identifier for the user (sis_user_id) must also be\naccompanied by the root_account parameter. The user_id will be ignored." + }, + { + "key": "enrollment[integration_id]", + "value": "", + "type": "text", + "description": "Required if the user is being enrolled from another trusted account.\nThe unique identifier for the user (integration_id) must also be\naccompanied by the root_account parameter. The user_id will be ignored." + }, + { + "key": "root_account", + "value": "", + "type": "text", + "description": "The domain of the account to search for the user. Will be a no-op\nunless the sis_user_id or integration_id parameter is also included." + } + ] + } + }, + "response": [] + }, + { + "name": "Conclude, deactivate, or delete an enrollment", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/enrollments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "enrollments", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Conclude, deactivate, or delete an enrollment. If the +task+ argument isn't given, the enrollment\nwill be concluded." + }, + "response": [] + }, + { + "name": "Accept Course Invitation", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/enrollments/:id/accept", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "enrollments", + ":id", + "accept" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "accepts a pending course invitation for the current user" + }, + "response": [] + }, + { + "name": "Reject Course Invitation", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/enrollments/:id/reject", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "enrollments", + ":id", + "reject" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "rejects a pending course invitation for the current user" + }, + "response": [] + }, + { + "name": "Re-activate an enrollment", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/enrollments/:id/reactivate", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "enrollments", + ":id", + "reactivate" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Activates an inactive enrollment" + }, + "response": [] + }, + { + "name": "Add last attended date", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/users/:user_id/last_attended", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "users", + ":user_id", + "last_attended" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Add last attended date to student enrollment in course", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "date", + "value": "", + "type": "text", + "description": "The last attended date of a student enrollment in a course." + } + ] + } + }, + "response": [] + }, + { + "name": "Show Temporary Enrollment recipient and provider status", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/temporary_enrollment_status", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "temporary_enrollment_status" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns a JSON Object containing the temporary enrollment status for a user." + }, + "response": [] + } + ] + }, + { + "name": "ePortfolios", + "item": [ + { + "name": "Get all ePortfolios for a User", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/eportfolios", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "eportfolios" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all ePortfolios for the specified user." + }, + "response": [] + }, + { + "name": "Get an ePortfolio", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/eportfolios/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "eportfolios", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get details for a single ePortfolio." + }, + "response": [] + }, + { + "name": "Delete an ePortfolio", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/eportfolios/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "eportfolios", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Mark an ePortfolio as deleted." + }, + "response": [] + }, + { + "name": "Get ePortfolio Pages", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/eportfolios/:eportfolio_id/pages", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "eportfolios", + ":eportfolio_id", + "pages" + ], + "variable": [ + { + "key": "eportfolio_id", + "description": "ID" + } + ] + }, + "description": "Get details for the pages of an ePortfolio" + }, + "response": [] + }, + { + "name": "Moderate an ePortfolio", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/eportfolios/:eportfolio_id/moderate", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "eportfolios", + ":eportfolio_id", + "moderate" + ], + "variable": [ + { + "key": "eportfolio_id", + "description": "ID" + } + ] + }, + "description": "Update the spam_status of an eportfolio. Only available to admins who can\nmoderate_user_content.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "spam_status", + "value": "", + "type": "text", + "description": "The spam status for the ePortfolio" + } + ] + } + }, + "response": [] + }, + { + "name": "Moderate all ePortfolios for a User", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/eportfolios", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "eportfolios" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Update the spam_status for all active eportfolios of a user. Only available to\nadmins who can moderate_user_content.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "spam_status", + "value": "", + "type": "text", + "description": "The spam status for all the ePortfolios" + } + ] + } + }, + "response": [] + }, + { + "name": "Restore a deleted ePortfolio", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/eportfolios/:eportfolio_id/restore", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "eportfolios", + ":eportfolio_id", + "restore" + ], + "variable": [ + { + "key": "eportfolio_id", + "description": "ID" + } + ] + }, + "description": "Restore an ePortfolio back to active that was previously deleted. Only\navailable to admins who can moderate_user_content." + }, + "response": [] + } + ] + }, + { + "name": "ePub Exports", + "item": [ + { + "name": "List courses with their latest ePub export", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/epub_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "epub_exports" + ], + "variable": [] + }, + "description": "A paginated list of all courses a user is actively participating in, and\nthe latest ePub export associated with the user & course." + }, + "response": [] + }, + { + "name": "Create ePub Export", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/epub_exports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "epub_exports" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Begin an ePub export for a course.\n\nYou can use the {api:ProgressController#show Progress API} to track the\nprogress of the export. The export's progress is linked to with the\n_progress_url_ value.\n\nWhen the export completes, use the {api:EpubExportsController#show Show content export} endpoint\nto retrieve a download URL for the exported content." + }, + "response": [] + }, + { + "name": "Show ePub export", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/epub_exports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "epub_exports", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get information about a single ePub export." + }, + "response": [] + } + ] + }, + { + "name": "Error Reports", + "item": [ + { + "name": "Create Error Report", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/error_reports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "error_reports" + ], + "variable": [] + }, + "description": "Create a new error report documenting an experienced problem\n\nPerforms the same action as when a user uses the \"help -> report a problem\"\ndialog.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "error[subject]", + "value": "", + "type": "text", + "description": "The summary of the problem" + }, + { + "key": "error[url]", + "value": "", + "type": "text", + "description": "URL from which the report was issued" + }, + { + "key": "error[email]", + "value": "", + "type": "text", + "description": "Email address for the reporting user" + }, + { + "key": "error[comments]", + "value": "", + "type": "text", + "description": "The long version of the story from the user one what they experienced" + }, + { + "key": "error[http_env]", + "value": "", + "type": "text", + "description": "A collection of metadata about the users' environment. If not provided,\ncanvas will collect it based on information found in the request.\n(Doesn't have to be HTTPENV info, could be anything JSON object that can be\nserialized as a hash, a mobile app might include relevant metadata for\nitself)" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "External Tools", + "item": [ + { + "name": "List external tools", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_tools", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_tools" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of external tools for the current context.\nSee the get request docs for a single tool for a list of properties on an external tool." + }, + "response": [] + }, + { + "name": "List external tools", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of external tools for the current context.\nSee the get request docs for a single tool for a list of properties on an external tool." + }, + "response": [] + }, + { + "name": "List external tools", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/external_tools", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "external_tools" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of external tools for the current context.\nSee the get request docs for a single tool for a list of properties on an external tool." + }, + "response": [] + }, + { + "name": "Get a sessionless launch url for an external tool.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_tools/sessionless_launch", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_tools", + "sessionless_launch" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a sessionless launch url for an external tool.\nPrefers the resource_link_lookup_uuid, but defaults to the other passed\n parameters id, url, and launch_type\n\nNOTE: Either the resource_link_lookup_uuid, id, or url must be provided unless launch_type is assessment or module_item." + }, + "response": [] + }, + { + "name": "Get a sessionless launch url for an external tool.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/sessionless_launch", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + "sessionless_launch" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a sessionless launch url for an external tool.\nPrefers the resource_link_lookup_uuid, but defaults to the other passed\n parameters id, url, and launch_type\n\nNOTE: Either the resource_link_lookup_uuid, id, or url must be provided unless launch_type is assessment or module_item." + }, + "response": [] + }, + { + "name": "Get a single external tool", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_tools/:external_tool_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_tools", + ":external_tool_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "external_tool_id", + "description": "ID" + } + ] + }, + "description": "Returns the specified external tool." + }, + "response": [] + }, + { + "name": "Get a single external tool", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/:external_tool_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + ":external_tool_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "external_tool_id", + "description": "ID" + } + ] + }, + "description": "Returns the specified external tool." + }, + "response": [] + }, + { + "name": "Create an external tool", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_tools", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_tools" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create an external tool in the specified course/account.\nThe created tool will be returned, see the \"show\" endpoint for an example.\nIf a client ID is supplied canvas will attempt to create a context external\ntool using the LTI 1.3 standard.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "client_id", + "value": "", + "type": "text", + "description": "The client id is attached to the developer key.\nIf supplied all other parameters are unnecessary and will be ignored" + }, + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the tool" + }, + { + "key": "privacy_level", + "value": "", + "type": "text", + "description": "How much user information to send to the external tool." + }, + { + "key": "consumer_key", + "value": "", + "type": "text", + "description": "The consumer key for the external tool" + }, + { + "key": "shared_secret", + "value": "", + "type": "text", + "description": "The shared secret with the external tool" + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "A description of the tool" + }, + { + "key": "url", + "value": "", + "type": "text", + "description": "The url to match links against. Either \"url\" or \"domain\" should be set,\nnot both." + }, + { + "key": "domain", + "value": "", + "type": "text", + "description": "The domain to match links against. Either \"url\" or \"domain\" should be\nset, not both." + }, + { + "key": "icon_url", + "value": "", + "type": "text", + "description": "The url of the icon to show for this tool" + }, + { + "key": "text", + "value": "", + "type": "text", + "description": "The default text to show for this tool" + }, + { + "key": "custom_fields[field_name]", + "value": "", + "type": "text", + "description": "Custom fields that will be sent to the tool consumer; can be used\nmultiple times" + }, + { + "key": "is_rce_favorite", + "value": "", + "type": "text", + "description": "(Deprecated in favor of {api:ExternalToolsController#add_rce_favorite Add tool to RCE Favorites} and\n{api:ExternalToolsController#remove_rce_favorite Remove tool from RCE Favorites})\nWhether this tool should appear in a preferred location in the RCE.\nThis only applies to tools in root account contexts that have an editor\nbutton placement." + }, + { + "key": "account_navigation[url]", + "value": "", + "type": "text", + "description": "The url of the external tool for account navigation" + }, + { + "key": "account_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "account_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the left-tab in the account navigation" + }, + { + "key": "account_navigation[selection_width]", + "value": "", + "type": "text", + "description": "The width of the dialog the tool is launched in" + }, + { + "key": "account_navigation[selection_height]", + "value": "", + "type": "text", + "description": "The height of the dialog the tool is launched in" + }, + { + "key": "account_navigation[display_type]", + "value": "", + "type": "text", + "description": "The layout type to use when launching the tool. Must be\n\"full_width\", \"full_width_in_context\", \"in_nav_context\", \"borderless\", or \"default\"" + }, + { + "key": "user_navigation[url]", + "value": "", + "type": "text", + "description": "The url of the external tool for user navigation" + }, + { + "key": "user_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "user_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the left-tab in the user navigation" + }, + { + "key": "user_navigation[visibility]", + "value": "", + "type": "text", + "description": "Who will see the navigation tab. \"admins\" for admins, \"public\" or\n\"members\" for everyone. Setting this to `null` will remove this configuration\nand use the default behavior, which is \"public\"." + }, + { + "key": "course_home_sub_navigation[url]", + "value": "", + "type": "text", + "description": "The url of the external tool for right-side course home navigation menu" + }, + { + "key": "course_home_sub_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "course_home_sub_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the right-side course home navigation menu" + }, + { + "key": "course_home_sub_navigation[icon_url]", + "value": "", + "type": "text", + "description": "The url of the icon to show in the right-side course home navigation menu" + }, + { + "key": "course_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "course_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the left-tab in the course navigation" + }, + { + "key": "course_navigation[visibility]", + "value": "", + "type": "text", + "description": "Who will see the navigation tab. \"admins\" for course admins, \"members\" for\nstudents, \"public\" for everyone. Setting this to `null` will remove this configuration\nand use the default behavior, which is \"public\"." + }, + { + "key": "course_navigation[windowTarget]", + "value": "", + "type": "text", + "description": "Determines how the navigation tab will be opened.\n\"_blank\"\tLaunches the external tool in a new window or tab.\n\"_self\"\t(Default) Launches the external tool in an iframe inside of Canvas." + }, + { + "key": "course_navigation[default]", + "value": "", + "type": "text", + "description": "If set to \"disabled\" the tool will not appear in the course navigation\nuntil a teacher explicitly enables it.\n\nIf set to \"enabled\" the tool will appear in the course navigation\nwithout requiring a teacher to explicitly enable it.\n\ndefaults to \"enabled\"" + }, + { + "key": "course_navigation[display_type]", + "value": "", + "type": "text", + "description": "The layout type to use when launching the tool. Must be\n\"full_width\", \"full_width_in_context\", \"in_nav_context\", \"borderless\", or \"default\"" + }, + { + "key": "editor_button[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "editor_button[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "editor_button[icon_url]", + "value": "", + "type": "text", + "description": "The url of the icon to show in the WYSIWYG editor" + }, + { + "key": "editor_button[selection_width]", + "value": "", + "type": "text", + "description": "The width of the dialog the tool is launched in" + }, + { + "key": "editor_button[selection_height]", + "value": "", + "type": "text", + "description": "The height of the dialog the tool is launched in" + }, + { + "key": "editor_button[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "homework_submission[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "homework_submission[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "homework_submission[text]", + "value": "", + "type": "text", + "description": "The text that will show on the homework submission tab" + }, + { + "key": "homework_submission[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "link_selection[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "link_selection[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "link_selection[text]", + "value": "", + "type": "text", + "description": "The text that will show for the link selection text" + }, + { + "key": "link_selection[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "migration_selection[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "migration_selection[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "migration_selection[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "tool_configuration[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "tool_configuration[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "tool_configuration[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "tool_configuration[prefer_sis_email]", + "value": "", + "type": "text", + "description": "Set this to default the lis_person_contact_email_primary to prefer\nprovisioned sis_email; otherwise, omit" + }, + { + "key": "resource_selection[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "resource_selection[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature. If set to false,\nnot_selectable must also be set to true in order to hide this tool\nfrom the selection UI in modules and assignments." + }, + { + "key": "resource_selection[icon_url]", + "value": "", + "type": "text", + "description": "The url of the icon to show in the module external tool list" + }, + { + "key": "resource_selection[selection_width]", + "value": "", + "type": "text", + "description": "The width of the dialog the tool is launched in" + }, + { + "key": "resource_selection[selection_height]", + "value": "", + "type": "text", + "description": "The height of the dialog the tool is launched in" + }, + { + "key": "config_type", + "value": "", + "type": "text", + "description": "Configuration can be passed in as CC xml instead of using query\nparameters. If this value is \"by_url\" or \"by_xml\" then an xml\nconfiguration will be expected in either the \"config_xml\" or \"config_url\"\nparameter. Note that the name parameter overrides the tool name provided\nin the xml" + }, + { + "key": "config_xml", + "value": "", + "type": "text", + "description": "XML tool configuration, as specified in the CC xml specification. This is\nrequired if \"config_type\" is set to \"by_xml\"" + }, + { + "key": "config_url", + "value": "", + "type": "text", + "description": "URL where the server can retrieve an XML tool configuration, as specified\nin the CC xml specification. This is required if \"config_type\" is set to\n\"by_url\"" + }, + { + "key": "not_selectable", + "value": "", + "type": "text", + "description": "Default: false. If set to true, and if resource_selection is set to false,\nthe tool won't show up in the external tool\nselection UI in modules and assignments" + }, + { + "key": "oauth_compliant", + "value": "", + "type": "text", + "description": "Default: false, if set to true LTI query params will not be copied to the\npost body." + }, + { + "key": "unified_tool_id", + "value": "", + "type": "text", + "description": "The unique identifier for the tool in LearnPlatform" + } + ] + } + }, + "response": [] + }, + { + "name": "Create an external tool", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create an external tool in the specified course/account.\nThe created tool will be returned, see the \"show\" endpoint for an example.\nIf a client ID is supplied canvas will attempt to create a context external\ntool using the LTI 1.3 standard.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "client_id", + "value": "", + "type": "text", + "description": "The client id is attached to the developer key.\nIf supplied all other parameters are unnecessary and will be ignored" + }, + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the tool" + }, + { + "key": "privacy_level", + "value": "", + "type": "text", + "description": "How much user information to send to the external tool." + }, + { + "key": "consumer_key", + "value": "", + "type": "text", + "description": "The consumer key for the external tool" + }, + { + "key": "shared_secret", + "value": "", + "type": "text", + "description": "The shared secret with the external tool" + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "A description of the tool" + }, + { + "key": "url", + "value": "", + "type": "text", + "description": "The url to match links against. Either \"url\" or \"domain\" should be set,\nnot both." + }, + { + "key": "domain", + "value": "", + "type": "text", + "description": "The domain to match links against. Either \"url\" or \"domain\" should be\nset, not both." + }, + { + "key": "icon_url", + "value": "", + "type": "text", + "description": "The url of the icon to show for this tool" + }, + { + "key": "text", + "value": "", + "type": "text", + "description": "The default text to show for this tool" + }, + { + "key": "custom_fields[field_name]", + "value": "", + "type": "text", + "description": "Custom fields that will be sent to the tool consumer; can be used\nmultiple times" + }, + { + "key": "is_rce_favorite", + "value": "", + "type": "text", + "description": "(Deprecated in favor of {api:ExternalToolsController#add_rce_favorite Add tool to RCE Favorites} and\n{api:ExternalToolsController#remove_rce_favorite Remove tool from RCE Favorites})\nWhether this tool should appear in a preferred location in the RCE.\nThis only applies to tools in root account contexts that have an editor\nbutton placement." + }, + { + "key": "account_navigation[url]", + "value": "", + "type": "text", + "description": "The url of the external tool for account navigation" + }, + { + "key": "account_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "account_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the left-tab in the account navigation" + }, + { + "key": "account_navigation[selection_width]", + "value": "", + "type": "text", + "description": "The width of the dialog the tool is launched in" + }, + { + "key": "account_navigation[selection_height]", + "value": "", + "type": "text", + "description": "The height of the dialog the tool is launched in" + }, + { + "key": "account_navigation[display_type]", + "value": "", + "type": "text", + "description": "The layout type to use when launching the tool. Must be\n\"full_width\", \"full_width_in_context\", \"in_nav_context\", \"borderless\", or \"default\"" + }, + { + "key": "user_navigation[url]", + "value": "", + "type": "text", + "description": "The url of the external tool for user navigation" + }, + { + "key": "user_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "user_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the left-tab in the user navigation" + }, + { + "key": "user_navigation[visibility]", + "value": "", + "type": "text", + "description": "Who will see the navigation tab. \"admins\" for admins, \"public\" or\n\"members\" for everyone. Setting this to `null` will remove this configuration\nand use the default behavior, which is \"public\"." + }, + { + "key": "course_home_sub_navigation[url]", + "value": "", + "type": "text", + "description": "The url of the external tool for right-side course home navigation menu" + }, + { + "key": "course_home_sub_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "course_home_sub_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the right-side course home navigation menu" + }, + { + "key": "course_home_sub_navigation[icon_url]", + "value": "", + "type": "text", + "description": "The url of the icon to show in the right-side course home navigation menu" + }, + { + "key": "course_navigation[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "course_navigation[text]", + "value": "", + "type": "text", + "description": "The text that will show on the left-tab in the course navigation" + }, + { + "key": "course_navigation[visibility]", + "value": "", + "type": "text", + "description": "Who will see the navigation tab. \"admins\" for course admins, \"members\" for\nstudents, \"public\" for everyone. Setting this to `null` will remove this configuration\nand use the default behavior, which is \"public\"." + }, + { + "key": "course_navigation[windowTarget]", + "value": "", + "type": "text", + "description": "Determines how the navigation tab will be opened.\n\"_blank\"\tLaunches the external tool in a new window or tab.\n\"_self\"\t(Default) Launches the external tool in an iframe inside of Canvas." + }, + { + "key": "course_navigation[default]", + "value": "", + "type": "text", + "description": "If set to \"disabled\" the tool will not appear in the course navigation\nuntil a teacher explicitly enables it.\n\nIf set to \"enabled\" the tool will appear in the course navigation\nwithout requiring a teacher to explicitly enable it.\n\ndefaults to \"enabled\"" + }, + { + "key": "course_navigation[display_type]", + "value": "", + "type": "text", + "description": "The layout type to use when launching the tool. Must be\n\"full_width\", \"full_width_in_context\", \"in_nav_context\", \"borderless\", or \"default\"" + }, + { + "key": "editor_button[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "editor_button[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "editor_button[icon_url]", + "value": "", + "type": "text", + "description": "The url of the icon to show in the WYSIWYG editor" + }, + { + "key": "editor_button[selection_width]", + "value": "", + "type": "text", + "description": "The width of the dialog the tool is launched in" + }, + { + "key": "editor_button[selection_height]", + "value": "", + "type": "text", + "description": "The height of the dialog the tool is launched in" + }, + { + "key": "editor_button[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "homework_submission[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "homework_submission[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "homework_submission[text]", + "value": "", + "type": "text", + "description": "The text that will show on the homework submission tab" + }, + { + "key": "homework_submission[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "link_selection[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "link_selection[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "link_selection[text]", + "value": "", + "type": "text", + "description": "The text that will show for the link selection text" + }, + { + "key": "link_selection[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "migration_selection[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "migration_selection[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "migration_selection[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "tool_configuration[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "tool_configuration[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature" + }, + { + "key": "tool_configuration[message_type]", + "value": "", + "type": "text", + "description": "Set this to ContentItemSelectionRequest to tell the tool to use\ncontent-item; otherwise, omit" + }, + { + "key": "tool_configuration[prefer_sis_email]", + "value": "", + "type": "text", + "description": "Set this to default the lis_person_contact_email_primary to prefer\nprovisioned sis_email; otherwise, omit" + }, + { + "key": "resource_selection[url]", + "value": "", + "type": "text", + "description": "The url of the external tool" + }, + { + "key": "resource_selection[enabled]", + "value": "", + "type": "text", + "description": "Set this to enable this feature. If set to false,\nnot_selectable must also be set to true in order to hide this tool\nfrom the selection UI in modules and assignments." + }, + { + "key": "resource_selection[icon_url]", + "value": "", + "type": "text", + "description": "The url of the icon to show in the module external tool list" + }, + { + "key": "resource_selection[selection_width]", + "value": "", + "type": "text", + "description": "The width of the dialog the tool is launched in" + }, + { + "key": "resource_selection[selection_height]", + "value": "", + "type": "text", + "description": "The height of the dialog the tool is launched in" + }, + { + "key": "config_type", + "value": "", + "type": "text", + "description": "Configuration can be passed in as CC xml instead of using query\nparameters. If this value is \"by_url\" or \"by_xml\" then an xml\nconfiguration will be expected in either the \"config_xml\" or \"config_url\"\nparameter. Note that the name parameter overrides the tool name provided\nin the xml" + }, + { + "key": "config_xml", + "value": "", + "type": "text", + "description": "XML tool configuration, as specified in the CC xml specification. This is\nrequired if \"config_type\" is set to \"by_xml\"" + }, + { + "key": "config_url", + "value": "", + "type": "text", + "description": "URL where the server can retrieve an XML tool configuration, as specified\nin the CC xml specification. This is required if \"config_type\" is set to\n\"by_url\"" + }, + { + "key": "not_selectable", + "value": "", + "type": "text", + "description": "Default: false. If set to true, and if resource_selection is set to false,\nthe tool won't show up in the external tool\nselection UI in modules and assignments" + }, + { + "key": "oauth_compliant", + "value": "", + "type": "text", + "description": "Default: false, if set to true LTI query params will not be copied to the\npost body." + }, + { + "key": "unified_tool_id", + "value": "", + "type": "text", + "description": "The unique identifier for the tool in LearnPlatform" + } + ] + } + }, + "response": [] + }, + { + "name": "Edit an external tool", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_tools/:external_tool_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_tools", + ":external_tool_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "external_tool_id", + "description": "ID" + } + ] + }, + "description": "Update the specified external tool. Uses same parameters as create" + }, + "response": [] + }, + { + "name": "Edit an external tool", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/:external_tool_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + ":external_tool_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "external_tool_id", + "description": "ID" + } + ] + }, + "description": "Update the specified external tool. Uses same parameters as create" + }, + "response": [] + }, + { + "name": "Delete an external tool", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_tools/:external_tool_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_tools", + ":external_tool_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "external_tool_id", + "description": "ID" + } + ] + }, + "description": "Remove the specified external tool" + }, + "response": [] + }, + { + "name": "Delete an external tool", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/:external_tool_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + ":external_tool_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "external_tool_id", + "description": "ID" + } + ] + }, + "description": "Remove the specified external tool" + }, + "response": [] + }, + { + "name": "Add tool to RCE Favorites", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/rce_favorites/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + "rce_favorites", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Add the specified editor_button external tool to a preferred location in the RCE\nfor courses in the given account and its subaccounts (if the subaccounts\nhaven't set their own RCE Favorites). Cannot set more than 2 RCE Favorites." + }, + "response": [] + }, + { + "name": "Remove tool from RCE Favorites", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/rce_favorites/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + "rce_favorites", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Remove the specified external tool from a preferred location in the RCE\nfor the given account" + }, + "response": [] + }, + { + "name": "Add tool to Top Navigation Favorites", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/top_nav_favorites/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + "top_nav_favorites", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Adds a dedicated button in Top Navigation for the specified tool for the given account.\nCannot set more than 2 top_navigation Favorites." + }, + "response": [] + }, + { + "name": "Remove tool from Top Navigation Favorites", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/external_tools/top_nav_favorites/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "external_tools", + "top_nav_favorites", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Removes the dedicated button in Top Navigation for the specified tool for the given account." + }, + "response": [] + }, + { + "name": "Get visible course navigation tools", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/external_tools/visible_course_nav_tools", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "external_tools", + "visible_course_nav_tools" + ], + "variable": [] + }, + "description": "Get a list of external tools with the course_navigation placement that have not been hidden in\ncourse settings and whose visibility settings apply to the requesting user. These tools are the\nsame that appear in the course navigation.\n\nThe response format is the same as for List external tools, but with additional context_id and\ncontext_name fields on each element in the array." + }, + "response": [] + }, + { + "name": "Get visible course navigation tools for a single course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/external_tools/visible_course_nav_tools", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "external_tools", + "visible_course_nav_tools" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Get a list of external tools with the course_navigation placement that have not been hidden in\ncourse settings and whose visibility settings apply to the requesting user. These tools are the\nsame that appear in the course navigation.\n\nThe response format is the same as Get visible course navigation tools." + }, + "response": [] + } + ] + }, + { + "name": "Favorites", + "item": [ + { + "name": "List favorite courses", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "courses" + ], + "variable": [] + }, + "description": "Retrieve the paginated list of favorite courses for the current user. If the user has not chosen\nany favorites, then a selection of currently enrolled courses will be returned.\n\nSee the {api:CoursesController#index List courses API} for details on accepted include[] parameters." + }, + "response": [] + }, + { + "name": "List favorite groups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "groups" + ], + "variable": [] + }, + "description": "Retrieve the paginated list of favorite groups for the current user. If the user has not chosen\nany favorites, then a selection of groups that the user is a member of will be returned." + }, + "response": [] + }, + { + "name": "Add course to favorites", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/courses/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "courses", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "The ID or SIS ID of the course to add. The current user must be\nregistered in the course." + } + ] + }, + "description": "Add a course to the current user's favorites. If the course is already\nin the user's favorites, nothing happens. Canvas for Elementary subject\nand homeroom courses can be added to favorites, but this has no effect in\nthe UI." + }, + "response": [] + }, + { + "name": "Add group to favorites", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "The ID or SIS ID of the group to add. The current user must be\na member of the group." + } + ] + }, + "description": "Add a group to the current user's favorites. If the group is already\nin the user's favorites, nothing happens." + }, + "response": [] + }, + { + "name": "Remove course from favorites", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/courses/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "courses", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "the ID or SIS ID of the course to remove" + } + ] + }, + "description": "Remove a course from the current user's favorites." + }, + "response": [] + }, + { + "name": "Remove group from favorites", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "the ID or SIS ID of the group to remove" + } + ] + }, + "description": "Remove a group from the current user's favorites." + }, + "response": [] + }, + { + "name": "Reset course favorites", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "courses" + ], + "variable": [] + }, + "description": "Reset the current user's course favorites to the default\nautomatically generated list of enrolled courses" + }, + "response": [] + }, + { + "name": "Reset group favorites", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/favorites/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "favorites", + "groups" + ], + "variable": [] + }, + "description": "Reset the current user's group favorites to the default\nautomatically generated list of enrolled group" + }, + "response": [] + } + ] + }, + { + "name": "Feature Flags", + "item": [ + { + "name": "List features", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/features", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "features" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all features that apply to a given Account, Course, or User." + }, + "response": [] + }, + { + "name": "List features", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/features", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "features" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all features that apply to a given Account, Course, or User." + }, + "response": [] + }, + { + "name": "List features", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/features", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "features" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all features that apply to a given Account, Course, or User." + }, + "response": [] + }, + { + "name": "List enabled features", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/features/enabled", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "features", + "enabled" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all features that are enabled on a given Account, Course, or User.\nOnly the feature names are returned." + }, + "response": [] + }, + { + "name": "List enabled features", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/features/enabled", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "features", + "enabled" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all features that are enabled on a given Account, Course, or User.\nOnly the feature names are returned." + }, + "response": [] + }, + { + "name": "List enabled features", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/features/enabled", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "features", + "enabled" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all features that are enabled on a given Account, Course, or User.\nOnly the feature names are returned." + }, + "response": [] + }, + { + "name": "List environment features", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/features/environment", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "features", + "environment" + ], + "variable": [] + }, + "description": "Return a hash of global feature options that pertain to the\nCanvas user interface. This is the same information supplied to the\nweb interface as +ENV.FEATURES+." + }, + "response": [] + }, + { + "name": "Get feature flag", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Get the feature flag that applies to a given Account, Course, or User.\nThe flag may be defined on the object, or it may be inherited from a parent\naccount. You can look at the context_id and context_type of the returned object\nto determine which is the case. If these fields are missing, then the object\nis the global Canvas default." + }, + "response": [] + }, + { + "name": "Get feature flag", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Get the feature flag that applies to a given Account, Course, or User.\nThe flag may be defined on the object, or it may be inherited from a parent\naccount. You can look at the context_id and context_type of the returned object\nto determine which is the case. If these fields are missing, then the object\nis the global Canvas default." + }, + "response": [] + }, + { + "name": "Get feature flag", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Get the feature flag that applies to a given Account, Course, or User.\nThe flag may be defined on the object, or it may be inherited from a parent\naccount. You can look at the context_id and context_type of the returned object\nto determine which is the case. If these fields are missing, then the object\nis the global Canvas default." + }, + "response": [] + }, + { + "name": "Set feature flag", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Set a feature flag for a given Account, Course, or User. This call will fail if a parent account sets\na feature flag for the same feature in any state other than \"allowed\".", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "state", + "value": "", + "type": "text", + "description": "\"off\":: The feature is not available for the course, user, or account and sub-accounts.\n\"allowed\":: (valid only on accounts) The feature is off in the account, but may be enabled in\n sub-accounts and courses by setting a feature flag on the sub-account or course.\n\"on\":: The feature is turned on unconditionally for the user, course, or account and sub-accounts." + } + ] + } + }, + "response": [] + }, + { + "name": "Set feature flag", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Set a feature flag for a given Account, Course, or User. This call will fail if a parent account sets\na feature flag for the same feature in any state other than \"allowed\".", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "state", + "value": "", + "type": "text", + "description": "\"off\":: The feature is not available for the course, user, or account and sub-accounts.\n\"allowed\":: (valid only on accounts) The feature is off in the account, but may be enabled in\n sub-accounts and courses by setting a feature flag on the sub-account or course.\n\"on\":: The feature is turned on unconditionally for the user, course, or account and sub-accounts." + } + ] + } + }, + "response": [] + }, + { + "name": "Set feature flag", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Set a feature flag for a given Account, Course, or User. This call will fail if a parent account sets\na feature flag for the same feature in any state other than \"allowed\".", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "state", + "value": "", + "type": "text", + "description": "\"off\":: The feature is not available for the course, user, or account and sub-accounts.\n\"allowed\":: (valid only on accounts) The feature is off in the account, but may be enabled in\n sub-accounts and courses by setting a feature flag on the sub-account or course.\n\"on\":: The feature is turned on unconditionally for the user, course, or account and sub-accounts." + } + ] + } + }, + "response": [] + }, + { + "name": "Remove feature flag", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Remove feature flag for a given Account, Course, or User. (Note that the flag must\nbe defined on the Account, Course, or User directly.) The object will then inherit\nthe feature flags from a higher account, if any exist. If this flag was 'on' or 'off',\nthen lower-level account flags that were masked by this one will apply again." + }, + "response": [] + }, + { + "name": "Remove feature flag", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Remove feature flag for a given Account, Course, or User. (Note that the flag must\nbe defined on the Account, Course, or User directly.) The object will then inherit\nthe feature flags from a higher account, if any exist. If this flag was 'on' or 'off',\nthen lower-level account flags that were masked by this one will apply again." + }, + "response": [] + }, + { + "name": "Remove feature flag", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/features/flags/:feature", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "features", + "flags", + ":feature" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "feature", + "description": "ID" + } + ] + }, + "description": "Remove feature flag for a given Account, Course, or User. (Note that the flag must\nbe defined on the Account, Course, or User directly.) The object will then inherit\nthe feature flags from a higher account, if any exist. If this flag was 'on' or 'off',\nthen lower-level account flags that were masked by this one will apply again." + }, + "response": [] + } + ] + }, + { + "name": "Files", + "item": [ + { + "name": "Get quota information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/files/quota", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "files", + "quota" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the total and used storage quota for the course, group, or user." + }, + "response": [] + }, + { + "name": "Get quota information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/files/quota", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "files", + "quota" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the total and used storage quota for the course, group, or user." + }, + "response": [] + }, + { + "name": "Get quota information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/files/quota", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "files", + "quota" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns the total and used storage quota for the course, group, or user." + }, + "response": [] + }, + { + "name": "List files", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "files" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of files for the folder or course." + }, + "response": [] + }, + { + "name": "List files", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "files" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of files for the folder or course." + }, + "response": [] + }, + { + "name": "List files", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "files" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of files for the folder or course." + }, + "response": [] + }, + { + "name": "List files", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":id", + "files" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of files for the folder or course." + }, + "response": [] + }, + { + "name": "Get public inline preview url", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/files/:id/public_url", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "files", + ":id", + "public_url" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Determine the URL that should be used for inline preview of the file." + }, + "response": [] + }, + { + "name": "Get file", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/files/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "files", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the standard attachment json object" + }, + "response": [] + }, + { + "name": "Get file", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/files/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "files", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the standard attachment json object" + }, + "response": [] + }, + { + "name": "Get file", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/files/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "files", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the standard attachment json object" + }, + "response": [] + }, + { + "name": "Get file", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/files/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "files", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the standard attachment json object" + }, + "response": [] + }, + { + "name": "Translate file reference", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/files/file_ref/:migration_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "files", + "file_ref", + ":migration_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "migration_id", + "description": "ID" + } + ] + }, + "description": "Get information about a file from a course copy file reference" + }, + "response": [] + }, + { + "name": "Update file", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/files/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "files", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update some settings on the specified file", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The new display name of the file, with a limit of 255 characters." + }, + { + "key": "parent_folder_id", + "value": "", + "type": "text", + "description": "The id of the folder to move this file into.\nThe new folder must be in the same context as the original parent folder.\nIf the file is in a context without folders this does not apply." + }, + { + "key": "on_duplicate", + "value": "", + "type": "text", + "description": "If the file is moved to a folder containing a file with the same name,\nor renamed to a name matching an existing file, the API call will fail\nunless this parameter is supplied.\n\n\"overwrite\":: Replace the existing file with the same name\n\"rename\":: Add a qualifier to make the new filename unique" + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The datetime to lock the file at" + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The datetime to unlock the file at" + }, + { + "key": "locked", + "value": "", + "type": "text", + "description": "Flag the file as locked" + }, + { + "key": "hidden", + "value": "", + "type": "text", + "description": "Flag the file as hidden" + }, + { + "key": "visibility_level", + "value": "", + "type": "text", + "description": "Configure which roles can access this file" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete file", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/files/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "files", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Remove the specified file. Unlike most other DELETE endpoints, using this\nendpoint will result in comprehensive, irretrievable destruction of the file.\nIt should be used with the `replace` parameter set to true in cases where the\nfile preview also needs to be destroyed (such as to remove files that violate\nprivacy laws)." + }, + "response": [] + }, + { + "name": "Get icon metadata", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/files/:id/icon_metadata", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "files", + ":id", + "icon_metadata" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the icon maker file attachment metadata" + }, + "response": [] + }, + { + "name": "Reset link verifier", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/files/:id/reset_verifier", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "files", + ":id", + "reset_verifier" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Resets the link verifier. Any existing links to the file using\nthe previous hard-coded \"verifier\" parameter will no longer\nautomatically grant access.\n\nMust have manage files and become other users permissions" + }, + "response": [] + }, + { + "name": "List folders", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":id", + "folders" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of folders in the folder." + }, + "response": [] + }, + { + "name": "List all folders", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "folders" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of all folders for the given context. This will\nbe returned as a flat list containing all subfolders as well." + }, + "response": [] + }, + { + "name": "List all folders", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "folders" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of all folders for the given context. This will\nbe returned as a flat list containing all subfolders as well." + }, + "response": [] + }, + { + "name": "List all folders", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "folders" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of all folders for the given context. This will\nbe returned as a flat list containing all subfolders as well." + }, + "response": [] + }, + { + "name": "Resolve path", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/folders/by_path/*full_path", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "folders", + "by_path", + "*full_path" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Given the full path to a folder, returns a list of all Folders in the path hierarchy,\nstarting at the root folder, and ending at the requested folder. The given path is\nrelative to the context's root folder and does not include the root folder's name\n(e.g., \"course files\"). If an empty path is given, the context's root folder alone\nis returned. Otherwise, if no folder exists with the given full path, a Not Found\nerror is returned." + }, + "response": [] + }, + { + "name": "Resolve path", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/folders/by_path", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "folders", + "by_path" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Given the full path to a folder, returns a list of all Folders in the path hierarchy,\nstarting at the root folder, and ending at the requested folder. The given path is\nrelative to the context's root folder and does not include the root folder's name\n(e.g., \"course files\"). If an empty path is given, the context's root folder alone\nis returned. Otherwise, if no folder exists with the given full path, a Not Found\nerror is returned." + }, + "response": [] + }, + { + "name": "Resolve path", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/folders/by_path/*full_path", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "folders", + "by_path", + "*full_path" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Given the full path to a folder, returns a list of all Folders in the path hierarchy,\nstarting at the root folder, and ending at the requested folder. The given path is\nrelative to the context's root folder and does not include the root folder's name\n(e.g., \"course files\"). If an empty path is given, the context's root folder alone\nis returned. Otherwise, if no folder exists with the given full path, a Not Found\nerror is returned." + }, + "response": [] + }, + { + "name": "Resolve path", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/folders/by_path", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "folders", + "by_path" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Given the full path to a folder, returns a list of all Folders in the path hierarchy,\nstarting at the root folder, and ending at the requested folder. The given path is\nrelative to the context's root folder and does not include the root folder's name\n(e.g., \"course files\"). If an empty path is given, the context's root folder alone\nis returned. Otherwise, if no folder exists with the given full path, a Not Found\nerror is returned." + }, + "response": [] + }, + { + "name": "Resolve path", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/folders/by_path/*full_path", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "folders", + "by_path", + "*full_path" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Given the full path to a folder, returns a list of all Folders in the path hierarchy,\nstarting at the root folder, and ending at the requested folder. The given path is\nrelative to the context's root folder and does not include the root folder's name\n(e.g., \"course files\"). If an empty path is given, the context's root folder alone\nis returned. Otherwise, if no folder exists with the given full path, a Not Found\nerror is returned." + }, + "response": [] + }, + { + "name": "Resolve path", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/folders/by_path", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "folders", + "by_path" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Given the full path to a folder, returns a list of all Folders in the path hierarchy,\nstarting at the root folder, and ending at the requested folder. The given path is\nrelative to the context's root folder and does not include the root folder's name\n(e.g., \"course files\"). If an empty path is given, the context's root folder alone\nis returned. Otherwise, if no folder exists with the given full path, a Not Found\nerror is returned." + }, + "response": [] + }, + { + "name": "Get folder", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/folders/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "folders", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the details for a folder\n\nYou can get the root folder from a context by using 'root' as the :id.\nFor example, you could get the root folder for a course like:" + }, + "response": [] + }, + { + "name": "Get folder", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/folders/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "folders", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the details for a folder\n\nYou can get the root folder from a context by using 'root' as the :id.\nFor example, you could get the root folder for a course like:" + }, + "response": [] + }, + { + "name": "Get folder", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/folders/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "folders", + ":id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the details for a folder\n\nYou can get the root folder from a context by using 'root' as the :id.\nFor example, you could get the root folder for a course like:" + }, + "response": [] + }, + { + "name": "Get folder", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the details for a folder\n\nYou can get the root folder from a context by using 'root' as the :id.\nFor example, you could get the root folder for a course like:" + }, + "response": [] + }, + { + "name": "Update folder", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Updates a folder", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The new name of the folder" + }, + { + "key": "parent_folder_id", + "value": "", + "type": "text", + "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." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The datetime to lock the folder at" + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The datetime to unlock the folder at" + }, + { + "key": "locked", + "value": "", + "type": "text", + "description": "Flag the folder as locked" + }, + { + "key": "hidden", + "value": "", + "type": "text", + "description": "Flag the folder as hidden" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "Set an explicit sort position for the folder" + } + ] + } + }, + "response": [] + }, + { + "name": "Create folder", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "folders" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Creates a folder in the specified context", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the folder" + }, + { + "key": "parent_folder_id", + "value": "", + "type": "text", + "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." + }, + { + "key": "parent_folder_path", + "value": "", + "type": "text", + "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." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The datetime to lock the folder at" + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The datetime to unlock the folder at" + }, + { + "key": "locked", + "value": "", + "type": "text", + "description": "Flag the folder as locked" + }, + { + "key": "hidden", + "value": "", + "type": "text", + "description": "Flag the folder as hidden" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "Set an explicit sort position for the folder" + } + ] + } + }, + "response": [] + }, + { + "name": "Create folder", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "folders" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Creates a folder in the specified context", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the folder" + }, + { + "key": "parent_folder_id", + "value": "", + "type": "text", + "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." + }, + { + "key": "parent_folder_path", + "value": "", + "type": "text", + "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." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The datetime to lock the folder at" + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The datetime to unlock the folder at" + }, + { + "key": "locked", + "value": "", + "type": "text", + "description": "Flag the folder as locked" + }, + { + "key": "hidden", + "value": "", + "type": "text", + "description": "Flag the folder as hidden" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "Set an explicit sort position for the folder" + } + ] + } + }, + "response": [] + }, + { + "name": "Create folder", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "folders" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Creates a folder in the specified context", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the folder" + }, + { + "key": "parent_folder_id", + "value": "", + "type": "text", + "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." + }, + { + "key": "parent_folder_path", + "value": "", + "type": "text", + "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." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The datetime to lock the folder at" + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The datetime to unlock the folder at" + }, + { + "key": "locked", + "value": "", + "type": "text", + "description": "Flag the folder as locked" + }, + { + "key": "hidden", + "value": "", + "type": "text", + "description": "Flag the folder as hidden" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "Set an explicit sort position for the folder" + } + ] + } + }, + "response": [] + }, + { + "name": "Create folder", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:folder_id/folders", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":folder_id", + "folders" + ], + "variable": [ + { + "key": "folder_id", + "description": "ID" + } + ] + }, + "description": "Creates a folder in the specified context", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the folder" + }, + { + "key": "parent_folder_id", + "value": "", + "type": "text", + "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." + }, + { + "key": "parent_folder_path", + "value": "", + "type": "text", + "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." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The datetime to lock the folder at" + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The datetime to unlock the folder at" + }, + { + "key": "locked", + "value": "", + "type": "text", + "description": "Flag the folder as locked" + }, + { + "key": "hidden", + "value": "", + "type": "text", + "description": "Flag the folder as hidden" + }, + { + "key": "position", + "value": "", + "type": "text", + "description": "Set an explicit sort position for the folder" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete folder", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Remove the specified folder. You can only delete empty folders unless you\nset the 'force' flag" + }, + "response": [] + }, + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:folder_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":folder_id", + "files" + ], + "variable": [ + { + "key": "folder_id", + "description": "ID" + } + ] + }, + "description": "Upload a file to a folder.\n\nThis API endpoint is the first step in uploading a file.\nSee the {file:file_uploads.html File Upload Documentation} for details on\nthe file upload workflow.\n\nOnly those with the \"Manage Files\" permission on a course or group can\nupload files to a folder in that course or group." + }, + "response": [] + }, + { + "name": "Copy a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:dest_folder_id/copy_file", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":dest_folder_id", + "copy_file" + ], + "variable": [ + { + "key": "dest_folder_id", + "description": "ID" + } + ] + }, + "description": "Copy a file from elsewhere in Canvas into a folder.\n\nCopying a file across contexts (between courses and users) is permitted,\nbut the source and destination must belong to the same institution.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "source_file_id", + "value": "", + "type": "text", + "description": "The id of the source file" + }, + { + "key": "on_duplicate", + "value": "", + "type": "text", + "description": "What to do if a file with the same name already exists at the destination.\nIf such a file exists and this parameter is not given, the call will fail.\n\n\"overwrite\":: Replace an existing file with the same name\n\"rename\":: Add a qualifier to make the new filename unique" + } + ] + } + }, + "response": [] + }, + { + "name": "Copy a folder", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/folders/:dest_folder_id/copy_folder", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "folders", + ":dest_folder_id", + "copy_folder" + ], + "variable": [ + { + "key": "dest_folder_id", + "description": "ID" + } + ] + }, + "description": "Copy a folder (and its contents) from elsewhere in Canvas into a folder.\n\nCopying a folder across contexts (between courses and users) is permitted,\nbut the source and destination must belong to the same institution.\nIf the source and destination folders are in the same context, the\nsource folder may not contain the destination folder. A folder will be\nrenamed at its destination if another folder with the same name already\nexists.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "source_folder_id", + "value": "", + "type": "text", + "description": "The id of the source folder" + } + ] + } + }, + "response": [] + }, + { + "name": "Get uploaded media folder for user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/folders/media", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "folders", + "media" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the details for a designated upload folder that the user has rights to\nupload to, and creates it if it doesn't exist.\n\nIf the current user does not have the permissions to manage files\nin the course or group, the folder will belong to the current user directly." + }, + "response": [] + }, + { + "name": "Get uploaded media folder for user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/folders/media", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "folders", + "media" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the details for a designated upload folder that the user has rights to\nupload to, and creates it if it doesn't exist.\n\nIf the current user does not have the permissions to manage files\nin the course or group, the folder will belong to the current user directly." + }, + "response": [] + }, + { + "name": "Set usage rights", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/usage_rights", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "usage_rights" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Sets copyright and license information for one or more files", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file_ids", + "value": "", + "type": "text", + "description": "List of ids of files to set usage rights for." + }, + { + "key": "folder_ids", + "value": "", + "type": "text", + "description": "List of ids of folders to search for files to set usage rights for.\nNote that new files uploaded to these folders do not automatically inherit these rights." + }, + { + "key": "publish", + "value": "", + "type": "text", + "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)." + }, + { + "key": "usage_rights[use_justification]", + "value": "", + "type": "text", + "description": "The intellectual property justification for using the files in Canvas" + }, + { + "key": "usage_rights[legal_copyright]", + "value": "", + "type": "text", + "description": "The legal copyright line for the files" + }, + { + "key": "usage_rights[license]", + "value": "", + "type": "text", + "description": "The license that applies to the files. See the {api:UsageRightsController#licenses List licenses endpoint} for the supported license types." + } + ] + } + }, + "response": [] + }, + { + "name": "Set usage rights", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/usage_rights", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "usage_rights" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Sets copyright and license information for one or more files", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file_ids", + "value": "", + "type": "text", + "description": "List of ids of files to set usage rights for." + }, + { + "key": "folder_ids", + "value": "", + "type": "text", + "description": "List of ids of folders to search for files to set usage rights for.\nNote that new files uploaded to these folders do not automatically inherit these rights." + }, + { + "key": "publish", + "value": "", + "type": "text", + "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)." + }, + { + "key": "usage_rights[use_justification]", + "value": "", + "type": "text", + "description": "The intellectual property justification for using the files in Canvas" + }, + { + "key": "usage_rights[legal_copyright]", + "value": "", + "type": "text", + "description": "The legal copyright line for the files" + }, + { + "key": "usage_rights[license]", + "value": "", + "type": "text", + "description": "The license that applies to the files. See the {api:UsageRightsController#licenses List licenses endpoint} for the supported license types." + } + ] + } + }, + "response": [] + }, + { + "name": "Set usage rights", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/usage_rights", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "usage_rights" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Sets copyright and license information for one or more files", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file_ids", + "value": "", + "type": "text", + "description": "List of ids of files to set usage rights for." + }, + { + "key": "folder_ids", + "value": "", + "type": "text", + "description": "List of ids of folders to search for files to set usage rights for.\nNote that new files uploaded to these folders do not automatically inherit these rights." + }, + { + "key": "publish", + "value": "", + "type": "text", + "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)." + }, + { + "key": "usage_rights[use_justification]", + "value": "", + "type": "text", + "description": "The intellectual property justification for using the files in Canvas" + }, + { + "key": "usage_rights[legal_copyright]", + "value": "", + "type": "text", + "description": "The legal copyright line for the files" + }, + { + "key": "usage_rights[license]", + "value": "", + "type": "text", + "description": "The license that applies to the files. See the {api:UsageRightsController#licenses List licenses endpoint} for the supported license types." + } + ] + } + }, + "response": [] + }, + { + "name": "Remove usage rights", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/usage_rights", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "usage_rights" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Removes copyright and license information associated with one or more files" + }, + "response": [] + }, + { + "name": "Remove usage rights", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/usage_rights", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "usage_rights" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Removes copyright and license information associated with one or more files" + }, + "response": [] + }, + { + "name": "Remove usage rights", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/usage_rights", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "usage_rights" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Removes copyright and license information associated with one or more files" + }, + "response": [] + }, + { + "name": "List licenses", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/content_licenses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "content_licenses" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of licenses that can be applied" + }, + "response": [] + }, + { + "name": "List licenses", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/content_licenses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "content_licenses" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of licenses that can be applied" + }, + "response": [] + }, + { + "name": "List licenses", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/content_licenses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "content_licenses" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of licenses that can be applied" + }, + "response": [] + } + ] + }, + { + "name": "Grade Change Log", + "item": [ + { + "name": "Query by assignment", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/grade_change/assignments/:assignment_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "grade_change", + "assignments", + ":assignment_id" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "List grade change events for a given assignment." + }, + "response": [] + }, + { + "name": "Query by course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/grade_change/courses/:course_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "grade_change", + "courses", + ":course_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "List grade change events for a given course." + }, + "response": [] + }, + { + "name": "Query by student", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/grade_change/students/:student_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "grade_change", + "students", + ":student_id" + ], + "variable": [ + { + "key": "student_id", + "description": "ID" + } + ] + }, + "description": "List grade change events for a given student." + }, + "response": [] + }, + { + "name": "Query by grader", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/grade_change/graders/:grader_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "grade_change", + "graders", + ":grader_id" + ], + "variable": [ + { + "key": "grader_id", + "description": "ID" + } + ] + }, + "description": "List grade change events for a given grader." + }, + "response": [] + }, + { + "name": "Advanced query", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/audit/grade_change", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "audit", + "grade_change" + ], + "variable": [] + }, + "description": "List grade change events satisfying all given parameters. Teachers may query for events in courses they teach.\nQueries without +course_id+ require account administrator rights.\n\nAt least one of +course_id+, +assignment_id+, +student_id+, or +grader_id+ must be specified." + }, + "response": [] + } + ] + }, + { + "name": "Gradebook History", + "item": [ + { + "name": "Days in gradebook history for this course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/gradebook_history/days", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "gradebook_history", + "days" + ], + "variable": [ + { + "key": "course_id", + "description": "The id of the contextual course for this API call" + } + ] + }, + "description": "Returns a map of dates to grader/assignment groups" + }, + "response": [] + }, + { + "name": "Details for a given date in gradebook history for this course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/gradebook_history/:date", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "gradebook_history", + ":date" + ], + "variable": [ + { + "key": "course_id", + "description": "The id of the contextual course for this API call" + }, + { + "key": "date", + "description": "The date for which you would like to see detailed information" + } + ] + }, + "description": "Returns the graders who worked on this day, along with the assignments they worked on.\nMore details can be obtained by selecting a grader and assignment and calling the\n'submissions' api endpoint for a given date." + }, + "response": [] + }, + { + "name": "Lists submissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/gradebook_history/:date/graders/:grader_id/assignments/:assignment_id/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "gradebook_history", + ":date", + "graders", + ":grader_id", + "assignments", + ":assignment_id", + "submissions" + ], + "variable": [ + { + "key": "course_id", + "description": "The id of the contextual course for this API call" + }, + { + "key": "date", + "description": "The date for which you would like to see submissions" + }, + { + "key": "grader_id", + "description": "The ID of the grader for which you want to see submissions" + }, + { + "key": "assignment_id", + "description": "The ID of the assignment for which you want to see submissions" + } + ] + }, + "description": "Gives a nested list of submission versions" + }, + "response": [] + }, + { + "name": "List uncollated submission versions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/gradebook_history/feed", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "gradebook_history", + "feed" + ], + "variable": [ + { + "key": "course_id", + "description": "The id of the contextual course for this API call" + } + ] + }, + "description": "Gives a paginated, uncollated list of submission versions for all matching\nsubmissions in the context. This SubmissionVersion objects will not include\nthe +new_grade+ or +previous_grade+ keys, only the +grade+; same for\n+graded_at+ and +grader+." + }, + "response": [] + } + ] + }, + { + "name": "Grading Period Sets", + "item": [ + { + "name": "List grading period sets", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_period_sets", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_period_sets" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of grading period sets" + }, + "response": [] + }, + { + "name": "Create a grading period set", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_period_sets", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_period_sets" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create and return a new grading period set", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "enrollment_term_ids", + "value": "", + "type": "text", + "description": "A list of associated term ids for the grading period set" + }, + { + "key": "grading_period_set[title]", + "value": "", + "type": "text", + "description": "The title of the grading period set" + }, + { + "key": "grading_period_set[weighted]", + "value": "", + "type": "text", + "description": "A boolean to determine whether the grading periods in the set are weighted" + }, + { + "key": "grading_period_set[display_totals_for_all_grading_periods]", + "value": "", + "type": "text", + "description": "A boolean to determine whether the totals for all grading periods in the set are displayed" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a grading period set", + "request": { + "method": "PATCH", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_period_sets/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_period_sets", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing grading period set\n\n<b>204 No Content</b> response code is returned if the update was\nsuccessful.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "enrollment_term_ids", + "value": "", + "type": "text", + "description": "A list of associated term ids for the grading period set" + }, + { + "key": "grading_period_set[title]", + "value": "", + "type": "text", + "description": "The title of the grading period set" + }, + { + "key": "grading_period_set[weighted]", + "value": "", + "type": "text", + "description": "A boolean to determine whether the grading periods in the set are weighted" + }, + { + "key": "grading_period_set[display_totals_for_all_grading_periods]", + "value": "", + "type": "text", + "description": "A boolean to determine whether the totals for all grading periods in the set are displayed" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a grading period set", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_period_sets/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_period_sets", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "<b>204 No Content</b> response code is returned if the deletion was\nsuccessful." + }, + "response": [] + } + ] + }, + { + "name": "Grading Periods", + "item": [ + { + "name": "List grading periods", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_periods", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_periods" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of grading periods for the current course." + }, + "response": [] + }, + { + "name": "List grading periods", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_periods", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_periods" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of grading periods for the current course." + }, + "response": [] + }, + { + "name": "Get a single grading period", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_periods/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_periods", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the grading period with the given id" + }, + "response": [] + }, + { + "name": "Update a single grading period", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_periods/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_periods", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing grading period.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "grading_periods[start_date]", + "value": "", + "type": "text", + "description": "The date the grading period starts." + }, + { + "key": "grading_periods[end_date]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grading_periods[weight]", + "value": "", + "type": "text", + "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" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a grading period", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_periods/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_periods", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "<b>204 No Content</b> response code is returned if the deletion was\nsuccessful." + }, + "response": [] + }, + { + "name": "Delete a grading period", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_periods/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_periods", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "<b>204 No Content</b> response code is returned if the deletion was\nsuccessful." + }, + "response": [] + }, + { + "name": "Batch update grading periods", + "request": { + "method": "PATCH", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_periods/batch_update", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_periods", + "batch_update" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Update multiple grading periods", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "set_id", + "value": "", + "type": "text", + "description": "The id of the grading period set." + }, + { + "key": "grading_periods[id]", + "value": "", + "type": "text", + "description": "The id of the grading period. If the id parameter does not exist, a new grading period will be created." + }, + { + "key": "grading_periods[title]", + "value": "", + "type": "text", + "description": "The title of the grading period.\nThe title is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[start_date]", + "value": "", + "type": "text", + "description": "The date the grading period starts.\nThe start_date is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[end_date]", + "value": "", + "type": "text", + "description": "The date the grading period ends.\nThe end_date is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[close_date]", + "value": "", + "type": "text", + "description": "The date after which grades can no longer be changed for a grading period.\nThe close_date is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[weight]", + "value": "", + "type": "text", + "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" + } + ] + } + }, + "response": [] + }, + { + "name": "Batch update grading periods", + "request": { + "method": "PATCH", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/grading_period_sets/:set_id/grading_periods/batch_update", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "grading_period_sets", + ":set_id", + "grading_periods", + "batch_update" + ], + "variable": [ + { + "key": "set_id", + "description": "The id of the grading period set." + } + ] + }, + "description": "Update multiple grading periods", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "grading_periods[id]", + "value": "", + "type": "text", + "description": "The id of the grading period. If the id parameter does not exist, a new grading period will be created." + }, + { + "key": "grading_periods[title]", + "value": "", + "type": "text", + "description": "The title of the grading period.\nThe title is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[start_date]", + "value": "", + "type": "text", + "description": "The date the grading period starts.\nThe start_date is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[end_date]", + "value": "", + "type": "text", + "description": "The date the grading period ends.\nThe end_date is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[close_date]", + "value": "", + "type": "text", + "description": "The date after which grades can no longer be changed for a grading period.\nThe close_date is required for creating a new grading period, but not for updating an existing grading period." + }, + { + "key": "grading_periods[weight]", + "value": "", + "type": "text", + "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" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Grading Standards", + "item": [ + { + "name": "Create a new grading standard", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_standards", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_standards" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a new grading standard", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The title for the Grading Standard." + }, + { + "key": "grading_scheme_entry[name]", + "value": "", + "type": "text", + "description": "The name for an entry value within a GradingStandard that describes the range of the value\ne.g. A-" + }, + { + "key": "grading_scheme_entry[value]", + "value": "", + "type": "text", + "description": "The value for the name of the entry within a GradingStandard.\nThe entry represents the lower bound of the range for the entry.\nThis range includes the value up to the next entry in the GradingStandard,\nor 100 if there is no upper bound. The lowest value will have a lower bound range of 0.\ne.g. 93" + } + ] + } + }, + "response": [] + }, + { + "name": "Create a new grading standard", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_standards", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_standards" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new grading standard", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The title for the Grading Standard." + }, + { + "key": "grading_scheme_entry[name]", + "value": "", + "type": "text", + "description": "The name for an entry value within a GradingStandard that describes the range of the value\ne.g. A-" + }, + { + "key": "grading_scheme_entry[value]", + "value": "", + "type": "text", + "description": "The value for the name of the entry within a GradingStandard.\nThe entry represents the lower bound of the range for the entry.\nThis range includes the value up to the next entry in the GradingStandard,\nor 100 if there is no upper bound. The lowest value will have a lower bound range of 0.\ne.g. 93" + } + ] + } + }, + "response": [] + }, + { + "name": "List the grading standards available in a context.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_standards", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_standards" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of grading standards for the given context that are visible to the user." + }, + "response": [] + }, + { + "name": "List the grading standards available in a context.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_standards", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_standards" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of grading standards for the given context that are visible to the user." + }, + "response": [] + }, + { + "name": "Get a single grading standard in a context.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/grading_standards/:grading_standard_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "grading_standards", + ":grading_standard_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "grading_standard_id", + "description": "ID" + } + ] + }, + "description": "Returns a grading standard for the given context that is visible to the user." + }, + "response": [] + }, + { + "name": "Get a single grading standard in a context.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/grading_standards/:grading_standard_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "grading_standards", + ":grading_standard_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "grading_standard_id", + "description": "ID" + } + ] + }, + "description": "Returns a grading standard for the given context that is visible to the user." + }, + "response": [] + } + ] + }, + { + "name": "Group Categories", + "item": [ + { + "name": "List group categories for a context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/group_categories", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "group_categories" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of group categories in a context" + }, + "response": [] + }, + { + "name": "List group categories for a context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/group_categories", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "group_categories" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of group categories in a context" + }, + "response": [] + }, + { + "name": "Get a single group category", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Returns the data for a single group category, or a 401 if the caller doesn't have\nthe rights to see it." + }, + "response": [] + }, + { + "name": "Create a Group Category", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/group_categories", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "group_categories" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a new group category", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "Name of the group category" + }, + { + "key": "self_signup", + "value": "", + "type": "text", + "description": "Allow students to sign up for a group themselves (Course Only).\nvalid values are:\n\"enabled\":: allows students to self sign up for any group in course\n\"restricted\":: allows students to self sign up only for groups in the\n same section null disallows self sign up" + }, + { + "key": "auto_leader", + "value": "", + "type": "text", + "description": "Assigns group leaders automatically when generating and allocating students to groups\nValid values are:\n\"first\":: the first student to be allocated to a group is the leader\n\"random\":: a random student from all members is chosen as the leader" + }, + { + "key": "group_limit", + "value": "", + "type": "text", + "description": "Limit the maximum number of users in each group (Course Only). Requires\nself signup." + }, + { + "key": "sis_group_category_id", + "value": "", + "type": "text", + "description": "The unique SIS identifier." + }, + { + "key": "create_group_count", + "value": "", + "type": "text", + "description": "Create this number of groups (Course Only)." + }, + { + "key": "split_group_count", + "value": "", + "type": "text", + "description": "(Deprecated)\nCreate this number of groups, and evenly distribute students\namong them. not allowed with \"enable_self_signup\". because\nthe group assignment happens synchronously, it's recommended\nthat you instead use the assign_unassigned_members endpoint.\n(Course Only)" + } + ] + } + }, + "response": [] + }, + { + "name": "Create a Group Category", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/group_categories", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "group_categories" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new group category", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "Name of the group category" + }, + { + "key": "self_signup", + "value": "", + "type": "text", + "description": "Allow students to sign up for a group themselves (Course Only).\nvalid values are:\n\"enabled\":: allows students to self sign up for any group in course\n\"restricted\":: allows students to self sign up only for groups in the\n same section null disallows self sign up" + }, + { + "key": "auto_leader", + "value": "", + "type": "text", + "description": "Assigns group leaders automatically when generating and allocating students to groups\nValid values are:\n\"first\":: the first student to be allocated to a group is the leader\n\"random\":: a random student from all members is chosen as the leader" + }, + { + "key": "group_limit", + "value": "", + "type": "text", + "description": "Limit the maximum number of users in each group (Course Only). Requires\nself signup." + }, + { + "key": "sis_group_category_id", + "value": "", + "type": "text", + "description": "The unique SIS identifier." + }, + { + "key": "create_group_count", + "value": "", + "type": "text", + "description": "Create this number of groups (Course Only)." + }, + { + "key": "split_group_count", + "value": "", + "type": "text", + "description": "(Deprecated)\nCreate this number of groups, and evenly distribute students\namong them. not allowed with \"enable_self_signup\". because\nthe group assignment happens synchronously, it's recommended\nthat you instead use the assign_unassigned_members endpoint.\n(Course Only)" + } + ] + } + }, + "response": [] + }, + { + "name": "Import category groups", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id/import", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id", + "import" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Create Groups in a Group Category through a CSV import\n\nFor more information on the format that's expected here, please see the\n\"Group Category CSV\" section in the API docs.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "attachment", + "value": "", + "type": "text", + "description": "There are two ways to post group category import data - either via a\nmultipart/form-data form-field-style attachment, or via a non-multipart\nraw post request.\n\n'attachment' is required for multipart/form-data style posts. Assumed to\nbe outcome data from a file upload form field named 'attachment'.\n\nExamples:\n curl -F attachment=@<filename> -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/group_categories/<category_id>/import'\n\nIf you decide to do a raw post, you can skip the 'attachment' argument,\nbut you will then be required to provide a suitable Content-Type header.\nYou are encouraged to also provide the 'extension' argument.\n\nExamples:\n curl -H 'Content-Type: text/csv' --data-binary @<filename>.csv \\\n -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/group_categories/<category_id>/import'" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a Group Category", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Modifies an existing group category.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "Name of the group category" + }, + { + "key": "self_signup", + "value": "", + "type": "text", + "description": "Allow students to sign up for a group themselves (Course Only).\nValid values are:\n\"enabled\":: allows students to self sign up for any group in course\n\"restricted\":: allows students to self sign up only for groups in the\n same section null disallows self sign up" + }, + { + "key": "auto_leader", + "value": "", + "type": "text", + "description": "Assigns group leaders automatically when generating and allocating students to groups\nValid values are:\n\"first\":: the first student to be allocated to a group is the leader\n\"random\":: a random student from all members is chosen as the leader" + }, + { + "key": "group_limit", + "value": "", + "type": "text", + "description": "Limit the maximum number of users in each group (Course Only). Requires\nself signup." + }, + { + "key": "sis_group_category_id", + "value": "", + "type": "text", + "description": "The unique SIS identifier." + }, + { + "key": "create_group_count", + "value": "", + "type": "text", + "description": "Create this number of groups (Course Only)." + }, + { + "key": "split_group_count", + "value": "", + "type": "text", + "description": "(Deprecated)\nCreate this number of groups, and evenly distribute students\namong them. not allowed with \"enable_self_signup\". because\nthe group assignment happens synchronously, it's recommended\nthat you instead use the assign_unassigned_members endpoint.\n(Course Only)" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a Group Category", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Deletes a group category and all groups under it. Protected group\ncategories can not be deleted, i.e. \"communities\" and \"student_organized\"." + }, + "response": [] + }, + { + "name": "List groups in group category", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id", + "groups" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of groups in a group category" + }, + "response": [] + }, + { + "name": "export groups in and users in category", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id/export", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id", + "export" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Returns a csv file of users in format ready to import." + }, + "response": [] + }, + { + "name": "List users in group category", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id/users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id", + "users" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of users in the group category." + }, + "response": [] + }, + { + "name": "Assign unassigned members", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id/assign_unassigned_members", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id", + "assign_unassigned_members" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Assign all unassigned members as evenly as possible among the existing\nstudent groups.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "sync", + "value": "", + "type": "text", + "description": "The assigning is done asynchronously by default. If you would like to\noverride this and have the assigning done synchronously, set this value\nto true." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Groups", + "item": [ + { + "name": "List your groups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "groups" + ], + "variable": [] + }, + "description": "Returns a paginated list of active groups for the current user." + }, + "response": [] + }, + { + "name": "List the groups available in a context.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "groups" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of active groups in the given context that are visible to user." + }, + "response": [] + }, + { + "name": "List the groups available in a context.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "groups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of active groups in the given context that are visible to user." + }, + "response": [] + }, + { + "name": "Get a single group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the data for a single group, or a 401 if the caller doesn't have\nthe rights to see it." + }, + "response": [] + }, + { + "name": "Create a group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups" + ], + "variable": [] + }, + "description": "Creates a new group. Groups created using the \"/api/v1/groups/\"\nendpoint will be community groups.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the group" + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "A description of the group" + }, + { + "key": "is_public", + "value": "", + "type": "text", + "description": "whether the group is public (applies only to community groups)" + }, + { + "key": "join_level", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "storage_quota_mb", + "value": "", + "type": "text", + "description": "The allowed file storage for the group, in megabytes. This parameter is\nignored if the caller does not have the manage_storage_quotas permission." + }, + { + "key": "sis_group_id", + "value": "", + "type": "text", + "description": "The sis ID of the group. Must have manage_sis permission to set." + } + ] + } + }, + "response": [] + }, + { + "name": "Create a group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/group_categories/:group_category_id/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "group_categories", + ":group_category_id", + "groups" + ], + "variable": [ + { + "key": "group_category_id", + "description": "ID" + } + ] + }, + "description": "Creates a new group. Groups created using the \"/api/v1/groups/\"\nendpoint will be community groups.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the group" + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "A description of the group" + }, + { + "key": "is_public", + "value": "", + "type": "text", + "description": "whether the group is public (applies only to community groups)" + }, + { + "key": "join_level", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "storage_quota_mb", + "value": "", + "type": "text", + "description": "The allowed file storage for the group, in megabytes. This parameter is\nignored if the caller does not have the manage_storage_quotas permission." + }, + { + "key": "sis_group_id", + "value": "", + "type": "text", + "description": "The sis ID of the group. Must have manage_sis permission to set." + } + ] + } + }, + "response": [] + }, + { + "name": "Edit a group", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Modifies an existing group. Note that to set an avatar image for the\ngroup, you must first upload the image file to the group, and the use the\nid in the response as the argument to this function. See the\n{file:file_uploads.html File Upload Documentation} for details on the file\nupload workflow.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the group" + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "A description of the group" + }, + { + "key": "is_public", + "value": "", + "type": "text", + "description": "Whether the group is public (applies only to community groups). Currently\nyou cannot set a group back to private once it has been made public." + }, + { + "key": "join_level", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "avatar_id", + "value": "", + "type": "text", + "description": "The id of the attachment previously uploaded to the group that you would\nlike to use as the avatar image for this group." + }, + { + "key": "storage_quota_mb", + "value": "", + "type": "text", + "description": "The allowed file storage for the group, in megabytes. This parameter is\nignored if the caller does not have the manage_storage_quotas permission." + }, + { + "key": "members", + "value": "", + "type": "text", + "description": "An array of user ids for users you would like in the group.\nUsers not in the group will be sent invitations. Existing group\nmembers who aren't in the list will be removed from the group." + }, + { + "key": "sis_group_id", + "value": "", + "type": "text", + "description": "The sis ID of the group. Must have manage_sis permission to set." + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Deletes a group and removes all members." + }, + "response": [] + }, + { + "name": "Invite others to a group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/invite", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "invite" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Sends an invitation to all supplied email addresses which will allow the\nreceivers to join the group.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "invitees", + "value": "", + "type": "text", + "description": "An array of email addresses to be sent invitations." + } + ] + } + }, + "response": [] + }, + { + "name": "List group's users", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "users" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of users in the group." + }, + "response": [] + }, + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "files" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Upload a file to the group.\n\nThis API endpoint is the first step in uploading a file to a group.\nSee the {file:file_uploads.html File Upload Documentation} for details on\nthe file upload workflow.\n\nOnly those with the \"Manage Files\" permission on a group can upload files\nto the group. By default, this is anybody participating in the\ngroup, or any admin over the group." + }, + "response": [] + }, + { + "name": "Preview processed html", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/preview_html", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "preview_html" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Preview html content processed for this group", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "html", + "value": "", + "type": "text", + "description": "The html content to process" + } + ] + } + }, + "response": [] + }, + { + "name": "Group activity stream", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/activity_stream", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "activity_stream" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns the current user's group-specific activity stream, paginated.\n\nFor full documentation, see the API documentation for the user activity\nstream, in the user api." + }, + "response": [] + }, + { + "name": "Group activity stream summary", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/activity_stream/summary", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "activity_stream", + "summary" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns a summary of the current user's group-specific activity stream.\n\nFor full documentation, see the API documentation for the user activity\nstream summary, in the user api." + }, + "response": [] + }, + { + "name": "Permissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/permissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "permissions" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns permission information for the calling user in the given group.\nSee also the {api:AccountsController#permissions Account} and\n{api:CoursesController#permissions Course} counterparts." + }, + "response": [] + }, + { + "name": "List group memberships", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/memberships", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "memberships" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the members of a group." + }, + "response": [] + }, + { + "name": "Get a single group membership", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/memberships/:membership_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "memberships", + ":membership_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "membership_id", + "description": "ID" + } + ] + }, + "description": "Returns the group membership with the given membership id or user id." + }, + "response": [] + }, + { + "name": "Get a single group membership", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/users/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "users", + ":user_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns the group membership with the given membership id or user id." + }, + "response": [] + }, + { + "name": "Create a membership", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/memberships", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "memberships" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Join, or request to join, a group, depending on the join_level of the\ngroup. If the membership or join request already exists, then it is simply\nreturned", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user_id", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a membership", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/memberships/:membership_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "memberships", + ":membership_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "membership_id", + "description": "ID" + } + ] + }, + "description": "Accept a membership request, or add/remove moderator rights.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "Currently, the only allowed value is \"accepted\"" + }, + { + "key": "moderator", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a membership", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/users/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "users", + ":user_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Accept a membership request, or add/remove moderator rights.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "Currently, the only allowed value is \"accepted\"" + }, + { + "key": "moderator", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Leave a group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/memberships/:membership_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "memberships", + ":membership_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "membership_id", + "description": "ID" + } + ] + }, + "description": "Leave a group if you are allowed to leave (some groups, such as sets of\ncourse groups created by teachers, cannot be left). You may also use 'self'\nin place of a membership_id." + }, + "response": [] + }, + { + "name": "Leave a group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/users/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "users", + ":user_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Leave a group if you are allowed to leave (some groups, such as sets of\ncourse groups created by teachers, cannot be left). You may also use 'self'\nin place of a membership_id." + }, + "response": [] + } + ] + }, + { + "name": "History", + "item": [ + { + "name": "List recent history for a user", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/history", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "history" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return a paginated list of the user's recent history. History entries are returned in descending order,\nnewest to oldest. You may list history entries for yourself (use +self+ as the user_id), for a student you observe,\nor for a user you manage as an administrator. Note that the +per_page+ pagination argument is not supported\nand the number of history entries returned per page will vary." + }, + "response": [] + } + ] + }, + { + "name": "InstAccess tokens", + "item": [ + { + "name": "Create InstAccess token", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/inst_access_tokens", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "inst_access_tokens" + ], + "variable": [] + }, + "description": "Create a unique, encrypted InstAccess token.\n\nGenerates a different InstAccess token each time it's called, each one expires\nafter a short window (1 hour)." + }, + "response": [] + } + ] + }, + { + "name": "JWTs", + "item": [ + { + "name": "Create JWT", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/jwts", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "jwts" + ], + "variable": [] + }, + "description": "Create a unique jwt for using with other Canvas services\n\nGenerates a different JWT each time it's called, each one expires\nafter a short window (1 hour)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflows", + "value": "", + "type": "text", + "description": "Adds additional data to the JWT to be used by the consuming service workflow" + }, + { + "key": "context_type", + "value": "", + "type": "text", + "description": "The type of the context in case a specified workflow uses it to consuming the service. Case insensitive." + }, + { + "key": "context_id", + "value": "", + "type": "text", + "description": "The id of the context in case a specified workflow uses it to consuming the service." + }, + { + "key": "context_uuid", + "value": "", + "type": "text", + "description": "The uuid of the context in case a specified workflow uses it to consuming the service." + }, + { + "key": "canvas_audience", + "value": "", + "type": "text", + "description": "Defaults to true. If false, the JWT will be signed, but not encrypted, for use in downstream services. The\ndefault encrypted behaviour can be used to talk to canvas itself." + } + ] + } + }, + "response": [] + }, + { + "name": "Refresh JWT", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/jwts/refresh", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "jwts", + "refresh" + ], + "variable": [] + }, + "description": "Refresh a JWT for use with other canvas services\n\nGenerates a different JWT each time it's called, each one expires\nafter a short window (1 hour).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "jwt", + "value": "", + "type": "text", + "description": "An existing JWT token to be refreshed. The new token will have\nthe same context and workflows as the existing token." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Late Policy", + "item": [ + { + "name": "Get a late policy", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:id/late_policy", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":id", + "late_policy" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the late policy for a course." + }, + "response": [] + }, + { + "name": "Create a late policy", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:id/late_policy", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":id", + "late_policy" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Create a late policy. If the course already has a late policy, a\nbad_request is returned since there can only be one late policy\nper course.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "late_policy[missing_submission_deduction_enabled]", + "value": "", + "type": "text", + "description": "Whether to enable the missing submission deduction late policy." + }, + { + "key": "late_policy[missing_submission_deduction]", + "value": "", + "type": "text", + "description": "How many percentage points to deduct from a missing submission." + }, + { + "key": "late_policy[late_submission_deduction_enabled]", + "value": "", + "type": "text", + "description": "Whether to enable the late submission deduction late policy." + }, + { + "key": "late_policy[late_submission_deduction]", + "value": "", + "type": "text", + "description": "How many percentage points to deduct per the late submission interval." + }, + { + "key": "late_policy[late_submission_interval]", + "value": "", + "type": "text", + "description": "The interval for late policies." + }, + { + "key": "late_policy[late_submission_minimum_percent_enabled]", + "value": "", + "type": "text", + "description": "Whether to enable the late submission minimum percent for a late policy." + }, + { + "key": "late_policy[late_submission_minimum_percent]", + "value": "", + "type": "text", + "description": "The minimum grade a submissions can have in percentage points." + } + ] + } + }, + "response": [] + }, + { + "name": "Patch a late policy", + "request": { + "method": "PATCH", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:id/late_policy", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":id", + "late_policy" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Patch a late policy. No body is returned upon success.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "late_policy[missing_submission_deduction_enabled]", + "value": "", + "type": "text", + "description": "Whether to enable the missing submission deduction late policy." + }, + { + "key": "late_policy[missing_submission_deduction]", + "value": "", + "type": "text", + "description": "How many percentage points to deduct from a missing submission." + }, + { + "key": "late_policy[late_submission_deduction_enabled]", + "value": "", + "type": "text", + "description": "Whether to enable the late submission deduction late policy." + }, + { + "key": "late_policy[late_submission_deduction]", + "value": "", + "type": "text", + "description": "How many percentage points to deduct per the late submission interval." + }, + { + "key": "late_policy[late_submission_interval]", + "value": "", + "type": "text", + "description": "The interval for late policies." + }, + { + "key": "late_policy[late_submission_minimum_percent_enabled]", + "value": "", + "type": "text", + "description": "Whether to enable the late submission minimum percent for a late policy." + }, + { + "key": "late_policy[late_submission_minimum_percent]", + "value": "", + "type": "text", + "description": "The minimum grade a submissions can have in percentage points." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Learning Object Dates", + "item": [ + { + "name": "Get a learning object's date information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:context_module_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":context_module_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "context_module_id", + "description": "ID" + } + ] + }, + "description": "Get a learning object's date-related information, including due date, availability dates,\noverride status, and a paginated list of all assignment overrides for the item.\n\nNote: this API is still under development and will not function until the feature is enabled." + }, + "response": [] + }, + { + "name": "Get a learning object's date information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Get a learning object's date-related information, including due date, availability dates,\noverride status, and a paginated list of all assignment overrides for the item.\n\nNote: this API is still under development and will not function until the feature is enabled." + }, + "response": [] + }, + { + "name": "Get a learning object's date information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Get a learning object's date-related information, including due date, availability dates,\noverride status, and a paginated list of all assignment overrides for the item.\n\nNote: this API is still under development and will not function until the feature is enabled." + }, + "response": [] + }, + { + "name": "Get a learning object's date information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:discussion_topic_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":discussion_topic_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "discussion_topic_id", + "description": "ID" + } + ] + }, + "description": "Get a learning object's date-related information, including due date, availability dates,\noverride status, and a paginated list of all assignment overrides for the item.\n\nNote: this API is still under development and will not function until the feature is enabled." + }, + "response": [] + }, + { + "name": "Get a learning object's date information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:page_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":page_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "page_id", + "description": "ID" + } + ] + }, + "description": "Get a learning object's date-related information, including due date, availability dates,\noverride status, and a paginated list of all assignment overrides for the item.\n\nNote: this API is still under development and will not function until the feature is enabled." + }, + "response": [] + }, + { + "name": "Get a learning object's date information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/files/:attachment_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "files", + ":attachment_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "attachment_id", + "description": "ID" + } + ] + }, + "description": "Get a learning object's date-related information, including due date, availability dates,\noverride status, and a paginated list of all assignment overrides for the item.\n\nNote: this API is still under development and will not function until the feature is enabled." + }, + "response": [] + }, + { + "name": "Update a learning object's date information", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Updates date-related information for learning objects, including due date, availability dates,\noverride status, and assignment overrides.\n\nReturns 204 No Content response code if successful.\n\nNote: this API is still under development and will not function until the feature is enabled.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "due_at", + "value": "", + "type": "text", + "description": "The learning object's due date. Not applicable for ungraded discussions, pages, and files." + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The learning object's unlock date. Must be before the due date if there is one." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The learning object's lock date. Must be after the due date if there is one." + }, + { + "key": "only_visible_to_overrides", + "value": "", + "type": "text", + "description": "Whether the learning object is only assigned to students who are targeted by an override." + }, + { + "key": "assignment_overrides", + "value": "", + "type": "text", + "description": "List of overrides to apply to the learning object. Overrides that already exist should include\nan ID and will be updated if needed. New overrides will be created for overrides in the list\nwithout an ID. Overrides not included in the list will be deleted. Providing an empty list\nwill delete all of the object's overrides. Keys for each override object can include: 'id',\n'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id',\n'noop_id', and 'unassign_item'." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a learning object's date information", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Updates date-related information for learning objects, including due date, availability dates,\noverride status, and assignment overrides.\n\nReturns 204 No Content response code if successful.\n\nNote: this API is still under development and will not function until the feature is enabled.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "due_at", + "value": "", + "type": "text", + "description": "The learning object's due date. Not applicable for ungraded discussions, pages, and files." + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The learning object's unlock date. Must be before the due date if there is one." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The learning object's lock date. Must be after the due date if there is one." + }, + { + "key": "only_visible_to_overrides", + "value": "", + "type": "text", + "description": "Whether the learning object is only assigned to students who are targeted by an override." + }, + { + "key": "assignment_overrides", + "value": "", + "type": "text", + "description": "List of overrides to apply to the learning object. Overrides that already exist should include\nan ID and will be updated if needed. New overrides will be created for overrides in the list\nwithout an ID. Overrides not included in the list will be deleted. Providing an empty list\nwill delete all of the object's overrides. Keys for each override object can include: 'id',\n'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id',\n'noop_id', and 'unassign_item'." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a learning object's date information", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/discussion_topics/:discussion_topic_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "discussion_topics", + ":discussion_topic_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "discussion_topic_id", + "description": "ID" + } + ] + }, + "description": "Updates date-related information for learning objects, including due date, availability dates,\noverride status, and assignment overrides.\n\nReturns 204 No Content response code if successful.\n\nNote: this API is still under development and will not function until the feature is enabled.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "due_at", + "value": "", + "type": "text", + "description": "The learning object's due date. Not applicable for ungraded discussions, pages, and files." + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The learning object's unlock date. Must be before the due date if there is one." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The learning object's lock date. Must be after the due date if there is one." + }, + { + "key": "only_visible_to_overrides", + "value": "", + "type": "text", + "description": "Whether the learning object is only assigned to students who are targeted by an override." + }, + { + "key": "assignment_overrides", + "value": "", + "type": "text", + "description": "List of overrides to apply to the learning object. Overrides that already exist should include\nan ID and will be updated if needed. New overrides will be created for overrides in the list\nwithout an ID. Overrides not included in the list will be deleted. Providing an empty list\nwill delete all of the object's overrides. Keys for each override object can include: 'id',\n'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id',\n'noop_id', and 'unassign_item'." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a learning object's date information", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:page_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":page_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "page_id", + "description": "ID" + } + ] + }, + "description": "Updates date-related information for learning objects, including due date, availability dates,\noverride status, and assignment overrides.\n\nReturns 204 No Content response code if successful.\n\nNote: this API is still under development and will not function until the feature is enabled.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "due_at", + "value": "", + "type": "text", + "description": "The learning object's due date. Not applicable for ungraded discussions, pages, and files." + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The learning object's unlock date. Must be before the due date if there is one." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The learning object's lock date. Must be after the due date if there is one." + }, + { + "key": "only_visible_to_overrides", + "value": "", + "type": "text", + "description": "Whether the learning object is only assigned to students who are targeted by an override." + }, + { + "key": "assignment_overrides", + "value": "", + "type": "text", + "description": "List of overrides to apply to the learning object. Overrides that already exist should include\nan ID and will be updated if needed. New overrides will be created for overrides in the list\nwithout an ID. Overrides not included in the list will be deleted. Providing an empty list\nwill delete all of the object's overrides. Keys for each override object can include: 'id',\n'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id',\n'noop_id', and 'unassign_item'." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a learning object's date information", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/files/:attachment_id/date_details", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "files", + ":attachment_id", + "date_details" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "attachment_id", + "description": "ID" + } + ] + }, + "description": "Updates date-related information for learning objects, including due date, availability dates,\noverride status, and assignment overrides.\n\nReturns 204 No Content response code if successful.\n\nNote: this API is still under development and will not function until the feature is enabled.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "due_at", + "value": "", + "type": "text", + "description": "The learning object's due date. Not applicable for ungraded discussions, pages, and files." + }, + { + "key": "unlock_at", + "value": "", + "type": "text", + "description": "The learning object's unlock date. Must be before the due date if there is one." + }, + { + "key": "lock_at", + "value": "", + "type": "text", + "description": "The learning object's lock date. Must be after the due date if there is one." + }, + { + "key": "only_visible_to_overrides", + "value": "", + "type": "text", + "description": "Whether the learning object is only assigned to students who are targeted by an override." + }, + { + "key": "assignment_overrides", + "value": "", + "type": "text", + "description": "List of overrides to apply to the learning object. Overrides that already exist should include\nan ID and will be updated if needed. New overrides will be created for overrides in the list\nwithout an ID. Overrides not included in the list will be deleted. Providing an empty list\nwill delete all of the object's overrides. Keys for each override object can include: 'id',\n'title', 'due_at', 'unlock_at', 'lock_at', 'student_ids', and 'course_section_id', 'course_id',\n'noop_id', and 'unassign_item'." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Line Items", + "item": [ + { + "name": "Create a Line Item", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new Line Item", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "scoreMaximum", + "value": "", + "type": "text", + "description": "The maximum score for the line item. Scores created for the Line Item may exceed this value." + }, + { + "key": "label", + "value": "", + "type": "text", + "description": "The label for the Line Item. If no resourceLinkId is specified this value will also be used\nas the name of the placeholder assignment." + }, + { + "key": "resourceId", + "value": "", + "type": "text", + "description": "A Tool Provider specified id for the Line Item. Multiple line items may\nshare the same resourceId within a given context." + }, + { + "key": "tag", + "value": "", + "type": "text", + "description": "A value used to qualify a line Item beyond its ids. Line Items may be queried\nby this value in the List endpoint. Multiple line items can share the same tag\nwithin a given context." + }, + { + "key": "resourceLinkId", + "value": "", + "type": "text", + "description": "The resource link id the Line Item should be attached to. This value should\nmatch the LTI id of the Canvas assignment associated with the tool." + }, + { + "key": "startDateTime", + "value": "", + "type": "text", + "description": "The ISO8601 date and time when the line item is made available. Corresponds\nto the assignment's unlock_at date." + }, + { + "key": "endDateTime", + "value": "", + "type": "text", + "description": "The ISO8601 date and time when the line item stops receiving submissions. Corresponds\nto the assignment's due_at date." + }, + { + "key": "https://canvas.instructure.com/lti/submission_type", + "value": "", + "type": "text", + "description": "(EXTENSION) - Optional block to set Assignment Submission Type when creating a new assignment is created.\ntype - 'none' or 'external_tool'::\nexternal_tool_url - Submission URL only used when type: 'external_tool'::" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a Line Item", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update new Line Item", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "scoreMaximum", + "value": "", + "type": "text", + "description": "The maximum score for the line item. Scores created for the Line Item may exceed this value." + }, + { + "key": "label", + "value": "", + "type": "text", + "description": "The label for the Line Item. If no resourceLinkId is specified this value will also be used\nas the name of the placeholder assignment." + }, + { + "key": "resourceId", + "value": "", + "type": "text", + "description": "A Tool Provider specified id for the Line Item. Multiple line items may\nshare the same resourceId within a given context." + }, + { + "key": "tag", + "value": "", + "type": "text", + "description": "A value used to qualify a line Item beyond its ids. Line Items may be queried\nby this value in the List endpoint. Multiple line items can share the same tag\nwithin a given context." + }, + { + "key": "startDateTime", + "value": "", + "type": "text", + "description": "The ISO8601 date and time when the line item is made available. Corresponds\nto the assignment's unlock_at date." + }, + { + "key": "endDateTime", + "value": "", + "type": "text", + "description": "The ISO8601 date and time when the line item stops receiving submissions. Corresponds\nto the assignment's due_at date." + } + ] + } + }, + "response": [] + }, + { + "name": "Show a Line Item", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Show existing Line Item" + }, + "response": [] + }, + { + "name": "List line Items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "List all Line Items for a course" + }, + "response": [] + }, + { + "name": "Delete a Line Item", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete an existing Line Item" + }, + "response": [] + } + ] + }, + { + "name": "LiveAssessments", + "item": [ + { + "name": "Create live assessment results", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/live_assessments/:assessment_id/results", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "live_assessments", + ":assessment_id", + "results" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assessment_id", + "description": "ID" + } + ] + }, + "description": "Creates live assessment results and adds them to a live assessment" + }, + "response": [] + }, + { + "name": "List live assessment results", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/live_assessments/:assessment_id/results", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "live_assessments", + ":assessment_id", + "results" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assessment_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of live assessment results" + }, + "response": [] + }, + { + "name": "Create or find a live assessment", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/live_assessments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "live_assessments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Creates or finds an existing live assessment with the given key and aligns it with\nthe linked outcome" + }, + "response": [] + }, + { + "name": "List live assessments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/live_assessments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "live_assessments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of live assessments." + }, + "response": [] + } + ] + }, + { + "name": "Logins", + "item": [ + { + "name": "List user logins", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/logins", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "logins" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Given a user ID, return a paginated list of that user's logins for the given account." + }, + "response": [] + }, + { + "name": "List user logins", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/logins", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "logins" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Given a user ID, return a paginated list of that user's logins for the given account." + }, + "response": [] + }, + { + "name": "Kickoff password recovery flow", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/reset_password", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "reset_password" + ], + "variable": [] + }, + "description": "Given a user email, generate a nonce and email it to the user" + }, + "response": [] + }, + { + "name": "Create a user login", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/logins", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "logins" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a new login for an existing user in the given account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user[id]", + "value": "", + "type": "text", + "description": "The ID of the user to create the login for." + }, + { + "key": "login[unique_id]", + "value": "", + "type": "text", + "description": "The unique ID for the new login." + }, + { + "key": "login[password]", + "value": "", + "type": "text", + "description": "The new login's password." + }, + { + "key": "login[sis_user_id]", + "value": "", + "type": "text", + "description": "SIS ID for the login. To set this parameter, the caller must be able to\nmanage SIS permissions on the account." + }, + { + "key": "login[integration_id]", + "value": "", + "type": "text", + "description": "Integration ID for the login. To set this parameter, the caller must be able to\nmanage SIS permissions on the account. The Integration ID is a secondary\nidentifier useful for more complex SIS integrations." + }, + { + "key": "login[authentication_provider_id]", + "value": "", + "type": "text", + "description": "The authentication provider this login is associated with. Logins\nassociated with a specific provider can only be used with that provider.\nLegacy providers (LDAP, CAS, SAML) will search for logins associated with\nthem, or unassociated logins. New providers will only search for logins\nexplicitly associated with them. This can be the integer ID of the\nprovider, or the type of the provider (in which case, it will find the\nfirst matching provider)." + }, + { + "key": "login[declared_user_type]", + "value": "", + "type": "text", + "description": "The declared intention of the user type. This can be set, but does\nnot change any Canvas functionality with respect to their access.\nA user can still be a teacher, admin, student, etc. in any particular\ncontext without regard to this setting. This can be used for\nadministrative purposes for integrations to be able to more easily\nidentify why the user was created.\nValid values are:\n * administrative\n * observer\n * staff\n * student\n * student_other\n * teacher" + }, + { + "key": "user[existing_user_id]", + "value": "", + "type": "text", + "description": "A Canvas User ID to identify a user in a trusted account (alternative to `id`,\n`existing_sis_user_id`, or `existing_integration_id`). This parameter is\nnot available in OSS Canvas." + }, + { + "key": "user[existing_integration_id]", + "value": "", + "type": "text", + "description": "An Integration ID to identify a user in a trusted account (alternative to `id`,\n`existing_user_id`, or `existing_sis_user_id`). This parameter is not\navailable in OSS Canvas." + }, + { + "key": "user[existing_sis_user_id]", + "value": "", + "type": "text", + "description": "An SIS User ID to identify a user in a trusted account (alternative to `id`,\n`existing_integration_id`, or `existing_user_id`). This parameter is not\navailable in OSS Canvas." + }, + { + "key": "user[trusted_account]", + "value": "", + "type": "text", + "description": "The domain of the account to search for the user. This field is required when\nidentifying a user in a trusted account. This parameter is not available in OSS\nCanvas." + } + ] + } + }, + "response": [] + }, + { + "name": "Edit a user login", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/logins/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "logins", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing login for a user in the given account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "login[unique_id]", + "value": "", + "type": "text", + "description": "The new unique ID for the login." + }, + { + "key": "login[password]", + "value": "", + "type": "text", + "description": "The new password for the login. Can only be set by an admin user if admins\nare allowed to change passwords for the account." + }, + { + "key": "login[sis_user_id]", + "value": "", + "type": "text", + "description": "SIS ID for the login. To set this parameter, the caller must be able to\nmanage SIS permissions on the account." + }, + { + "key": "login[integration_id]", + "value": "", + "type": "text", + "description": "Integration ID for the login. To set this parameter, the caller must be able to\nmanage SIS permissions on the account. The Integration ID is a secondary\nidentifier useful for more complex SIS integrations." + }, + { + "key": "login[authentication_provider_id]", + "value": "", + "type": "text", + "description": "The authentication provider this login is associated with. Logins\nassociated with a specific provider can only be used with that provider.\nLegacy providers (LDAP, CAS, SAML) will search for logins associated with\nthem, or unassociated logins. New providers will only search for logins\nexplicitly associated with them. This can be the integer ID of the\nprovider, or the type of the provider (in which case, it will find the\nfirst matching provider)." + }, + { + "key": "login[workflow_state]", + "value": "", + "type": "text", + "description": "Used to suspend or re-activate a login." + }, + { + "key": "login[declared_user_type]", + "value": "", + "type": "text", + "description": "The declared intention of the user type. This can be set, but does\nnot change any Canvas functionality with respect to their access.\nA user can still be a teacher, admin, student, etc. in any particular\ncontext without regard to this setting. This can be used for\nadministrative purposes for integrations to be able to more easily\nidentify why the user was created.\nValid values are:\n * administrative\n * observer\n * staff\n * student\n * student_other\n * teacher" + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a user login", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/logins/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "logins", + ":id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete an existing login." + }, + "response": [] + } + ] + }, + { + "name": "LTI Resource Links", + "item": [ + { + "name": "List LTI Resource Links", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/lti_resource_links", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "lti_resource_links" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns all Resource Links in the specified course. This includes links\nthat are associated with Assignments, Module Items, Collaborations, and\nthat are embedded in rich content. This endpoint is paginated, and will\nreturn 50 links per page by default.\nLinks are sorted by the order in which they were created." + }, + "response": [] + }, + { + "name": "Show an LTI Resource Link", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/lti_resource_links/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "lti_resource_links", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Return details about the specified resource link. The ID can be in the standard\nCanvas format (\"1\"), or in these special formats:\n\n- resource_link_uuid:<uuid> - Find the resource link by its resource_link_uuid\n- lookup_uuid:<uuid> - Find the resource link by its lookup_uuid" + }, + "response": [] + }, + { + "name": "Update an LTI Resource Link", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/lti_resource_links/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "lti_resource_links", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update the specified resource link with the provided parameters", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "url", + "value": "", + "type": "text", + "description": "The launch URL for this resource link.\nCaution! Updating this to a URL that doesn't match the tool could result in errors when launching this link!" + }, + { + "key": "custom", + "value": "", + "type": "text", + "description": "Custom parameters to be sent to the tool when launching this link.\nCaution! Changing these from what the tool provided could result in errors if the tool doesn't see what it's expecting." + }, + { + "key": "include_deleted", + "value": "", + "type": "text", + "description": "Include deleted resource links in search. Default is false." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Media Objects", + "item": [ + { + "name": "List media tracks for a Media Object or Attachment", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_objects/:media_object_id/media_tracks", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_objects", + ":media_object_id", + "media_tracks" + ], + "variable": [ + { + "key": "media_object_id", + "description": "ID" + } + ] + }, + "description": "List the media tracks associated with a media object or attachment" + }, + "response": [] + }, + { + "name": "List media tracks for a Media Object or Attachment", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_attachments/:attachment_id/media_tracks", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_attachments", + ":attachment_id", + "media_tracks" + ], + "variable": [ + { + "key": "attachment_id", + "description": "ID" + } + ] + }, + "description": "List the media tracks associated with a media object or attachment" + }, + "response": [] + }, + { + "name": "Update Media Tracks", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_objects/:media_object_id/media_tracks", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_objects", + ":media_object_id", + "media_tracks" + ], + "variable": [ + { + "key": "media_object_id", + "description": "ID" + } + ] + }, + "description": "Replace the media tracks associated with a media object or attachment with\nthe array of tracks provided in the body.\nUpdate will\ndelete any existing tracks not listed,\nleave untouched any tracks with no content field,\nand update or create tracks with a content field.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "include", + "value": "", + "type": "text", + "description": "By default, an update returns id, locale, kind, media_object_id, and user_id for each of the\nresult MediaTracks. Use include[] to\nadd additional fields. For example include[]=content" + } + ] + } + }, + "response": [] + }, + { + "name": "Update Media Tracks", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_attachments/:attachment_id/media_tracks", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_attachments", + ":attachment_id", + "media_tracks" + ], + "variable": [ + { + "key": "attachment_id", + "description": "ID" + } + ] + }, + "description": "Replace the media tracks associated with a media object or attachment with\nthe array of tracks provided in the body.\nUpdate will\ndelete any existing tracks not listed,\nleave untouched any tracks with no content field,\nand update or create tracks with a content field.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "include", + "value": "", + "type": "text", + "description": "By default, an update returns id, locale, kind, media_object_id, and user_id for each of the\nresult MediaTracks. Use include[] to\nadd additional fields. For example include[]=content" + } + ] + } + }, + "response": [] + }, + { + "name": "List Media Objects", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_objects", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_objects" + ], + "variable": [] + }, + "description": "Returns media objects created by the user making the request. When\nusing the second version, returns media objects associated with\nthe given course." + }, + "response": [] + }, + { + "name": "List Media Objects", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/media_objects", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "media_objects" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns media objects created by the user making the request. When\nusing the second version, returns media objects associated with\nthe given course." + }, + "response": [] + }, + { + "name": "List Media Objects", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/media_objects", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "media_objects" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns media objects created by the user making the request. When\nusing the second version, returns media objects associated with\nthe given course." + }, + "response": [] + }, + { + "name": "List Media Objects", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_attachments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_attachments" + ], + "variable": [] + }, + "description": "Returns media objects created by the user making the request. When\nusing the second version, returns media objects associated with\nthe given course." + }, + "response": [] + }, + { + "name": "List Media Objects", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/media_attachments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "media_attachments" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns media objects created by the user making the request. When\nusing the second version, returns media objects associated with\nthe given course." + }, + "response": [] + }, + { + "name": "List Media Objects", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/media_attachments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "media_attachments" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns media objects created by the user making the request. When\nusing the second version, returns media objects associated with\nthe given course." + }, + "response": [] + }, + { + "name": "Update Media Object", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_objects/:media_object_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_objects", + ":media_object_id" + ], + "variable": [ + { + "key": "media_object_id", + "description": "ID" + } + ] + }, + "description": "", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user_entered_title", + "value": "", + "type": "text", + "description": "The new title." + } + ] + } + }, + "response": [] + }, + { + "name": "Update Media Object", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/media_attachments/:attachment_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "media_attachments", + ":attachment_id" + ], + "variable": [ + { + "key": "attachment_id", + "description": "ID" + } + ] + }, + "description": "", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user_entered_title", + "value": "", + "type": "text", + "description": "The new title." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Moderated Grading", + "item": [ + { + "name": "List students selected for moderation", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/moderated_students", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "moderated_students" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of students selected for moderation" + }, + "response": [] + }, + { + "name": "Select students for moderation", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/moderated_students", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "moderated_students" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Returns an array of users that were selected for moderation", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "student_ids", + "value": "", + "type": "text", + "description": "user ids for students to select for moderation" + } + ] + } + }, + "response": [] + }, + { + "name": "Bulk select provisional grades", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/provisional_grades/bulk_select", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "provisional_grades", + "bulk_select" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Choose which provisional grades will be received by associated students for an assignment.\nThe caller must be the final grader for the assignment or an admin with :select_final_grade rights." + }, + "response": [] + }, + { + "name": "Show provisional grade status for a student", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/provisional_grades/status", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "provisional_grades", + "status" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Tell whether the student's submission needs one or more provisional grades." + }, + "response": [] + }, + { + "name": "Select provisional grade", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/provisional_grades/:provisional_grade_id/select", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "provisional_grades", + ":provisional_grade_id", + "select" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "provisional_grade_id", + "description": "ID" + } + ] + }, + "description": "Choose which provisional grade the student should receive for a submission.\nThe caller must be the final grader for the assignment or an admin with :select_final_grade rights." + }, + "response": [] + }, + { + "name": "Publish provisional grades for an assignment", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/provisional_grades/publish", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "provisional_grades", + "publish" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Publish the selected provisional grade for all submissions to an assignment.\nUse the \"Select provisional grade\" endpoint to choose which provisional grade to publish\nfor a particular submission.\n\nStudents not in the moderation set will have their one and only provisional grade published.\n\nWARNING: This is irreversible. This will overwrite existing grades in the gradebook." + }, + "response": [] + }, + { + "name": "Show provisional grade status for a student", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/anonymous_provisional_grades/status", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "anonymous_provisional_grades", + "status" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Determine whether or not the student's submission needs one or more provisional grades." + }, + "response": [] + } + ] + }, + { + "name": "Modules", + "item": [ + { + "name": "List modules", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the modules in a course" + }, + "response": [] + }, + { + "name": "Show module", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get information about a single module" + }, + "response": [] + }, + { + "name": "Create a module", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create and return a new module", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "module[name]", + "value": "", + "type": "text", + "description": "The name of the module" + }, + { + "key": "module[unlock_at]", + "value": "", + "type": "text", + "description": "The date the module will unlock" + }, + { + "key": "module[position]", + "value": "", + "type": "text", + "description": "The position of this module in the course (1-based)" + }, + { + "key": "module[require_sequential_progress]", + "value": "", + "type": "text", + "description": "Whether module items must be unlocked in order" + }, + { + "key": "module[prerequisite_module_ids]", + "value": "", + "type": "text", + "description": "IDs of Modules that must be completed before this one is unlocked.\nPrerequisite modules must precede this module (i.e. have a lower position\nvalue), otherwise they will be ignored" + }, + { + "key": "module[publish_final_grade]", + "value": "", + "type": "text", + "description": "Whether to publish the student's final grade for the course upon\ncompletion of this module." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a module", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update and return an existing module", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "module[name]", + "value": "", + "type": "text", + "description": "The name of the module" + }, + { + "key": "module[unlock_at]", + "value": "", + "type": "text", + "description": "The date the module will unlock" + }, + { + "key": "module[position]", + "value": "", + "type": "text", + "description": "The position of the module in the course (1-based)" + }, + { + "key": "module[require_sequential_progress]", + "value": "", + "type": "text", + "description": "Whether module items must be unlocked in order" + }, + { + "key": "module[prerequisite_module_ids]", + "value": "", + "type": "text", + "description": "IDs of Modules that must be completed before this one is unlocked\nPrerequisite modules must precede this module (i.e. have a lower position\nvalue), otherwise they will be ignored" + }, + { + "key": "module[publish_final_grade]", + "value": "", + "type": "text", + "description": "Whether to publish the student's final grade for the course upon\ncompletion of this module." + }, + { + "key": "module[published]", + "value": "", + "type": "text", + "description": "Whether the module is published and visible to students" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete module", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a module" + }, + "response": [] + }, + { + "name": "Re-lock module progressions", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:id/relock", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":id", + "relock" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Resets module progressions to their default locked state and\nrecalculates them based on the current requirements.\n\nAdding progression requirements to an active course will not lock students\nout of modules they have already unlocked unless this action is called." + }, + "response": [] + }, + { + "name": "List module items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the items in a module" + }, + "response": [] + }, + { + "name": "Show module item", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get information about a single module item" + }, + "response": [] + }, + { + "name": "Create a module item", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + } + ] + }, + "description": "Create and return a new module item", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "module_item[title]", + "value": "", + "type": "text", + "description": "The name of the module item and associated content" + }, + { + "key": "module_item[type]", + "value": "", + "type": "text", + "description": "The type of content linked to the item" + }, + { + "key": "module_item[content_id]", + "value": "", + "type": "text", + "description": "The id of the content to link to the module item. Required, except for\n'ExternalUrl', 'Page', and 'SubHeader' types." + }, + { + "key": "module_item[position]", + "value": "", + "type": "text", + "description": "The position of this item in the module (1-based)." + }, + { + "key": "module_item[indent]", + "value": "", + "type": "text", + "description": "0-based indent level; module items may be indented to show a hierarchy" + }, + { + "key": "module_item[page_url]", + "value": "", + "type": "text", + "description": "Suffix for the linked wiki page (e.g. 'front-page'). Required for 'Page'\ntype." + }, + { + "key": "module_item[external_url]", + "value": "", + "type": "text", + "description": "External url that the item points to. [Required for 'ExternalUrl' and\n'ExternalTool' types." + }, + { + "key": "module_item[new_tab]", + "value": "", + "type": "text", + "description": "Whether the external tool opens in a new tab. Only applies to\n'ExternalTool' type." + }, + { + "key": "module_item[completion_requirement][type]", + "value": "", + "type": "text", + "description": "Completion requirement for this module item.\n\"must_view\": Applies to all item types\n\"must_contribute\": Only applies to \"Assignment\", \"Discussion\", and \"Page\" types\n\"must_submit\", \"min_score\": Only apply to \"Assignment\" and \"Quiz\" types\n\"must_mark_done\": Only applies to \"Assignment\" and \"Page\" types\nInapplicable types will be ignored" + }, + { + "key": "module_item[completion_requirement][min_score]", + "value": "", + "type": "text", + "description": "Minimum score required to complete. Required for completion_requirement\ntype 'min_score'." + }, + { + "key": "module_item[iframe][width]", + "value": "", + "type": "text", + "description": "Width of the ExternalTool on launch" + }, + { + "key": "module_item[iframe][height]", + "value": "", + "type": "text", + "description": "Height of the ExternalTool on launch" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a module item", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update and return an existing module item", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "module_item[title]", + "value": "", + "type": "text", + "description": "The name of the module item" + }, + { + "key": "module_item[position]", + "value": "", + "type": "text", + "description": "The position of this item in the module (1-based)" + }, + { + "key": "module_item[indent]", + "value": "", + "type": "text", + "description": "0-based indent level; module items may be indented to show a hierarchy" + }, + { + "key": "module_item[external_url]", + "value": "", + "type": "text", + "description": "External url that the item points to. Only applies to 'ExternalUrl' type." + }, + { + "key": "module_item[new_tab]", + "value": "", + "type": "text", + "description": "Whether the external tool opens in a new tab. Only applies to\n'ExternalTool' type." + }, + { + "key": "module_item[completion_requirement][type]", + "value": "", + "type": "text", + "description": "Completion requirement for this module item.\n\"must_view\": Applies to all item types\n\"must_contribute\": Only applies to \"Assignment\", \"Discussion\", and \"Page\" types\n\"must_submit\", \"min_score\": Only apply to \"Assignment\" and \"Quiz\" types\n\"must_mark_done\": Only applies to \"Assignment\" and \"Page\" types\nInapplicable types will be ignored" + }, + { + "key": "module_item[completion_requirement][min_score]", + "value": "", + "type": "text", + "description": "Minimum score required to complete, Required for completion_requirement\ntype 'min_score'." + }, + { + "key": "module_item[published]", + "value": "", + "type": "text", + "description": "Whether the module item is published and visible to students." + }, + { + "key": "module_item[module_id]", + "value": "", + "type": "text", + "description": "Move this item to another module by specifying the target module id here.\nThe target module must be in the same course." + } + ] + } + }, + "response": [] + }, + { + "name": "Select a mastery path", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items/:id/select_mastery_path", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items", + ":id", + "select_mastery_path" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Select a mastery path when module item includes several possible paths.\nRequires Mastery Paths feature to be enabled. Returns a compound document\nwith the assignments included in the given path and any module items\nrelated to those assignments", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "assignment_set_id", + "value": "", + "type": "text", + "description": "Assignment set chosen, as specified in the mastery_paths portion of the\ncontext module item response" + }, + { + "key": "student_id", + "value": "", + "type": "text", + "description": "Which student the selection applies to. If not specified, current user is\nimplied." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete module item", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a module item" + }, + "response": [] + }, + { + "name": "Mark module item as done/not done", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items/:id/done", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items", + ":id", + "done" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Mark a module item as done/not done. Use HTTP method PUT to mark as done,\nand DELETE to mark as not done." + }, + "response": [] + }, + { + "name": "Get module item sequence", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/module_item_sequence", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "module_item_sequence" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Given an asset in a course, find the ModuleItem it belongs to, the previous and next Module Items\nin the course sequence, and also any applicable mastery path rules" + }, + "response": [] + }, + { + "name": "Mark module item read", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:module_id/items/:id/mark_read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":module_id", + "items", + ":id", + "mark_read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "module_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Fulfills \"must view\" requirement for a module item. It is generally not necessary to do this explicitly,\nbut it is provided for applications that need to access external content directly (bypassing the html_url\nredirect that normally allows Canvas to fulfill \"must view\" requirements).\n\nThis endpoint cannot be used to complete requirements on locked or unpublished module items." + }, + "response": [] + }, + { + "name": "List a module's overrides", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:context_module_id/assignment_overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":context_module_id", + "assignment_overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "context_module_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of AssignmentOverrides that apply to the ContextModule.\n\nNote: this API is still under development and will not function until the feature is enabled." + }, + "response": [] + }, + { + "name": "Update a module's overrides", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/modules/:context_module_id/assignment_overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "modules", + ":context_module_id", + "assignment_overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "context_module_id", + "description": "ID" + } + ] + }, + "description": "Accepts a list of overrides and applies them to the ContextModule. Returns 204 No Content response\ncode if successful.\n\nNote: this API is still under development and will not function until the feature is enabled.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "overrides", + "value": "", + "type": "text", + "description": "List of overrides to apply to the module. Overrides that already exist should include an ID\nand will be updated if needed. New overrides will be created for overrides in the list\nwithout an ID. Overrides not included in the list will be deleted. Providing an empty list\nwill delete all of the module's overrides. Keys for each override object can include: 'id',\n'title', 'student_ids', and 'course_section_id'." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Names and Role", + "item": [ + { + "name": "List Course Memberships", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/names_and_roles", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "names_and_roles" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Return active NamesAndRoleMemberships in the given course." + }, + "response": [] + }, + { + "name": "List Group Memberships", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/groups/:group_id/names_and_roles", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "groups", + ":group_id", + "names_and_roles" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Return active NamesAndRoleMemberships in the given group." + }, + "response": [] + } + ] + }, + { + "name": "New Quiz Items", + "item": [ + { + "name": "Get a quiz item", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id/items/:item_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id", + "items", + ":item_id" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "The id of the assignment associated with the quiz." + }, + { + "key": "item_id", + "description": "The id of the item associated with the quiz." + } + ] + }, + "description": "Get details about a single item in a new quiz." + }, + "response": [] + }, + { + "name": "List quiz items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id/items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id", + "items" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "no description" + } + ] + }, + "description": "Get a list of items in a new quiz." + }, + "response": [] + }, + { + "name": "Create a quiz item", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id/items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id", + "items" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "The id of the assignment associated with the quiz." + } + ] + }, + "description": "Create a quiz item in a new quiz. Only +QuestionItem+ types can be created.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "item[position]", + "value": "", + "type": "text", + "description": "The position of the item within the quiz." + }, + { + "key": "item[points_possible]", + "value": "", + "type": "text", + "description": "The number of points available to score on this item. Must be positive." + }, + { + "key": "item[entry_type]", + "value": "", + "type": "text", + "description": "The type of the item." + }, + { + "key": "item[entry][title]", + "value": "", + "type": "text", + "description": "The question title." + }, + { + "key": "item[entry][item_body]", + "value": "", + "type": "text", + "description": "The question stem (rich content)." + }, + { + "key": "item[entry][calculator_type]", + "value": "", + "type": "text", + "description": "Type of calculator the user will have access to during the question." + }, + { + "key": "item[entry][feedback][neutral]", + "value": "", + "type": "text", + "description": "General feedback to show regardless of answer (rich content)." + }, + { + "key": "item[entry][feedback][correct]", + "value": "", + "type": "text", + "description": "Feedback to show if the question is answered correctly (rich content)." + }, + { + "key": "item[entry][feedback][incorrect]", + "value": "", + "type": "text", + "description": "Feedback to show if the question is answered incorrectly (rich content)." + }, + { + "key": "item[entry][interaction_type_slug]", + "value": "", + "type": "text", + "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." + }, + { + "key": "item[entry][interaction_data]", + "value": "", + "type": "text", + "description": "An object that contains the question data. See {Appendix: Question Types} for more info about this field." + }, + { + "key": "item[entry][properties]", + "value": "", + "type": "text", + "description": "An object that contains additional properties for some question types. See {Appendix: Question Types} for more info about this field." + }, + { + "key": "item[entry][scoring_data]", + "value": "", + "type": "text", + "description": "An object that describes how to score the question. See {Appendix: Question Types} for more info about this field." + }, + { + "key": "item[entry][answer_feedback]", + "value": "", + "type": "text", + "description": "Feedback provided for each answer (rich content, only available on 'choice' question types)." + }, + { + "key": "item[entry][scoring_algorithm]", + "value": "", + "type": "text", + "description": "The algorithm used to score the question. See {Appendix: Question Types} for more info about this field." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a quiz item", + "request": { + "method": "PATCH", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id/items/:item_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id", + "items", + ":item_id" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "The id of the assignment associated with the quiz." + }, + { + "key": "item_id", + "description": "The id of the item associated with the quiz." + } + ] + }, + "description": "Update a single quiz item in a new quiz. Only +QuestionItem+ types can be updated.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "item[position]", + "value": "", + "type": "text", + "description": "The position of the item within the quiz." + }, + { + "key": "item[points_possible]", + "value": "", + "type": "text", + "description": "The number of points available to score on this item. Must be positive." + }, + { + "key": "item[entry_type]", + "value": "", + "type": "text", + "description": "The type of the item." + }, + { + "key": "item[entry][title]", + "value": "", + "type": "text", + "description": "The question title." + }, + { + "key": "item[entry][item_body]", + "value": "", + "type": "text", + "description": "The question stem (rich content)." + }, + { + "key": "item[entry][calculator_type]", + "value": "", + "type": "text", + "description": "Type of calculator the user will have access to during the question." + }, + { + "key": "item[entry][feedback][neutral]", + "value": "", + "type": "text", + "description": "General feedback to show regardless of answer (rich content)." + }, + { + "key": "item[entry][feedback][correct]", + "value": "", + "type": "text", + "description": "Feedback to show if the question is answered correctly (rich content)." + }, + { + "key": "item[entry][feedback][incorrect]", + "value": "", + "type": "text", + "description": "Feedback to show if the question is answered incorrectly (rich content)." + }, + { + "key": "item[entry][interaction_type_slug]", + "value": "", + "type": "text", + "description": "The type of question. One of 'multi-answer', 'matching', 'categorization', 'file-upload', 'formula', 'ordering', 'rich-fill-blank',\n'hot-spot', 'choice', 'numeric', 'true-false', or 'essay'. See {Appendix: Question Types} for more info about each type." + }, + { + "key": "item[entry][interaction_data]", + "value": "", + "type": "text", + "description": "An object that contains the question data. See {Appendix: Question Types} for more info about this field." + }, + { + "key": "item[entry][properties]", + "value": "", + "type": "text", + "description": "An object that contains additional properties for some question types. See {Appendix: Question Types} for more info about this field." + }, + { + "key": "item[entry][scoring_data]", + "value": "", + "type": "text", + "description": "An object that describes how to score the question. See {Appendix: Question Types} for more info about this field." + }, + { + "key": "item[entry][answer_feedback]", + "value": "", + "type": "text", + "description": "Feedback provided for each answer (rich content, only available on 'choice' question types)." + }, + { + "key": "item[entry][scoring_algorithm]", + "value": "", + "type": "text", + "description": "The algorithm used to score the question. See {Appendix: Question Types} for more info about this field." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a quiz item", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id/items/:item_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id", + "items", + ":item_id" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "The id of the assignment associated with the quiz." + }, + { + "key": "item_id", + "description": "The id of the item associated with the quiz." + } + ] + }, + "description": "Delete a single quiz item in a new quiz." + }, + "response": [] + }, + { + "name": "Get items media_upload_url", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id/items/media_upload_url", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id", + "items", + "media_upload_url" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "no description" + } + ] + }, + "description": "Get a url for uploading media for use in hot-spot question types. See the hot-spot\nquestion type in the {Appendix: Question Types} for more details about using this endpoint." + }, + "response": [] + } + ] + }, + { + "name": "New Quizzes", + "item": [ + { + "name": "Get a new quiz", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "The id of the assignment associated with the quiz." + } + ] + }, + "description": "Get details about a single new quiz." + }, + "response": [] + }, + { + "name": "List new quizzes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + } + ] + }, + "description": "Get a list of new quizzes." + }, + "response": [] + }, + { + "name": "Create a new quiz", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + } + ] + }, + "description": "Create a new quiz for the course.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz[title]", + "value": "", + "type": "text", + "description": "The title of the quiz." + }, + { + "key": "quiz[assignment_group_id]", + "value": "", + "type": "text", + "description": "The ID of the quiz's assignment group." + }, + { + "key": "quiz[points_possible]", + "value": "", + "type": "text", + "description": "The total point value given to the quiz. Must be positive." + }, + { + "key": "quiz[due_at]", + "value": "", + "type": "text", + "description": "When the quiz is due." + }, + { + "key": "quiz[lock_at]", + "value": "", + "type": "text", + "description": "When to lock the quiz." + }, + { + "key": "quiz[unlock_at]", + "value": "", + "type": "text", + "description": "When to unlock the quiz." + }, + { + "key": "quiz[grading_type]", + "value": "", + "type": "text", + "description": "The type of grading the assignment receives." + }, + { + "key": "quiz[instructions]", + "value": "", + "type": "text", + "description": "Instructions for the quiz." + }, + { + "key": "quiz[quiz_settings][calculator_type]", + "value": "", + "type": "text", + "description": "Specifies which type of Calculator a student can use during Quiz taking.\nShould be null if no calculator is allowed." + }, + { + "key": "quiz[quiz_settings][filter_ip_address]", + "value": "", + "type": "text", + "description": "Whether IP filtering is needed. Must be true for filters to take effect." + }, + { + "key": "quiz[quiz_settings][filters][ips]", + "value": "", + "type": "text", + "description": "Specifies ranges of IP addresses where the quiz can be taken from. Each range is an array like\n[start address, end address], or null if there's no restriction." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][multiple_attempts_enabled]", + "value": "", + "type": "text", + "description": "Whether multiple attempts for this quiz is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][attempt_limit]", + "value": "", + "type": "text", + "description": "Whether there is an attempt limit. Only set if multiple_attempts_enabled is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][max_attempts]", + "value": "", + "type": "text", + "description": "The allowed attempts a student can take. If null, the allowed attempts are unlimited. Only used if\nattempt_limit is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][score_to_keep]", + "value": "", + "type": "text", + "description": "Whichever score to keep for the attempts. Only used if multiple_attempts_enabled is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][cooling_period]", + "value": "", + "type": "text", + "description": "Whether there is a cooling (waiting) period. Only used if multiple_attempts_enabled is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][cooling_period_seconds]", + "value": "", + "type": "text", + "description": "Required waiting period in seconds between attempts. If null, there is no required time. Only used if\ncooling_period is true" + }, + { + "key": "quiz[quiz_settings][one_at_a_time_type]", + "value": "", + "type": "text", + "description": "Specifies the settings for questions to display when quiz taking." + }, + { + "key": "quiz[quiz_settings][allow_backtracking]", + "value": "", + "type": "text", + "description": "Whether to allow user to return to previous questions when 'one_at_a_time_type' is set to 'question'." + }, + { + "key": "quiz[quiz_settings][results_view_settings][result_view_restricted]", + "value": "", + "type": "text", + "description": "Whether the results view is restricted for students. Must be true for any student restrictions to be set" + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_points_awarded]", + "value": "", + "type": "text", + "description": "Whether points are shown. Must set result_view_restricted to true to use this parameter." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_points_possible]", + "value": "", + "type": "text", + "description": "Whether points possible is shown. Must set result_view_restricted to true to use this parameter." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_items]", + "value": "", + "type": "text", + "description": "Whether to show items in the results view. Must be true for any items restrictions to be set" + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_response]", + "value": "", + "type": "text", + "description": "Whether item response is shown. Only set if display_items is true. Must be true for\ndisplay_item_response_correctness to be set." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_response_correctness]", + "value": "", + "type": "text", + "description": "Whether item correctness is shown. Only set if display_item_response is true. Must be true for\ndisplay_item_correct_answer to be set." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_correct_answer]", + "value": "", + "type": "text", + "description": "Whether correct answer is shown. Only set if display_item_response_correctness is true" + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_feedback]", + "value": "", + "type": "text", + "description": "Whether Item feedback is shown. Only set if display_items is true" + }, + { + "key": "quiz[quiz_settings][shuffle_answers]", + "value": "", + "type": "text", + "description": "Whether answers should be shuffled for students." + }, + { + "key": "quiz[quiz_settings][shuffle_questions]", + "value": "", + "type": "text", + "description": "Whether questions should be shuffled for students." + }, + { + "key": "quiz[quiz_settings][require_student_access_code]", + "value": "", + "type": "text", + "description": "Whether an access code is needed to take the quiz." + }, + { + "key": "quiz[quiz_settings][student_access_code]", + "value": "", + "type": "text", + "description": "Access code to restrict quiz access. Should be null if no restriction." + }, + { + "key": "quiz[quiz_settings][has_time_limit]", + "value": "", + "type": "text", + "description": "Whether there is a time limit for the quiz." + }, + { + "key": "quiz[quiz_settings][session_time_limit_in_seconds]", + "value": "", + "type": "text", + "description": "Limit the time a student can work on the quiz. Should be null if no restriction." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a single quiz", + "request": { + "method": "PATCH", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "The id of the assignment associated with the quiz." + } + ] + }, + "description": "Update a single quiz for the course.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz[title]", + "value": "", + "type": "text", + "description": "The title of the quiz." + }, + { + "key": "quiz[assignment_group_id]", + "value": "", + "type": "text", + "description": "The ID of the quiz's assignment group." + }, + { + "key": "quiz[points_possible]", + "value": "", + "type": "text", + "description": "The total point value given to the quiz. Must be positive." + }, + { + "key": "quiz[due_at]", + "value": "", + "type": "text", + "description": "When the quiz is due." + }, + { + "key": "quiz[lock_at]", + "value": "", + "type": "text", + "description": "When to lock the quiz." + }, + { + "key": "quiz[unlock_at]", + "value": "", + "type": "text", + "description": "When to unlock the quiz." + }, + { + "key": "quiz[grading_type]", + "value": "", + "type": "text", + "description": "The type of grading the assignment receives." + }, + { + "key": "quiz[instructions]", + "value": "", + "type": "text", + "description": "Instructions for the quiz." + }, + { + "key": "quiz[quiz_settings][calculator_type]", + "value": "", + "type": "text", + "description": "Specifies which type of Calculator a student can use during Quiz taking.\nShould be null if no calculator is allowed." + }, + { + "key": "quiz[quiz_settings][filter_ip_address]", + "value": "", + "type": "text", + "description": "Whether IP filtering is needed. Must be true for filters to take effect." + }, + { + "key": "quiz[quiz_settings][filters][ips]", + "value": "", + "type": "text", + "description": "Specifies ranges of IP addresses where the quiz can be taken from. Each range is an array like\n[start address, end address], or null if there's no restriction.\nSpecifies the range of IP addresses where the quiz can be taken from. Should be null if there's no restriction." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][multiple_attempts_enabled]", + "value": "", + "type": "text", + "description": "Whether multiple attempts for this quiz is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][attempt_limit]", + "value": "", + "type": "text", + "description": "Whether there is an attempt limit. Only set if multiple_attempts_enabled is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][max_attempts]", + "value": "", + "type": "text", + "description": "The allowed attempts a student can take. If null, the allowed attempts are unlimited. Only used if\nattempt_limit is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][score_to_keep]", + "value": "", + "type": "text", + "description": "Whichever score to keep for the attempts. Only used if multiple_attempts_enabled is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][cooling_period]", + "value": "", + "type": "text", + "description": "Whether there is a cooling period. Only used if multiple_attempts_enabled is true." + }, + { + "key": "quiz[quiz_settings][multiple_attempts][cooling_period_seconds]", + "value": "", + "type": "text", + "description": "Required waiting period in seconds between attempts. If null, there is no required time. Only used if\ncooling_period is true." + }, + { + "key": "quiz[quiz_settings][one_at_a_time_type]", + "value": "", + "type": "text", + "description": "Specifies the settings for questions to display when quiz taking." + }, + { + "key": "quiz[quiz_settings][allow_backtracking]", + "value": "", + "type": "text", + "description": "Whether to allow user to return to previous questions when 'one_at_a_time_type' is set to 'question'." + }, + { + "key": "quiz[quiz_settings][results_view_settings][result_view_restricted]", + "value": "", + "type": "text", + "description": "Whether the results view is restricted for students." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_points_awarded]", + "value": "", + "type": "text", + "description": "Whether points are shown. Must set result_view_restricted to true to use this parameter." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_points_possible]", + "value": "", + "type": "text", + "description": "Whether points possible is shown. Must set result_view_restricted to true to use this parameter." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_items]", + "value": "", + "type": "text", + "description": "Whether to show items in the results view. Must be true for any items restrictions to be set." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_response]", + "value": "", + "type": "text", + "description": "Whether item response is shown. Only set if display_items is true. Must be true for\ndisplay_item_response_correctness to be set." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_response_correctness]", + "value": "", + "type": "text", + "description": "Whether item correctness is shown. Only set if display_item_response is true. Must be true for\ndisplay_item_correct_answer to be set." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_correct_answer]", + "value": "", + "type": "text", + "description": "Whether correct answer is shown. Only set if display_item_response_correctness is true." + }, + { + "key": "quiz[quiz_settings][results_view_settings][display_item_feedback]", + "value": "", + "type": "text", + "description": "Whether Item feedback is shown. Only set if display_items is true." + }, + { + "key": "quiz[quiz_settings][shuffle_answers]", + "value": "", + "type": "text", + "description": "Whether answers should be shuffled for students." + }, + { + "key": "quiz[quiz_settings][shuffle_questions]", + "value": "", + "type": "text", + "description": "Whether questions should be shuffled for students." + }, + { + "key": "quiz[quiz_settings][require_student_access_code]", + "value": "", + "type": "text", + "description": "Whether an access code is needed to take the quiz." + }, + { + "key": "quiz[quiz_settings][student_access_code]", + "value": "", + "type": "text", + "description": "Access code to restrict quiz access. Should be null if no restriction." + }, + { + "key": "quiz[quiz_settings][has_time_limit]", + "value": "", + "type": "text", + "description": "Whether there is a time limit for the quiz." + }, + { + "key": "quiz[quiz_settings][session_time_limit_in_seconds]", + "value": "", + "type": "text", + "description": "Limit the time a student can work on the quiz. Should be null if no restriction." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a new quiz", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/quiz/v1/courses/:course_id/quizzes/:assignment_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "quiz", + "v1", + "courses", + ":course_id", + "quizzes", + ":assignment_id" + ], + "variable": [ + { + "key": "course_id", + "description": "no description" + }, + { + "key": "assignment_id", + "description": "The id of the assignment associated with the quiz." + } + ] + }, + "description": "Delete a single new quiz." + }, + "response": [] + } + ] + }, + { + "name": "Notification Preferences", + "item": [ + { + "name": "List preferences", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels/:communication_channel_id/notification_preferences", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels", + ":communication_channel_id", + "notification_preferences" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "communication_channel_id", + "description": "ID" + } + ] + }, + "description": "Fetch all preferences for the given communication channel" + }, + "response": [] + }, + { + "name": "List preferences", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels/:type/:address/notification_preferences", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels", + ":type", + ":address", + "notification_preferences" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "type", + "description": "ID" + }, + { + "key": "address", + "description": "ID" + } + ] + }, + "description": "Fetch all preferences for the given communication channel" + }, + "response": [] + }, + { + "name": "List of preference categories", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels/:communication_channel_id/notification_preference_categories", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels", + ":communication_channel_id", + "notification_preference_categories" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "communication_channel_id", + "description": "ID" + } + ] + }, + "description": "Fetch all notification preference categories for the given communication channel" + }, + "response": [] + }, + { + "name": "Get a preference", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels/:communication_channel_id/notification_preferences/:notification", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels", + ":communication_channel_id", + "notification_preferences", + ":notification" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "communication_channel_id", + "description": "ID" + }, + { + "key": "notification", + "description": "ID" + } + ] + }, + "description": "Fetch the preference for the given notification for the given communication channel" + }, + "response": [] + }, + { + "name": "Get a preference", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/communication_channels/:type/:address/notification_preferences/:notification", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "communication_channels", + ":type", + ":address", + "notification_preferences", + ":notification" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "type", + "description": "ID" + }, + { + "key": "address", + "description": "ID" + }, + { + "key": "notification", + "description": "ID" + } + ] + }, + "description": "Fetch the preference for the given notification for the given communication channel" + }, + "response": [] + }, + { + "name": "Update a preference", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/communication_channels/:communication_channel_id/notification_preferences/:notification", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "communication_channels", + ":communication_channel_id", + "notification_preferences", + ":notification" + ], + "variable": [ + { + "key": "communication_channel_id", + "description": "ID" + }, + { + "key": "notification", + "description": "ID" + } + ] + }, + "description": "Change the preference for a single notification for a single communication channel", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "notification_preferences[frequency]", + "value": "", + "type": "text", + "description": "The desired frequency for this notification" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a preference", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/communication_channels/:type/:address/notification_preferences/:notification", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "communication_channels", + ":type", + ":address", + "notification_preferences", + ":notification" + ], + "variable": [ + { + "key": "type", + "description": "ID" + }, + { + "key": "address", + "description": "ID" + }, + { + "key": "notification", + "description": "ID" + } + ] + }, + "description": "Change the preference for a single notification for a single communication channel", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "notification_preferences[frequency]", + "value": "", + "type": "text", + "description": "The desired frequency for this notification" + } + ] + } + }, + "response": [] + }, + { + "name": "Update preferences by category", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/communication_channels/:communication_channel_id/notification_preference_categories/:category", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "communication_channels", + ":communication_channel_id", + "notification_preference_categories", + ":category" + ], + "variable": [ + { + "key": "communication_channel_id", + "description": "ID" + }, + { + "key": "category", + "description": "The name of the category. Must be parameterized (e.g. The category \"Course Content\" should be \"course_content\")" + } + ] + }, + "description": "Change the preferences for multiple notifications based on the category for a single communication channel", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "notification_preferences[frequency]", + "value": "", + "type": "text", + "description": "The desired frequency for each notification in the category" + } + ] + } + }, + "response": [] + }, + { + "name": "Update multiple preferences", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/communication_channels/:communication_channel_id/notification_preferences", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "communication_channels", + ":communication_channel_id", + "notification_preferences" + ], + "variable": [ + { + "key": "communication_channel_id", + "description": "ID" + } + ] + }, + "description": "Change the preferences for multiple notifications for a single communication channel at once", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "notification_preferences[<X>][frequency]", + "value": "", + "type": "text", + "description": "The desired frequency for <X> notification" + } + ] + } + }, + "response": [] + }, + { + "name": "Update multiple preferences", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/communication_channels/:type/:address/notification_preferences", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "communication_channels", + ":type", + ":address", + "notification_preferences" + ], + "variable": [ + { + "key": "type", + "description": "ID" + }, + { + "key": "address", + "description": "ID" + } + ] + }, + "description": "Change the preferences for multiple notifications for a single communication channel at once", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "notification_preferences[<X>][frequency]", + "value": "", + "type": "text", + "description": "The desired frequency for <X> notification" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Originality Reports", + "item": [ + { + "name": "Create an Originality Report", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id/submissions/:submission_id/originality_report", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "originality_report" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Create a new OriginalityReport for the specified file", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "originality_report[file_id]", + "value": "", + "type": "text", + "description": "The id of the file being given an originality score. Required\nif creating a report associated with a file." + }, + { + "key": "originality_report[originality_score]", + "value": "", + "type": "text", + "description": "A number between 0 and 100 representing the measure of the\nspecified file's originality." + }, + { + "key": "originality_report[originality_report_url]", + "value": "", + "type": "text", + "description": "The URL where the originality report for the specified\nfile may be found." + }, + { + "key": "originality_report[originality_report_file_id]", + "value": "", + "type": "text", + "description": "The ID of the file within Canvas that contains the originality\nreport for the submitted file provided in the request URL." + }, + { + "key": "originality_report[tool_setting][resource_type_code]", + "value": "", + "type": "text", + "description": "The resource type code of the resource handler Canvas should use for the\nLTI launch for viewing originality reports. If set Canvas will launch\nto the message with type 'basic-lti-launch-request' in the specified\nresource handler rather than using the originality_report_url." + }, + { + "key": "originality_report[tool_setting][resource_url]", + "value": "", + "type": "text", + "description": "The URL Canvas should launch to when showing an LTI originality report.\nNote that this value is inferred from the specified resource handler's\nmessage \"path\" value (See `resource_type_code`) unless\nit is specified. If this parameter is used a `resource_type_code`\nmust also be specified." + }, + { + "key": "originality_report[workflow_state]", + "value": "", + "type": "text", + "description": "May be set to \"pending\", \"error\", or \"scored\". If an originality score\nis provided a workflow state of \"scored\" will be inferred." + }, + { + "key": "originality_report[error_message]", + "value": "", + "type": "text", + "description": "A message describing the error. If set, the \"workflow_state\"\nwill be set to \"error.\"" + }, + { + "key": "originality_report[attempt]", + "value": "", + "type": "text", + "description": "If no `file_id` is given, and no file is required for the assignment\n(that is, the assignment allows an online text entry), this parameter\nmay be given to clarify which attempt number the report is for (in the\ncase of resubmissions). If this field is omitted and no `file_id` is\ngiven, the report will be created (or updated, if it exists) for the\nfirst submission attempt with no associated file." + } + ] + } + }, + "response": [] + }, + { + "name": "Edit an Originality Report", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id/submissions/:submission_id/originality_report/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "originality_report", + ":id" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing originality report. An alternative to this endpoint is\nto POST the same parameters listed below to the CREATE endpoint.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "originality_report[originality_score]", + "value": "", + "type": "text", + "description": "A number between 0 and 100 representing the measure of the\nspecified file's originality." + }, + { + "key": "originality_report[originality_report_url]", + "value": "", + "type": "text", + "description": "The URL where the originality report for the specified\nfile may be found." + }, + { + "key": "originality_report[originality_report_file_id]", + "value": "", + "type": "text", + "description": "The ID of the file within Canvas that contains the originality\nreport for the submitted file provided in the request URL." + }, + { + "key": "originality_report[tool_setting][resource_type_code]", + "value": "", + "type": "text", + "description": "The resource type code of the resource handler Canvas should use for the\nLTI launch for viewing originality reports. If set Canvas will launch\nto the message with type 'basic-lti-launch-request' in the specified\nresource handler rather than using the originality_report_url." + }, + { + "key": "originality_report[tool_setting][resource_url]", + "value": "", + "type": "text", + "description": "The URL Canvas should launch to when showing an LTI originality report.\nNote that this value is inferred from the specified resource handler's\nmessage \"path\" value (See `resource_type_code`) unless\nit is specified. If this parameter is used a `resource_type_code`\nmust also be specified." + }, + { + "key": "originality_report[workflow_state]", + "value": "", + "type": "text", + "description": "May be set to \"pending\", \"error\", or \"scored\". If an originality score\nis provided a workflow state of \"scored\" will be inferred." + }, + { + "key": "originality_report[error_message]", + "value": "", + "type": "text", + "description": "A message describing the error. If set, the \"workflow_state\"\nwill be set to \"error.\"" + } + ] + } + }, + "response": [] + }, + { + "name": "Edit an Originality Report", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id/files/:file_id/originality_report", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id", + "files", + ":file_id", + "originality_report" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "file_id", + "description": "ID" + } + ] + }, + "description": "Modify an existing originality report. An alternative to this endpoint is\nto POST the same parameters listed below to the CREATE endpoint.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "originality_report[originality_score]", + "value": "", + "type": "text", + "description": "A number between 0 and 100 representing the measure of the\nspecified file's originality." + }, + { + "key": "originality_report[originality_report_url]", + "value": "", + "type": "text", + "description": "The URL where the originality report for the specified\nfile may be found." + }, + { + "key": "originality_report[originality_report_file_id]", + "value": "", + "type": "text", + "description": "The ID of the file within Canvas that contains the originality\nreport for the submitted file provided in the request URL." + }, + { + "key": "originality_report[tool_setting][resource_type_code]", + "value": "", + "type": "text", + "description": "The resource type code of the resource handler Canvas should use for the\nLTI launch for viewing originality reports. If set Canvas will launch\nto the message with type 'basic-lti-launch-request' in the specified\nresource handler rather than using the originality_report_url." + }, + { + "key": "originality_report[tool_setting][resource_url]", + "value": "", + "type": "text", + "description": "The URL Canvas should launch to when showing an LTI originality report.\nNote that this value is inferred from the specified resource handler's\nmessage \"path\" value (See `resource_type_code`) unless\nit is specified. If this parameter is used a `resource_type_code`\nmust also be specified." + }, + { + "key": "originality_report[workflow_state]", + "value": "", + "type": "text", + "description": "May be set to \"pending\", \"error\", or \"scored\". If an originality score\nis provided a workflow state of \"scored\" will be inferred." + }, + { + "key": "originality_report[error_message]", + "value": "", + "type": "text", + "description": "A message describing the error. If set, the \"workflow_state\"\nwill be set to \"error.\"" + } + ] + } + }, + "response": [] + }, + { + "name": "Show an Originality Report", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id/submissions/:submission_id/originality_report/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "originality_report", + ":id" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get a single originality report" + }, + "response": [] + }, + { + "name": "Show an Originality Report", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id/files/:file_id/originality_report", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id", + "files", + ":file_id", + "originality_report" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "file_id", + "description": "ID" + } + ] + }, + "description": "Get a single originality report" + }, + "response": [] + } + ] + }, + { + "name": "Outcome Groups", + "item": [ + { + "name": "Redirect to root outcome group for context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/root_outcome_group", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "root_outcome_group" + ], + "variable": [] + }, + "description": "Convenience redirect to find the root outcome group for a particular\ncontext. Will redirect to the appropriate outcome group's URL." + }, + "response": [] + }, + { + "name": "Redirect to root outcome group for context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/root_outcome_group", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "root_outcome_group" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Convenience redirect to find the root outcome group for a particular\ncontext. Will redirect to the appropriate outcome group's URL." + }, + "response": [] + }, + { + "name": "Redirect to root outcome group for context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/root_outcome_group", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "root_outcome_group" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Convenience redirect to find the root outcome group for a particular\ncontext. Will redirect to the appropriate outcome group's URL." + }, + "response": [] + }, + { + "name": "Get all outcome groups for context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Get all outcome groups for context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Get all outcome links for context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_group_links", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_group_links" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Get all outcome links for context", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_group_links", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_group_links" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Show an outcome group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Show an outcome group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Show an outcome group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Update an outcome group", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing outcome group. Fields not provided are left as is;\nunrecognized fields are ignored.\n\nWhen changing the parent outcome group, the new parent group must belong to\nthe same context as this outcome group, and must not be a descendant of\nthis outcome group (i.e. no cycles allowed).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The new outcome group title." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The new outcome group description." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "parent_outcome_group_id", + "value": "", + "type": "text", + "description": "The id of the new parent outcome group." + } + ] + } + }, + "response": [] + }, + { + "name": "Update an outcome group", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing outcome group. Fields not provided are left as is;\nunrecognized fields are ignored.\n\nWhen changing the parent outcome group, the new parent group must belong to\nthe same context as this outcome group, and must not be a descendant of\nthis outcome group (i.e. no cycles allowed).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The new outcome group title." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The new outcome group description." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "parent_outcome_group_id", + "value": "", + "type": "text", + "description": "The id of the new parent outcome group." + } + ] + } + }, + "response": [] + }, + { + "name": "Update an outcome group", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing outcome group. Fields not provided are left as is;\nunrecognized fields are ignored.\n\nWhen changing the parent outcome group, the new parent group must belong to\nthe same context as this outcome group, and must not be a descendant of\nthis outcome group (i.e. no cycles allowed).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The new outcome group title." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The new outcome group description." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "parent_outcome_group_id", + "value": "", + "type": "text", + "description": "The id of the new parent outcome group." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete an outcome group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deleting an outcome group deletes descendant outcome groups and outcome\nlinks. The linked outcomes themselves are only deleted if all links to the\noutcome were deleted.\n\nAligned outcomes cannot be deleted; as such, if all remaining links to an\naligned outcome are included in this group's descendants, the group\ndeletion will fail." + }, + "response": [] + }, + { + "name": "Delete an outcome group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deleting an outcome group deletes descendant outcome groups and outcome\nlinks. The linked outcomes themselves are only deleted if all links to the\noutcome were deleted.\n\nAligned outcomes cannot be deleted; as such, if all remaining links to an\naligned outcome are included in this group's descendants, the group\ndeletion will fail." + }, + "response": [] + }, + { + "name": "Delete an outcome group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deleting an outcome group deletes descendant outcome groups and outcome\nlinks. The linked outcomes themselves are only deleted if all links to the\noutcome were deleted.\n\nAligned outcomes cannot be deleted; as such, if all remaining links to an\naligned outcome are included in this group's descendants, the group\ndeletion will fail." + }, + "response": [] + }, + { + "name": "List linked outcomes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id/outcomes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id", + "outcomes" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the immediate OutcomeLink children of the outcome group." + }, + "response": [] + }, + { + "name": "List linked outcomes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id/outcomes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id", + "outcomes" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the immediate OutcomeLink children of the outcome group." + }, + "response": [] + }, + { + "name": "List linked outcomes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id/outcomes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id", + "outcomes" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the immediate OutcomeLink children of the outcome group." + }, + "response": [] + }, + { + "name": "Create/link an outcome", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id/outcomes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id", + "outcomes" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Link an outcome into the outcome group. The outcome to link can either be\nspecified by a PUT to the link URL for a specific outcome (the outcome_id\nin the PUT URLs) or by supplying the information for a new outcome (title,\ndescription, ratings, mastery_points) in a POST to the collection.\n\nIf linking an existing outcome, the outcome_id must identify an outcome\navailable to this context; i.e. an outcome owned by this group's context,\nan outcome owned by an associated account, or a global outcome. With\noutcome_id present, any other parameters (except move_from) are ignored.\n\nIf defining a new outcome, the outcome is created in the outcome group's\ncontext using the provided title, description, ratings, and mastery points;\nthe title is required but all other fields are optional. The new outcome\nis then linked into the outcome group.\n\nIf ratings are provided when creating a new outcome, an embedded rubric\ncriterion is included in the new outcome. This criterion's mastery_points\ndefault to the maximum points in the highest rating if not specified in the\nmastery_points parameter. Any ratings lacking a description are given a\ndefault of \"No description\". Any ratings lacking a point value are given a\ndefault of 0. If no ratings are provided, the mastery_points parameter is\nignored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "outcome_id", + "value": "", + "type": "text", + "description": "The ID of the existing outcome to link." + }, + { + "key": "move_from", + "value": "", + "type": "text", + "description": "The ID of the old outcome group. Only used if outcome_id is present." + }, + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome. Required if outcome_id is absent." + }, + { + "key": "display_name", + "value": "", + "type": "text", + "description": "A friendly name shown in reports for outcomes with cryptic titles,\nsuch as common core standards names." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "mastery_points", + "value": "", + "type": "text", + "description": "The mastery threshold for the embedded rubric criterion." + }, + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of a rating level for the embedded rubric criterion." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The points corresponding to a rating level for the embedded rubric criterion." + }, + { + "key": "calculation_method", + "value": "", + "type": "text", + "description": "The new calculation method. Defaults to \"decaying_average\"\nif the Outcomes New Decaying Average Calculation Method FF is ENABLED\nthen Defaults to \"weighted_average\"" + }, + { + "key": "calculation_int", + "value": "", + "type": "text", + "description": "The new calculation int. Only applies if the calculation_method is \"weighted_average\", \"decaying_average\" or \"n_mastery\". Defaults to 65" + } + ] + } + }, + "response": [] + }, + { + "name": "Create/link an outcome", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id/outcomes/:outcome_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id", + "outcomes", + ":outcome_id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "outcome_id", + "description": "The ID of the existing outcome to link." + } + ] + }, + "description": "Link an outcome into the outcome group. The outcome to link can either be\nspecified by a PUT to the link URL for a specific outcome (the outcome_id\nin the PUT URLs) or by supplying the information for a new outcome (title,\ndescription, ratings, mastery_points) in a POST to the collection.\n\nIf linking an existing outcome, the outcome_id must identify an outcome\navailable to this context; i.e. an outcome owned by this group's context,\nan outcome owned by an associated account, or a global outcome. With\noutcome_id present, any other parameters (except move_from) are ignored.\n\nIf defining a new outcome, the outcome is created in the outcome group's\ncontext using the provided title, description, ratings, and mastery points;\nthe title is required but all other fields are optional. The new outcome\nis then linked into the outcome group.\n\nIf ratings are provided when creating a new outcome, an embedded rubric\ncriterion is included in the new outcome. This criterion's mastery_points\ndefault to the maximum points in the highest rating if not specified in the\nmastery_points parameter. Any ratings lacking a description are given a\ndefault of \"No description\". Any ratings lacking a point value are given a\ndefault of 0. If no ratings are provided, the mastery_points parameter is\nignored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "move_from", + "value": "", + "type": "text", + "description": "The ID of the old outcome group. Only used if outcome_id is present." + }, + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome. Required if outcome_id is absent." + }, + { + "key": "display_name", + "value": "", + "type": "text", + "description": "A friendly name shown in reports for outcomes with cryptic titles,\nsuch as common core standards names." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "mastery_points", + "value": "", + "type": "text", + "description": "The mastery threshold for the embedded rubric criterion." + }, + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of a rating level for the embedded rubric criterion." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The points corresponding to a rating level for the embedded rubric criterion." + }, + { + "key": "calculation_method", + "value": "", + "type": "text", + "description": "The new calculation method. Defaults to \"decaying_average\"\nif the Outcomes New Decaying Average Calculation Method FF is ENABLED\nthen Defaults to \"weighted_average\"" + }, + { + "key": "calculation_int", + "value": "", + "type": "text", + "description": "The new calculation int. Only applies if the calculation_method is \"weighted_average\", \"decaying_average\" or \"n_mastery\". Defaults to 65" + } + ] + } + }, + "response": [] + }, + { + "name": "Create/link an outcome", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id/outcomes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id", + "outcomes" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Link an outcome into the outcome group. The outcome to link can either be\nspecified by a PUT to the link URL for a specific outcome (the outcome_id\nin the PUT URLs) or by supplying the information for a new outcome (title,\ndescription, ratings, mastery_points) in a POST to the collection.\n\nIf linking an existing outcome, the outcome_id must identify an outcome\navailable to this context; i.e. an outcome owned by this group's context,\nan outcome owned by an associated account, or a global outcome. With\noutcome_id present, any other parameters (except move_from) are ignored.\n\nIf defining a new outcome, the outcome is created in the outcome group's\ncontext using the provided title, description, ratings, and mastery points;\nthe title is required but all other fields are optional. The new outcome\nis then linked into the outcome group.\n\nIf ratings are provided when creating a new outcome, an embedded rubric\ncriterion is included in the new outcome. This criterion's mastery_points\ndefault to the maximum points in the highest rating if not specified in the\nmastery_points parameter. Any ratings lacking a description are given a\ndefault of \"No description\". Any ratings lacking a point value are given a\ndefault of 0. If no ratings are provided, the mastery_points parameter is\nignored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "outcome_id", + "value": "", + "type": "text", + "description": "The ID of the existing outcome to link." + }, + { + "key": "move_from", + "value": "", + "type": "text", + "description": "The ID of the old outcome group. Only used if outcome_id is present." + }, + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome. Required if outcome_id is absent." + }, + { + "key": "display_name", + "value": "", + "type": "text", + "description": "A friendly name shown in reports for outcomes with cryptic titles,\nsuch as common core standards names." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "mastery_points", + "value": "", + "type": "text", + "description": "The mastery threshold for the embedded rubric criterion." + }, + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of a rating level for the embedded rubric criterion." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The points corresponding to a rating level for the embedded rubric criterion." + }, + { + "key": "calculation_method", + "value": "", + "type": "text", + "description": "The new calculation method. Defaults to \"decaying_average\"\nif the Outcomes New Decaying Average Calculation Method FF is ENABLED\nthen Defaults to \"weighted_average\"" + }, + { + "key": "calculation_int", + "value": "", + "type": "text", + "description": "The new calculation int. Only applies if the calculation_method is \"weighted_average\", \"decaying_average\" or \"n_mastery\". Defaults to 65" + } + ] + } + }, + "response": [] + }, + { + "name": "Create/link an outcome", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id/outcomes/:outcome_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id", + "outcomes", + ":outcome_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + }, + { + "key": "outcome_id", + "description": "The ID of the existing outcome to link." + } + ] + }, + "description": "Link an outcome into the outcome group. The outcome to link can either be\nspecified by a PUT to the link URL for a specific outcome (the outcome_id\nin the PUT URLs) or by supplying the information for a new outcome (title,\ndescription, ratings, mastery_points) in a POST to the collection.\n\nIf linking an existing outcome, the outcome_id must identify an outcome\navailable to this context; i.e. an outcome owned by this group's context,\nan outcome owned by an associated account, or a global outcome. With\noutcome_id present, any other parameters (except move_from) are ignored.\n\nIf defining a new outcome, the outcome is created in the outcome group's\ncontext using the provided title, description, ratings, and mastery points;\nthe title is required but all other fields are optional. The new outcome\nis then linked into the outcome group.\n\nIf ratings are provided when creating a new outcome, an embedded rubric\ncriterion is included in the new outcome. This criterion's mastery_points\ndefault to the maximum points in the highest rating if not specified in the\nmastery_points parameter. Any ratings lacking a description are given a\ndefault of \"No description\". Any ratings lacking a point value are given a\ndefault of 0. If no ratings are provided, the mastery_points parameter is\nignored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "move_from", + "value": "", + "type": "text", + "description": "The ID of the old outcome group. Only used if outcome_id is present." + }, + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome. Required if outcome_id is absent." + }, + { + "key": "display_name", + "value": "", + "type": "text", + "description": "A friendly name shown in reports for outcomes with cryptic titles,\nsuch as common core standards names." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "mastery_points", + "value": "", + "type": "text", + "description": "The mastery threshold for the embedded rubric criterion." + }, + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of a rating level for the embedded rubric criterion." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The points corresponding to a rating level for the embedded rubric criterion." + }, + { + "key": "calculation_method", + "value": "", + "type": "text", + "description": "The new calculation method. Defaults to \"decaying_average\"\nif the Outcomes New Decaying Average Calculation Method FF is ENABLED\nthen Defaults to \"weighted_average\"" + }, + { + "key": "calculation_int", + "value": "", + "type": "text", + "description": "The new calculation int. Only applies if the calculation_method is \"weighted_average\", \"decaying_average\" or \"n_mastery\". Defaults to 65" + } + ] + } + }, + "response": [] + }, + { + "name": "Create/link an outcome", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id/outcomes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id", + "outcomes" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Link an outcome into the outcome group. The outcome to link can either be\nspecified by a PUT to the link URL for a specific outcome (the outcome_id\nin the PUT URLs) or by supplying the information for a new outcome (title,\ndescription, ratings, mastery_points) in a POST to the collection.\n\nIf linking an existing outcome, the outcome_id must identify an outcome\navailable to this context; i.e. an outcome owned by this group's context,\nan outcome owned by an associated account, or a global outcome. With\noutcome_id present, any other parameters (except move_from) are ignored.\n\nIf defining a new outcome, the outcome is created in the outcome group's\ncontext using the provided title, description, ratings, and mastery points;\nthe title is required but all other fields are optional. The new outcome\nis then linked into the outcome group.\n\nIf ratings are provided when creating a new outcome, an embedded rubric\ncriterion is included in the new outcome. This criterion's mastery_points\ndefault to the maximum points in the highest rating if not specified in the\nmastery_points parameter. Any ratings lacking a description are given a\ndefault of \"No description\". Any ratings lacking a point value are given a\ndefault of 0. If no ratings are provided, the mastery_points parameter is\nignored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "outcome_id", + "value": "", + "type": "text", + "description": "The ID of the existing outcome to link." + }, + { + "key": "move_from", + "value": "", + "type": "text", + "description": "The ID of the old outcome group. Only used if outcome_id is present." + }, + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome. Required if outcome_id is absent." + }, + { + "key": "display_name", + "value": "", + "type": "text", + "description": "A friendly name shown in reports for outcomes with cryptic titles,\nsuch as common core standards names." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "mastery_points", + "value": "", + "type": "text", + "description": "The mastery threshold for the embedded rubric criterion." + }, + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of a rating level for the embedded rubric criterion." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The points corresponding to a rating level for the embedded rubric criterion." + }, + { + "key": "calculation_method", + "value": "", + "type": "text", + "description": "The new calculation method. Defaults to \"decaying_average\"\nif the Outcomes New Decaying Average Calculation Method FF is ENABLED\nthen Defaults to \"weighted_average\"" + }, + { + "key": "calculation_int", + "value": "", + "type": "text", + "description": "The new calculation int. Only applies if the calculation_method is \"weighted_average\", \"decaying_average\" or \"n_mastery\". Defaults to 65" + } + ] + } + }, + "response": [] + }, + { + "name": "Create/link an outcome", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id/outcomes/:outcome_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id", + "outcomes", + ":outcome_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + }, + { + "key": "outcome_id", + "description": "The ID of the existing outcome to link." + } + ] + }, + "description": "Link an outcome into the outcome group. The outcome to link can either be\nspecified by a PUT to the link URL for a specific outcome (the outcome_id\nin the PUT URLs) or by supplying the information for a new outcome (title,\ndescription, ratings, mastery_points) in a POST to the collection.\n\nIf linking an existing outcome, the outcome_id must identify an outcome\navailable to this context; i.e. an outcome owned by this group's context,\nan outcome owned by an associated account, or a global outcome. With\noutcome_id present, any other parameters (except move_from) are ignored.\n\nIf defining a new outcome, the outcome is created in the outcome group's\ncontext using the provided title, description, ratings, and mastery points;\nthe title is required but all other fields are optional. The new outcome\nis then linked into the outcome group.\n\nIf ratings are provided when creating a new outcome, an embedded rubric\ncriterion is included in the new outcome. This criterion's mastery_points\ndefault to the maximum points in the highest rating if not specified in the\nmastery_points parameter. Any ratings lacking a description are given a\ndefault of \"No description\". Any ratings lacking a point value are given a\ndefault of 0. If no ratings are provided, the mastery_points parameter is\nignored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "move_from", + "value": "", + "type": "text", + "description": "The ID of the old outcome group. Only used if outcome_id is present." + }, + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome. Required if outcome_id is absent." + }, + { + "key": "display_name", + "value": "", + "type": "text", + "description": "A friendly name shown in reports for outcomes with cryptic titles,\nsuch as common core standards names." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "mastery_points", + "value": "", + "type": "text", + "description": "The mastery threshold for the embedded rubric criterion." + }, + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of a rating level for the embedded rubric criterion." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The points corresponding to a rating level for the embedded rubric criterion." + }, + { + "key": "calculation_method", + "value": "", + "type": "text", + "description": "The new calculation method. Defaults to \"decaying_average\"\nif the Outcomes New Decaying Average Calculation Method FF is ENABLED\nthen Defaults to \"weighted_average\"" + }, + { + "key": "calculation_int", + "value": "", + "type": "text", + "description": "The new calculation int. Only applies if the calculation_method is \"weighted_average\", \"decaying_average\" or \"n_mastery\". Defaults to 65" + } + ] + } + }, + "response": [] + }, + { + "name": "Unlink an outcome", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id/outcomes/:outcome_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id", + "outcomes", + ":outcome_id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "outcome_id", + "description": "ID" + } + ] + }, + "description": "Unlinking an outcome only deletes the outcome itself if this was the last\nlink to the outcome in any group in any context. Aligned outcomes cannot be\ndeleted; as such, if this is the last link to an aligned outcome, the\nunlinking will fail." + }, + "response": [] + }, + { + "name": "Unlink an outcome", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id/outcomes/:outcome_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id", + "outcomes", + ":outcome_id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + }, + { + "key": "outcome_id", + "description": "ID" + } + ] + }, + "description": "Unlinking an outcome only deletes the outcome itself if this was the last\nlink to the outcome in any group in any context. Aligned outcomes cannot be\ndeleted; as such, if this is the last link to an aligned outcome, the\nunlinking will fail." + }, + "response": [] + }, + { + "name": "Unlink an outcome", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id/outcomes/:outcome_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id", + "outcomes", + ":outcome_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + }, + { + "key": "outcome_id", + "description": "ID" + } + ] + }, + "description": "Unlinking an outcome only deletes the outcome itself if this was the last\nlink to the outcome in any group in any context. Aligned outcomes cannot be\ndeleted; as such, if this is the last link to an aligned outcome, the\nunlinking will fail." + }, + "response": [] + }, + { + "name": "List subgroups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id/subgroups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id", + "subgroups" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the immediate OutcomeGroup children of the outcome group." + }, + "response": [] + }, + { + "name": "List subgroups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id/subgroups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id", + "subgroups" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the immediate OutcomeGroup children of the outcome group." + }, + "response": [] + }, + { + "name": "List subgroups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id/subgroups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id", + "subgroups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the immediate OutcomeGroup children of the outcome group." + }, + "response": [] + }, + { + "name": "Create a subgroup", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id/subgroups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id", + "subgroups" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Creates a new empty subgroup under the outcome group with the given title\nand description.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome group." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome group." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard" + } + ] + } + }, + "response": [] + }, + { + "name": "Create a subgroup", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id/subgroups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id", + "subgroups" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Creates a new empty subgroup under the outcome group with the given title\nand description.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome group." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome group." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard" + } + ] + } + }, + "response": [] + }, + { + "name": "Create a subgroup", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id/subgroups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id", + "subgroups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Creates a new empty subgroup under the outcome group with the given title\nand description.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the new outcome group." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The description of the new outcome group." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard" + } + ] + } + }, + "response": [] + }, + { + "name": "Import an outcome group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/global/outcome_groups/:id/import", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "global", + "outcome_groups", + ":id", + "import" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Creates a new subgroup of the outcome group with the same title and\ndescription as the source group, then creates links in that new subgroup to\nthe same outcomes that are linked in the source group. Recurses on the\nsubgroups of the source group, importing them each in turn into the new\nsubgroup.\n\nAllows you to copy organizational structure, but does not create copies of\nthe outcomes themselves, only new links.\n\nThe source group must be either global, from the same context as this\noutcome group, or from an associated account. The source group cannot be\nthe root outcome group of its context.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "source_outcome_group_id", + "value": "", + "type": "text", + "description": "The ID of the source outcome group." + }, + { + "key": "async", + "value": "", + "type": "text", + "description": "If true, perform action asynchronously. In that case, this endpoint\nwill return a Progress object instead of an OutcomeGroup.\nUse the {api:ProgressController#show progress endpoint}\nto query the status of the operation. The imported outcome group id\nand url will be returned in the results of the Progress object\nas \"outcome_group_id\" and \"outcome_group_url\"" + } + ] + } + }, + "response": [] + }, + { + "name": "Import an outcome group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_groups/:id/import", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_groups", + ":id", + "import" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Creates a new subgroup of the outcome group with the same title and\ndescription as the source group, then creates links in that new subgroup to\nthe same outcomes that are linked in the source group. Recurses on the\nsubgroups of the source group, importing them each in turn into the new\nsubgroup.\n\nAllows you to copy organizational structure, but does not create copies of\nthe outcomes themselves, only new links.\n\nThe source group must be either global, from the same context as this\noutcome group, or from an associated account. The source group cannot be\nthe root outcome group of its context.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "source_outcome_group_id", + "value": "", + "type": "text", + "description": "The ID of the source outcome group." + }, + { + "key": "async", + "value": "", + "type": "text", + "description": "If true, perform action asynchronously. In that case, this endpoint\nwill return a Progress object instead of an OutcomeGroup.\nUse the {api:ProgressController#show progress endpoint}\nto query the status of the operation. The imported outcome group id\nand url will be returned in the results of the Progress object\nas \"outcome_group_id\" and \"outcome_group_url\"" + } + ] + } + }, + "response": [] + }, + { + "name": "Import an outcome group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_groups/:id/import", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_groups", + ":id", + "import" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Creates a new subgroup of the outcome group with the same title and\ndescription as the source group, then creates links in that new subgroup to\nthe same outcomes that are linked in the source group. Recurses on the\nsubgroups of the source group, importing them each in turn into the new\nsubgroup.\n\nAllows you to copy organizational structure, but does not create copies of\nthe outcomes themselves, only new links.\n\nThe source group must be either global, from the same context as this\noutcome group, or from an associated account. The source group cannot be\nthe root outcome group of its context.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "source_outcome_group_id", + "value": "", + "type": "text", + "description": "The ID of the source outcome group." + }, + { + "key": "async", + "value": "", + "type": "text", + "description": "If true, perform action asynchronously. In that case, this endpoint\nwill return a Progress object instead of an OutcomeGroup.\nUse the {api:ProgressController#show progress endpoint}\nto query the status of the operation. The imported outcome group id\nand url will be returned in the results of the Progress object\nas \"outcome_group_id\" and \"outcome_group_url\"" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Outcome Imports", + "item": [ + { + "name": "Import Outcomes", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_imports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_imports" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Import outcomes into Canvas.\n\nFor more information on the format that's expected here, please see the\n\"Outcomes CSV\" section in the API docs.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "import_type", + "value": "", + "type": "text", + "description": "Choose the data format for reading outcome data. With a standard Canvas\ninstall, this option can only be 'instructure_csv', and if unprovided,\nwill be assumed to be so. Can be part of the query string." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "There are two ways to post outcome import data - either via a\nmultipart/form-data form-field-style attachment, or via a non-multipart\nraw post request.\n\n'attachment' is required for multipart/form-data style posts. Assumed to\nbe outcome data from a file upload form field named 'attachment'.\n\nExamples:\n curl -F attachment=@<filename> -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports?import_type=instructure_csv'\n curl -F attachment=@<filename> -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports?import_type=instructure_csv'\n\nIf you decide to do a raw post, you can skip the 'attachment' argument,\nbut you will then be required to provide a suitable Content-Type header.\nYou are encouraged to also provide the 'extension' argument.\n\nExamples:\n curl -H 'Content-Type: text/csv' --data-binary @<filename>.csv \\\n -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports?import_type=instructure_csv'\n\n curl -H 'Content-Type: text/csv' --data-binary @<filename>.csv \\\n -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports?import_type=instructure_csv'" + }, + { + "key": "extension", + "value": "", + "type": "text", + "description": "Recommended for raw post request style imports. This field will be used to\ndistinguish between csv and other file format extensions that\nwould usually be provided with the filename in the multipart post request\nscenario. If not provided, this value will be inferred from the\nContent-Type, falling back to csv-file format if all else fails." + } + ] + } + }, + "response": [] + }, + { + "name": "Import Outcomes", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_imports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_imports" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Import outcomes into Canvas.\n\nFor more information on the format that's expected here, please see the\n\"Outcomes CSV\" section in the API docs.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "import_type", + "value": "", + "type": "text", + "description": "Choose the data format for reading outcome data. With a standard Canvas\ninstall, this option can only be 'instructure_csv', and if unprovided,\nwill be assumed to be so. Can be part of the query string." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "There are two ways to post outcome import data - either via a\nmultipart/form-data form-field-style attachment, or via a non-multipart\nraw post request.\n\n'attachment' is required for multipart/form-data style posts. Assumed to\nbe outcome data from a file upload form field named 'attachment'.\n\nExamples:\n curl -F attachment=@<filename> -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports?import_type=instructure_csv'\n curl -F attachment=@<filename> -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports?import_type=instructure_csv'\n\nIf you decide to do a raw post, you can skip the 'attachment' argument,\nbut you will then be required to provide a suitable Content-Type header.\nYou are encouraged to also provide the 'extension' argument.\n\nExamples:\n curl -H 'Content-Type: text/csv' --data-binary @<filename>.csv \\\n -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports?import_type=instructure_csv'\n\n curl -H 'Content-Type: text/csv' --data-binary @<filename>.csv \\\n -H \"Authorization: Bearer <token>\" \\\n 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports?import_type=instructure_csv'" + }, + { + "key": "extension", + "value": "", + "type": "text", + "description": "Recommended for raw post request style imports. This field will be used to\ndistinguish between csv and other file format extensions that\nwould usually be provided with the filename in the multipart post request\nscenario. If not provided, this value will be inferred from the\nContent-Type, falling back to csv-file format if all else fails." + } + ] + } + }, + "response": [] + }, + { + "name": "Get Outcome import status", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_imports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_imports", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get the status of an already created Outcome import. Pass 'latest' for the outcome import id\nfor the latest import.\n\n Examples:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"\n curl 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"" + }, + "response": [] + }, + { + "name": "Get Outcome import status", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_imports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_imports", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get the status of an already created Outcome import. Pass 'latest' for the outcome import id\nfor the latest import.\n\n Examples:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"\n curl 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"" + }, + "response": [] + }, + { + "name": "Get IDs of outcome groups created after successful import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_imports/:id/created_group_ids", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_imports", + ":id", + "created_group_ids" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get the IDs of the outcome groups created after a successful import.\nPass 'latest' for the outcome import id for the latest import.\n\n Examples:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports/outcomes_group_ids/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"\n curl 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports/outcome_group_ids/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"" + }, + "response": [] + }, + { + "name": "Get IDs of outcome groups created after successful import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_imports/:id/created_group_ids", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_imports", + ":id", + "created_group_ids" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get the IDs of the outcome groups created after a successful import.\nPass 'latest' for the outcome import id for the latest import.\n\n Examples:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/outcome_imports/outcomes_group_ids/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"\n curl 'https://<canvas>/api/v1/courses/<course_id>/outcome_imports/outcome_group_ids/<outcome_import_id>' \\\n -H \"Authorization: Bearer <token>\"" + }, + "response": [] + } + ] + }, + { + "name": "Outcome Results", + "item": [ + { + "name": "Get outcome results", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_results", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_results" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Gets the outcome results for users and outcomes in the specified context.\n\nused in sLMGB" + }, + "response": [] + }, + { + "name": "Set outcome ordering for LMGB", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assign_outcome_order", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assign_outcome_order" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Saves the ordering of outcomes in LMGB for a user" + }, + "response": [] + }, + { + "name": "Get outcome result rollups", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_rollups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_rollups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Gets the outcome rollups for the users and outcomes in the specified\ncontext." + }, + "response": [] + } + ] + }, + { + "name": "Outcomes", + "item": [ + { + "name": "Show an outcome", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/outcomes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "outcomes", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the details of the outcome with the given id." + }, + "response": [] + }, + { + "name": "Update an outcome", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/outcomes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "outcomes", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing outcome. Fields not provided are left as is;\nunrecognized fields are ignored.\n\nIf any new ratings are provided, the combination of all new ratings\nprovided completely replace any existing embedded rubric criterion; it is\nnot possible to tweak the ratings of the embedded rubric criterion.\n\nA new embedded rubric criterion's mastery_points default to the maximum\npoints in the highest rating if not specified in the mastery_points\nparameter. Any new ratings lacking a description are given a default of \"No\ndescription\". Any new ratings lacking a point value are given a default of\n0.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The new outcome title." + }, + { + "key": "display_name", + "value": "", + "type": "text", + "description": "A friendly name shown in reports for outcomes with cryptic titles,\nsuch as common core standards names." + }, + { + "key": "description", + "value": "", + "type": "text", + "description": "The new outcome description." + }, + { + "key": "vendor_guid", + "value": "", + "type": "text", + "description": "A custom GUID for the learning standard." + }, + { + "key": "mastery_points", + "value": "", + "type": "text", + "description": "The new mastery threshold for the embedded rubric criterion." + }, + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of a new rating level for the embedded rubric criterion." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The points corresponding to a new rating level for the embedded rubric\ncriterion." + }, + { + "key": "calculation_method", + "value": "", + "type": "text", + "description": "The new calculation method. If the\nOutcomes New Decaying Average Calculation Method FF is ENABLED\nthen \"weighted_average\" can be used and it is same as previous \"decaying_average\"\nand new \"decaying_average\" will have improved version of calculation." + }, + { + "key": "calculation_int", + "value": "", + "type": "text", + "description": "The new calculation int. Only applies if the calculation_method is \"decaying_average\" or \"n_mastery\"" + }, + { + "key": "add_defaults", + "value": "", + "type": "text", + "description": "If defaults are requested, then color and mastery level defaults will be\nadded to outcome ratings in the result. This will only take effect if\nthe Account Level Mastery Scales FF is DISABLED" + } + ] + } + }, + "response": [] + }, + { + "name": "Get aligned assignments for an outcome in a course for a particular student", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_alignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_alignments" + ], + "variable": [ + { + "key": "course_id", + "description": "The id of the course" + } + ] + }, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Pages", + "item": [ + { + "name": "Show front page", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/front_page", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "front_page" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the content of the front page" + }, + "response": [] + }, + { + "name": "Show front page", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/front_page", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "front_page" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the content of the front page" + }, + "response": [] + }, + { + "name": "Duplicate page", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id/duplicate", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id", + "duplicate" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Duplicate a wiki page" + }, + "response": [] + }, + { + "name": "Update/create front page", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/front_page", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "front_page" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Update the title or contents of the front page", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "wiki_page[title]", + "value": "", + "type": "text", + "description": "The title for the new page. NOTE: changing a page's title will change its\nurl. The updated url will be returned in the result." + }, + { + "key": "wiki_page[body]", + "value": "", + "type": "text", + "description": "The content for the new page." + }, + { + "key": "wiki_page[editing_roles]", + "value": "", + "type": "text", + "description": "Which user roles are allowed to edit this page. Any combination\nof these roles is allowed (separated by commas).\n\n\"teachers\":: Allows editing by teachers in the course.\n\"students\":: Allows editing by students in the course.\n\"members\":: For group wikis, allows editing by members of the group.\n\"public\":: Allows editing by any user." + }, + { + "key": "wiki_page[notify_of_update]", + "value": "", + "type": "text", + "description": "Whether participants should be notified when this page changes." + }, + { + "key": "wiki_page[published]", + "value": "", + "type": "text", + "description": "Whether the page is published (true) or draft state (false)." + } + ] + } + }, + "response": [] + }, + { + "name": "Update/create front page", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/front_page", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "front_page" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Update the title or contents of the front page", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "wiki_page[title]", + "value": "", + "type": "text", + "description": "The title for the new page. NOTE: changing a page's title will change its\nurl. The updated url will be returned in the result." + }, + { + "key": "wiki_page[body]", + "value": "", + "type": "text", + "description": "The content for the new page." + }, + { + "key": "wiki_page[editing_roles]", + "value": "", + "type": "text", + "description": "Which user roles are allowed to edit this page. Any combination\nof these roles is allowed (separated by commas).\n\n\"teachers\":: Allows editing by teachers in the course.\n\"students\":: Allows editing by students in the course.\n\"members\":: For group wikis, allows editing by members of the group.\n\"public\":: Allows editing by any user." + }, + { + "key": "wiki_page[notify_of_update]", + "value": "", + "type": "text", + "description": "Whether participants should be notified when this page changes." + }, + { + "key": "wiki_page[published]", + "value": "", + "type": "text", + "description": "Whether the page is published (true) or draft state (false)." + } + ] + } + }, + "response": [] + }, + { + "name": "List pages", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the wiki pages associated with a course or group" + }, + "response": [] + }, + { + "name": "List pages", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the wiki pages associated with a course or group" + }, + "response": [] + }, + { + "name": "Create page", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new wiki page", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "wiki_page[title]", + "value": "", + "type": "text", + "description": "The title for the new page." + }, + { + "key": "wiki_page[body]", + "value": "", + "type": "text", + "description": "The content for the new page." + }, + { + "key": "wiki_page[editing_roles]", + "value": "", + "type": "text", + "description": "Which user roles are allowed to edit this page. Any combination\nof these roles is allowed (separated by commas).\n\n\"teachers\":: Allows editing by teachers in the course.\n\"students\":: Allows editing by students in the course.\n\"members\":: For group wikis, allows editing by members of the group.\n\"public\":: Allows editing by any user." + }, + { + "key": "wiki_page[notify_of_update]", + "value": "", + "type": "text", + "description": "Whether participants should be notified when this page changes." + }, + { + "key": "wiki_page[published]", + "value": "", + "type": "text", + "description": "Whether the page is published (true) or draft state (false)." + }, + { + "key": "wiki_page[front_page]", + "value": "", + "type": "text", + "description": "Set an unhidden page as the front page (if true)" + }, + { + "key": "wiki_page[publish_at]", + "value": "", + "type": "text", + "description": "Schedule a future date/time to publish the page. This will have no effect unless the\n\"Scheduled Page Publication\" feature is enabled in the account. If a future date is\nsupplied, the page will be unpublished and wiki_page[published] will be ignored." + } + ] + } + }, + "response": [] + }, + { + "name": "Create page", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Create a new wiki page", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "wiki_page[title]", + "value": "", + "type": "text", + "description": "The title for the new page." + }, + { + "key": "wiki_page[body]", + "value": "", + "type": "text", + "description": "The content for the new page." + }, + { + "key": "wiki_page[editing_roles]", + "value": "", + "type": "text", + "description": "Which user roles are allowed to edit this page. Any combination\nof these roles is allowed (separated by commas).\n\n\"teachers\":: Allows editing by teachers in the course.\n\"students\":: Allows editing by students in the course.\n\"members\":: For group wikis, allows editing by members of the group.\n\"public\":: Allows editing by any user." + }, + { + "key": "wiki_page[notify_of_update]", + "value": "", + "type": "text", + "description": "Whether participants should be notified when this page changes." + }, + { + "key": "wiki_page[published]", + "value": "", + "type": "text", + "description": "Whether the page is published (true) or draft state (false)." + }, + { + "key": "wiki_page[front_page]", + "value": "", + "type": "text", + "description": "Set an unhidden page as the front page (if true)" + }, + { + "key": "wiki_page[publish_at]", + "value": "", + "type": "text", + "description": "Schedule a future date/time to publish the page. This will have no effect unless the\n\"Scheduled Page Publication\" feature is enabled in the account. If a future date is\nsupplied, the page will be unpublished and wiki_page[published] will be ignored." + } + ] + } + }, + "response": [] + }, + { + "name": "Show page", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the content of a wiki page" + }, + "response": [] + }, + { + "name": "Show page", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages/:url_or_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages", + ":url_or_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the content of a wiki page" + }, + "response": [] + }, + { + "name": "Update/create page", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Update the title or contents of a wiki page\n\nNOTE: You cannot specify the ID when creating a page. If you pass a numeric value\nas the page identifier and that does not represent a page ID that already\nexists, it will be interpreted as a URL.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "wiki_page[title]", + "value": "", + "type": "text", + "description": "The title for the new page. NOTE: changing a page's title will change its\nurl. The updated url will be returned in the result." + }, + { + "key": "wiki_page[body]", + "value": "", + "type": "text", + "description": "The content for the new page." + }, + { + "key": "wiki_page[editing_roles]", + "value": "", + "type": "text", + "description": "Which user roles are allowed to edit this page. Any combination\nof these roles is allowed (separated by commas).\n\n\"teachers\":: Allows editing by teachers in the course.\n\"students\":: Allows editing by students in the course.\n\"members\":: For group wikis, allows editing by members of the group.\n\"public\":: Allows editing by any user." + }, + { + "key": "wiki_page[notify_of_update]", + "value": "", + "type": "text", + "description": "Whether participants should be notified when this page changes." + }, + { + "key": "wiki_page[published]", + "value": "", + "type": "text", + "description": "Whether the page is published (true) or draft state (false)." + }, + { + "key": "wiki_page[publish_at]", + "value": "", + "type": "text", + "description": "Schedule a future date/time to publish the page. This will have no effect unless the\n\"Scheduled Page Publication\" feature is enabled in the account. If a future date is\nset and the page is already published, it will be unpublished." + }, + { + "key": "wiki_page[front_page]", + "value": "", + "type": "text", + "description": "Set an unhidden page as the front page (if true)" + } + ] + } + }, + "response": [] + }, + { + "name": "Update/create page", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages/:url_or_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages", + ":url_or_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Update the title or contents of a wiki page\n\nNOTE: You cannot specify the ID when creating a page. If you pass a numeric value\nas the page identifier and that does not represent a page ID that already\nexists, it will be interpreted as a URL.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "wiki_page[title]", + "value": "", + "type": "text", + "description": "The title for the new page. NOTE: changing a page's title will change its\nurl. The updated url will be returned in the result." + }, + { + "key": "wiki_page[body]", + "value": "", + "type": "text", + "description": "The content for the new page." + }, + { + "key": "wiki_page[editing_roles]", + "value": "", + "type": "text", + "description": "Which user roles are allowed to edit this page. Any combination\nof these roles is allowed (separated by commas).\n\n\"teachers\":: Allows editing by teachers in the course.\n\"students\":: Allows editing by students in the course.\n\"members\":: For group wikis, allows editing by members of the group.\n\"public\":: Allows editing by any user." + }, + { + "key": "wiki_page[notify_of_update]", + "value": "", + "type": "text", + "description": "Whether participants should be notified when this page changes." + }, + { + "key": "wiki_page[published]", + "value": "", + "type": "text", + "description": "Whether the page is published (true) or draft state (false)." + }, + { + "key": "wiki_page[publish_at]", + "value": "", + "type": "text", + "description": "Schedule a future date/time to publish the page. This will have no effect unless the\n\"Scheduled Page Publication\" feature is enabled in the account. If a future date is\nset and the page is already published, it will be unpublished." + }, + { + "key": "wiki_page[front_page]", + "value": "", + "type": "text", + "description": "Set an unhidden page as the front page (if true)" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete page", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Delete a wiki page" + }, + "response": [] + }, + { + "name": "Delete page", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages/:url_or_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages", + ":url_or_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Delete a wiki page" + }, + "response": [] + }, + { + "name": "List revisions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id/revisions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id", + "revisions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the revisions of a page. Callers must have update rights on the page in order to see page history." + }, + "response": [] + }, + { + "name": "List revisions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages/:url_or_id/revisions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages", + ":url_or_id", + "revisions" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the revisions of a page. Callers must have update rights on the page in order to see page history." + }, + "response": [] + }, + { + "name": "Show revision", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id/revisions/latest", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id", + "revisions", + "latest" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the metadata and optionally content of a revision of the page.\nNote that retrieving historic versions of pages requires edit rights." + }, + "response": [] + }, + { + "name": "Show revision", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages/:url_or_id/revisions/latest", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages", + ":url_or_id", + "revisions", + "latest" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the metadata and optionally content of a revision of the page.\nNote that retrieving historic versions of pages requires edit rights." + }, + "response": [] + }, + { + "name": "Show revision", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id/revisions/:revision_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id", + "revisions", + ":revision_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + }, + { + "key": "revision_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the metadata and optionally content of a revision of the page.\nNote that retrieving historic versions of pages requires edit rights." + }, + "response": [] + }, + { + "name": "Show revision", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages/:url_or_id/revisions/:revision_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages", + ":url_or_id", + "revisions", + ":revision_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + }, + { + "key": "revision_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the metadata and optionally content of a revision of the page.\nNote that retrieving historic versions of pages requires edit rights." + }, + "response": [] + }, + { + "name": "Revert to revision", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/pages/:url_or_id/revisions/:revision_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "pages", + ":url_or_id", + "revisions", + ":revision_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + }, + { + "key": "revision_id", + "description": "The revision to revert to (use the\n{api:WikiPagesApiController#revisions List Revisions API} to see\navailable revisions)" + } + ] + }, + "description": "Revert a page to a prior revision." + }, + "response": [] + }, + { + "name": "Revert to revision", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/pages/:url_or_id/revisions/:revision_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "pages", + ":url_or_id", + "revisions", + ":revision_id" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + }, + { + "key": "url_or_id", + "description": "ID" + }, + { + "key": "revision_id", + "description": "The revision to revert to (use the\n{api:WikiPagesApiController#revisions List Revisions API} to see\navailable revisions)" + } + ] + }, + "description": "Revert a page to a prior revision." + }, + "response": [] + } + ] + }, + { + "name": "Peer Reviews", + "item": [ + { + "name": "Get all Peer Reviews", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "peer_reviews" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all Peer Reviews for this assignment" + }, + "response": [] + }, + { + "name": "Get all Peer Reviews", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "peer_reviews" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all Peer Reviews for this assignment" + }, + "response": [] + }, + { + "name": "Get all Peer Reviews", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:submission_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "peer_reviews" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all Peer Reviews for this assignment" + }, + "response": [] + }, + { + "name": "Get all Peer Reviews", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:submission_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "peer_reviews" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all Peer Reviews for this assignment" + }, + "response": [] + }, + { + "name": "Create Peer Review", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:submission_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "peer_reviews" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Create a peer review for the assignment", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user_id", + "value": "", + "type": "text", + "description": "user_id to assign as reviewer on this assignment" + } + ] + } + }, + "response": [] + }, + { + "name": "Create Peer Review", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:submission_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "peer_reviews" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Create a peer review for the assignment", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user_id", + "value": "", + "type": "text", + "description": "user_id to assign as reviewer on this assignment" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete Peer Review", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:submission_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "peer_reviews" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Delete a peer review for the assignment" + }, + "response": [] + }, + { + "name": "Delete Peer Review", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:submission_id/peer_reviews", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "peer_reviews" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Delete a peer review for the assignment" + }, + "response": [] + } + ] + }, + { + "name": "Plagiarism Detection Platform Assignments", + "item": [ + { + "name": "Get a single assignment (lti)", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Get a single Canvas assignment by Canvas id or LTI id. Tool providers may only access\nassignments that are associated with their tool." + }, + "response": [] + } + ] + }, + { + "name": "Plagiarism Detection Platform Users", + "item": [ + { + "name": "Get a single user (lti)", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/users/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "users", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get a single Canvas user by Canvas id or LTI id. Tool providers may only access\nusers that have been assigned an assignment associated with their tool." + }, + "response": [] + }, + { + "name": "Get all users in a group (lti)", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/groups/:group_id/users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "groups", + ":group_id", + "users" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Get all Canvas users in a group. Tool providers may only access\ngroups that belong to the context the tool is installed in." + }, + "response": [] + } + ] + }, + { + "name": "Plagiarism Detection Submissions", + "item": [ + { + "name": "Get a single submission", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id/submissions/:submission_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id", + "submissions", + ":submission_id" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Get a single submission, based on submission id." + }, + "response": [] + }, + { + "name": "Get the history of a single submission", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/assignments/:assignment_id/submissions/:submission_id/history", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "assignments", + ":assignment_id", + "submissions", + ":submission_id", + "history" + ], + "variable": [ + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "submission_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all attempts made for a submission, based on submission id." + }, + "response": [] + } + ] + }, + { + "name": "Planner", + "item": [ + { + "name": "List planner items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner/items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner", + "items" + ], + "variable": [] + }, + "description": "Retrieve the paginated list of objects to be shown on the planner for the\ncurrent user with the associated planner override to override an item's\nvisibility if set.\n\nPlanner items for a student may also be retrieved by a linked observer. Use\nthe path that accepts a user_id and supply the student's id." + }, + "response": [] + }, + { + "name": "List planner items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/planner/items", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "planner", + "items" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the paginated list of objects to be shown on the planner for the\ncurrent user with the associated planner override to override an item's\nvisibility if set.\n\nPlanner items for a student may also be retrieved by a linked observer. Use\nthe path that accepts a user_id and supply the student's id." + }, + "response": [] + }, + { + "name": "List planner notes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner_notes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner_notes" + ], + "variable": [] + }, + "description": "Retrieve the paginated list of planner notes\n\nRetrieve planner note for a user" + }, + "response": [] + }, + { + "name": "Show a planner note", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner_notes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner_notes", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Retrieve a planner note for the current user" + }, + "response": [] + }, + { + "name": "Update a planner note", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner_notes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner_notes", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a planner note for the current user", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the planner note." + }, + { + "key": "details", + "value": "", + "type": "text", + "description": "Text of the planner note." + }, + { + "key": "todo_date", + "value": "", + "type": "text", + "description": "The date where this planner note should appear in the planner.\nThe value should be formatted as: yyyy-mm-dd." + }, + { + "key": "course_id", + "value": "", + "type": "text", + "description": "The ID of the course to associate with the planner note. The caller must be able to view the course in order to\nassociate it with a planner note. Use a null or empty value to remove a planner note from a course. Note that if\nthe planner note is linked to a learning object, its course_id cannot be changed." + } + ] + } + }, + "response": [] + }, + { + "name": "Create a planner note", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner_notes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner_notes" + ], + "variable": [] + }, + "description": "Create a planner note for the current user", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "", + "type": "text", + "description": "The title of the planner note." + }, + { + "key": "details", + "value": "", + "type": "text", + "description": "Text of the planner note." + }, + { + "key": "todo_date", + "value": "", + "type": "text", + "description": "The date where this planner note should appear in the planner.\nThe value should be formatted as: yyyy-mm-dd." + }, + { + "key": "course_id", + "value": "", + "type": "text", + "description": "The ID of the course to associate with the planner note. The caller must be able to view the course in order to\nassociate it with a planner note." + }, + { + "key": "linked_object_type", + "value": "", + "type": "text", + "description": "The type of a learning object to link to this planner note. Must be used in conjunction wtih linked_object_id\nand course_id. Valid linked_object_type values are:\n'announcement', 'assignment', 'discussion_topic', 'wiki_page', 'quiz'" + }, + { + "key": "linked_object_id", + "value": "", + "type": "text", + "description": "The id of a learning object to link to this planner note. Must be used in conjunction with linked_object_type\nand course_id. The object must be in the same course as specified by course_id. If the title argument is not\nprovided, the planner note will use the learning object's title as its title. Only one planner note may be\nlinked to a specific learning object." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a planner note", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner_notes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner_notes", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a planner note for the current user" + }, + "response": [] + }, + { + "name": "List planner overrides", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner/overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner", + "overrides" + ], + "variable": [] + }, + "description": "Retrieve a planner override for the current user" + }, + "response": [] + }, + { + "name": "Show a planner override", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner/overrides/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner", + "overrides", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Retrieve a planner override for the current user" + }, + "response": [] + }, + { + "name": "Update a planner override", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner/overrides/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner", + "overrides", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a planner override's visibilty for the current user", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "marked_complete", + "value": "", + "type": "text", + "description": "determines whether the planner item is marked as completed" + }, + { + "key": "dismissed", + "value": "", + "type": "text", + "description": "determines whether the planner item shows in the opportunities list" + } + ] + } + }, + "response": [] + }, + { + "name": "Create a planner override", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner/overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner", + "overrides" + ], + "variable": [] + }, + "description": "Create a planner override for the current user", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "plannable_type", + "value": "", + "type": "text", + "description": "Type of the item that you are overriding in the planner" + }, + { + "key": "plannable_id", + "value": "", + "type": "text", + "description": "ID of the item that you are overriding in the planner" + }, + { + "key": "marked_complete", + "value": "", + "type": "text", + "description": "If this is true, the item will show in the planner as completed" + }, + { + "key": "dismissed", + "value": "", + "type": "text", + "description": "If this is true, the item will not show in the opportunities list" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a planner override", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/planner/overrides/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "planner", + "overrides", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a planner override for the current user" + }, + "response": [] + } + ] + }, + { + "name": "Poll Sessions", + "item": [ + { + "name": "List poll sessions for a poll", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of PollSessions in this poll." + }, + "response": [] + }, + { + "name": "Get the results for a single poll session", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions", + ":id" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the poll session with the given id" + }, + "response": [] + }, + { + "name": "Create a single poll session", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + } + ] + }, + "description": "Create a new poll session for this poll", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "poll_sessions[course_id]", + "value": "", + "type": "text", + "description": "The id of the course this session is associated with." + }, + { + "key": "poll_sessions[course_section_id]", + "value": "", + "type": "text", + "description": "The id of the course section this session is associated with." + }, + { + "key": "poll_sessions[has_public_results]", + "value": "", + "type": "text", + "description": "Whether or not results are viewable by students." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a single poll session", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions", + ":id" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing poll session for this poll", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "poll_sessions[course_id]", + "value": "", + "type": "text", + "description": "The id of the course this session is associated with." + }, + { + "key": "poll_sessions[course_section_id]", + "value": "", + "type": "text", + "description": "The id of the course section this session is associated with." + }, + { + "key": "poll_sessions[has_public_results]", + "value": "", + "type": "text", + "description": "Whether or not results are viewable by students." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a poll session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions", + ":id" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "<b>204 No Content</b> response code is returned if the deletion was successful." + }, + "response": [] + }, + { + "name": "Open a poll session", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions/:id/open", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions", + ":id", + "open" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Close an opened poll session", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions/:id/close", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions", + ":id", + "close" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "List opened poll sessions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/poll_sessions/opened", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "poll_sessions", + "opened" + ], + "variable": [] + }, + "description": "A paginated list of all opened poll sessions available to the current user." + }, + "response": [] + }, + { + "name": "List closed poll sessions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/poll_sessions/closed", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "poll_sessions", + "closed" + ], + "variable": [] + }, + "description": "A paginated list of all closed poll sessions available to the current user." + }, + "response": [] + } + ] + }, + { + "name": "PollChoices", + "item": [ + { + "name": "List poll choices in a poll", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_choices", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_choices" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of PollChoices in this poll." + }, + "response": [] + }, + { + "name": "Get a single poll choice", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_choices/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_choices", + ":id" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the poll choice with the given id" + }, + "response": [] + }, + { + "name": "Create a single poll choice", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_choices", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_choices" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + } + ] + }, + "description": "Create a new poll choice for this poll", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "poll_choices[text]", + "value": "", + "type": "text", + "description": "The descriptive text of the poll choice." + }, + { + "key": "poll_choices[is_correct]", + "value": "", + "type": "text", + "description": "Whether this poll choice is considered correct or not. Defaults to false." + }, + { + "key": "poll_choices[position]", + "value": "", + "type": "text", + "description": "The order this poll choice should be returned in the context it's sibling poll choices." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a single poll choice", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_choices/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_choices", + ":id" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing poll choice for this poll", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "poll_choices[text]", + "value": "", + "type": "text", + "description": "The descriptive text of the poll choice." + }, + { + "key": "poll_choices[is_correct]", + "value": "", + "type": "text", + "description": "Whether this poll choice is considered correct or not. Defaults to false." + }, + { + "key": "poll_choices[position]", + "value": "", + "type": "text", + "description": "The order this poll choice should be returned in the context it's sibling poll choices." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a poll choice", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_choices/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_choices", + ":id" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "<b>204 No Content</b> response code is returned if the deletion was successful." + }, + "response": [] + } + ] + }, + { + "name": "Polls", + "item": [ + { + "name": "List polls", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls" + ], + "variable": [] + }, + "description": "Returns the paginated list of polls for the current user." + }, + "response": [] + }, + { + "name": "Get a single poll", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the poll with the given id" + }, + "response": [] + }, + { + "name": "Create a single poll", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls" + ], + "variable": [] + }, + "description": "Create a new poll for the current user", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "polls[question]", + "value": "", + "type": "text", + "description": "The title of the poll." + }, + { + "key": "polls[description]", + "value": "", + "type": "text", + "description": "A brief description or instructions for the poll." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a single poll", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing poll belonging to the current user", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "polls[question]", + "value": "", + "type": "text", + "description": "The title of the poll." + }, + { + "key": "polls[description]", + "value": "", + "type": "text", + "description": "A brief description or instructions for the poll." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a poll", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "<b>204 No Content</b> response code is returned if the deletion was successful." + }, + "response": [] + } + ] + }, + { + "name": "PollSubmissions", + "item": [ + { + "name": "Get a single poll submission", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions/:poll_session_id/poll_submissions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions", + ":poll_session_id", + "poll_submissions", + ":id" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "poll_session_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the poll submission with the given id" + }, + "response": [] + }, + { + "name": "Create a single poll submission", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/polls/:poll_id/poll_sessions/:poll_session_id/poll_submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "polls", + ":poll_id", + "poll_sessions", + ":poll_session_id", + "poll_submissions" + ], + "variable": [ + { + "key": "poll_id", + "description": "ID" + }, + { + "key": "poll_session_id", + "description": "ID" + } + ] + }, + "description": "Create a new poll submission for this poll session", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "poll_submissions[poll_choice_id]", + "value": "", + "type": "text", + "description": "The chosen poll choice for this submission." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Proficiency Ratings", + "item": [ + { + "name": "Create/update proficiency ratings", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_proficiency", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_proficiency" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create or update account-level proficiency ratings. These ratings will apply to all\nsub-accounts, unless they have their own account-level proficiency ratings defined.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of the rating level." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The non-negative number of points of the rating level. Points across ratings should be strictly decreasing in value." + }, + { + "key": "ratings[mastery]", + "value": "", + "type": "text", + "description": "Indicates the rating level where mastery is first achieved. Only one rating in a proficiency should be marked for mastery." + }, + { + "key": "ratings[color]", + "value": "", + "type": "text", + "description": "The color associated with the rating level. Should be a hex color code like '00FFFF'." + } + ] + } + }, + "response": [] + }, + { + "name": "Create/update proficiency ratings", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_proficiency", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_proficiency" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create or update account-level proficiency ratings. These ratings will apply to all\nsub-accounts, unless they have their own account-level proficiency ratings defined.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "ratings[description]", + "value": "", + "type": "text", + "description": "The description of the rating level." + }, + { + "key": "ratings[points]", + "value": "", + "type": "text", + "description": "The non-negative number of points of the rating level. Points across ratings should be strictly decreasing in value." + }, + { + "key": "ratings[mastery]", + "value": "", + "type": "text", + "description": "Indicates the rating level where mastery is first achieved. Only one rating in a proficiency should be marked for mastery." + }, + { + "key": "ratings[color]", + "value": "", + "type": "text", + "description": "The color associated with the rating level. Should be a hex color code like '00FFFF'." + } + ] + } + }, + "response": [] + }, + { + "name": "Get proficiency ratings", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/outcome_proficiency", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "outcome_proficiency" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Get account-level proficiency ratings. If not defined for this account,\nit will return proficiency ratings for the nearest super-account with ratings defined.\nWill return 404 if none found.\n\n Examples:\n curl https://<canvas>/api/v1/accounts/<account_id>/outcome_proficiency \\\n -H 'Authorization: Bearer <token>'" + }, + "response": [] + }, + { + "name": "Get proficiency ratings", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/outcome_proficiency", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "outcome_proficiency" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Get account-level proficiency ratings. If not defined for this account,\nit will return proficiency ratings for the nearest super-account with ratings defined.\nWill return 404 if none found.\n\n Examples:\n curl https://<canvas>/api/v1/accounts/<account_id>/outcome_proficiency \\\n -H 'Authorization: Bearer <token>'" + }, + "response": [] + } + ] + }, + { + "name": "Progress", + "item": [ + { + "name": "Query progress", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/progress/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "progress", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Return completion and status information about an asynchronous job" + }, + "response": [] + }, + { + "name": "Cancel progress", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/progress/:id/cancel", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "progress", + ":id", + "cancel" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Cancel an asynchronous job associated with a Progress object\nIf you include \"message\" in the POSTed data, it will be set on\nthe Progress and returned. This is handy to distinguish between\ncancel and fail for a workflow_state of \"failed\"." + }, + "response": [] + }, + { + "name": "Query progress", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/progress/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "progress", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Return completion and status information about an asynchronous job" + }, + "response": [] + } + ] + }, + { + "name": "Public JWK", + "item": [ + { + "name": "Update Public JWK", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/developer_key/update_public_jwk", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "developer_key", + "update_public_jwk" + ], + "variable": [] + }, + "description": "Rotate the public key in jwk format when using lti services", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "public_jwk", + "value": "", + "type": "text", + "description": "The new public jwk that will be set to the tools current public jwk." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Quiz Assignment Overrides", + "item": [ + { + "name": "Retrieve assignment-overridden dates for Classic Quizzes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/assignment_overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + "assignment_overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the actual due-at, unlock-at, and available-at dates for quizzes\nbased on the assignment overrides active for the current API user." + }, + "response": [] + }, + { + "name": "Retrieve assignment-overridden dates for New Quizzes", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/new_quizzes/assignment_overrides", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "new_quizzes", + "assignment_overrides" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Retrieve the actual due-at, unlock-at, and available-at dates for quizzes\nbased on the assignment overrides active for the current API user." + }, + "response": [] + } + ] + }, + { + "name": "Quiz Extensions", + "item": [ + { + "name": "Set extensions for student quiz submissions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/extensions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "extensions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "<b>Responses</b>\n\n* <b>200 OK</b> if the request was successful\n* <b>403 Forbidden</b> if you are not allowed to extend quizzes for this course", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz_extensions[user_id]", + "value": "", + "type": "text", + "description": "The ID of the user we want to add quiz extensions for." + }, + { + "key": "quiz_extensions[extra_attempts]", + "value": "", + "type": "text", + "description": "Number of times the student is allowed to re-take the quiz over the\nmultiple-attempt limit. This is limited to 1000 attempts or less." + }, + { + "key": "quiz_extensions[extra_time]", + "value": "", + "type": "text", + "description": "The number of extra minutes to allow for all attempts. This will\nadd to the existing time limit on the submission. This is limited to\n10080 minutes (1 week)" + }, + { + "key": "quiz_extensions[manually_unlocked]", + "value": "", + "type": "text", + "description": "Allow the student to take the quiz even if it's locked for\neveryone else." + }, + { + "key": "quiz_extensions[extend_from_now]", + "value": "", + "type": "text", + "description": "The number of minutes to extend the quiz from the current time. This is\nmutually exclusive to extend_from_end_at. This is limited to 1440\nminutes (24 hours)" + }, + { + "key": "quiz_extensions[extend_from_end_at]", + "value": "", + "type": "text", + "description": "The number of minutes to extend the quiz beyond the quiz's current\nending time. This is mutually exclusive to extend_from_now. This is\nlimited to 1440 minutes (24 hours)" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Quiz IP Filters", + "item": [ + { + "name": "Get available quiz IP filters.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/ip_filters", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "ip_filters" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Get a list of available IP filters for this Quiz.\n\n<b>200 OK</b> response code is returned if the request was successful." + }, + "response": [] + } + ] + }, + { + "name": "Quiz Question Groups", + "item": [ + { + "name": "Get a single quiz group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "groups", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns details of the quiz group with the given id." + }, + "response": [] + }, + { + "name": "Create a question group", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/groups", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "groups" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Create a new question group for this quiz\n\n<b>201 Created</b> response code is returned if the creation was successful.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz_groups[name]", + "value": "", + "type": "text", + "description": "The name of the question group." + }, + { + "key": "quiz_groups[pick_count]", + "value": "", + "type": "text", + "description": "The number of questions to randomly select for this group." + }, + { + "key": "quiz_groups[question_points]", + "value": "", + "type": "text", + "description": "The number of points to assign to each question in the group." + }, + { + "key": "quiz_groups[assessment_question_bank_id]", + "value": "", + "type": "text", + "description": "The id of the assessment question bank to pull questions from." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a question group", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "groups", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update a question group", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz_groups[name]", + "value": "", + "type": "text", + "description": "The name of the question group." + }, + { + "key": "quiz_groups[pick_count]", + "value": "", + "type": "text", + "description": "The number of questions to randomly select for this group." + }, + { + "key": "quiz_groups[question_points]", + "value": "", + "type": "text", + "description": "The number of points to assign to each question in the group." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a question group", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/groups/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "groups", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a question group\n\n<b>204 No Content<b> response code is returned if the deletion was successful." + }, + "response": [] + }, + { + "name": "Reorder question groups", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/groups/:id/reorder", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "groups", + ":id", + "reorder" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Change the order of the quiz questions within the group\n\n<b>204 No Content<b> response code is returned if the reorder was successful.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "order[id]", + "value": "", + "type": "text", + "description": "The associated item's unique identifier" + }, + { + "key": "order[type]", + "value": "", + "type": "text", + "description": "The type of item is always 'question' for a group" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Quiz Questions", + "item": [ + { + "name": "List questions in a quiz or a submission", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/questions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "questions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of QuizQuestions in this quiz." + }, + "response": [] + }, + { + "name": "Get a single quiz question", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/questions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "questions", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "The quiz question unique identifier." + } + ] + }, + "description": "Returns the quiz question with the given id" + }, + "response": [] + }, + { + "name": "Create a single quiz question", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/questions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "questions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Create a new quiz question for this quiz", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "question[question_name]", + "value": "", + "type": "text", + "description": "The name of the question." + }, + { + "key": "question[question_text]", + "value": "", + "type": "text", + "description": "The text of the question." + }, + { + "key": "question[quiz_group_id]", + "value": "", + "type": "text", + "description": "The id of the quiz group to assign the question to." + }, + { + "key": "question[question_type]", + "value": "", + "type": "text", + "description": "The type of question. Multiple optional fields depend upon the type of question to be used." + }, + { + "key": "question[position]", + "value": "", + "type": "text", + "description": "The order in which the question will be displayed in the quiz in relation to other questions." + }, + { + "key": "question[points_possible]", + "value": "", + "type": "text", + "description": "The maximum amount of points received for answering this question correctly." + }, + { + "key": "question[correct_comments]", + "value": "", + "type": "text", + "description": "The comment to display if the student answers the question correctly." + }, + { + "key": "question[incorrect_comments]", + "value": "", + "type": "text", + "description": "The comment to display if the student answers incorrectly." + }, + { + "key": "question[neutral_comments]", + "value": "", + "type": "text", + "description": "The comment to display regardless of how the student answered." + }, + { + "key": "question[text_after_answers]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "question[answers]", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Update an existing quiz question", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/questions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "questions", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "The associated quiz's unique identifier." + }, + { + "key": "id", + "description": "The quiz question's unique identifier." + } + ] + }, + "description": "Updates an existing quiz question for this quiz", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "question[question_name]", + "value": "", + "type": "text", + "description": "The name of the question." + }, + { + "key": "question[question_text]", + "value": "", + "type": "text", + "description": "The text of the question." + }, + { + "key": "question[quiz_group_id]", + "value": "", + "type": "text", + "description": "The id of the quiz group to assign the question to." + }, + { + "key": "question[question_type]", + "value": "", + "type": "text", + "description": "The type of question. Multiple optional fields depend upon the type of question to be used." + }, + { + "key": "question[position]", + "value": "", + "type": "text", + "description": "The order in which the question will be displayed in the quiz in relation to other questions." + }, + { + "key": "question[points_possible]", + "value": "", + "type": "text", + "description": "The maximum amount of points received for answering this question correctly." + }, + { + "key": "question[correct_comments]", + "value": "", + "type": "text", + "description": "The comment to display if the student answers the question correctly." + }, + { + "key": "question[incorrect_comments]", + "value": "", + "type": "text", + "description": "The comment to display if the student answers incorrectly." + }, + { + "key": "question[neutral_comments]", + "value": "", + "type": "text", + "description": "The comment to display regardless of how the student answered." + }, + { + "key": "question[text_after_answers]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "question[answers]", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a quiz question", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/questions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "questions", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "The associated quiz's unique identifier" + }, + { + "key": "id", + "description": "The quiz question's unique identifier" + } + ] + }, + "description": "<b>204 No Content</b> response code is returned if the deletion was successful." + }, + "response": [] + } + ] + }, + { + "name": "Quiz Reports", + "item": [ + { + "name": "Retrieve all quiz reports", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/reports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "reports" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Returns a list of all available reports." + }, + "response": [] + }, + { + "name": "Create a quiz report", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/reports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "reports" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Create and return a new report for this quiz. If a previously\ngenerated report matches the arguments and is still current (i.e.\nthere have been no new submissions), it will be returned.\n\n*Responses*\n\n* <code>400 Bad Request</code> if the specified report type is invalid\n* <code>409 Conflict</code> if a quiz report of the specified type is already being\n generated", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz_report[report_type]", + "value": "", + "type": "text", + "description": "The type of report to be generated." + }, + { + "key": "quiz_report[includes_all_versions]", + "value": "", + "type": "text", + "description": "Whether the report should consider all submissions or only the most\nrecent. Defaults to false, ignored for item_analysis." + }, + { + "key": "include", + "value": "", + "type": "text", + "description": "Whether the output should include documents for the file and/or progress\nobjects associated with this report. (Note: JSON-API only)" + } + ] + } + }, + "response": [] + }, + { + "name": "Get a quiz report", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/reports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "reports", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the data for a single quiz report." + }, + "response": [] + }, + { + "name": "Abort the generation of a report, or remove a previously generated one", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/reports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "reports", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "This API allows you to cancel a previous request you issued for a report to\nbe generated. Or in the case of an already generated report, you'd like to\nremove it, perhaps to generate it another time with an updated version that\nprovides new features.\n\nYou must check the report's generation status before attempting to use this\ninterface. See the \"workflow_state\" property of the QuizReport's Progress\nobject for more information. Only when the progress reports itself in a\n\"queued\" state can the generation be aborted.\n\n*Responses*\n\n- <code>204 No Content</code> if your request was accepted\n- <code>422 Unprocessable Entity</code> if the report is not being generated\n or can not be aborted at this stage" + }, + "response": [] + } + ] + }, + { + "name": "Quiz Statistics", + "item": [ + { + "name": "Fetching the latest quiz statistics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/statistics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "statistics" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "This endpoint provides statistics for all quiz versions, or for a specific\nquiz version, in which case the output is guaranteed to represent the\n_latest_ and most current version of the quiz.\n\n<b>200 OK</b> response code is returned if the request was successful." + }, + "response": [] + } + ] + }, + { + "name": "Quiz Submission Events", + "item": [ + { + "name": "Submit captured events", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id/events", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions", + ":id", + "events" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Store a set of events which were captured during a quiz taking session.\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz_submission_events", + "value": "", + "type": "text", + "description": "The submission events to be recorded" + } + ] + } + }, + "response": [] + }, + { + "name": "Retrieve captured events", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id/events", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions", + ":id", + "events" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Retrieve the set of events captured during a specific submission attempt." + }, + "response": [] + } + ] + }, + { + "name": "Quiz Submission Files", + "item": [ + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/self/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions", + "self", + "files" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Associate a new quiz submission file\n\nThis API endpoint is the first step in uploading a quiz submission file.\nSee the {file:file_uploads.html File Upload Documentation} for details on\nthe file upload workflow as these parameters are interpreted as per the\ndocumentation there.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "", + "type": "text", + "description": "The name of the quiz submission file" + }, + { + "key": "on_duplicate", + "value": "", + "type": "text", + "description": "How to handle duplicate names" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Quiz Submission Questions", + "item": [ + { + "name": "Get all quiz submission questions.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/quiz_submissions/:quiz_submission_id/questions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "quiz_submissions", + ":quiz_submission_id", + "questions" + ], + "variable": [ + { + "key": "quiz_submission_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all the question records for this quiz submission.\n\n<b>200 OK</b> response code is returned if the request was successful." + }, + "response": [] + }, + { + "name": "Answering questions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/quiz_submissions/:quiz_submission_id/questions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "quiz_submissions", + ":quiz_submission_id", + "questions" + ], + "variable": [ + { + "key": "quiz_submission_id", + "description": "ID" + } + ] + }, + "description": "Provide or update an answer to one or more QuizQuestions.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "attempt", + "value": "", + "type": "text", + "description": "The attempt number of the quiz submission being taken. Note that this\nmust be the latest attempt index, as questions for earlier attempts can\nnot be modified." + }, + { + "key": "validation_token", + "value": "", + "type": "text", + "description": "The unique validation token you received when the Quiz Submission was\ncreated." + }, + { + "key": "access_code", + "value": "", + "type": "text", + "description": "Access code for the Quiz, if any." + }, + { + "key": "quiz_questions", + "value": "", + "type": "text", + "description": "Set of question IDs and the answer value.\n\nSee {Appendix: Question Answer Formats} for the accepted answer formats\nfor each question type." + } + ] + } + }, + "response": [] + }, + { + "name": "Get a formatted student numerical answer.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/quiz_submissions/:quiz_submission_id/questions/:id/formatted_answer", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "quiz_submissions", + ":quiz_submission_id", + "questions", + ":id", + "formatted_answer" + ], + "variable": [ + { + "key": "quiz_submission_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Matches the intended behavior of the UI when a numerical answer is entered\nand returns the resulting formatted number" + }, + "response": [] + }, + { + "name": "Flagging a question.", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/quiz_submissions/:quiz_submission_id/questions/:id/flag", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "quiz_submissions", + ":quiz_submission_id", + "questions", + ":id", + "flag" + ], + "variable": [ + { + "key": "quiz_submission_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Set a flag on a quiz question to indicate that you want to return to it\nlater.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "attempt", + "value": "", + "type": "text", + "description": "The attempt number of the quiz submission being taken. Note that this\nmust be the latest attempt index, as questions for earlier attempts can\nnot be modified." + }, + { + "key": "validation_token", + "value": "", + "type": "text", + "description": "The unique validation token you received when the Quiz Submission was\ncreated." + }, + { + "key": "access_code", + "value": "", + "type": "text", + "description": "Access code for the Quiz, if any." + } + ] + } + }, + "response": [] + }, + { + "name": "Unflagging a question.", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/quiz_submissions/:quiz_submission_id/questions/:id/unflag", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "quiz_submissions", + ":quiz_submission_id", + "questions", + ":id", + "unflag" + ], + "variable": [ + { + "key": "quiz_submission_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Remove the flag that you previously set on a quiz question after you've\nreturned to it.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "attempt", + "value": "", + "type": "text", + "description": "The attempt number of the quiz submission being taken. Note that this\nmust be the latest attempt index, as questions for earlier attempts can\nnot be modified." + }, + { + "key": "validation_token", + "value": "", + "type": "text", + "description": "The unique validation token you received when the Quiz Submission was\ncreated." + }, + { + "key": "access_code", + "value": "", + "type": "text", + "description": "Access code for the Quiz, if any." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Quiz Submission User List", + "item": [ + { + "name": "Send a message to unsubmitted or submitted users for the quiz", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:id/submission_users/message", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":id", + "submission_users", + "message" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "{\n \"body\": {\n \"type\": \"string\",\n \"description\": \"message body of the conversation to be created\",\n \"example\": \"Please take the quiz.\"\n },\n \"recipients\": {\n \"type\": \"string\",\n \"description\": \"Who to send the message to. May be either 'submitted' or 'unsubmitted'\",\n \"example\": \"submitted\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"description\": \"Subject of the new Conversation created\",\n \"example\": \"ATTN: Quiz 101 Students\"\n }\n}", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "conversations", + "value": "", + "type": "text", + "description": "- Body and recipients to send the message to." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Quiz Submissions", + "item": [ + { + "name": "Get all quiz submissions.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Get a list of all submissions for this quiz. Users who can view or manage\ngrades for a course will have submissions from multiple users returned. A\nuser who can only submit will have only their own submissions returned. When\na user has an in-progress submission, only that submission is returned. When\nthere isn't an in-progress quiz_submission, all completed submissions,\nincluding previous attempts, are returned.\n\n<b>200 OK</b> response code is returned if the request was successful." + }, + "response": [] + }, + { + "name": "Get the quiz submission.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submission", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submission" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Get the submission for this quiz for the current user.\n\n<b>200 OK</b> response code is returned if the request was successful." + }, + "response": [] + }, + { + "name": "Get a single quiz submission.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get a single quiz submission.\n\n<b>200 OK</b> response code is returned if the request was successful." + }, + "response": [] + }, + { + "name": "Create the quiz submission (start a quiz-taking session)", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + } + ] + }, + "description": "Start taking a Quiz by creating a QuizSubmission which you can use to answer\nquestions and submit your answers.\n\n<b>Responses</b>\n\n* <b>200 OK</b> if the request was successful\n* <b>400 Bad Request</b> if the quiz is locked\n* <b>403 Forbidden</b> if an invalid access code is specified\n* <b>403 Forbidden</b> if the Quiz's IP filter restriction does not pass\n* <b>409 Conflict</b> if a QuizSubmission already exists for this user and quiz", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "access_code", + "value": "", + "type": "text", + "description": "Access code for the Quiz, if any." + }, + { + "key": "preview", + "value": "", + "type": "text", + "description": "Whether this should be a preview QuizSubmission and not count towards\nthe user's course record. Teachers only." + } + ] + } + }, + "response": [] + }, + { + "name": "Update student question scores and comments.", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update the amount of points a student has scored for questions they've\nanswered, provide comments for the student about their answer(s), or simply\nfudge the total score by a specific amount of points.\n\n<b>Responses</b>\n\n* <b>200 OK</b> if the request was successful\n* <b>403 Forbidden</b> if you are not a teacher in this course\n* <b>400 Bad Request</b> if the attempt parameter is missing or invalid\n* <b>400 Bad Request</b> if the specified QS attempt is not yet complete", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz_submissions[attempt]", + "value": "", + "type": "text", + "description": "The attempt number of the quiz submission that should be updated. This\nattempt MUST be already completed." + }, + { + "key": "quiz_submissions[fudge_points]", + "value": "", + "type": "text", + "description": "Amount of positive or negative points to fudge the total score by." + }, + { + "key": "quiz_submissions[questions]", + "value": "", + "type": "text", + "description": "A set of scores and comments for each question answered by the student.\nThe keys are the question IDs, and the values are hashes of `score` and\n`comment` entries. See {Appendix: Manual Scoring} for more on this\nparameter." + } + ] + } + }, + "response": [] + }, + { + "name": "Complete the quiz submission (turn it in).", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id/complete", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions", + ":id", + "complete" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Complete the quiz submission by marking it as complete and grading it. When\nthe quiz submission has been marked as complete, no further modifications\nwill be allowed.\n\n<b>Responses</b>\n\n* <b>200 OK</b> if the request was successful\n* <b>403 Forbidden</b> if an invalid access code is specified\n* <b>403 Forbidden</b> if the Quiz's IP filter restriction does not pass\n* <b>403 Forbidden</b> if an invalid token is specified\n* <b>400 Bad Request</b> if the QS is already complete\n* <b>400 Bad Request</b> if the attempt parameter is missing\n* <b>400 Bad Request</b> if the attempt parameter is not the latest attempt", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "attempt", + "value": "", + "type": "text", + "description": "The attempt number of the quiz submission that should be completed. Note\nthat this must be the latest attempt index, as earlier attempts can not\nbe modified." + }, + { + "key": "validation_token", + "value": "", + "type": "text", + "description": "The unique validation token you received when this Quiz Submission was\ncreated." + }, + { + "key": "access_code", + "value": "", + "type": "text", + "description": "Access code for the Quiz, if any." + } + ] + } + }, + "response": [] + }, + { + "name": "Get current quiz submission times.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id/time", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":quiz_id", + "submissions", + ":id", + "time" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "quiz_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get the current timing data for the quiz attempt, both the end_at timestamp\nand the time_left parameter.\n\n<b>Responses</b>\n\n* <b>200 OK</b> if the request was successful" + }, + "response": [] + } + ] + }, + { + "name": "Quizzes", + "item": [ + { + "name": "List quizzes in a course", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of Quizzes in this course." + }, + "response": [] + }, + { + "name": "Get a single quiz", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the quiz with the given id." + }, + "response": [] + }, + { + "name": "Create a quiz", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Create a new quiz for this course.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz[title]", + "value": "", + "type": "text", + "description": "The quiz title." + }, + { + "key": "quiz[description]", + "value": "", + "type": "text", + "description": "A description of the quiz." + }, + { + "key": "quiz[quiz_type]", + "value": "", + "type": "text", + "description": "The type of quiz." + }, + { + "key": "quiz[assignment_group_id]", + "value": "", + "type": "text", + "description": "The assignment group id to put the assignment in. Defaults to the top\nassignment group in the course. Only valid if the quiz is graded, i.e. if\nquiz_type is \"assignment\" or \"graded_survey\"." + }, + { + "key": "quiz[time_limit]", + "value": "", + "type": "text", + "description": "Time limit to take this quiz, in minutes. Set to null for no time limit.\nDefaults to null." + }, + { + "key": "quiz[shuffle_answers]", + "value": "", + "type": "text", + "description": "If true, quiz answers for multiple choice questions will be randomized for\neach student. Defaults to false." + }, + { + "key": "quiz[hide_results]", + "value": "", + "type": "text", + "description": "Dictates whether or not quiz results are hidden from students.\nIf null, students can see their results after any attempt.\nIf \"always\", students can never see their results.\nIf \"until_after_last_attempt\", students can only see results after their\nlast attempt. (Only valid if allowed_attempts > 1). Defaults to null." + }, + { + "key": "quiz[show_correct_answers]", + "value": "", + "type": "text", + "description": "Only valid if hide_results=null\nIf false, hides correct answers from students when quiz results are viewed.\nDefaults to true." + }, + { + "key": "quiz[show_correct_answers_last_attempt]", + "value": "", + "type": "text", + "description": "Only valid if show_correct_answers=true and allowed_attempts > 1\nIf true, hides correct answers from students when quiz results are viewed\nuntil they submit the last attempt for the quiz.\nDefaults to false." + }, + { + "key": "quiz[show_correct_answers_at]", + "value": "", + "type": "text", + "description": "Only valid if show_correct_answers=true\nIf set, the correct answers will be visible by students only after this\ndate, otherwise the correct answers are visible once the student hands in\ntheir quiz submission." + }, + { + "key": "quiz[hide_correct_answers_at]", + "value": "", + "type": "text", + "description": "Only valid if show_correct_answers=true\nIf set, the correct answers will stop being visible once this date has\npassed. Otherwise, the correct answers will be visible indefinitely." + }, + { + "key": "quiz[allowed_attempts]", + "value": "", + "type": "text", + "description": "Number of times a student is allowed to take a quiz.\nSet to -1 for unlimited attempts.\nDefaults to 1." + }, + { + "key": "quiz[scoring_policy]", + "value": "", + "type": "text", + "description": "Required and only valid if allowed_attempts > 1.\nScoring policy for a quiz that students can take multiple times.\nDefaults to \"keep_highest\"." + }, + { + "key": "quiz[one_question_at_a_time]", + "value": "", + "type": "text", + "description": "If true, shows quiz to student one question at a time.\nDefaults to false." + }, + { + "key": "quiz[cant_go_back]", + "value": "", + "type": "text", + "description": "Only valid if one_question_at_a_time=true\nIf true, questions are locked after answering.\nDefaults to false." + }, + { + "key": "quiz[access_code]", + "value": "", + "type": "text", + "description": "Restricts access to the quiz with a password.\nFor no access code restriction, set to null.\nDefaults to null." + }, + { + "key": "quiz[ip_filter]", + "value": "", + "type": "text", + "description": "Restricts access to the quiz to computers in a specified IP range.\nFilters can be a comma-separated list of addresses, or an address followed by a mask\n\nExamples:\n \"192.168.217.1\"\n \"192.168.217.1/24\"\n \"192.168.217.1/255.255.255.0\"\n\nFor no IP filter restriction, set to null.\nDefaults to null." + }, + { + "key": "quiz[due_at]", + "value": "", + "type": "text", + "description": "The day/time the quiz is due.\nAccepts times in ISO 8601 format, e.g. 2011-10-21T18:48Z." + }, + { + "key": "quiz[lock_at]", + "value": "", + "type": "text", + "description": "The day/time the quiz is locked for students.\nAccepts times in ISO 8601 format, e.g. 2011-10-21T18:48Z." + }, + { + "key": "quiz[unlock_at]", + "value": "", + "type": "text", + "description": "The day/time the quiz is unlocked for students.\nAccepts times in ISO 8601 format, e.g. 2011-10-21T18:48Z." + }, + { + "key": "quiz[published]", + "value": "", + "type": "text", + "description": "Whether the quiz should have a draft state of published or unpublished.\nNOTE: If students have started taking the quiz, or there are any\nsubmissions for the quiz, you may not unpublish a quiz and will recieve\nan error." + }, + { + "key": "quiz[one_time_results]", + "value": "", + "type": "text", + "description": "Whether students should be prevented from viewing their quiz results past\nthe first time (right after they turn the quiz in.)\nOnly valid if \"hide_results\" is not set to \"always\".\nDefaults to false." + }, + { + "key": "quiz[only_visible_to_overrides]", + "value": "", + "type": "text", + "description": "Whether this quiz is only visible to overrides (Only useful if\n'differentiated assignments' account setting is on)\nDefaults to false." + } + ] + } + }, + "response": [] + }, + { + "name": "Edit a quiz", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing quiz. See the documentation for quiz creation.\n\nAdditional arguments:", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "quiz[notify_of_update]", + "value": "", + "type": "text", + "description": "If true, notifies users that the quiz has changed.\nDefaults to true" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a quiz", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Reorder quiz items", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:id/reorder", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":id", + "reorder" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Change order of the quiz questions or groups within the quiz\n\n<b>204 No Content</b> response code is returned if the reorder was successful.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "order[id]", + "value": "", + "type": "text", + "description": "The associated item's unique identifier" + }, + { + "key": "order[type]", + "value": "", + "type": "text", + "description": "The type of item is either 'question' or 'group'" + } + ] + } + }, + "response": [] + }, + { + "name": "Validate quiz access code", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/quizzes/:id/validate_access_code", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "quizzes", + ":id", + "validate_access_code" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Accepts an access code and returns a boolean indicating whether that access code is correct", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "access_code", + "value": "", + "type": "text", + "description": "The access code being validated" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Result", + "item": [ + { + "name": "Show a collection of Results", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items/:line_item_id/results", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items", + ":line_item_id", + "results" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "line_item_id", + "description": "ID" + } + ] + }, + "description": "Show existing Results of a line item. Can be used to retrieve a specific student's\nresult by adding the user_id (defined as the lti_user_id or the Canvas user_id) as\na query parameter (i.e. user_id=1000). If user_id is included, it will return only\none Result in the collection if the result exists, otherwise it will be empty. May\nalso limit number of results by adding the limit query param (i.e. limit=100)" + }, + "response": [] + }, + { + "name": "Show a Result", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items/:line_item_id/results/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items", + ":line_item_id", + "results", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "line_item_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Show existing Result of a line item." + }, + "response": [] + } + ] + }, + { + "name": "Roles", + "item": [ + { + "name": "List roles", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/roles", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "roles" + ], + "variable": [ + { + "key": "account_id", + "description": "The id of the account to retrieve roles for." + } + ] + }, + "description": "A paginated list of the roles available to an account." + }, + "response": [] + }, + { + "name": "Get a single role", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/roles/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "roles", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "account_id", + "description": "The id of the account containing the role" + } + ] + }, + "description": "Retrieve information about a single role" + }, + "response": [] + }, + { + "name": "Create a new role", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/roles", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "roles" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a new course-level or account-level role.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "label", + "value": "", + "type": "text", + "description": "Label for the role." + }, + { + "key": "role", + "value": "", + "type": "text", + "description": "Deprecated alias for label." + }, + { + "key": "base_role_type", + "value": "", + "type": "text", + "description": "Specifies the role type that will be used as a base\nfor the permissions granted to this role.\n\nDefaults to 'AccountMembership' if absent" + }, + { + "key": "permissions[<X>][explicit]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "permissions[<X>][enabled]", + "value": "", + "type": "text", + "description": "If explicit is 1 and enabled is 1, permission <X> will be explicitly\ngranted to this role. If explicit is 1 and enabled has any other value\n(typically 0), permission <X> will be explicitly denied to this role. If\nexplicit is any other value (typically 0) or absent, or if enabled is\nabsent, the value for permission <X> will be inherited from upstream.\nIgnored if permission <X> is locked upstream (in an ancestor account).\n\nMay occur multiple times with unique values for <X>. Recognized\npermission names for <X> are:\n\n [For Account-Level Roles Only]\n become_user -- Users - act as\n import_sis -- SIS Data - import\n manage_account_memberships -- Admins - add / remove\n manage_account_settings -- Account-level settings - manage\n manage_alerts -- Global announcements - add / edit / delete\n manage_catalog -- Catalog - manage\n Manage Course Templates granular permissions\n add_course_template -- Course Templates - add\n delete_course_template -- Course Templates - delete\n edit_course_template -- Course Templates - edit\n manage_courses_add -- Courses - add\n manage_courses_admin -- Courses - manage / update\n manage_developer_keys -- Developer keys - manage\n manage_feature_flags -- Feature Options - enable / disable\n manage_master_courses -- Blueprint Courses - add / edit / associate / delete\n manage_role_overrides -- Permissions - manage\n manage_storage_quotas -- Storage Quotas - manage\n manage_sis -- SIS data - manage\n Manage Temporary Enrollments granular permissions\n temporary_enrollments_add -- Temporary Enrollments - add\n temporary_enrollments_edit -- Temporary Enrollments - edit\n temporary_enrollments_delete -- Temporary Enrollments - delete\n manage_user_logins -- Users - manage login details\n manage_user_observers -- Users - manage observers\n moderate_user_content -- Users - moderate content\n read_course_content -- Course Content - view\n read_course_list -- Courses - view list\n view_course_changes -- Courses - view change logs\n view_feature_flags -- Feature Options - view\n view_grade_changes -- Grades - view change logs\n view_notifications -- Notifications - view\n view_quiz_answer_audits -- Quizzes - view submission log\n view_statistics -- Statistics - view\n undelete_courses -- Courses - undelete\n\n [For both Account-Level and Course-Level roles]\n Note: Applicable enrollment types for course-level roles are given in brackets:\n S = student, T = teacher (instructor), A = TA, D = designer, O = observer.\n Lower-case letters indicate permissions that are off by default.\n A missing letter indicates the permission cannot be enabled for the role\n or any derived custom roles.\n allow_course_admin_actions -- [ Tad ] Users - allow administrative actions in courses\n create_collaborations -- [STADo] Student Collaborations - create\n create_conferences -- [STADo] Web conferences - create\n create_forum -- [STADo] Discussions - create\n generate_observer_pairing_code -- [ tado] Users - Generate observer pairing codes for students\n import_outcomes -- [ TaDo] Learning Outcomes - import\n lti_add_edit -- [ TAD ] LTI - add / edit / delete\n manage_account_banks -- [ td ] Item Banks - manage account\n share_banks_with_subaccounts -- [ tad ] Item Banks - share with subaccounts\n manage_assignments -- [ TADo] Assignments and Quizzes - add / edit / delete (deprecated)\n Manage Assignments and Quizzes granular permissions\n manage_assignments_add -- [ TADo] Assignments and Quizzes - add\n manage_assignments_edit -- [ TADo] Assignments and Quizzes - edit / manage\n manage_assignments_delete -- [ TADo] Assignments and Quizzes - delete\n manage_calendar -- [sTADo] Course Calendar - add / edit / delete\n manage_content -- [ TADo] Course Content - add / edit / delete\n manage_course_visibility -- [ TAD ] Course - change visibility\n Manage Courses granular permissions\n manage_courses_conclude -- [ TaD ] Courses - conclude\n manage_courses_delete -- [ TaD ] Courses - delete\n manage_courses_publish -- [ TaD ] Courses - publish\n manage_courses_reset -- [ TaD ] Courses - reset\n Manage Files granular permissions\n manage_files_add -- [ TADo] Course Files - add\n manage_files_edit -- [ TADo] Course Files - edit\n manage_files_delete -- [ TADo] Course Files - delete\n manage_grades -- [ TA ] Grades - edit\n Manage Groups granular permissions\n manage_groups_add -- [ TAD ] Groups - add\n manage_groups_delete -- [ TAD ] Groups - delete\n manage_groups_manage -- [ TAD ] Groups - manage\n manage_interaction_alerts -- [ Ta ] Alerts - add / edit / delete\n manage_outcomes -- [sTaDo] Learning Outcomes - add / edit / delete\n manage_proficiency_calculations -- [ t d ] Outcome Proficiency Calculations - add / edit / delete\n manage_proficiency_scales -- [ t d ] Outcome Proficiency/Mastery Scales - add / edit / delete\n Manage Sections granular permissions\n manage_sections_add -- [ TaD ] Course Sections - add\n manage_sections_edit -- [ TaD ] Course Sections - edit\n manage_sections_delete -- [ TaD ] Course Sections - delete\n manage_students -- [ TAD ] Users - manage students in courses\n manage_user_notes -- [ TA ] Faculty Journal - manage entries\n manage_rubrics -- [ TAD ] Rubrics - add / edit / delete\n Manage Pages granular permissions\n manage_wiki_create -- [ TADo] Pages - create\n manage_wiki_delete -- [ TADo] Pages - delete\n manage_wiki_update -- [ TADo] Pages - update\n moderate_forum -- [sTADo] Discussions - moderate\n post_to_forum -- [STADo] Discussions - post\n read_announcements -- [STADO] Announcements - view\n read_email_addresses -- [sTAdo] Users - view primary email address\n read_forum -- [STADO] Discussions - view\n read_question_banks -- [ TADo] Question banks - view and link\n read_reports -- [ TAD ] Reports - manage\n read_roster -- [STADo] Users - view list\n read_sis -- [sTa ] SIS Data - read\n select_final_grade -- [ TA ] Grades - select final grade for moderation\n send_messages -- [STADo] Conversations - send messages to individual course members\n send_messages_all -- [sTADo] Conversations - send messages to entire class\n Users - Teacher granular permissions\n add_teacher_to_course -- [ Tad ] Add a teacher enrollment to a course\n remove_teacher_from_course -- [ Tad ] Remove a Teacher enrollment from a course\n Users - TA granular permissions\n add_ta_to_course -- [ Tad ] Add a TA enrollment to a course\n remove_ta_from_course -- [ Tad ] Remove a TA enrollment from a course\n Users - Designer granular permissions\n add_designer_to_course -- [ Tad ] Add a designer enrollment to a course\n remove_designer_from_course -- [ Tad ] Remove a designer enrollment from a course\n Users - Observer granular permissions\n add_observer_to_course -- [ Tad ] Add an observer enrollment to a course\n remove_observer_from_course -- [ Tad ] Remove an observer enrollment from a course\n Users - Student granular permissions\n add_student_to_course -- [ Tad ] Add a student enrollment to a course\n remove_student_from_course -- [ Tad ] Remove a student enrollment from a course\n view_all_grades -- [ TAd ] Grades - view all grades\n view_analytics -- [sTA ] Analytics - view pages\n view_audit_trail -- [ t ] Grades - view audit trail\n view_group_pages -- [sTADo] Groups - view all student groups\n view_user_logins -- [ TA ] Users - view login IDs\n\nSome of these permissions are applicable only for roles on the site admin\naccount, on a root account, or for course-level roles with a particular base role type;\nif a specified permission is inapplicable, it will be ignored.\n\nAdditional permissions may exist based on installed plugins.\n\nA comprehensive list of all permissions are available:\n\nCourse Permissions PDF: http://bit.ly/cnvs-course-permissions\n\nAccount Permissions PDF: http://bit.ly/cnvs-acct-permissions" + }, + { + "key": "permissions[<X>][locked]", + "value": "", + "type": "text", + "description": "If the value is 1, permission <X> will be locked downstream (new roles in\nsubaccounts cannot override the setting). For any other value, permission\n<X> is left unlocked. Ignored if permission <X> is already locked\nupstream. May occur multiple times with unique values for <X>." + }, + { + "key": "permissions[<X>][applies_to_self]", + "value": "", + "type": "text", + "description": "If the value is 1, permission <X> applies to the account this role is in.\nThe default value is 1. Must be true if applies_to_descendants is false.\nThis value is only returned if enabled is true." + }, + { + "key": "permissions[<X>][applies_to_descendants]", + "value": "", + "type": "text", + "description": "If the value is 1, permission <X> cascades down to sub accounts of the\naccount this role is in. The default value is 1. Must be true if\napplies_to_self is false.This value is only returned if enabled is true." + } + ] + } + }, + "response": [] + }, + { + "name": "Deactivate a role", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/roles/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "roles", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deactivates a custom role. This hides it in the user interface and prevents it\nfrom being assigned to new users. Existing users assigned to the role will\ncontinue to function with the same permissions they had previously.\nBuilt-in roles cannot be deactivated." + }, + "response": [] + }, + { + "name": "Activate a role", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/roles/:id/activate", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "roles", + ":id", + "activate" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Re-activates an inactive role (allowing it to be assigned to new users)", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "role_id", + "value": "", + "type": "text", + "description": "The unique identifier for the role" + }, + { + "key": "role", + "value": "", + "type": "text", + "description": "The name for the role" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a role", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/roles/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "roles", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update permissions for an existing role.\n\nRecognized roles are:\n* TeacherEnrollment\n* StudentEnrollment\n* TaEnrollment\n* ObserverEnrollment\n* DesignerEnrollment\n* AccountAdmin\n* Any previously created custom role", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "label", + "value": "", + "type": "text", + "description": "The label for the role. Can only change the label of a custom role that belongs directly to the account." + }, + { + "key": "permissions[<X>][explicit]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "permissions[<X>][enabled]", + "value": "", + "type": "text", + "description": "These arguments are described in the documentation for the\n{api:RoleOverridesController#add_role add_role method}." + }, + { + "key": "permissions[<X>][applies_to_self]", + "value": "", + "type": "text", + "description": "If the value is 1, permission <X> applies to the account this role is in.\nThe default value is 1. Must be true if applies_to_descendants is false.\nThis value is only returned if enabled is true." + }, + { + "key": "permissions[<X>][applies_to_descendants]", + "value": "", + "type": "text", + "description": "If the value is 1, permission <X> cascades down to sub accounts of the\naccount this role is in. The default value is 1. Must be true if\napplies_to_self is false.This value is only returned if enabled is true." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Rubrics", + "item": [ + { + "name": "Create a single rubric", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubrics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubrics" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the rubric with the given id.\n\nUnfortuantely this endpoint does not return a standard Rubric object,\ninstead it returns a hash that looks like\n { 'rubric': Rubric, 'rubric_association': RubricAssociation }\n\nThis may eventually be deprecated in favor of a more standardized return\nvalue, but that is not currently planned.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "id", + "value": "", + "type": "text", + "description": "The id of the rubric" + }, + { + "key": "rubric_association_id", + "value": "", + "type": "text", + "description": "The id of the object with which this rubric is associated" + }, + { + "key": "rubric[title]", + "value": "", + "type": "text", + "description": "The title of the rubric" + }, + { + "key": "rubric[free_form_criterion_comments]", + "value": "", + "type": "text", + "description": "Whether or not you can write custom comments in the ratings field for a rubric" + }, + { + "key": "rubric_association[association_id]", + "value": "", + "type": "text", + "description": "The id of the object with which this rubric is associated" + }, + { + "key": "rubric_association[association_type]", + "value": "", + "type": "text", + "description": "The type of object this rubric is associated with" + }, + { + "key": "rubric_association[use_for_grading]", + "value": "", + "type": "text", + "description": "Whether or not the associated rubric is used for grade calculation" + }, + { + "key": "rubric_association[hide_score_total]", + "value": "", + "type": "text", + "description": "Whether or not the score total is displayed within the rubric.\nThis option is only available if the rubric is not used for grading." + }, + { + "key": "rubric_association[purpose]", + "value": "", + "type": "text", + "description": "Whether or not the association is for grading (and thus linked to an assignment)\nor if it's to indicate the rubric should appear in its context" + }, + { + "key": "rubric[criteria]", + "value": "", + "type": "text", + "description": "An indexed Hash of RubricCriteria objects where the keys are integer ids and the values are the RubricCriteria objects" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a single rubric", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubrics/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubrics", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "The id of the rubric" + } + ] + }, + "description": "Returns the rubric with the given id.\n\nUnfortuantely this endpoint does not return a standard Rubric object,\ninstead it returns a hash that looks like\n { 'rubric': Rubric, 'rubric_association': RubricAssociation }\n\nThis may eventually be deprecated in favor of a more standardized return\nvalue, but that is not currently planned.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "rubric_association_id", + "value": "", + "type": "text", + "description": "The id of the object with which this rubric is associated" + }, + { + "key": "rubric[title]", + "value": "", + "type": "text", + "description": "The title of the rubric" + }, + { + "key": "rubric[free_form_criterion_comments]", + "value": "", + "type": "text", + "description": "Whether or not you can write custom comments in the ratings field for a rubric" + }, + { + "key": "rubric[skip_updating_points_possible]", + "value": "", + "type": "text", + "description": "Whether or not to update the points possible" + }, + { + "key": "rubric_association[association_id]", + "value": "", + "type": "text", + "description": "The id of the object with which this rubric is associated" + }, + { + "key": "rubric_association[association_type]", + "value": "", + "type": "text", + "description": "The type of object this rubric is associated with" + }, + { + "key": "rubric_association[use_for_grading]", + "value": "", + "type": "text", + "description": "Whether or not the associated rubric is used for grade calculation" + }, + { + "key": "rubric_association[hide_score_total]", + "value": "", + "type": "text", + "description": "Whether or not the score total is displayed within the rubric.\nThis option is only available if the rubric is not used for grading." + }, + { + "key": "rubric_association[purpose]", + "value": "", + "type": "text", + "description": "Whether or not the association is for grading (and thus linked to an assignment)\nor if it's to indicate the rubric should appear in its context" + }, + { + "key": "rubric[criteria]", + "value": "", + "type": "text", + "description": "An indexed Hash of RubricCriteria objects where the keys are integer ids and the values are the RubricCriteria objects" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a single rubric", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubrics/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubrics", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deletes a Rubric and removes all RubricAssociations." + }, + "response": [] + }, + { + "name": "List rubrics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/rubrics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "rubrics" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of active rubrics for the current context." + }, + "response": [] + }, + { + "name": "List rubrics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubrics", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubrics" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the paginated list of active rubrics for the current context." + }, + "response": [] + }, + { + "name": "Get a single rubric", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/rubrics/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "rubrics", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the rubric with the given id." + }, + "response": [] + }, + { + "name": "Get a single rubric", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubrics/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubrics", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the rubric with the given id." + }, + "response": [] + }, + { + "name": "Get the courses and assignments for", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubrics/:id/used_locations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubrics", + ":id", + "used_locations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the rubric with the given id." + }, + "response": [] + }, + { + "name": "Get the courses and assignments for", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/rubrics/:id/used_locations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "rubrics", + ":id", + "used_locations" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the rubric with the given id." + }, + "response": [] + }, + { + "name": "Create a single rubric assessment", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubric_associations/:rubric_association_id/rubric_assessments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubric_associations", + ":rubric_association_id", + "rubric_assessments" + ], + "variable": [ + { + "key": "course_id", + "description": "The id of the course" + }, + { + "key": "rubric_association_id", + "description": "The id of the object with which this rubric assessment is associated" + } + ] + }, + "description": "Returns the rubric assessment with the given id.\nThe returned object also provides the information of\n :ratings, :assessor_name, :related_group_submissions_and_assessments, :artifact", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "provisional", + "value": "", + "type": "text", + "description": "(optional) Indicates whether this assessment is provisional, defaults to false." + }, + { + "key": "final", + "value": "", + "type": "text", + "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." + }, + { + "key": "graded_anonymously", + "value": "", + "type": "text", + "description": "(optional) Defaults to false" + }, + { + "key": "rubric_assessment", + "value": "", + "type": "text", + "description": "A Hash of data to complement the rubric assessment:\nThe user id that refers to the person being assessed\n rubric_assessment[user_id]\nAssessment type. There are only three valid types: 'grading', 'peer_review', or 'provisional_grade'\n rubric_assessment[assessment_type]\nThe points awarded for this row.\n rubric_assessment[criterion_id][points]\nComments to add for this row.\n rubric_assessment[criterion_id][comments]\nFor each criterion_id, change the id by the criterion number, ex: criterion_123\nIf the criterion_id is not specified it defaults to false, and nothing is updated." + } + ] + } + }, + "response": [] + }, + { + "name": "Update a single rubric assessment", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubric_associations/:rubric_association_id/rubric_assessments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubric_associations", + ":rubric_association_id", + "rubric_assessments", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "The id of the rubric assessment" + }, + { + "key": "course_id", + "description": "The id of the course" + }, + { + "key": "rubric_association_id", + "description": "The id of the object with which this rubric assessment is associated" + } + ] + }, + "description": "Returns the rubric assessment with the given id.\nThe returned object also provides the information of\n :ratings, :assessor_name, :related_group_submissions_and_assessments, :artifact", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "provisional", + "value": "", + "type": "text", + "description": "(optional) Indicates whether this assessment is provisional, defaults to false." + }, + { + "key": "final", + "value": "", + "type": "text", + "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." + }, + { + "key": "graded_anonymously", + "value": "", + "type": "text", + "description": "(optional) Defaults to false" + }, + { + "key": "rubric_assessment", + "value": "", + "type": "text", + "description": "A Hash of data to complement the rubric assessment:\nThe user id that refers to the person being assessed\n rubric_assessment[user_id]\nAssessment type. There are only three valid types: 'grading', 'peer_review', or 'provisional_grade'\n rubric_assessment[assessment_type]\nThe points awarded for this row.\n rubric_assessment[criterion_id][points]\nComments to add for this row.\n rubric_assessment[criterion_id][comments]\nFor each criterion_id, change the id by the criterion number, ex: criterion_123\nIf the criterion_id is not specified it defaults to false, and nothing is updated." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a single rubric assessment", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubric_associations/:rubric_association_id/rubric_assessments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubric_associations", + ":rubric_association_id", + "rubric_assessments", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "rubric_association_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Deletes a rubric assessment" + }, + "response": [] + }, + { + "name": "Create a RubricAssociation", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubric_associations", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubric_associations" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the rubric with the given id.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "rubric_association[rubric_id]", + "value": "", + "type": "text", + "description": "The id of the Rubric" + }, + { + "key": "rubric_association[association_id]", + "value": "", + "type": "text", + "description": "The id of the object with which this rubric is associated" + }, + { + "key": "rubric_association[association_type]", + "value": "", + "type": "text", + "description": "The type of object this rubric is associated with" + }, + { + "key": "rubric_association[title]", + "value": "", + "type": "text", + "description": "The name of the object this rubric is associated with" + }, + { + "key": "rubric_association[use_for_grading]", + "value": "", + "type": "text", + "description": "Whether or not the associated rubric is used for grade calculation" + }, + { + "key": "rubric_association[hide_score_total]", + "value": "", + "type": "text", + "description": "Whether or not the score total is displayed within the rubric.\nThis option is only available if the rubric is not used for grading." + }, + { + "key": "rubric_association[purpose]", + "value": "", + "type": "text", + "description": "Whether or not the association is for grading (and thus linked to an assignment)\nor if it's to indicate the rubric should appear in its context" + }, + { + "key": "rubric_association[bookmarked]", + "value": "", + "type": "text", + "description": "Whether or not the associated rubric appears in its context" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a RubricAssociation", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubric_associations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubric_associations", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "The id of the RubricAssociation to update" + } + ] + }, + "description": "Returns the rubric with the given id.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "rubric_association[rubric_id]", + "value": "", + "type": "text", + "description": "The id of the Rubric" + }, + { + "key": "rubric_association[association_id]", + "value": "", + "type": "text", + "description": "The id of the object with which this rubric is associated" + }, + { + "key": "rubric_association[association_type]", + "value": "", + "type": "text", + "description": "The type of object this rubric is associated with" + }, + { + "key": "rubric_association[title]", + "value": "", + "type": "text", + "description": "The name of the object this rubric is associated with" + }, + { + "key": "rubric_association[use_for_grading]", + "value": "", + "type": "text", + "description": "Whether or not the associated rubric is used for grade calculation" + }, + { + "key": "rubric_association[hide_score_total]", + "value": "", + "type": "text", + "description": "Whether or not the score total is displayed within the rubric.\nThis option is only available if the rubric is not used for grading." + }, + { + "key": "rubric_association[purpose]", + "value": "", + "type": "text", + "description": "Whether or not the association is for grading (and thus linked to an assignment)\nor if it's to indicate the rubric should appear in its context" + }, + { + "key": "rubric_association[bookmarked]", + "value": "", + "type": "text", + "description": "Whether or not the associated rubric appears in its context" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a RubricAssociation", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/rubric_associations/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "rubric_associations", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete the RubricAssociation with the given ID" + }, + "response": [] + } + ] + }, + { + "name": "Sandboxes", + "item": [ + { + "name": "Download UUID Mapping for this Sandbox", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/uuid_map", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "uuid_map" + ], + "variable": [] + }, + "description": "This endpoint returns a CSV file with the UUID mapping for the sandbox.\nThe CSV has three columns:\n * `type` - The object type\n * `original_uuid` - The UUID of an object from the template\n * `new_uuid` - The UUID of the corresponding object in the sandbox" + }, + "response": [] + } + ] + }, + { + "name": "Score", + "item": [ + { + "name": "Create a Score", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/courses/:course_id/line_items/:line_item_id/scores", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "courses", + ":course_id", + "line_items", + ":line_item_id", + "scores" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "line_item_id", + "description": "ID" + } + ] + }, + "description": "Create a new Result from the score params. If this is for the first created line_item for a\nresourceLinkId, or it is a line item that is not attached to a resourceLinkId, then a submission\nrecord will be created for the associated assignment when gradingProgress is set to\nFullyGraded or PendingManual.\n\nThe submission score will also be updated when a score object is sent with either of those\ntwo values for gradingProgress. If a score object is sent with either of FullyGraded or\nPendingManual as the value for gradingProgress and scoreGiven is missing, the assignment\nwill not be graded. This also supposes the line_item meets the condition to create a submission.\n\nA submission comment with an unknown author will be created when the comment value is included.\nThis also supposes the line_item meets the condition to create a submission.\n\nIt is also possible to submit a file along with this score, which will attach the file to the\nsubmission that is created. Files should be formatted as Content Items, with the correct syntax\nbelow.\n\nReturns a url pointing to the Result. If any files were submitted, also returns the Content Items\nwhich were sent in the request, each with a url pointing to the Progress of the file upload.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "userId", + "value": "", + "type": "text", + "description": "The lti_user_id or the Canvas user_id.\nReturns a 422 if user not found in Canvas or is not a student." + }, + { + "key": "activityProgress", + "value": "", + "type": "text", + "description": "Indicate to Canvas the status of the user towards the activity's completion.\nMust be one of Initialized, Started, InProgress, Submitted, Completed." + }, + { + "key": "gradingProgress", + "value": "", + "type": "text", + "description": "Indicate to Canvas the status of the grading process.\nA value of PendingManual will require intervention by a grader.\nValues of NotReady, Failed, and Pending will cause the scoreGiven to be ignored.\nFullyGraded values will require no action.\nPossible values are NotReady, Failed, Pending, PendingManual, FullyGraded." + }, + { + "key": "timestamp", + "value": "", + "type": "text", + "description": "Date and time when the score was modified in the tool. Should use ISO8601-formatted date with subsecond precision.\nReturns a 400 if the timestamp is earlier than the updated_at time of the Result." + }, + { + "key": "scoreGiven", + "value": "", + "type": "text", + "description": "The Current score received in the tool for this line item and user,\nscaled to the scoreMaximum" + }, + { + "key": "scoreMaximum", + "value": "", + "type": "text", + "description": "Maximum possible score for this result; it must be present if scoreGiven is present.\nReturns 422 if not present when scoreGiven is present." + }, + { + "key": "comment", + "value": "", + "type": "text", + "description": "Comment visible to the student about this score." + }, + { + "key": "submission", + "value": "", + "type": "text", + "description": "Contains metadata about the submission attempt. Supported fields listed below." + }, + { + "key": "submission[submittedAt]", + "value": "", + "type": "text", + "description": "Date and time that the submission was originally created. Should use ISO8601-formatted date with subsecond precision." + }, + { + "key": "https://canvas.instructure.com/lti/submission", + "value": "", + "type": "text", + "description": "(EXTENSION) Optional submission type and data. Fields listed below." + }, + { + "key": "https://canvas.instructure.com/lti/submission[new_submission]", + "value": "", + "type": "text", + "description": "(EXTENSION field) flag to indicate that this is a new submission. Defaults to true unless submission_type is none." + }, + { + "key": "https://canvas.instructure.com/lti/submission[preserve_score]", + "value": "", + "type": "text", + "description": "(EXTENSION field) flag to prevent a request from clearing an existing grade for a submission. Defaults to false." + }, + { + "key": "https://canvas.instructure.com/lti/submission[prioritize_non_tool_grade]", + "value": "", + "type": "text", + "description": "(EXTENSION field) flag to prevent a request from overwriting an existing grade for a submission. Defaults to false." + }, + { + "key": "https://canvas.instructure.com/lti/submission[submission_type]", + "value": "", + "type": "text", + "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." + }, + { + "key": "https://canvas.instructure.com/lti/submission[submission_data]", + "value": "", + "type": "text", + "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." + }, + { + "key": "https://canvas.instructure.com/lti/submission[submitted_at]", + "value": "", + "type": "text", + "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." + }, + { + "key": "https://canvas.instructure.com/lti/submission[content_items]", + "value": "", + "type": "text", + "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." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Search", + "item": [ + { + "name": "Find recipients", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/conversations/find_recipients", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "conversations", + "find_recipients" + ], + "variable": [] + }, + "description": "Find valid recipients (users, courses and groups) that the current user\ncan send messages to. The /api/v1/search/recipients path is the preferred\nendpoint, /api/v1/conversations/find_recipients is deprecated.\n\nPagination is supported." + }, + "response": [] + }, + { + "name": "Find recipients", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/search/recipients", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "search", + "recipients" + ], + "variable": [] + }, + "description": "Find valid recipients (users, courses and groups) that the current user\ncan send messages to. The /api/v1/search/recipients path is the preferred\nendpoint, /api/v1/conversations/find_recipients is deprecated.\n\nPagination is supported." + }, + "response": [] + }, + { + "name": "List all courses", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/search/all_courses", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "search", + "all_courses" + ], + "variable": [] + }, + "description": "A paginated list of all courses visible in the public index" + }, + "response": [] + } + ] + }, + { + "name": "Sections", + "item": [ + { + "name": "List course sections", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/sections", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "sections" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the list of sections for this course." + }, + "response": [] + }, + { + "name": "Create course section", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/sections", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "sections" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Creates a new section for this course.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course_section[name]", + "value": "", + "type": "text", + "description": "The name of the section" + }, + { + "key": "course_section[sis_section_id]", + "value": "", + "type": "text", + "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." + }, + { + "key": "course_section[integration_id]", + "value": "", + "type": "text", + "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." + }, + { + "key": "course_section[start_at]", + "value": "", + "type": "text", + "description": "Section start date in ISO8601 format, e.g. 2011-01-01T01:00Z" + }, + { + "key": "course_section[end_at]", + "value": "", + "type": "text", + "description": "Section end date in ISO8601 format. e.g. 2011-01-01T01:00Z" + }, + { + "key": "course_section[restrict_enrollments_to_section_dates]", + "value": "", + "type": "text", + "description": "Set to true to restrict user enrollments to the start and end dates of the section." + }, + { + "key": "enable_sis_reactivation", + "value": "", + "type": "text", + "description": "When true, will first try to re-activate a deleted section with matching sis_section_id if possible." + } + ] + } + }, + "response": [] + }, + { + "name": "Cross-list a Section", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:id/crosslist/:new_course_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":id", + "crosslist", + ":new_course_id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "new_course_id", + "description": "ID" + } + ] + }, + "description": "Move the Section to another course. The new course may be in a different account (department),\nbut must belong to the same root account (institution).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + } + ] + } + }, + "response": [] + }, + { + "name": "De-cross-list a Section", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:id/crosslist", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":id", + "crosslist" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Undo cross-listing of a Section, returning it to its original course." + }, + "response": [] + }, + { + "name": "Edit a section", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing section.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "course_section[name]", + "value": "", + "type": "text", + "description": "The name of the section" + }, + { + "key": "course_section[sis_section_id]", + "value": "", + "type": "text", + "description": "The sis ID of the section. Must have manage_sis permission to set." + }, + { + "key": "course_section[integration_id]", + "value": "", + "type": "text", + "description": "The integration_id of the section. Must have manage_sis permission to set." + }, + { + "key": "course_section[start_at]", + "value": "", + "type": "text", + "description": "Section start date in ISO8601 format, e.g. 2011-01-01T01:00Z" + }, + { + "key": "course_section[end_at]", + "value": "", + "type": "text", + "description": "Section end date in ISO8601 format. e.g. 2011-01-01T01:00Z" + }, + { + "key": "course_section[restrict_enrollments_to_section_dates]", + "value": "", + "type": "text", + "description": "Set to true to restrict user enrollments to the start and end dates of the section." + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + } + ] + } + }, + "response": [] + }, + { + "name": "Get section information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/sections/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "sections", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Gets details about a specific section" + }, + "response": [] + }, + { + "name": "Get section information", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Gets details about a specific section" + }, + "response": [] + }, + { + "name": "Delete a section", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete an existing section. Returns the former Section." + }, + "response": [] + } + ] + }, + { + "name": "Services", + "item": [ + { + "name": "Get Kaltura config", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/services/kaltura", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "services", + "kaltura" + ], + "variable": [] + }, + "description": "Return the config information for the Kaltura plugin in json format." + }, + "response": [] + }, + { + "name": "Start Kaltura session", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/services/kaltura_session", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "services", + "kaltura_session" + ], + "variable": [] + }, + "description": "Start a new Kaltura session, so that new media can be recorded and uploaded\nto this Canvas instance's Kaltura instance." + }, + "response": [] + } + ] + }, + { + "name": "Shared Brand Configs", + "item": [ + { + "name": "Share a BrandConfig (Theme)", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/shared_brand_configs", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "shared_brand_configs" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a SharedBrandConfig, which will give the given brand_config a name\nand make it available to other users of this account.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "shared_brand_config[name]", + "value": "", + "type": "text", + "description": "Name to share this BrandConfig (theme) as." + }, + { + "key": "shared_brand_config[brand_config_md5]", + "value": "", + "type": "text", + "description": "MD5 of brand_config to share" + } + ] + } + }, + "response": [] + }, + { + "name": "Update a shared theme", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/shared_brand_configs/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "shared_brand_configs", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update the specified shared_brand_config with a new name or to point to a new brand_config.\nUses same parameters as create." + }, + "response": [] + }, + { + "name": "Un-share a BrandConfig (Theme)", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/shared_brand_configs/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "shared_brand_configs", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a SharedBrandConfig, which will unshare it so you nor anyone else in\nyour account will see it as an option to pick from." + }, + "response": [] + } + ] + }, + { + "name": "SIS Import Errors", + "item": [ + { + "name": "Get SIS import error list", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports/:id/errors", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports", + ":id", + "errors" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the list of SIS import errors for an account or a SIS import. Import\nerrors are only stored for 30 days.\n\nExample:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/sis_imports/<id>/sis_import_errors' \\\n -H \"Authorization: Bearer <token>\"\n\nExample:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/sis_import_errors' \\\n -H \"Authorization: Bearer <token>\"" + }, + "response": [] + }, + { + "name": "Get SIS import error list", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_import_errors", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_import_errors" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the list of SIS import errors for an account or a SIS import. Import\nerrors are only stored for 30 days.\n\nExample:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/sis_imports/<id>/sis_import_errors' \\\n -H \"Authorization: Bearer <token>\"\n\nExample:\n curl 'https://<canvas>/api/v1/accounts/<account_id>/sis_import_errors' \\\n -H \"Authorization: Bearer <token>\"" + }, + "response": [] + } + ] + }, + { + "name": "SIS Imports", + "item": [ + { + "name": "Get SIS import list", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the list of SIS imports for an account\n\nExample:\n curl https://<canvas>/api/v1/accounts/<account_id>/sis_imports \\\n -H 'Authorization: Bearer <token>'" + }, + "response": [] + }, + { + "name": "Get the current importing SIS import", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports/importing", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports", + "importing" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the SIS imports that are currently processing for an account. If no\nimports are running, will return an empty array.\n\nExample:\n curl https://<canvas>/api/v1/accounts/<account_id>/sis_imports/importing \\\n -H 'Authorization: Bearer <token>'" + }, + "response": [] + }, + { + "name": "Import SIS data", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Import SIS data into Canvas. Must be on a root account with SIS imports\nenabled.\n\nFor more information on the format that's expected here, please see the\n\"SIS CSV\" section in the API docs.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "import_type", + "value": "", + "type": "text", + "description": "Choose the data format for reading SIS data. With a standard Canvas\ninstall, this option can only be 'instructure_csv', and if unprovided,\nwill be assumed to be so. Can be part of the query string." + }, + { + "key": "attachment", + "value": "", + "type": "text", + "description": "There are two ways to post SIS import data - either via a\nmultipart/form-data form-field-style attachment, or via a non-multipart\nraw post request.\n\n'attachment' is required for multipart/form-data style posts. Assumed to\nbe SIS data from a file upload form field named 'attachment'.\n\nExamples:\n curl -F attachment=@<filename> -H \"Authorization: Bearer <token>\" \\\n https://<canvas>/api/v1/accounts/<account_id>/sis_imports.json?import_type=instructure_csv\n\nIf you decide to do a raw post, you can skip the 'attachment' argument,\nbut you will then be required to provide a suitable Content-Type header.\nYou are encouraged to also provide the 'extension' argument.\n\nExamples:\n curl -H 'Content-Type: application/octet-stream' --data-binary @<filename>.zip \\\n -H \"Authorization: Bearer <token>\" \\\n https://<canvas>/api/v1/accounts/<account_id>/sis_imports.json?import_type=instructure_csv&extension=zip\n\n curl -H 'Content-Type: application/zip' --data-binary @<filename>.zip \\\n -H \"Authorization: Bearer <token>\" \\\n https://<canvas>/api/v1/accounts/<account_id>/sis_imports.json?import_type=instructure_csv\n\n curl -H 'Content-Type: text/csv' --data-binary @<filename>.csv \\\n -H \"Authorization: Bearer <token>\" \\\n https://<canvas>/api/v1/accounts/<account_id>/sis_imports.json?import_type=instructure_csv\n\n curl -H 'Content-Type: text/csv' --data-binary @<filename>.csv \\\n -H \"Authorization: Bearer <token>\" \\\n https://<canvas>/api/v1/accounts/<account_id>/sis_imports.json?import_type=instructure_csv&batch_mode=1&batch_mode_term_id=15\n\nIf the attachment is a zip file, the uncompressed file(s) cannot be 100x larger than the zip, or the import will fail.\nFor example, if the zip file is 1KB but the total size of the uncompressed file(s) is 100KB or greater the import will\nfail. There is a hard cap of 50 GB." + }, + { + "key": "extension", + "value": "", + "type": "text", + "description": "Recommended for raw post request style imports. This field will be used to\ndistinguish between zip, xml, csv, and other file format extensions that\nwould usually be provided with the filename in the multipart post request\nscenario. If not provided, this value will be inferred from the\nContent-Type, falling back to zip-file format if all else fails." + }, + { + "key": "batch_mode", + "value": "", + "type": "text", + "description": "If set, this SIS import will be run in batch mode, deleting any data\npreviously imported via SIS that is not present in this latest import.\nSee the SIS CSV Format page for details.\nBatch mode cannot be used with diffing." + }, + { + "key": "batch_mode_term_id", + "value": "", + "type": "text", + "description": "Limit deletions to only this term. Required if batch mode is enabled." + }, + { + "key": "multi_term_batch_mode", + "value": "", + "type": "text", + "description": "Runs batch mode against all terms in terms file. Requires change_threshold." + }, + { + "key": "skip_deletes", + "value": "", + "type": "text", + "description": "When set the import will skip any deletes. This does not account for\nobjects that are deleted during the batch mode cleanup process." + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is false. If true, any fields containing \u201csticky\u201d or UI changes will be overridden.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + }, + { + "key": "add_sis_stickiness", + "value": "", + "type": "text", + "description": "This option, if present, will process all changes as if they were UI\nchanges. This means that \"stickiness\" will be added to changed fields.\nThis option is only processed if 'override_sis_stickiness' is also provided." + }, + { + "key": "clear_sis_stickiness", + "value": "", + "type": "text", + "description": "This option, if present, will clear \"stickiness\" from all fields touched\nby this import. Requires that 'override_sis_stickiness' is also provided.\nIf 'add_sis_stickiness' is also provided, 'clear_sis_stickiness' will\noverrule the behavior of 'add_sis_stickiness'" + }, + { + "key": "update_sis_id_if_login_claimed", + "value": "", + "type": "text", + "description": "This option, if present, will override the old (or non-existent)\nnon-matching SIS ID with the new SIS ID in the upload,\nif a pseudonym is found from the login field and the SIS ID doesn't match." + }, + { + "key": "diffing_data_set_identifier", + "value": "", + "type": "text", + "description": "If set on a CSV import, Canvas will attempt to optimize the SIS import by\ncomparing this set of CSVs to the previous set that has the same data set\nidentifier, and only applying the difference between the two. See the\nSIS CSV Format documentation for more details.\nDiffing cannot be used with batch_mode" + }, + { + "key": "diffing_remaster_data_set", + "value": "", + "type": "text", + "description": "If true, and diffing_data_set_identifier is sent, this SIS import will be\npart of the data set, but diffing will not be performed. See the SIS CSV\nFormat documentation for details." + }, + { + "key": "diffing_drop_status", + "value": "", + "type": "text", + "description": "If diffing_drop_status is passed, this SIS import will use this status for\nenrollments that are not included in the sis_batch. Defaults to 'deleted'" + }, + { + "key": "diffing_user_remove_status", + "value": "", + "type": "text", + "description": "For users removed from one batch to the next one using the same\ndiffing_data_set_identifier, set their status to the value of this argument.\nDefaults to 'deleted'." + }, + { + "key": "batch_mode_enrollment_drop_status", + "value": "", + "type": "text", + "description": "If batch_mode_enrollment_drop_status is passed, this SIS import will use\nthis status for enrollments that are not included in the sis_batch. This\nwill have an effect if multi_term_batch_mode is set. Defaults to 'deleted'\nThis will still mark courses and sections that are not included in the\nsis_batch as deleted, and subsequently enrollments in the deleted courses\nand sections as deleted." + }, + { + "key": "change_threshold", + "value": "", + "type": "text", + "description": "If set with batch_mode, the batch cleanup process will not run if the\nnumber of items deleted is higher than the percentage set. If set to 10\nand a term has 200 enrollments, and batch would delete more than 20 of\nthe enrollments the batch will abort before the enrollments are deleted.\nThe change_threshold will be evaluated for course, sections, and\nenrollments independently.\nIf set with diffing, diffing will not be performed if the files are\ngreater than the threshold as a percent. If set to 5 and the file is more\nthan 5% smaller or more than 5% larger than the file that is being\ncompared to, diffing will not be performed. If the files are less than 5%,\ndiffing will be performed. The way the percent is calculated is by taking\nthe size of the current import and dividing it by the size of the previous\nimport. The formula used is:\n|(1 - current_file_size / previous_file_size)| * 100\nSee the SIS CSV Format documentation for more details.\nRequired for multi_term_batch_mode." + }, + { + "key": "diff_row_count_threshold", + "value": "", + "type": "text", + "description": "If set with diffing, diffing will not be performed if the number of rows\nto be run in the fully calculated diff import exceeds the threshold." + } + ] + } + }, + "response": [] + }, + { + "name": "Get SIS import status", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Get the status of an already created SIS import.\n\n Examples:\n curl https://<canvas>/api/v1/accounts/<account_id>/sis_imports/<sis_import_id> \\\n -H 'Authorization: Bearer <token>'" + }, + "response": [] + }, + { + "name": "Restore workflow_states of SIS imported items", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports/:id/restore_states", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports", + ":id", + "restore_states" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "This will restore the the workflow_state for all the items that changed\ntheir workflow_state during the import being restored.\nThis will restore states for items imported with the following importers:\naccounts.csv terms.csv courses.csv sections.csv group_categories.csv\ngroups.csv users.csv admins.csv\nThis also restores states for other items that changed during the import.\nAn example would be if an enrollment was deleted from a sis import and the\ngroup_membership was also deleted as a result of the enrollment deletion,\nboth items would be restored when the sis batch is restored.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "batch_mode", + "value": "", + "type": "text", + "description": "If set, will only restore items that were deleted from batch_mode." + }, + { + "key": "undelete_only", + "value": "", + "type": "text", + "description": "If set, will only restore items that were deleted. This will ignore any\nitems that were created or modified." + }, + { + "key": "unconclude_only", + "value": "", + "type": "text", + "description": "If set, will only restore enrollments that were concluded. This will\nignore any items that were created or deleted." + } + ] + } + }, + "response": [] + }, + { + "name": "Abort SIS import", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports/:id/abort", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports", + ":id", + "abort" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Abort a SIS import that has not completed.\n\nAborting a sis batch that is running can take some time for every process to\nsee the abort event. Subsequent sis batches begin to process 10 minutes\nafter the abort to allow each process to clean up properly." + }, + "response": [] + }, + { + "name": "Abort all pending SIS imports", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/sis_imports/abort_all_pending", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "sis_imports", + "abort_all_pending" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Abort already created but not processed or processing SIS imports." + }, + "response": [] + } + ] + }, + { + "name": "SIS Integration", + "item": [ + { + "name": "Retrieve assignments enabled for grade export to SIS", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/sis/accounts/:account_id/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "sis", + "accounts", + ":account_id", + "assignments" + ], + "variable": [ + { + "key": "account_id", + "description": "The ID of the account to query." + } + ] + }, + "description": "Retrieve a list of published assignments flagged as \"post_to_sis\".\nSee the Assignments API for more details on assignments.\nAssignment group and section information are included for convenience.\n\nEach section includes course information for the origin course and the\ncross-listed course, if applicable. The `origin_course` is the course to\nwhich the section belongs or the course from which the section was\ncross-listed. Generally, the `origin_course` should be preferred when\nperforming integration work. The `xlist_course` is provided for consistency\nand is only present when the section has been cross-listed.\nSee Sections API and Courses Api for me details.\n\nThe `override` is only provided if the Differentiated Assignments course\nfeature is turned on and the assignment has an override for that section.\nWhen there is an override for the assignment the override object's\nkeys/values can be merged with the top level assignment object to create a\nview of the assignment object specific to that section.\nSee Assignments api for more information on assignment overrides.\n\nrestricts to courses that start before this date (if they have a start date)\nrestricts to courses that end after this date (if they have an end date)\ninformation to include.\n\n \"student_overrides\":: returns individual student override information" + }, + "response": [] + }, + { + "name": "Retrieve assignments enabled for grade export to SIS", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/sis/courses/:course_id/assignments", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "sis", + "courses", + ":course_id", + "assignments" + ], + "variable": [ + { + "key": "course_id", + "description": "The ID of the course to query." + } + ] + }, + "description": "Retrieve a list of published assignments flagged as \"post_to_sis\".\nSee the Assignments API for more details on assignments.\nAssignment group and section information are included for convenience.\n\nEach section includes course information for the origin course and the\ncross-listed course, if applicable. The `origin_course` is the course to\nwhich the section belongs or the course from which the section was\ncross-listed. Generally, the `origin_course` should be preferred when\nperforming integration work. The `xlist_course` is provided for consistency\nand is only present when the section has been cross-listed.\nSee Sections API and Courses Api for me details.\n\nThe `override` is only provided if the Differentiated Assignments course\nfeature is turned on and the assignment has an override for that section.\nWhen there is an override for the assignment the override object's\nkeys/values can be merged with the top level assignment object to create a\nview of the assignment object specific to that section.\nSee Assignments api for more information on assignment overrides.\n\nrestricts to courses that start before this date (if they have a start date)\nrestricts to courses that end after this date (if they have an end date)\ninformation to include.\n\n \"student_overrides\":: returns individual student override information" + }, + "response": [] + }, + { + "name": "Disable assignments currently enabled for grade export to SIS", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/sis/courses/:course_id/disable_post_to_sis", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "sis", + "courses", + ":course_id", + "disable_post_to_sis" + ], + "variable": [ + { + "key": "course_id", + "description": "The ID of the course." + } + ] + }, + "description": "Disable all assignments flagged as \"post_to_sis\", with the option of making it\nspecific to a grading period, in a course.\n\nOn success, the response will be 204 No Content with an empty body.\n\nOn failure, the response will be 400 Bad Request with a body of a specific\nmessage.\n\nFor disabling assignments in a specific grading period", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "grading_period_id", + "value": "", + "type": "text", + "description": "The ID of the grading period." + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Smart Search", + "item": [ + { + "name": "Search course content", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/smartsearch", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "smartsearch" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Find course content using a meaning-based search" + }, + "response": [] + } + ] + }, + { + "name": "Submission Comments", + "item": [ + { + "name": "Edit a submission comment", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/comments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "comments", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Edit the given submission comment.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment", + "value": "", + "type": "text", + "description": "If this argument is present, edit the text of a comment." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a submission comment", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/comments/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "comments", + ":id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete the given submission comment." + }, + "response": [] + }, + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/comments/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "comments", + "files" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Upload a file to attach to a submission comment\n\nSee the {file:file_uploads.html File Upload Documentation} for details on the file upload workflow.\n\nThe final step of the file upload workflow will return the attachment data,\nincluding the new file id. The caller can then PUT the file_id to the\nsubmission API to attach it to a comment" + }, + "response": [] + } + ] + }, + { + "name": "Submissions", + "item": [ + { + "name": "Submit an assignment", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Make a submission for an assignment. You must be enrolled as a student in\nthe course/section to do this.\n\nAll online turn-in submission types are supported in this API. However,\nthere are a few things that are not yet supported:\n\n* 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.\n* Media comments can be submitted, however, there is no API yet for creating a media comment to submit.\n* Integration with Google Docs is not yet supported.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment[text_comment]", + "value": "", + "type": "text", + "description": "Include a textual comment with the submission." + }, + { + "key": "submission[group_comment]", + "value": "", + "type": "text", + "description": "Whether or not this comment should be sent to the entire group (defaults\nto false). Ignored if this is not a group assignment or if no text_comment\nis provided." + }, + { + "key": "submission[submission_type]", + "value": "", + "type": "text", + "description": "The type of submission being made. The assignment submission_types must\ninclude this submission type as an allowed option, or the submission will be rejected with a 400 error.\n\nThe submission_type given determines which of the following parameters is\nused. For instance, to submit a URL, submission [submission_type] must be\nset to \"online_url\", otherwise the submission [url] parameter will be\nignored.\n\n\"basic_lti_launch\" requires the assignment submission_type \"online\" or \"external_tool\"" + }, + { + "key": "submission[body]", + "value": "", + "type": "text", + "description": "Submit the assignment as an HTML document snippet. Note this HTML snippet\nwill be sanitized using the same ruleset as a submission made from the\nCanvas web UI. The sanitized HTML will be returned in the response as the\nsubmission body. Requires a submission_type of \"online_text_entry\"." + }, + { + "key": "submission[url]", + "value": "", + "type": "text", + "description": "Submit the assignment as a URL. The URL scheme must be \"http\" or \"https\",\nno \"ftp\" or other URL schemes are allowed. If no scheme is given (e.g.\n\"www.example.com\") then \"http\" will be assumed. Requires a submission_type\nof \"online_url\" or \"basic_lti_launch\"." + }, + { + "key": "submission[file_ids]", + "value": "", + "type": "text", + "description": "Submit the assignment as a set of one or more previously uploaded files\nresiding in the submitting user's files section (or the group's files\nsection, for group assignments).\n\nTo upload a new file to submit, see the submissions {api:SubmissionsApiController#create_file Upload a file API}.\n\nRequires a submission_type of \"online_upload\"." + }, + { + "key": "submission[media_comment_id]", + "value": "", + "type": "text", + "description": "The media comment id to submit. Media comment ids can be submitted via\nthis API, however, note that there is not yet an API to generate or list\nexisting media comments, so this functionality is currently of limited use.\n\nRequires a submission_type of \"media_recording\"." + }, + { + "key": "submission[media_comment_type]", + "value": "", + "type": "text", + "description": "The type of media comment being submitted." + }, + { + "key": "submission[user_id]", + "value": "", + "type": "text", + "description": "Submit on behalf of the given user. Requires grading permission." + }, + { + "key": "submission[annotatable_attachment_id]", + "value": "", + "type": "text", + "description": "The Attachment ID of the document being annotated. This should match\nthe annotatable_attachment_id on the assignment.\n\nRequires a submission_type of \"student_annotation\"." + }, + { + "key": "submission[submitted_at]", + "value": "", + "type": "text", + "description": "Choose the time the submission is listed as submitted at. Requires grading permission." + } + ] + } + }, + "response": [] + }, + { + "name": "Submit an assignment", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Make a submission for an assignment. You must be enrolled as a student in\nthe course/section to do this.\n\nAll online turn-in submission types are supported in this API. However,\nthere are a few things that are not yet supported:\n\n* 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.\n* Media comments can be submitted, however, there is no API yet for creating a media comment to submit.\n* Integration with Google Docs is not yet supported.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment[text_comment]", + "value": "", + "type": "text", + "description": "Include a textual comment with the submission." + }, + { + "key": "submission[group_comment]", + "value": "", + "type": "text", + "description": "Whether or not this comment should be sent to the entire group (defaults\nto false). Ignored if this is not a group assignment or if no text_comment\nis provided." + }, + { + "key": "submission[submission_type]", + "value": "", + "type": "text", + "description": "The type of submission being made. The assignment submission_types must\ninclude this submission type as an allowed option, or the submission will be rejected with a 400 error.\n\nThe submission_type given determines which of the following parameters is\nused. For instance, to submit a URL, submission [submission_type] must be\nset to \"online_url\", otherwise the submission [url] parameter will be\nignored.\n\n\"basic_lti_launch\" requires the assignment submission_type \"online\" or \"external_tool\"" + }, + { + "key": "submission[body]", + "value": "", + "type": "text", + "description": "Submit the assignment as an HTML document snippet. Note this HTML snippet\nwill be sanitized using the same ruleset as a submission made from the\nCanvas web UI. The sanitized HTML will be returned in the response as the\nsubmission body. Requires a submission_type of \"online_text_entry\"." + }, + { + "key": "submission[url]", + "value": "", + "type": "text", + "description": "Submit the assignment as a URL. The URL scheme must be \"http\" or \"https\",\nno \"ftp\" or other URL schemes are allowed. If no scheme is given (e.g.\n\"www.example.com\") then \"http\" will be assumed. Requires a submission_type\nof \"online_url\" or \"basic_lti_launch\"." + }, + { + "key": "submission[file_ids]", + "value": "", + "type": "text", + "description": "Submit the assignment as a set of one or more previously uploaded files\nresiding in the submitting user's files section (or the group's files\nsection, for group assignments).\n\nTo upload a new file to submit, see the submissions {api:SubmissionsApiController#create_file Upload a file API}.\n\nRequires a submission_type of \"online_upload\"." + }, + { + "key": "submission[media_comment_id]", + "value": "", + "type": "text", + "description": "The media comment id to submit. Media comment ids can be submitted via\nthis API, however, note that there is not yet an API to generate or list\nexisting media comments, so this functionality is currently of limited use.\n\nRequires a submission_type of \"media_recording\"." + }, + { + "key": "submission[media_comment_type]", + "value": "", + "type": "text", + "description": "The type of media comment being submitted." + }, + { + "key": "submission[user_id]", + "value": "", + "type": "text", + "description": "Submit on behalf of the given user. Requires grading permission." + }, + { + "key": "submission[annotatable_attachment_id]", + "value": "", + "type": "text", + "description": "The Attachment ID of the document being annotated. This should match\nthe annotatable_attachment_id on the assignment.\n\nRequires a submission_type of \"student_annotation\"." + }, + { + "key": "submission[submitted_at]", + "value": "", + "type": "text", + "description": "Choose the time the submission is listed as submitted at. Requires grading permission." + } + ] + } + }, + "response": [] + }, + { + "name": "List assignment submissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all existing submissions for an assignment." + }, + "response": [] + }, + { + "name": "List assignment submissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all existing submissions for an assignment." + }, + "response": [] + }, + { + "name": "List submissions for multiple assignments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/students/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "students", + "submissions" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all existing submissions for a given set of students and assignments." + }, + "response": [] + }, + { + "name": "List submissions for multiple assignments", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/students/submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "students", + "submissions" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of all existing submissions for a given set of students and assignments." + }, + "response": [] + }, + { + "name": "Get a single submission", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Get a single submission, based on user id." + }, + "response": [] + }, + { + "name": "Get a single submission", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Get a single submission, based on user id." + }, + "response": [] + }, + { + "name": "Get a single submission by anonymous id", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/anonymous_submissions/:anonymous_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "anonymous_submissions", + ":anonymous_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "anonymous_id", + "description": "ID" + } + ] + }, + "description": "Get a single submission, based on the submission's anonymous id." + }, + "response": [] + }, + { + "name": "Get a single submission by anonymous id", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/anonymous_submissions/:anonymous_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "anonymous_submissions", + ":anonymous_id" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "anonymous_id", + "description": "ID" + } + ] + }, + "description": "Get a single submission, based on the submission's anonymous id." + }, + "response": [] + }, + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "files" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Upload a file to a submission.\n\nThis API endpoint is the first step in uploading a file to a submission as a student.\nSee the {file:file_uploads.html File Upload Documentation} for details on the file upload workflow.\n\nThe final step of the file upload workflow will return the attachment data,\nincluding the new file id. The caller can then POST to submit the\n+online_upload+ assignment with these file ids." + }, + "response": [] + }, + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "files" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Upload a file to a submission.\n\nThis API endpoint is the first step in uploading a file to a submission as a student.\nSee the {file:file_uploads.html File Upload Documentation} for details on the file upload workflow.\n\nThe final step of the file upload workflow will return the attachment data,\nincluding the new file id. The caller can then POST to submit the\n+online_upload+ assignment with these file ids." + }, + "response": [] + }, + { + "name": "Grade or comment on a submission", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Comment on and/or update the grading for a student's assignment submission.\nIf any submission or rubric_assessment arguments are provided, the user\nmust have permission to manage grades in the appropriate context (course or\nsection).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment[text_comment]", + "value": "", + "type": "text", + "description": "Add a textual comment to the submission." + }, + { + "key": "comment[attempt]", + "value": "", + "type": "text", + "description": "The attempt number (starts at 1) to associate the comment with." + }, + { + "key": "comment[group_comment]", + "value": "", + "type": "text", + "description": "Whether or not this comment should be sent to the entire group (defaults\nto false). Ignored if this is not a group assignment or if no text_comment\nis provided." + }, + { + "key": "comment[media_comment_id]", + "value": "", + "type": "text", + "description": "Add an audio/video comment to the submission. Media comments can be added\nvia this API, however, note that there is not yet an API to generate or\nlist existing media comments, so this functionality is currently of\nlimited use." + }, + { + "key": "comment[media_comment_type]", + "value": "", + "type": "text", + "description": "The type of media comment being added." + }, + { + "key": "comment[file_ids]", + "value": "", + "type": "text", + "description": "Attach files to this comment that were previously uploaded using the\nSubmission Comment API's files action" + }, + { + "key": "include[visibility]", + "value": "", + "type": "text", + "description": "Whether this assignment is visible to the owner of the submission" + }, + { + "key": "prefer_points_over_scheme", + "value": "", + "type": "text", + "description": "Treat posted_grade as points if the value matches a grading scheme value" + }, + { + "key": "submission[posted_grade]", + "value": "", + "type": "text", + "description": "Assign a score to the submission, updating both the \"score\" and \"grade\"\nfields on the submission record. This parameter can be passed in a few\ndifferent formats:\n\npoints:: A floating point or integral value, such as \"13.5\". The grade\n will be interpreted directly as the score of the assignment.\n Values above assignment.points_possible are allowed, for awarding\n extra credit.\npercentage:: A floating point value appended with a percent sign, such as\n \"40%\". The grade will be interpreted as a percentage score on the\n assignment, where 100% == assignment.points_possible. Values above 100%\n are allowed, for awarding extra credit.\nletter grade:: A letter grade, following the assignment's defined letter\n grading scheme. For example, \"A-\". The resulting score will be the high\n end of the defined range for the letter grade. For instance, if \"B\" is\n defined as 86% to 84%, a letter grade of \"B\" will be worth 86%. The\n letter grade will be rejected if the assignment does not have a defined\n letter grading scheme. For more fine-grained control of scores, pass in\n points or percentage rather than the letter grade.\n\"pass/complete/fail/incomplete\":: A string value of \"pass\" or \"complete\"\n will give a score of 100%. \"fail\" or \"incomplete\" will give a score of\n 0.\n\nNote that assignments with grading_type of \"pass_fail\" can only be\nassigned a score of 0 or assignment.points_possible, nothing inbetween. If\na posted_grade in the \"points\" or \"percentage\" format is sent, the grade\nwill only be accepted if the grade equals one of those two values." + }, + { + "key": "submission[excuse]", + "value": "", + "type": "text", + "description": "Sets the \"excused\" status of an assignment." + }, + { + "key": "submission[late_policy_status]", + "value": "", + "type": "text", + "description": "Sets the late policy status to either \"late\", \"missing\", \"extended\", \"none\", or null.\n NB: \"extended\" values can only be set in the UI when the \"UI features for 'extended' Submissions\" Account Feature is on" + }, + { + "key": "submission[sticker]", + "value": "", + "type": "text", + "description": "Sets the sticker for the submission." + }, + { + "key": "submission[seconds_late_override]", + "value": "", + "type": "text", + "description": "Sets the seconds late if late policy status is \"late\"" + }, + { + "key": "rubric_assessment", + "value": "", + "type": "text", + "description": "Assign a rubric assessment to this assignment submission. The\nsub-parameters here depend on the rubric for the assignment. The general\nformat is, for each row in the rubric:\n\nThe points awarded for this row.\n rubric_assessment[criterion_id][points]\n\nThe rating id for the row.\n rubric_assessment[criterion_id][rating_id]\n\nComments to add for this row.\n rubric_assessment[criterion_id][comments]\n\nFor example, if the assignment rubric is (in JSON format):\n !!!javascript\n [\n {\n 'id': 'crit1',\n 'points': 10,\n 'description': 'Criterion 1',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Good', 'points': 10 },\n { 'id': 'rat2', 'description': 'Poor', 'points': 3 }\n ]\n },\n {\n 'id': 'crit2',\n 'points': 5,\n 'description': 'Criterion 2',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 },\n { 'id': 'rat2', 'description': 'Complete', 'points': 5 },\n { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 }\n ]\n }\n ]\n\nThen a possible set of values for rubric_assessment would be:\n 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." + } + ] + } + }, + "response": [] + }, + { + "name": "Grade or comment on a submission", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Comment on and/or update the grading for a student's assignment submission.\nIf any submission or rubric_assessment arguments are provided, the user\nmust have permission to manage grades in the appropriate context (course or\nsection).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment[text_comment]", + "value": "", + "type": "text", + "description": "Add a textual comment to the submission." + }, + { + "key": "comment[attempt]", + "value": "", + "type": "text", + "description": "The attempt number (starts at 1) to associate the comment with." + }, + { + "key": "comment[group_comment]", + "value": "", + "type": "text", + "description": "Whether or not this comment should be sent to the entire group (defaults\nto false). Ignored if this is not a group assignment or if no text_comment\nis provided." + }, + { + "key": "comment[media_comment_id]", + "value": "", + "type": "text", + "description": "Add an audio/video comment to the submission. Media comments can be added\nvia this API, however, note that there is not yet an API to generate or\nlist existing media comments, so this functionality is currently of\nlimited use." + }, + { + "key": "comment[media_comment_type]", + "value": "", + "type": "text", + "description": "The type of media comment being added." + }, + { + "key": "comment[file_ids]", + "value": "", + "type": "text", + "description": "Attach files to this comment that were previously uploaded using the\nSubmission Comment API's files action" + }, + { + "key": "include[visibility]", + "value": "", + "type": "text", + "description": "Whether this assignment is visible to the owner of the submission" + }, + { + "key": "prefer_points_over_scheme", + "value": "", + "type": "text", + "description": "Treat posted_grade as points if the value matches a grading scheme value" + }, + { + "key": "submission[posted_grade]", + "value": "", + "type": "text", + "description": "Assign a score to the submission, updating both the \"score\" and \"grade\"\nfields on the submission record. This parameter can be passed in a few\ndifferent formats:\n\npoints:: A floating point or integral value, such as \"13.5\". The grade\n will be interpreted directly as the score of the assignment.\n Values above assignment.points_possible are allowed, for awarding\n extra credit.\npercentage:: A floating point value appended with a percent sign, such as\n \"40%\". The grade will be interpreted as a percentage score on the\n assignment, where 100% == assignment.points_possible. Values above 100%\n are allowed, for awarding extra credit.\nletter grade:: A letter grade, following the assignment's defined letter\n grading scheme. For example, \"A-\". The resulting score will be the high\n end of the defined range for the letter grade. For instance, if \"B\" is\n defined as 86% to 84%, a letter grade of \"B\" will be worth 86%. The\n letter grade will be rejected if the assignment does not have a defined\n letter grading scheme. For more fine-grained control of scores, pass in\n points or percentage rather than the letter grade.\n\"pass/complete/fail/incomplete\":: A string value of \"pass\" or \"complete\"\n will give a score of 100%. \"fail\" or \"incomplete\" will give a score of\n 0.\n\nNote that assignments with grading_type of \"pass_fail\" can only be\nassigned a score of 0 or assignment.points_possible, nothing inbetween. If\na posted_grade in the \"points\" or \"percentage\" format is sent, the grade\nwill only be accepted if the grade equals one of those two values." + }, + { + "key": "submission[excuse]", + "value": "", + "type": "text", + "description": "Sets the \"excused\" status of an assignment." + }, + { + "key": "submission[late_policy_status]", + "value": "", + "type": "text", + "description": "Sets the late policy status to either \"late\", \"missing\", \"extended\", \"none\", or null.\n NB: \"extended\" values can only be set in the UI when the \"UI features for 'extended' Submissions\" Account Feature is on" + }, + { + "key": "submission[sticker]", + "value": "", + "type": "text", + "description": "Sets the sticker for the submission." + }, + { + "key": "submission[seconds_late_override]", + "value": "", + "type": "text", + "description": "Sets the seconds late if late policy status is \"late\"" + }, + { + "key": "rubric_assessment", + "value": "", + "type": "text", + "description": "Assign a rubric assessment to this assignment submission. The\nsub-parameters here depend on the rubric for the assignment. The general\nformat is, for each row in the rubric:\n\nThe points awarded for this row.\n rubric_assessment[criterion_id][points]\n\nThe rating id for the row.\n rubric_assessment[criterion_id][rating_id]\n\nComments to add for this row.\n rubric_assessment[criterion_id][comments]\n\nFor example, if the assignment rubric is (in JSON format):\n !!!javascript\n [\n {\n 'id': 'crit1',\n 'points': 10,\n 'description': 'Criterion 1',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Good', 'points': 10 },\n { 'id': 'rat2', 'description': 'Poor', 'points': 3 }\n ]\n },\n {\n 'id': 'crit2',\n 'points': 5,\n 'description': 'Criterion 2',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 },\n { 'id': 'rat2', 'description': 'Complete', 'points': 5 },\n { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 }\n ]\n }\n ]\n\nThen a possible set of values for rubric_assessment would be:\n 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." + } + ] + } + }, + "response": [] + }, + { + "name": "Grade or comment on a submission by anonymous id", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/anonymous_submissions/:anonymous_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "anonymous_submissions", + ":anonymous_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "anonymous_id", + "description": "ID" + } + ] + }, + "description": "Comment on and/or update the grading for a student's assignment submission,\nfetching the submission by anonymous id (instead of user id). If any\nsubmission or rubric_assessment arguments are provided, the user must\nhave permission to manage grades in the appropriate context (course or\nsection).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment[text_comment]", + "value": "", + "type": "text", + "description": "Add a textual comment to the submission." + }, + { + "key": "comment[group_comment]", + "value": "", + "type": "text", + "description": "Whether or not this comment should be sent to the entire group (defaults\nto false). Ignored if this is not a group assignment or if no text_comment\nis provided." + }, + { + "key": "comment[media_comment_id]", + "value": "", + "type": "text", + "description": "Add an audio/video comment to the submission. Media comments can be added\nvia this API, however, note that there is not yet an API to generate or\nlist existing media comments, so this functionality is currently of\nlimited use." + }, + { + "key": "comment[media_comment_type]", + "value": "", + "type": "text", + "description": "The type of media comment being added." + }, + { + "key": "comment[file_ids]", + "value": "", + "type": "text", + "description": "Attach files to this comment that were previously uploaded using the\nSubmission Comment API's files action" + }, + { + "key": "include[visibility]", + "value": "", + "type": "text", + "description": "Whether this assignment is visible to the owner of the submission" + }, + { + "key": "submission[posted_grade]", + "value": "", + "type": "text", + "description": "Assign a score to the submission, updating both the \"score\" and \"grade\"\nfields on the submission record. This parameter can be passed in a few\ndifferent formats:\n\npoints:: A floating point or integral value, such as \"13.5\". The grade\n will be interpreted directly as the score of the assignment.\n Values above assignment.points_possible are allowed, for awarding\n extra credit.\npercentage:: A floating point value appended with a percent sign, such as\n \"40%\". The grade will be interpreted as a percentage score on the\n assignment, where 100% == assignment.points_possible. Values above 100%\n are allowed, for awarding extra credit.\nletter grade:: A letter grade, following the assignment's defined letter\n grading scheme. For example, \"A-\". The resulting score will be the high\n end of the defined range for the letter grade. For instance, if \"B\" is\n defined as 86% to 84%, a letter grade of \"B\" will be worth 86%. The\n letter grade will be rejected if the assignment does not have a defined\n letter grading scheme. For more fine-grained control of scores, pass in\n points or percentage rather than the letter grade.\n\"pass/complete/fail/incomplete\":: A string value of \"pass\" or \"complete\"\n will give a score of 100%. \"fail\" or \"incomplete\" will give a score of\n 0.\n\nNote that assignments with grading_type of \"pass_fail\" can only be\nassigned a score of 0 or assignment.points_possible, nothing inbetween. If\na posted_grade in the \"points\" or \"percentage\" format is sent, the grade\nwill only be accepted if the grade equals one of those two values." + }, + { + "key": "submission[excuse]", + "value": "", + "type": "text", + "description": "Sets the \"excused\" status of an assignment." + }, + { + "key": "submission[late_policy_status]", + "value": "", + "type": "text", + "description": "Sets the late policy status to either \"late\", \"missing\", \"extended\", \"none\", or null.\n NB: \"extended\" values can only be set in the UI when the \"UI features for 'extended' Submissions\" Account Feature is on" + }, + { + "key": "submission[seconds_late_override]", + "value": "", + "type": "text", + "description": "Sets the seconds late if late policy status is \"late\"" + }, + { + "key": "rubric_assessment", + "value": "", + "type": "text", + "description": "Assign a rubric assessment to this assignment submission. The\nsub-parameters here depend on the rubric for the assignment. The general\nformat is, for each row in the rubric:\n\nThe points awarded for this row.\n rubric_assessment[criterion_id][points]\n\nThe rating id for the row.\n rubric_assessment[criterion_id][rating_id]\n\nComments to add for this row.\n rubric_assessment[criterion_id][comments]\n\nFor example, if the assignment rubric is (in JSON format):\n !!!javascript\n [\n {\n 'id': 'crit1',\n 'points': 10,\n 'description': 'Criterion 1',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Good', 'points': 10 },\n { 'id': 'rat2', 'description': 'Poor', 'points': 3 }\n ]\n },\n {\n 'id': 'crit2',\n 'points': 5,\n 'description': 'Criterion 2',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 },\n { 'id': 'rat2', 'description': 'Complete', 'points': 5 },\n { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 }\n ]\n }\n ]\n\nThen a possible set of values for rubric_assessment would be:\n 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." + } + ] + } + }, + "response": [] + }, + { + "name": "Grade or comment on a submission by anonymous id", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/anonymous_submissions/:anonymous_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "anonymous_submissions", + ":anonymous_id" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "anonymous_id", + "description": "ID" + } + ] + }, + "description": "Comment on and/or update the grading for a student's assignment submission,\nfetching the submission by anonymous id (instead of user id). If any\nsubmission or rubric_assessment arguments are provided, the user must\nhave permission to manage grades in the appropriate context (course or\nsection).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "comment[text_comment]", + "value": "", + "type": "text", + "description": "Add a textual comment to the submission." + }, + { + "key": "comment[group_comment]", + "value": "", + "type": "text", + "description": "Whether or not this comment should be sent to the entire group (defaults\nto false). Ignored if this is not a group assignment or if no text_comment\nis provided." + }, + { + "key": "comment[media_comment_id]", + "value": "", + "type": "text", + "description": "Add an audio/video comment to the submission. Media comments can be added\nvia this API, however, note that there is not yet an API to generate or\nlist existing media comments, so this functionality is currently of\nlimited use." + }, + { + "key": "comment[media_comment_type]", + "value": "", + "type": "text", + "description": "The type of media comment being added." + }, + { + "key": "comment[file_ids]", + "value": "", + "type": "text", + "description": "Attach files to this comment that were previously uploaded using the\nSubmission Comment API's files action" + }, + { + "key": "include[visibility]", + "value": "", + "type": "text", + "description": "Whether this assignment is visible to the owner of the submission" + }, + { + "key": "submission[posted_grade]", + "value": "", + "type": "text", + "description": "Assign a score to the submission, updating both the \"score\" and \"grade\"\nfields on the submission record. This parameter can be passed in a few\ndifferent formats:\n\npoints:: A floating point or integral value, such as \"13.5\". The grade\n will be interpreted directly as the score of the assignment.\n Values above assignment.points_possible are allowed, for awarding\n extra credit.\npercentage:: A floating point value appended with a percent sign, such as\n \"40%\". The grade will be interpreted as a percentage score on the\n assignment, where 100% == assignment.points_possible. Values above 100%\n are allowed, for awarding extra credit.\nletter grade:: A letter grade, following the assignment's defined letter\n grading scheme. For example, \"A-\". The resulting score will be the high\n end of the defined range for the letter grade. For instance, if \"B\" is\n defined as 86% to 84%, a letter grade of \"B\" will be worth 86%. The\n letter grade will be rejected if the assignment does not have a defined\n letter grading scheme. For more fine-grained control of scores, pass in\n points or percentage rather than the letter grade.\n\"pass/complete/fail/incomplete\":: A string value of \"pass\" or \"complete\"\n will give a score of 100%. \"fail\" or \"incomplete\" will give a score of\n 0.\n\nNote that assignments with grading_type of \"pass_fail\" can only be\nassigned a score of 0 or assignment.points_possible, nothing inbetween. If\na posted_grade in the \"points\" or \"percentage\" format is sent, the grade\nwill only be accepted if the grade equals one of those two values." + }, + { + "key": "submission[excuse]", + "value": "", + "type": "text", + "description": "Sets the \"excused\" status of an assignment." + }, + { + "key": "submission[late_policy_status]", + "value": "", + "type": "text", + "description": "Sets the late policy status to either \"late\", \"missing\", \"extended\", \"none\", or null.\n NB: \"extended\" values can only be set in the UI when the \"UI features for 'extended' Submissions\" Account Feature is on" + }, + { + "key": "submission[seconds_late_override]", + "value": "", + "type": "text", + "description": "Sets the seconds late if late policy status is \"late\"" + }, + { + "key": "rubric_assessment", + "value": "", + "type": "text", + "description": "Assign a rubric assessment to this assignment submission. The\nsub-parameters here depend on the rubric for the assignment. The general\nformat is, for each row in the rubric:\n\nThe points awarded for this row.\n rubric_assessment[criterion_id][points]\n\nThe rating id for the row.\n rubric_assessment[criterion_id][rating_id]\n\nComments to add for this row.\n rubric_assessment[criterion_id][comments]\n\nFor example, if the assignment rubric is (in JSON format):\n !!!javascript\n [\n {\n 'id': 'crit1',\n 'points': 10,\n 'description': 'Criterion 1',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Good', 'points': 10 },\n { 'id': 'rat2', 'description': 'Poor', 'points': 3 }\n ]\n },\n {\n 'id': 'crit2',\n 'points': 5,\n 'description': 'Criterion 2',\n 'ratings':\n [\n { 'id': 'rat1', 'description': 'Exemplary', 'points': 5 },\n { 'id': 'rat2', 'description': 'Complete', 'points': 5 },\n { 'id': 'rat3', 'description': 'Incomplete', 'points': 0 }\n ]\n }\n ]\n\nThen a possible set of values for rubric_assessment would be:\n 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." + } + ] + } + }, + "response": [] + }, + { + "name": "List gradeable students", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/gradeable_students", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "gradeable_students" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of students eligible to submit the assignment. The caller must have permission to view grades.\n\nIf anonymous grading is enabled for the current assignment and the allow_new_anonymous_id parameter is passed,\nthe returned data will not include any values identifying the student, but will instead include an\nassignment-specific anonymous ID for each student.\n\nSection-limited instructors will only see students in their own sections." + }, + "response": [] + }, + { + "name": "List multiple assignments gradeable students", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/gradeable_students", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + "gradeable_students" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of students eligible to submit a list of assignments. The caller must have\npermission to view grades for the requested course.\n\nSection-limited instructors will only see students in their own sections." + }, + "response": [] + }, + { + "name": "Grade or comment on multiple submissions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/submissions/update_grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "submissions", + "update_grades" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Update the grading and comments on multiple student's assignment\nsubmissions in an asynchronous job.\n\nThe user must have permission to manage grades in the appropriate context\n(course or section).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "grade_data[<student_id>][posted_grade]", + "value": "", + "type": "text", + "description": "See documentation for the posted_grade argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][excuse]", + "value": "", + "type": "text", + "description": "See documentation for the excuse argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][rubric_assessment]", + "value": "", + "type": "text", + "description": "See documentation for the rubric_assessment argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][text_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][group_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_id]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_type]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][file_ids]", + "value": "", + "type": "text", + "description": "See documentation for the comment[] arguments in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<assignment_id>][<student_id>]", + "value": "", + "type": "text", + "description": "Specifies which assignment to grade. This argument is not necessary when\nusing the assignment-specific endpoints." + } + ] + } + }, + "response": [] + }, + { + "name": "Grade or comment on multiple submissions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/update_grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + "update_grades" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Update the grading and comments on multiple student's assignment\nsubmissions in an asynchronous job.\n\nThe user must have permission to manage grades in the appropriate context\n(course or section).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "grade_data[<student_id>][posted_grade]", + "value": "", + "type": "text", + "description": "See documentation for the posted_grade argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][excuse]", + "value": "", + "type": "text", + "description": "See documentation for the excuse argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][rubric_assessment]", + "value": "", + "type": "text", + "description": "See documentation for the rubric_assessment argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][text_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][group_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_id]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_type]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][file_ids]", + "value": "", + "type": "text", + "description": "See documentation for the comment[] arguments in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<assignment_id>][<student_id>]", + "value": "", + "type": "text", + "description": "Specifies which assignment to grade. This argument is not necessary when\nusing the assignment-specific endpoints." + } + ] + } + }, + "response": [] + }, + { + "name": "Grade or comment on multiple submissions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/submissions/update_grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "submissions", + "update_grades" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + } + ] + }, + "description": "Update the grading and comments on multiple student's assignment\nsubmissions in an asynchronous job.\n\nThe user must have permission to manage grades in the appropriate context\n(course or section).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "grade_data[<student_id>][posted_grade]", + "value": "", + "type": "text", + "description": "See documentation for the posted_grade argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][excuse]", + "value": "", + "type": "text", + "description": "See documentation for the excuse argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][rubric_assessment]", + "value": "", + "type": "text", + "description": "See documentation for the rubric_assessment argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][text_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][group_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_id]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_type]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][file_ids]", + "value": "", + "type": "text", + "description": "See documentation for the comment[] arguments in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<assignment_id>][<student_id>]", + "value": "", + "type": "text", + "description": "Specifies which assignment to grade. This argument is not necessary when\nusing the assignment-specific endpoints." + } + ] + } + }, + "response": [] + }, + { + "name": "Grade or comment on multiple submissions", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/update_grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + "update_grades" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Update the grading and comments on multiple student's assignment\nsubmissions in an asynchronous job.\n\nThe user must have permission to manage grades in the appropriate context\n(course or section).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "grade_data[<student_id>][posted_grade]", + "value": "", + "type": "text", + "description": "See documentation for the posted_grade argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][excuse]", + "value": "", + "type": "text", + "description": "See documentation for the excuse argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][rubric_assessment]", + "value": "", + "type": "text", + "description": "See documentation for the rubric_assessment argument in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<student_id>][text_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][group_comment]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_id]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][media_comment_type]", + "value": "", + "type": "text", + "description": "no description" + }, + { + "key": "grade_data[<student_id>][file_ids]", + "value": "", + "type": "text", + "description": "See documentation for the comment[] arguments in the\n{api:SubmissionsApiController#update Submissions Update} documentation" + }, + { + "key": "grade_data[<assignment_id>][<student_id>]", + "value": "", + "type": "text", + "description": "Specifies which assignment to grade. This argument is not necessary when\nusing the assignment-specific endpoints." + } + ] + } + }, + "response": [] + }, + { + "name": "Mark submission as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "No request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark submission as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "No request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark submission as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "No request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark submission as unread", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "No request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark bulk submissions as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/submissions/bulk_mark_read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "submissions", + "bulk_mark_read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Accepts a string array of submission ids. Loops through and marks each submission as read\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "submissionIds", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Mark bulk submissions as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/submissions/bulk_mark_read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "submissions", + "bulk_mark_read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + } + ] + }, + "description": "Accepts a string array of submission ids. Loops through and marks each submission as read\n\nOn success, the response will be 204 No Content with an empty body.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "submissionIds", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + }, + { + "name": "Mark submission item as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/read/:item", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "read", + ":item" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + }, + { + "key": "item", + "description": "ID" + } + ] + }, + "description": "No request fields are necessary.\n\nA submission item can be \"grade\", \"comment\" or \"rubric\"\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Mark submission item as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/read/:item", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "read", + ":item" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + }, + { + "key": "item", + "description": "ID" + } + ] + }, + "description": "No request fields are necessary.\n\nA submission item can be \"grade\", \"comment\" or \"rubric\"\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Clear unread status for all submissions.", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/submissions/:user_id/clear_unread", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "submissions", + ":user_id", + "clear_unread" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Site-admin-only endpoint.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Clear unread status for all submissions.", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/submissions/:user_id/clear_unread", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "submissions", + ":user_id", + "clear_unread" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Site-admin-only endpoint.\n\nNo request fields are necessary.\n\nOn success, the response will be 204 No Content with an empty body." + }, + "response": [] + }, + { + "name": "Get rubric assessments read state", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/rubric_comments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_comments", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return whether new rubric comments/grading made on a submission have been seen by the student being assessed." + }, + "response": [] + }, + { + "name": "Get rubric assessments read state", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/rubric_assessments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_assessments", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return whether new rubric comments/grading made on a submission have been seen by the student being assessed." + }, + "response": [] + }, + { + "name": "Get rubric assessments read state", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/rubric_comments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_comments", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return whether new rubric comments/grading made on a submission have been seen by the student being assessed." + }, + "response": [] + }, + { + "name": "Get rubric assessments read state", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/rubric_assessments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_assessments", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return whether new rubric comments/grading made on a submission have been seen by the student being assessed." + }, + "response": [] + }, + { + "name": "Mark rubric assessments as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/rubric_comments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_comments", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Indicate that rubric comments/grading made on a submission have been read by the student being assessed.\nOnly the student who owns the submission can use this endpoint.\n\nNOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web." + }, + "response": [] + }, + { + "name": "Mark rubric assessments as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/rubric_assessments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_assessments", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Indicate that rubric comments/grading made on a submission have been read by the student being assessed.\nOnly the student who owns the submission can use this endpoint.\n\nNOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web." + }, + "response": [] + }, + { + "name": "Mark rubric assessments as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/rubric_comments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_comments", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Indicate that rubric comments/grading made on a submission have been read by the student being assessed.\nOnly the student who owns the submission can use this endpoint.\n\nNOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web." + }, + "response": [] + }, + { + "name": "Mark rubric assessments as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/rubric_assessments/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "rubric_assessments", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Indicate that rubric comments/grading made on a submission have been read by the student being assessed.\nOnly the student who owns the submission can use this endpoint.\n\nNOTE: Rubric assessments will be marked as read automatically when they are viewed in Canvas web." + }, + "response": [] + }, + { + "name": "Get document annotations read state", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/document_annotations/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "document_annotations", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return whether annotations made on a submitted document have been read by the student" + }, + "response": [] + }, + { + "name": "Get document annotations read state", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/document_annotations/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "document_annotations", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return whether annotations made on a submitted document have been read by the student" + }, + "response": [] + }, + { + "name": "Mark document annotations as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/document_annotations/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "document_annotations", + "read" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Indicate that annotations made on a submitted document have been read by the student.\nOnly the student who owns the submission can use this endpoint.\n\nNOTE: Document annotations will be marked as read automatically when they are viewed in Canvas web." + }, + "response": [] + }, + { + "name": "Mark document annotations as read", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/document_annotations/read", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submissions", + ":user_id", + "document_annotations", + "read" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + }, + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Indicate that annotations made on a submitted document have been read by the student.\nOnly the student who owns the submission can use this endpoint.\n\nNOTE: Document annotations will be marked as read automatically when they are viewed in Canvas web." + }, + "response": [] + }, + { + "name": "Submission Summary", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/assignments/:assignment_id/submission_summary", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "assignments", + ":assignment_id", + "submission_summary" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Returns the number of submissions for the given assignment based on gradeable students\nthat fall into three categories: graded, ungraded, not submitted." + }, + "response": [] + }, + { + "name": "Submission Summary", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/sections/:section_id/assignments/:assignment_id/submission_summary", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "sections", + ":section_id", + "assignments", + ":assignment_id", + "submission_summary" + ], + "variable": [ + { + "key": "section_id", + "description": "ID" + }, + { + "key": "assignment_id", + "description": "ID" + } + ] + }, + "description": "Returns the number of submissions for the given assignment based on gradeable students\nthat fall into three categories: graded, ungraded, not submitted." + }, + "response": [] + } + ] + }, + { + "name": "Tabs", + "item": [ + { + "name": "List available tabs for a course or group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/tabs", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "tabs" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of navigation tabs available in the current context." + }, + "response": [] + }, + { + "name": "List available tabs for a course or group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/tabs", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "tabs" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of navigation tabs available in the current context." + }, + "response": [] + }, + { + "name": "List available tabs for a course or group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/groups/:group_id/tabs", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "groups", + ":group_id", + "tabs" + ], + "variable": [ + { + "key": "group_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of navigation tabs available in the current context." + }, + "response": [] + }, + { + "name": "List available tabs for a course or group", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/tabs", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "tabs" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns a paginated list of navigation tabs available in the current context." + }, + "response": [] + }, + { + "name": "Update a tab for a course", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/courses/:course_id/tabs/:tab_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "courses", + ":course_id", + "tabs", + ":tab_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + }, + { + "key": "tab_id", + "description": "ID" + } + ] + }, + "description": "Home and Settings tabs are not manageable, and can't be hidden or moved\n\nReturns a tab object", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "position", + "value": "", + "type": "text", + "description": "The new position of the tab, 1-based" + }, + { + "key": "hidden", + "value": "", + "type": "text", + "description": "no description" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Temporary Enrollment Pairings", + "item": [ + { + "name": "List temporary enrollment pairings", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/temporary_enrollment_pairings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "temporary_enrollment_pairings" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Returns the list of temporary enrollment pairings for a root account." + }, + "response": [] + }, + { + "name": "Get a single temporary enrollment pairing", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/temporary_enrollment_pairings/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "temporary_enrollment_pairings", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns the temporary enrollment pairing with the given id." + }, + "response": [] + }, + { + "name": "New TemporaryEnrollmentPairing", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/temporary_enrollment_pairings/new", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "temporary_enrollment_pairings", + "new" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Initialize an unsaved Temporary Enrollment Pairing." + }, + "response": [] + }, + { + "name": "Create Temporary Enrollment Pairing", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/temporary_enrollment_pairings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "temporary_enrollment_pairings" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create a Temporary Enrollment Pairing.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "workflow_state", + "value": "", + "type": "text", + "description": "The workflow state of the temporary enrollment pairing." + }, + { + "key": "ending_enrollment_state", + "value": "", + "type": "text", + "description": "The ending enrollment state to be given to each associated enrollment\nwhen the enrollment period has been reached. Defaults to \"deleted\" if no value is given.\nAccepted values are \"deleted\", \"completed\", and \"inactive\"." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete Temporary Enrollment Pairing", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/temporary_enrollment_pairings/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "temporary_enrollment_pairings", + ":id" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + }, + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Delete a temporary enrollment pairing" + }, + "response": [] + } + ] + }, + { + "name": "User Observees", + "item": [ + { + "name": "List observees", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observees", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observees" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the users that the given user is observing.\n\n*Note:* all users are allowed to list their own observees. Administrators can list\nother users' observees.\n\nThe returned observees will include an attribute \"observation_link_root_account_ids\", a list\nof ids for the root accounts the observer and observee are linked on. The observer will only be able to\nobserve in courses associated with these root accounts." + }, + "response": [] + }, + { + "name": "List observers", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observers", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observers" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of the observers of a given user.\n\n*Note:* all users are allowed to list their own observers. Administrators can list\nother users' observers.\n\nThe returned observers will include an attribute \"observation_link_root_account_ids\", a list\nof ids for the root accounts the observer and observee are linked on. The observer will only be able to\nobserve in courses associated with these root accounts." + }, + "response": [] + }, + { + "name": "Add an observee with credentials", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observees", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observees" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Register the given user to observe another user, given the observee's credentials.\n\n*Note:* all users are allowed to add their own observees, given the observee's\ncredentials or access token are provided. Administrators can add observees given credentials, access token or\nthe {api:UserObserveesController#update observee's id}.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "observee[unique_id]", + "value": "", + "type": "text", + "description": "The login id for the user to observe. Required if access_token is omitted." + }, + { + "key": "observee[password]", + "value": "", + "type": "text", + "description": "The password for the user to observe. Required if access_token is omitted." + }, + { + "key": "access_token", + "value": "", + "type": "text", + "description": "The access token for the user to observe. Required if <tt>observee[unique_id]</tt> or <tt>observee[password]</tt> are omitted." + }, + { + "key": "pairing_code", + "value": "", + "type": "text", + "description": "A generated pairing code for the user to observe. Required if the Observer pairing code feature flag is enabled" + }, + { + "key": "root_account_id", + "value": "", + "type": "text", + "description": "The ID for the root account to associate with the observation link.\nDefaults to the current domain account.\nIf 'all' is specified, a link will be created for each root account associated\nto both the observer and observee." + } + ] + } + }, + "response": [] + }, + { + "name": "Show an observee", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observees/:observee_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observees", + ":observee_id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "observee_id", + "description": "ID" + } + ] + }, + "description": "Gets information about an observed user.\n\n*Note:* all users are allowed to view their own observees." + }, + "response": [] + }, + { + "name": "Show an observer", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observers/:observer_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observers", + ":observer_id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "observer_id", + "description": "ID" + } + ] + }, + "description": "Gets information about an observer.\n\n*Note:* all users are allowed to view their own observers." + }, + "response": [] + }, + { + "name": "Add an observee", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observees/:observee_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observees", + ":observee_id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "observee_id", + "description": "ID" + } + ] + }, + "description": "Registers a user as being observed by the given user.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "root_account_id", + "value": "", + "type": "text", + "description": "The ID for the root account to associate with the observation link.\nIf not specified, a link will be created for each root account associated\nto both the observer and observee." + } + ] + } + }, + "response": [] + }, + { + "name": "Remove an observee", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observees/:observee_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observees", + ":observee_id" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + }, + { + "key": "observee_id", + "description": "ID" + } + ] + }, + "description": "Unregisters a user as being observed by the given user." + }, + "response": [] + }, + { + "name": "Create observer pairing code", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/observer_pairing_codes", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "observer_pairing_codes" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "If the user is a student, will generate a code to be used with self registration\nor observees APIs to link another user to this student." + }, + "response": [] + } + ] + }, + { + "name": "Users", + "item": [ + { + "name": "List users in account", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "users" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "A paginated list of users associated with this account.\n\n @example_request\n curl https://<canvas>/api/v1/accounts/self/users?search_term=<search value> \\\n -X GET \\\n -H 'Authorization: Bearer <token>'" + }, + "response": [] + }, + { + "name": "List the activity stream", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/activity_stream", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "activity_stream" + ], + "variable": [] + }, + "description": "Returns the current user's global activity stream, paginated.\n\nThere are many types of objects that can be returned in the activity\nstream. All object types have the same basic set of shared attributes:\n !!!javascript\n {\n 'created_at': '2011-07-13T09:12:00Z',\n 'updated_at': '2011-07-25T08:52:41Z',\n 'id': 1234,\n 'title': 'Stream Item Subject',\n 'message': 'This is the body text of the activity stream item. It is plain-text, and can be multiple paragraphs.',\n 'type': 'DiscussionTopic|Conversation|Message|Submission|Conference|Collaboration|AssessmentRequest...',\n 'read_state': false,\n 'context_type': 'course', // course|group\n 'course_id': 1,\n 'group_id': null,\n 'html_url': \"http://...\" // URL to the Canvas web UI for this stream item\n }\n\nIn addition, each item type has its own set of attributes available.\n\nDiscussionTopic:\n\n !!!javascript\n {\n 'type': 'DiscussionTopic',\n 'discussion_topic_id': 1234,\n 'total_root_discussion_entries': 5,\n 'require_initial_post': true,\n 'user_has_posted': true,\n 'root_discussion_entries': {\n ...\n }\n }\n\nFor DiscussionTopic, the message is truncated at 4kb.\n\nAnnouncement:\n\n !!!javascript\n {\n 'type': 'Announcement',\n 'announcement_id': 1234,\n 'total_root_discussion_entries': 5,\n 'require_initial_post': true,\n 'user_has_posted': null,\n 'root_discussion_entries': {\n ...\n }\n }\n\nFor Announcement, the message is truncated at 4kb.\n\nConversation:\n\n !!!javascript\n {\n 'type': 'Conversation',\n 'conversation_id': 1234,\n 'private': false,\n 'participant_count': 3,\n }\n\nMessage:\n\n !!!javascript\n {\n 'type': 'Message',\n 'message_id': 1234,\n 'notification_category': 'Assignment Graded'\n }\n\nSubmission:\n\nReturns an {api:Submissions:Submission Submission} with its Course and Assignment data.\n\nConference:\n\n !!!javascript\n {\n 'type': 'Conference',\n 'web_conference_id': 1234\n }\n\nCollaboration:\n\n !!!javascript\n {\n 'type': 'Collaboration',\n 'collaboration_id': 1234\n }\n\nAssessmentRequest:\n\n !!!javascript\n {\n 'type': 'AssessmentRequest',\n 'assessment_request_id': 1234\n }" + }, + "response": [] + }, + { + "name": "List the activity stream", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/activity_stream", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "activity_stream" + ], + "variable": [] + }, + "description": "Returns the current user's global activity stream, paginated.\n\nThere are many types of objects that can be returned in the activity\nstream. All object types have the same basic set of shared attributes:\n !!!javascript\n {\n 'created_at': '2011-07-13T09:12:00Z',\n 'updated_at': '2011-07-25T08:52:41Z',\n 'id': 1234,\n 'title': 'Stream Item Subject',\n 'message': 'This is the body text of the activity stream item. It is plain-text, and can be multiple paragraphs.',\n 'type': 'DiscussionTopic|Conversation|Message|Submission|Conference|Collaboration|AssessmentRequest...',\n 'read_state': false,\n 'context_type': 'course', // course|group\n 'course_id': 1,\n 'group_id': null,\n 'html_url': \"http://...\" // URL to the Canvas web UI for this stream item\n }\n\nIn addition, each item type has its own set of attributes available.\n\nDiscussionTopic:\n\n !!!javascript\n {\n 'type': 'DiscussionTopic',\n 'discussion_topic_id': 1234,\n 'total_root_discussion_entries': 5,\n 'require_initial_post': true,\n 'user_has_posted': true,\n 'root_discussion_entries': {\n ...\n }\n }\n\nFor DiscussionTopic, the message is truncated at 4kb.\n\nAnnouncement:\n\n !!!javascript\n {\n 'type': 'Announcement',\n 'announcement_id': 1234,\n 'total_root_discussion_entries': 5,\n 'require_initial_post': true,\n 'user_has_posted': null,\n 'root_discussion_entries': {\n ...\n }\n }\n\nFor Announcement, the message is truncated at 4kb.\n\nConversation:\n\n !!!javascript\n {\n 'type': 'Conversation',\n 'conversation_id': 1234,\n 'private': false,\n 'participant_count': 3,\n }\n\nMessage:\n\n !!!javascript\n {\n 'type': 'Message',\n 'message_id': 1234,\n 'notification_category': 'Assignment Graded'\n }\n\nSubmission:\n\nReturns an {api:Submissions:Submission Submission} with its Course and Assignment data.\n\nConference:\n\n !!!javascript\n {\n 'type': 'Conference',\n 'web_conference_id': 1234\n }\n\nCollaboration:\n\n !!!javascript\n {\n 'type': 'Collaboration',\n 'collaboration_id': 1234\n }\n\nAssessmentRequest:\n\n !!!javascript\n {\n 'type': 'AssessmentRequest',\n 'assessment_request_id': 1234\n }" + }, + "response": [] + }, + { + "name": "Activity stream summary", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/activity_stream/summary", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "activity_stream", + "summary" + ], + "variable": [] + }, + "description": "Returns a summary of the current user's global activity stream." + }, + "response": [] + }, + { + "name": "List the TODO items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/todo", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "todo" + ], + "variable": [] + }, + "description": "A paginated list of the current user's list of todo items.\n\nThere is a limit to the number of items returned.\n\nThe `ignore` and `ignore_permanently` URLs can be used to update the user's\npreferences on what items will be displayed.\nPerforming a DELETE request against the `ignore` URL will hide that item\nfrom future todo item requests, until the item changes.\nPerforming a DELETE request against the `ignore_permanently` URL will hide\nthat item forever." + }, + "response": [] + }, + { + "name": "List counts for todo items", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/todo_item_count", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "todo_item_count" + ], + "variable": [] + }, + "description": "Counts of different todo items such as the number of assignments needing grading as well as the number of assignments needing submitting.\n\nThere is a limit to the number of todo items this endpoint will count.\nIt 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.\nThe largest reliable number for both counts is 100." + }, + "response": [] + }, + { + "name": "List upcoming assignments, calendar events", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/upcoming_events", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "upcoming_events" + ], + "variable": [] + }, + "description": "A paginated list of the current user's upcoming events." + }, + "response": [] + }, + { + "name": "List Missing Submissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/missing_submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "missing_submissions" + ], + "variable": [ + { + "key": "user_id", + "description": "the student's ID" + } + ] + }, + "description": "A paginated list of past-due assignments for which the student does not have a submission.\nThe user sending the request must either be the student, an admin or a parent observer using the parent app" + }, + "response": [] + }, + { + "name": "Hide a stream item", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/activity_stream/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "activity_stream", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Hide the given stream item." + }, + "response": [] + }, + { + "name": "Hide all stream items", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/activity_stream", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "activity_stream" + ], + "variable": [] + }, + "description": "Hide all stream items for the user" + }, + "response": [] + }, + { + "name": "Upload a file", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/files", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "files" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Upload a file to the user's personal files section.\n\nThis API endpoint is the first step in uploading a file to a user's files.\nSee the {file:file_uploads.html File Upload Documentation} for details on\nthe file upload workflow.\n\nNote that typically users will only be able to upload files to their\nown files section. Passing a user_id of +self+ is an easy shortcut\nto specify the current user." + }, + "response": [] + }, + { + "name": "Show user details", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Shows details for user.\n\nAlso includes an attribute \"permissions\", a non-comprehensive list of permissions for the user.\nExample:\n !!!javascript\n \"permissions\": {\n \"can_update_name\": true, // Whether the user can update their name.\n \"can_update_avatar\": false, // Whether the user can update their avatar.\n \"limit_parent_app_web_access\": false // Whether the user can interact with Canvas web from the Canvas Parent app.\n }" + }, + "response": [] + }, + { + "name": "Create a user", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/users", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "users" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Create and return a new user and pseudonym for an account.\n\n[DEPRECATED (for self-registration only)] If you don't have the \"Modify\nlogin details for users\" permission, but self-registration is enabled\non the account, you can still use this endpoint to register new users.\nCertain fields will be required, and others will be ignored (see below).", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user[name]", + "value": "", + "type": "text", + "description": "The full name of the user. This name will be used by teacher for grading.\nRequired if this is a self-registration." + }, + { + "key": "user[short_name]", + "value": "", + "type": "text", + "description": "User's name as it will be displayed in discussions, messages, and comments." + }, + { + "key": "user[sortable_name]", + "value": "", + "type": "text", + "description": "User's name as used to sort alphabetically in lists." + }, + { + "key": "user[time_zone]", + "value": "", + "type": "text", + "description": "The time zone for the user. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "user[locale]", + "value": "", + "type": "text", + "description": "The user's preferred language, from the list of languages Canvas supports.\nThis is in RFC-5646 format." + }, + { + "key": "user[terms_of_use]", + "value": "", + "type": "text", + "description": "Whether the user accepts the terms of use. Required if this is a\nself-registration and this canvas instance requires users to accept\nthe terms (on by default).\n\nIf this is true, it will mark the user as having accepted the terms of use." + }, + { + "key": "user[skip_registration]", + "value": "", + "type": "text", + "description": "Automatically mark the user as registered.\n\nIf this is true, it is recommended to set <tt>\"pseudonym[send_confirmation]\"</tt> to true as well.\nOtherwise, the user will not receive any messages about their account creation.\n\nThe users communication channel confirmation can be skipped by setting\n<tt>\"communication_channel[skip_confirmation]\"</tt> to true as well." + }, + { + "key": "pseudonym[unique_id]", + "value": "", + "type": "text", + "description": "User's login ID. If this is a self-registration, it must be a valid\nemail address." + }, + { + "key": "pseudonym[password]", + "value": "", + "type": "text", + "description": "User's password. Cannot be set during self-registration." + }, + { + "key": "pseudonym[sis_user_id]", + "value": "", + "type": "text", + "description": "SIS ID for the user's account. To set this parameter, the caller must be\nable to manage SIS permissions." + }, + { + "key": "pseudonym[integration_id]", + "value": "", + "type": "text", + "description": "Integration ID for the login. To set this parameter, the caller must be able to\nmanage SIS permissions. The Integration ID is a secondary\nidentifier useful for more complex SIS integrations." + }, + { + "key": "pseudonym[send_confirmation]", + "value": "", + "type": "text", + "description": "Send user notification of account creation if true.\nAutomatically set to true during self-registration." + }, + { + "key": "pseudonym[force_self_registration]", + "value": "", + "type": "text", + "description": "Send user a self-registration style email if true.\nSetting it means the users will get a notification asking them\nto \"complete the registration process\" by clicking it, setting\na password, and letting them in. Will only be executed on\nif the user does not need admin approval.\nDefaults to false unless explicitly provided." + }, + { + "key": "pseudonym[authentication_provider_id]", + "value": "", + "type": "text", + "description": "The authentication provider this login is associated with. Logins\nassociated with a specific provider can only be used with that provider.\nLegacy providers (LDAP, CAS, SAML) will search for logins associated with\nthem, or unassociated logins. New providers will only search for logins\nexplicitly associated with them. This can be the integer ID of the\nprovider, or the type of the provider (in which case, it will find the\nfirst matching provider)." + }, + { + "key": "communication_channel[type]", + "value": "", + "type": "text", + "description": "The communication channel type, e.g. 'email' or 'sms'." + }, + { + "key": "communication_channel[address]", + "value": "", + "type": "text", + "description": "The communication channel address, e.g. the user's email address." + }, + { + "key": "communication_channel[confirmation_url]", + "value": "", + "type": "text", + "description": "Only valid for account admins. If true, returns the new user account\nconfirmation URL in the response." + }, + { + "key": "communication_channel[skip_confirmation]", + "value": "", + "type": "text", + "description": "Only valid for site admins and account admins making requests; If true, the channel is\nautomatically validated and no confirmation email or SMS is sent.\nOtherwise, the user must respond to a confirmation message to confirm the\nchannel.\n\nIf this is true, it is recommended to set <tt>\"pseudonym[send_confirmation]\"</tt> to true as well.\nOtherwise, the user will not receive any messages about their account creation." + }, + { + "key": "force_validations", + "value": "", + "type": "text", + "description": "If true, validations are performed on the newly created user (and their associated pseudonym)\neven if the request is made by a privileged user like an admin. When set to false,\nor not included in the request parameters, any newly created users are subject to\nvalidations unless the request is made by a user with a 'manage_user_logins' right.\nIn which case, certain validations such as 'require_acceptance_of_terms' and\n'require_presence_of_name' are not enforced. Use this parameter to return helpful json\nerrors while building users with an admin request." + }, + { + "key": "enable_sis_reactivation", + "value": "", + "type": "text", + "description": "When true, will first try to re-activate a deleted user with matching sis_user_id if possible.\nThis is commonly done with user[skip_registration] and communication_channel[skip_confirmation]\nso that the default communication_channel is also restored." + }, + { + "key": "destination", + "value": "", + "type": "text", + "description": "If you're setting the password for the newly created user, you can provide this param\nwith a valid URL pointing into this Canvas installation, and the response will include\na destination field that's a URL that you can redirect a browser to and have the newly\ncreated user automatically logged in. The URL is only valid for a short time, and must\nmatch the domain this request is directed to, and be for a well-formed path that Canvas\ncan recognize." + }, + { + "key": "initial_enrollment_type", + "value": "", + "type": "text", + "description": "`observer` if doing a self-registration with a pairing code. This allows setting the\npassword during user creation." + }, + { + "key": "pairing_code[code]", + "value": "", + "type": "text", + "description": "If provided and valid, will link the new user as an observer to the student's whose\npairing code is given." + } + ] + } + }, + "response": [] + }, + { + "name": "[DEPRECATED] Self register a user", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/accounts/:account_id/self_registration", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "accounts", + ":account_id", + "self_registration" + ], + "variable": [ + { + "key": "account_id", + "description": "ID" + } + ] + }, + "description": "Self register and return a new user and pseudonym for an account.\n\nIf self-registration is enabled on the account, you can use this\nendpoint to self register new users.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user[name]", + "value": "", + "type": "text", + "description": "The full name of the user. This name will be used by teacher for grading." + }, + { + "key": "user[short_name]", + "value": "", + "type": "text", + "description": "User's name as it will be displayed in discussions, messages, and comments." + }, + { + "key": "user[sortable_name]", + "value": "", + "type": "text", + "description": "User's name as used to sort alphabetically in lists." + }, + { + "key": "user[time_zone]", + "value": "", + "type": "text", + "description": "The time zone for the user. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "user[locale]", + "value": "", + "type": "text", + "description": "The user's preferred language, from the list of languages Canvas supports.\nThis is in RFC-5646 format." + }, + { + "key": "user[terms_of_use]", + "value": "", + "type": "text", + "description": "Whether the user accepts the terms of use." + }, + { + "key": "pseudonym[unique_id]", + "value": "", + "type": "text", + "description": "User's login ID. Must be a valid email address." + }, + { + "key": "communication_channel[type]", + "value": "", + "type": "text", + "description": "The communication channel type, e.g. 'email' or 'sms'." + }, + { + "key": "communication_channel[address]", + "value": "", + "type": "text", + "description": "The communication channel address, e.g. the user's email address." + } + ] + } + }, + "response": [] + }, + { + "name": "Update user settings.", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/settings", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "settings" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Update an existing user's settings." + }, + "response": [] + }, + { + "name": "Get custom colors", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/colors", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "colors" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns all custom colors that have been saved for a user." + }, + "response": [] + }, + { + "name": "Get custom color", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/colors/:asset_string", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "colors", + ":asset_string" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "asset_string", + "description": "ID" + } + ] + }, + "description": "Returns the custom colors that have been saved for a user for a given context.\n\nThe asset_string parameter should be in the format 'context_id', for example\n'course_42'." + }, + "response": [] + }, + { + "name": "Update custom color", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/colors/:asset_string", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "colors", + ":asset_string" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "asset_string", + "description": "ID" + } + ] + }, + "description": "Updates a custom color for a user for a given context. This allows\ncolors for the calendar and elsewhere to be customized on a user basis.\n\nThe asset string parameter should be in the format 'context_id', for example\n'course_42'", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "hexcode", + "value": "", + "type": "text", + "description": "The hexcode of the color to set for the context, if you choose to pass the\nhexcode as a query parameter rather than in the request body you should\nNOT include the '#' unless you escape it first." + } + ] + } + }, + "response": [] + }, + { + "name": "Get dashboard positions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/dashboard_positions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "dashboard_positions" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Returns all dashboard positions that have been saved for a user." + }, + "response": [] + }, + { + "name": "Update dashboard positions", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/dashboard_positions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "dashboard_positions" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Updates the dashboard positions for a user for a given context. This allows\npositions for the dashboard cards and elsewhere to be customized on a per\nuser basis.\n\nThe asset string parameter should be in the format 'context_id', for example\n'course_42'" + }, + "response": [] + }, + { + "name": "Edit a user", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Modify an existing user. To modify a user's login, see the documentation for logins.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "user[name]", + "value": "", + "type": "text", + "description": "The full name of the user. This name will be used by teacher for grading." + }, + { + "key": "user[short_name]", + "value": "", + "type": "text", + "description": "User's name as it will be displayed in discussions, messages, and comments." + }, + { + "key": "user[sortable_name]", + "value": "", + "type": "text", + "description": "User's name as used to sort alphabetically in lists." + }, + { + "key": "user[time_zone]", + "value": "", + "type": "text", + "description": "The time zone for the user. Allowed time zones are\n{http://www.iana.org/time-zones IANA time zones} or friendlier\n{http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}." + }, + { + "key": "user[email]", + "value": "", + "type": "text", + "description": "The default email address of the user." + }, + { + "key": "user[locale]", + "value": "", + "type": "text", + "description": "The user's preferred language, from the list of languages Canvas supports.\nThis is in RFC-5646 format." + }, + { + "key": "user[avatar][token]", + "value": "", + "type": "text", + "description": "A unique representation of the avatar record to assign as the user's\ncurrent avatar. This token can be obtained from the user avatars endpoint.\nThis supersedes the user [avatar] [url] argument, and if both are included\nthe url will be ignored. Note: this is an internal representation and is\nsubject to change without notice. It should be consumed with this api\nendpoint and used in the user update endpoint, and should not be\nconstructed by the client." + }, + { + "key": "user[avatar][url]", + "value": "", + "type": "text", + "description": "To set the user's avatar to point to an external url, do not include a\ntoken and instead pass the url here. Warning: For maximum compatibility,\nplease use 128 px square images." + }, + { + "key": "user[avatar][state]", + "value": "", + "type": "text", + "description": "To set the state of user's avatar. Only valid for account administrator." + }, + { + "key": "user[title]", + "value": "", + "type": "text", + "description": "Sets a title on the user profile. (See {api:ProfileController#settings Get user profile}.)\nProfiles must be enabled on the root account." + }, + { + "key": "user[bio]", + "value": "", + "type": "text", + "description": "Sets a bio on the user profile. (See {api:ProfileController#settings Get user profile}.)\nProfiles must be enabled on the root account." + }, + { + "key": "user[pronouns]", + "value": "", + "type": "text", + "description": "Sets pronouns on the user profile.\nPassing an empty string will empty the user's pronouns\nOnly Available Pronouns set on the root account are allowed\nAdding and changing pronouns must be enabled on the root account." + }, + { + "key": "user[event]", + "value": "", + "type": "text", + "description": "Suspends or unsuspends all logins for this user that the calling user\nhas permission to" + }, + { + "key": "override_sis_stickiness", + "value": "", + "type": "text", + "description": "Default is true. If false, any fields containing \u201csticky\u201d changes will not be updated.\nSee SIS CSV Format documentation for information on which fields can have SIS stickiness" + } + ] + } + }, + "response": [] + }, + { + "name": "Terminate all user sessions", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/sessions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "sessions" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Terminates all sessions for a user. This includes all browser-based\nsessions and all access tokens, including manually generated ones.\nThe user can immediately re-authenticate to access Canvas again if\nthey have the current credentials. All integrations will need to\nbe re-authorized." + }, + "response": [] + }, + { + "name": "Log users out of all mobile apps", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/mobile_sessions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "mobile_sessions" + ], + "variable": [] + }, + "description": "Permanently expires any active mobile sessions, forcing them to re-authorize.\n\nThe route that takes a user id will expire mobile sessions for that user.\nThe route that doesn't take a user id will expire mobile sessions for *all* users\nin the institution." + }, + "response": [] + }, + { + "name": "Log users out of all mobile apps", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/mobile_sessions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "mobile_sessions" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Permanently expires any active mobile sessions, forcing them to re-authorize.\n\nThe route that takes a user id will expire mobile sessions for that user.\nThe route that doesn't take a user id will expire mobile sessions for *all* users\nin the institution." + }, + "response": [] + }, + { + "name": "Merge user into another user", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/merge_into/:destination_user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "merge_into", + ":destination_user_id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "destination_user_id", + "description": "ID" + } + ] + }, + "description": "Merge a user into another user.\nTo merge users, the caller must have permissions to manage both users. This\nshould be considered irreversible. This will delete the user and move all\nthe data into the destination user.\n\nUser merge details and caveats:\nThe from_user is the user that was deleted in the user_merge process.\nThe destination_user is the user that remains, that is being split.\n\nAvatars:\nWhen both users have avatars, only the destination_users avatar will remain.\nWhen one user has an avatar, will it will end up on the destination_user.\n\nTerms of Use:\nIf either user has accepted terms of use, it will be be left as accepted.\n\nCommunication Channels:\nAll unique communication channels moved to the destination_user.\nAll notification preferences are moved to the destination_user.\n\nEnrollments:\nAll unique enrollments are moved to the destination_user.\nWhen there is an enrollment that would end up making it so that a user would\nbe observing themselves, the enrollment is not moved over.\nEverything that is tied to the from_user at the course level relating to the\nenrollment is also moved to the destination_user.\n\nSubmissions:\nAll submissions are moved to the destination_user. If there are enrollments\nfor both users in the same course, we prefer submissions that have grades\nthen submissions that have work in them, and if there are no grades or no\nwork, they are not moved.\n\nOther notes:\nAccess Tokens are moved on merge.\nConversations are moved on merge.\nFavorites are moved on merge.\nCourses will commonly use LTI tools. LTI tools reference the user with IDs\nthat are stored on a user object. Merging users deletes one user and moves\nall records from the deleted user to the destination_user. These IDs are\nkept for all enrollments, group_membership, and account_users for the\nfrom_user at the time of the merge. When the destination_user launches an\nLTI tool from a course that used to be the from_user's, it doesn't appear as\na new user to the tool provider. Instead it will send the stored ids. The\ndestination_user's LTI IDs remain as they were for the courses that they\noriginally had. Future enrollments for the destination_user will use the IDs\nthat are on the destination_user object. LTI IDs that are kept and tracked\nper context include lti_context_id, lti_id and uuid. APIs that return the\nLTI ids will return the one for the context that it is called for, except\nfor the user uuid. The user UUID will display the destination_users uuid,\nand when getting the uuid from an api that is in a context that was\nrecorded from a merge event, an additional attribute is added as past_uuid.\n\nWhen finding users by SIS ids in different accounts the\ndestination_account_id is required.\n\nThe account can also be identified by passing the domain in destination_account_id." + }, + "response": [] + }, + { + "name": "Merge user into another user", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/merge_into/accounts/:destination_account_id/users/:destination_user_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "merge_into", + "accounts", + ":destination_account_id", + "users", + ":destination_user_id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + }, + { + "key": "destination_account_id", + "description": "ID" + }, + { + "key": "destination_user_id", + "description": "ID" + } + ] + }, + "description": "Merge a user into another user.\nTo merge users, the caller must have permissions to manage both users. This\nshould be considered irreversible. This will delete the user and move all\nthe data into the destination user.\n\nUser merge details and caveats:\nThe from_user is the user that was deleted in the user_merge process.\nThe destination_user is the user that remains, that is being split.\n\nAvatars:\nWhen both users have avatars, only the destination_users avatar will remain.\nWhen one user has an avatar, will it will end up on the destination_user.\n\nTerms of Use:\nIf either user has accepted terms of use, it will be be left as accepted.\n\nCommunication Channels:\nAll unique communication channels moved to the destination_user.\nAll notification preferences are moved to the destination_user.\n\nEnrollments:\nAll unique enrollments are moved to the destination_user.\nWhen there is an enrollment that would end up making it so that a user would\nbe observing themselves, the enrollment is not moved over.\nEverything that is tied to the from_user at the course level relating to the\nenrollment is also moved to the destination_user.\n\nSubmissions:\nAll submissions are moved to the destination_user. If there are enrollments\nfor both users in the same course, we prefer submissions that have grades\nthen submissions that have work in them, and if there are no grades or no\nwork, they are not moved.\n\nOther notes:\nAccess Tokens are moved on merge.\nConversations are moved on merge.\nFavorites are moved on merge.\nCourses will commonly use LTI tools. LTI tools reference the user with IDs\nthat are stored on a user object. Merging users deletes one user and moves\nall records from the deleted user to the destination_user. These IDs are\nkept for all enrollments, group_membership, and account_users for the\nfrom_user at the time of the merge. When the destination_user launches an\nLTI tool from a course that used to be the from_user's, it doesn't appear as\na new user to the tool provider. Instead it will send the stored ids. The\ndestination_user's LTI IDs remain as they were for the courses that they\noriginally had. Future enrollments for the destination_user will use the IDs\nthat are on the destination_user object. LTI IDs that are kept and tracked\nper context include lti_context_id, lti_id and uuid. APIs that return the\nLTI ids will return the one for the context that it is called for, except\nfor the user uuid. The user UUID will display the destination_users uuid,\nand when getting the uuid from an api that is in a context that was\nrecorded from a merge event, an additional attribute is added as past_uuid.\n\nWhen finding users by SIS ids in different accounts the\ndestination_account_id is required.\n\nThe account can also be identified by passing the domain in destination_account_id." + }, + "response": [] + }, + { + "name": "Split merged users into separate users", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/split", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "split" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Merged users cannot be fully restored to their previous state, but this will\nattempt to split as much as possible to the previous state.\nTo split a merged user, the caller must have permissions to manage all of\nthe users logins. If there are multiple users that have been merged into one\nuser it will split each merge into a separate user.\nA split can only happen within 180 days of a user merge. A user merge deletes\nthe previous user and may be permanently deleted. In this scenario we create\na new user object and proceed to move as much as possible to the new user.\nThe user object will not have preserved the name or settings from the\nprevious user. Some items may have been deleted during a user_merge that\ncannot be restored, and/or the data has become stale because of other\nchanges to the objects since the time of the user_merge.\n\nSplit users details and caveats:\n\nThe from_user is the user that was deleted in the user_merge process.\nThe destination_user is the user that remains, that is being split.\n\nAvatars:\nWhen both users had avatars, both will be remain.\nWhen from_user had an avatar and destination_user did not have an avatar,\nthe destination_user's avatar will be deleted if it still matches what was\nthere are the time of the merge.\nIf the destination_user's avatar was changed at anytime after the merge, it\nwill remain on the destination user.\nIf the from_user had an avatar it will be there after split.\n\nTerms of Use:\nIf from_user had not accepted terms of use, they will be prompted again\nto accept terms of use after the split.\nIf the destination_user had not accepted terms of use, hey will be prompted\nagain to accept terms of use after the split.\nIf neither user had accepted the terms of use, but since the time of the\nmerge had accepted, both will be prompted to accept terms of use.\nIf both had accepted terms of use, this will remain.\n\nCommunication Channels:\nAll communication channels are restored to what they were prior to the\nmerge. If a communication channel was added after the merge, it will remain\non the destination_user.\nNotification preferences remain with the communication channels.\n\nEnrollments:\nAll enrollments from the time of the merge will be moved back to where they\nwere. Enrollments created since the time of the merge that were created by\nsis_import will go to the user that owns that sis_id used for the import.\nOther new enrollments will remain on the destination_user.\nEverything that is tied to the destination_user at the course level relating\nto an enrollment is moved to the from_user. When both users are in the same\ncourse prior to merge this can cause some unexpected items to move.\n\nSubmissions:\nUnlike other items tied to a course, submissions are explicitly recorded to\navoid problems with grades.\nAll submissions were moved are restored to the spot prior to merge.\nAll submission that were created in a course that was moved in enrollments\nare moved over to the from_user.\n\nOther notes:\nAccess Tokens are moved back on split.\nConversations are moved back on split.\nFavorites that existing at the time of merge are moved back on split.\nLTI ids are restored to how they were prior to merge." + }, + "response": [] + }, + { + "name": "Get a Pandata Events jwt token and its expiration date", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/pandata_events_token", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "pandata_events_token" + ], + "variable": [] + }, + "description": "Returns a jwt auth and props token that can be used to send events to\nPandata.\n\nNOTE: This is currently only available to the mobile developer keys.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "app_key", + "value": "", + "type": "text", + "description": "The pandata events appKey for this mobile app" + } + ] + } + }, + "response": [] + }, + { + "name": "Get a users most recently graded submissions", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:id/graded_submissions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":id", + "graded_submissions" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Get user profile", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/profile", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "profile" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Returns user profile data, including user id, name, and profile pic.\n\nWhen requesting the profile for the user accessing the API, the user's\ncalendar feed URL and LTI user id will be returned as well." + }, + "response": [] + }, + { + "name": "List avatar options", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/avatars", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "avatars" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "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\ntype:: [\"gravatar\"|\"attachment\"|\"no_pic\"] The type of avatar record, for categorization purposes.\nurl:: The url of the avatar\ntoken:: 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.\ndisplay_name:: A textual description of the avatar record\nid:: ['attachment' type only] the internal id of the attachment\ncontent-type:: ['attachment' type only] the content-type of the attachment\nfilename:: ['attachment' type only] the filename of the attachment\nsize:: ['attachment' type only] the size of the attachment" + }, + "response": [] + }, + { + "name": "List user page views", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/page_views", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "page_views" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Return a paginated list of the user's page view history in json format,\nsimilar to the available CSV download. Page views are returned in\ndescending order, newest to oldest." + }, + "response": [] + }, + { + "name": "Store custom data", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/custom_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "custom_data" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Store arbitrary user data as JSON.\n\nArbitrary JSON data can be stored for a User.\nA typical scenario would be an external site/service that registers users in Canvas\nand wants to capture additional info about them. The part of the URL that follows\n+/custom_data/+ defines the scope of the request, and it reflects the structure of\nthe JSON data to be stored or retrieved.\n\nThe value +self+ may be used for +user_id+ to store data associated with the calling user.\nIn order to access another user's custom data, you must be an account administrator with\npermission to manage users.\n\nA namespace parameter, +ns+, is used to prevent custom_data collisions between\ndifferent apps. This parameter is required for all custom_data requests.\n\nA request with Content-Type multipart/form-data or Content-Type\napplication/x-www-form-urlencoded can only be used to store strings.\n\nExample PUT with multipart/form-data data:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data/telephone' \\\n -X PUT \\\n -F 'ns=com.my-organization.canvas-app' \\\n -F 'data=555-1234' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": \"555-1234\"\n }\n\nSubscopes (or, generated scopes) can also be specified by passing values to\n+data+[+subscope+].\n\nExample PUT specifying subscopes:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data/body/measurements' \\\n -X PUT \\\n -F 'ns=com.my-organization.canvas-app' \\\n -F 'data[waist]=32in' \\\n -F 'data[inseam]=34in' \\\n -F 'data[chest]=40in' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": {\n \"chest\": \"40in\",\n \"waist\": \"32in\",\n \"inseam\": \"34in\"\n }\n }\n\nFollowing such a request, subsets of the stored data to be retrieved directly from a subscope.\n\nExample {api:UsersController#get_custom_data GET} from a generated scope\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data/body/measurements/chest' \\\n -X GET \\\n -F 'ns=com.my-organization.canvas-app' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": \"40in\"\n }\n\nIf you want to store more than just strings (i.e. numbers, arrays, hashes, true, false,\nand/or null), you must make a request with Content-Type application/json as in the following\nexample.\n\nExample PUT with JSON data:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data' \\\n -H 'Content-Type: application/json' \\\n -X PUT \\\n -d '{\n \"ns\": \"com.my-organization.canvas-app\",\n \"data\": {\n \"a-number\": 6.02e23,\n \"a-bool\": true,\n \"a-string\": \"true\",\n \"a-hash\": {\"a\": {\"b\": \"ohai\"}},\n \"an-array\": [1, \"two\", null, false]\n }\n }' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": {\n \"a-number\": 6.02e+23,\n \"a-bool\": true,\n \"a-string\": \"true\",\n \"a-hash\": {\n \"a\": {\n \"b\": \"ohai\"\n }\n },\n \"an-array\": [1, \"two\", null, false]\n }\n }\n\nIf the data is an Object (as it is in the above example), then subsets of the data can\nbe accessed by including the object's (possibly nested) keys in the scope of a GET request.\n\nExample {api:UsersController#get_custom_data GET} with a generated scope:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data/a-hash/a/b' \\\n -X GET \\\n -F 'ns=com.my-organization.canvas-app' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": \"ohai\"\n }\n\n\nOn success, this endpoint returns an object containing the data that was stored.\n\nResponds with status code 200 if the scope already contained data, and it was overwritten\nby the data specified in the request.\n\nResponds with status code 201 if the scope was previously empty, and the data specified\nin the request was successfully stored there.\n\nResponds with status code 400 if the namespace parameter, +ns+, is missing or invalid, or if\nthe +data+ parameter is missing.\n\nResponds with status code 409 if the requested scope caused a conflict and data was not stored.\nThis happens when storing data at the requested scope would cause data at an outer scope\nto be lost. e.g., if +/custom_data+ was +{\"fashion_app\": {\"hair\": \"blonde\"}}+, but\nyou tried to +`PUT /custom_data/fashion_app/hair/style -F data=buzz`+, then for the request\nto succeed,the value of +/custom_data/fashion_app/hair+ would have to become a hash, and its\nold string value would be lost. In this situation, an error object is returned with the\nfollowing format:\n\n !!!javascript\n {\n \"message\": \"write conflict for custom_data hash\",\n \"conflict_scope\": \"fashion_app/hair\",\n \"type_at_conflict\": \"String\",\n \"value_at_conflict\": \"blonde\"\n }", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "ns", + "value": "", + "type": "text", + "description": "The namespace under which to store the data. This should be something other\nCanvas API apps aren't likely to use, such as a reverse DNS for your organization." + }, + { + "key": "data", + "value": "", + "type": "text", + "description": "The data you want to store for the user, at the specified scope. If the data is\ncomposed of (possibly nested) JSON objects, scopes will be generated for the (nested)\nkeys (see examples)." + } + ] + } + }, + "response": [] + }, + { + "name": "Load custom data", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/custom_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "custom_data" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Load custom user data.\n\nArbitrary JSON data can be stored for a User. This API call\nretrieves that data for a (optional) given scope.\nSee {api:UsersController#set_custom_data Store Custom Data} for details and\nexamples.\n\nOn success, this endpoint returns an object containing the data that was requested.\n\nResponds with status code 400 if the namespace parameter, +ns+, is missing or invalid,\nor if the specified scope does not contain any data." + }, + "response": [] + }, + { + "name": "Delete custom data", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/:user_id/custom_data", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + ":user_id", + "custom_data" + ], + "variable": [ + { + "key": "user_id", + "description": "ID" + } + ] + }, + "description": "Delete custom user data.\n\nArbitrary JSON data can be stored for a User. This API call\ndeletes that data for a given scope. Without a scope, all custom_data is deleted.\nSee {api:UsersController#set_custom_data Store Custom Data} for details and\nexamples of storage and retrieval.\n\nAs an example, we'll store some data, then delete a subset of it.\n\nExample {api:UsersController#set_custom_data PUT} with valid JSON data:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data' \\\n -X PUT \\\n -F 'ns=com.my-organization.canvas-app' \\\n -F 'data[fruit][apple]=so tasty' \\\n -F 'data[fruit][kiwi]=a bit sour' \\\n -F 'data[veggies][root][onion]=tear-jerking' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": {\n \"fruit\": {\n \"apple\": \"so tasty\",\n \"kiwi\": \"a bit sour\"\n },\n \"veggies\": {\n \"root\": {\n \"onion\": \"tear-jerking\"\n }\n }\n }\n }\n\nExample DELETE:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data/fruit/kiwi' \\\n -X DELETE \\\n -F 'ns=com.my-organization.canvas-app' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": \"a bit sour\"\n }\n\nExample {api:UsersController#get_custom_data GET} following the above DELETE:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data' \\\n -X GET \\\n -F 'ns=com.my-organization.canvas-app' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": {\n \"fruit\": {\n \"apple\": \"so tasty\"\n },\n \"veggies\": {\n \"root\": {\n \"onion\": \"tear-jerking\"\n }\n }\n }\n }\n\nNote that hashes left empty after a DELETE will get removed from the custom_data store.\nFor example, following the previous commands, if we delete /custom_data/veggies/root/onion,\nthen the entire /custom_data/veggies scope will be removed.\n\nExample DELETE that empties a parent scope:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data/veggies/root/onion' \\\n -X DELETE \\\n -F 'ns=com.my-organization.canvas-app' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": \"tear-jerking\"\n }\n\nExample {api:UsersController#get_custom_data GET} following the above DELETE:\n curl 'https://<canvas>/api/v1/users/<user_id>/custom_data' \\\n -X GET \\\n -F 'ns=com.my-organization.canvas-app' \\\n -H 'Authorization: Bearer <token>'\n\nResponse:\n !!!javascript\n {\n \"data\": {\n \"fruit\": {\n \"apple\": \"so tasty\"\n }\n }\n }\n\nOn success, this endpoint returns an object containing the data that was deleted.\n\nResponds with status code 400 if the namespace parameter, +ns+, is missing or invalid,\nor if the specified scope does not contain any data." + }, + "response": [] + }, + { + "name": "List course nicknames", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/course_nicknames", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "course_nicknames" + ], + "variable": [] + }, + "description": "Returns all course nicknames you have set." + }, + "response": [] + }, + { + "name": "Get course nickname", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/course_nicknames/:course_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "course_nicknames", + ":course_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Returns the nickname for a specific course." + }, + "response": [] + }, + { + "name": "Set course nickname", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/course_nicknames/:course_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "course_nicknames", + ":course_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Set a nickname for the given course. This will replace the course's name\nin output of API calls you make subsequently, as well as in selected\nplaces in the Canvas web user interface.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "nickname", + "value": "", + "type": "text", + "description": "The nickname to set. It must be non-empty and shorter than 60 characters." + } + ] + } + }, + "response": [] + }, + { + "name": "Remove course nickname", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/course_nicknames/:course_id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "course_nicknames", + ":course_id" + ], + "variable": [ + { + "key": "course_id", + "description": "ID" + } + ] + }, + "description": "Remove the nickname for the given course.\nSubsequent course API calls will return the actual name for the course." + }, + "response": [] + }, + { + "name": "Clear course nicknames", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/users/self/course_nicknames", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "users", + "self", + "course_nicknames" + ], + "variable": [] + }, + "description": "Remove all stored course nicknames." + }, + "response": [] + } + ] + }, + { + "name": "Webhooks Subscriptions for Plagiarism Platform", + "item": [ + { + "name": "Create a Webhook Subscription", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/subscriptions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "subscriptions" + ], + "variable": [] + }, + "description": "Creates a webook subscription for the specified event type and\ncontext.", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "subscription[ContextId]", + "value": "", + "type": "text", + "description": "The id of the context for the subscription." + }, + { + "key": "subscription[ContextType]", + "value": "", + "type": "text", + "description": "The type of context for the subscription. Must be 'assignment',\n'account', or 'course'." + }, + { + "key": "subscription[EventTypes]", + "value": "", + "type": "text", + "description": "Array of strings representing the event types for\nthe subscription." + }, + { + "key": "subscription[Format]", + "value": "", + "type": "text", + "description": "Format to deliver the live events. Must be 'live-event' or 'caliper'." + }, + { + "key": "subscription[TransportMetadata]", + "value": "", + "type": "text", + "description": "An object with a single key: 'Url'. Example: { \"Url\": \"sqs.example\" }" + }, + { + "key": "subscription[TransportType]", + "value": "", + "type": "text", + "description": "Must be either 'sqs' or 'https'." + } + ] + } + }, + "response": [] + }, + { + "name": "Delete a Webhook Subscription", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/subscriptions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "subscriptions", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Show a single Webhook Subscription", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/subscriptions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "subscriptions", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Update a Webhook Subscription", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/subscriptions/:id", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "subscriptions", + ":id" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "This endpoint uses the same parameters as the create endpoint" + }, + "response": [] + }, + { + "name": "List all Webhook Subscription for a tool proxy", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/lti/subscriptions", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "lti", + "subscriptions" + ], + "variable": [] + }, + "description": "This endpoint returns a paginated list with a default limit of 100 items per result set.\nYou can retrieve the next result set by setting a 'StartKey' header in your next request\nwith the value of the 'EndKey' header in the response.\n\nExample use of a 'StartKey' header object:\n { \"Id\":\"71d6dfba-0547-477d-b41d-db8cb528c6d1\",\"DeveloperKey\":\"10000000000001\" }" + }, + "response": [] + } + ] + }, + { + "name": "What If Grades", + "item": [ + { + "name": "Update a submission's what-if score and calculate grades", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "https://{{domain}}/api/api/v1/submissions/:id/what_if_grades", + "protocol": "https", + "host": [ + "{{domain}}" + ], + "path": [ + "api", + "v1", + "submissions", + ":id", + "what_if_grades" + ], + "variable": [ + { + "key": "id", + "description": "ID" + } + ] + }, + "description": "Enter a what if score for a submission and receive the calculated grades\nGrade calculation is a costly operation, so this API should be used sparingly", + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "student_entered_score", + "value": "", + "type": "text", + "description": "The score the student wants to test" + } + ] + } + }, + "response": [] + } + ] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{user_token}}", + "type": "string" + } + ] + } +} \ No newline at end of file -- GitLab