Notification preferences - GUI versus API

stelpstra
Community Champion

As we want to change a specific notification setting of all our 400+ admins (with only read rights) in our sub-account, I have been trying to make sense how the notification preferences in the interface (canvas.instructure.com/profile/communication) relate to the Notification Preferences API parameters. Sources I have used are:

The documentation is missing a lot of information at the moment. E.g. the NotificationPreference object is described with only 4 items instead of the structure of the whole object. Using the Live API a retrieved the full (I hope) object which were 93 items.

To make sense of how these 93 items are related to the notification preferences in the interface I extracted the following details:

Course activities
    Due Date
        Assignment due date change
    Grading policies
        Course grading policy change
    Course Content
        Change to course content:
        Page content
        Quiz content
        Assignment content
    Files
        New file added to your course
    Announcement
        New Announcement in your course
    Announcement created by you
        Announcement created by you
        Replies to announcements you've created
    Grading
        Includes:
        Assignment/submission grade entered/changed
        Un-muted assignment grade
        Grade weight changed
        Option: Include scores when alerting about grades. If your email is not an institution email, this means sensitive content will be sent outside of the institution.
    Invitation
        Invitation for:
        Web conference
        Group
        Collaboration
        Peer review & reminder
    All submissions
        Instructor and Admin only:
        Assignment (except quizzes) submission/resubmission
    Late grading
        Instructor and admin only:
        Late assignment submission
    Submission comment
        Assignment submission comment
    Blueprint Sync
        Instructor and Admin only:
        Content was synced from a blueprint course to associated courses
Discussions
Discussions notification events and settings
    Discussion
        New discussion topic in your course
    Discussion post
        New discussion post in a topic you're subscribed to
Conversations
Conversations notification events and settings
    Added to conversation
        You are added to a conversation
    Conversation message
        New Inbox messages
    Conversations created by me
        You created a conversation
Scheduling
Scheduling notification events and settings
    Student appointment signups
        Instructor and admin only:
        Student appointment sign-up
    Appointment signups
        New appointment on your calendar
    Appointment Cancellations
        Appointment cancellation
    Appointment availability
        New appointment time slots are available for signup
    Calendar
        New and changed items on your course calendar
Groups
Groups notification events and settings
    Membership update
        Admin only: pending enrolment activated
        Group enrolment
        accepted/rejected
Alerts
Alerts notification events and settings
    Administrative Notifications
        Instructor and Admin only:
        Course enrolment
        Report generated
        Content export
        Migration report
        New account user
        New student group
Conferences
Conferences notification events and settings
    Recording ready
        A conference recording is ready

The NotificationPreference object, returned by the Live API has the following items (sorted by category):

categorynotification
added_to_conversationadded_to_conversation
alertalert
all_submissionsassignment_submitted
all_submissionsassignment_resubmitted
all_submissionssubmission_needs_grading
announcementnew_announcement
announcement_created_by_youannouncement_created_by_you
announcement_created_by_youannouncement_reply
appointment_availabilityappointment_group_published
appointment_availabilityappointment_group_updated
appointment_cancelationsappointment_deleted_for_user
appointment_cancelationsappointment_group_deleted
appointment_signupsappointment_reserved_for_user
blueprintblueprint_content_added
blueprintblueprint_sync_complete
calendarnew_event_created
calendarevent_date_changed
conversation_createdconversation_created
conversation_messageconversation_message
course_contentassignment_changed
course_contentnew_wiki_page
course_contentupdated_wiki_page
discussionnew_discussion_topic
discussion_entrynew_discussion_entry
due_dateassignment_due_date_changed
due_dateassignment_created
due_dateassignment_due_date_override_changed
filesnew_file_added
filesnew_files_added
gradingassignment_graded
gradingsubmission_graded
gradingsubmission_grade_changed
gradingassignment_unmuted
gradingquiz_regrade_finished
grading_policiesgrade_weight_changed
invitationcollaboration_invitation
invitationweb_conference_invitation
invitationrubric_assessment_submission_reminder
invitationrubric_assessment_invitation
invitationrubric_association_created
invitationnew_context_group_membership_invitation
invitationpeer_review_invitation
late_gradingassignment_submitted_late
late_gradinggroup_assignment_submitted_late
membership_updatenew_context_group_membership
membership_updategroup_membership_accepted
membership_updategroup_membership_rejected
migrationmigration_export_ready
migrationmigration_import_finished
migrationmigration_import_failed
migrationcontent_export_finished
migrationcontent_export_failed
othernew_account_user
otherteacher_context_message
otherenrollment_accepted
othernew_student_organized_group
othernew_course
othernew_user
othernew_teacher_registration
othernew_teacher_registration_immediate
otherreport_generated
otherreport_generation_failed
recording_readyweb_conference_recording_ready
registrationconfirm_email_communication_channel
registrationconfirm_sms_communication_channel
registrationconfirm_registration
registrationforgot_password
registrationenrollment_invitation
registrationenrollment_notification
registrationenrollment_registration
registrationmerge_email_communication_channel
registrationaccount_user_registration
registrationaccount_user_notification
registrationpseudonym_registration
registrationcanvasnet_migration
registrationcourse_started
registrationcourse_starts_in_week
registrationcourse_required_materials
registrationcourse_already_started
registrationself_enrollment_registration
registrationtwd_migration_new
registrationtwd_migration_existing
registrationtwd_migration_new_late
registrationtwd_migration_existing_late
registrationpseudonym_registration_done
reminderassignment_publishing_reminder
reminderassignment_grading_reminder
reminderassignment_due_date_reminder
student_appointment_signupsappointment_canceled_by_user
student_appointment_signupsappointment_reserved_by_user
submission_commentsubmission_comment
submission_commentsubmission_comment_for_teacher
summariessummaries

In Excel I tried to match them, but it appeared to become a matter of guessing.

Question: Is there detailed and complete information available about how the notification preferences from the interface relate to the items in the API NotificationPreference object?

Additionally, the Notification Preferences API documentation describes the list all preferences an uses and the example shows how to get it from another user. But the documentation about updating notification preferences only uses an example of updating own preferences, not of other users.

Question: Is it possible to update a preference (as an admin) of another user (many users in our case) using the API? If not, why not? (Canvas Helpdesk suggested this approach)