[API] Add manually post grades setting to course API

This idea has been developed and deployed to Canvas LMS

Our institution would like to have manually posted grades being the default setting upon course creation as outlined here: https://community.canvaslms.com/t5/Instructor-Guide/How-do-I-select-a-grade-posting-policy-for-a-cou...

It looks like there's a way to do this through a GraphQL mutation, but we would prefer to do it within the course creation API call as it would be onerous to load the extra calls on our integration for one extra setting.

I'd like to request an additional optional parameter on the create a new course API (https://canvas.instructure.com/doc/api/courses.html#method.courses.create)

parameter: course[grade_post_policy]

type: string

Description: The grade posting policy to apply to course:

  • 'automatic' (default) - Automatically post grades
  • 'manual' - Manually post grades

Similarly, the get a single course API (https://canvas.instructure.com/doc/api/courses.html#method.courses.show ) would have an additional include parameter to get the settings.

The update a course API (https://canvas.instructure.com/doc/api/courses.html#method.courses.update) would have the parameter available and would trigger the GraphQL call to update all existing assignments as per the GUI process.

9 Comments
Stef_retired
Instructure Alumni
Instructure Alumni
Status changed to: Open
 
KristinL
Community Team
Community Team
Status changed to: New
 
KristinL
Community Team
Community Team
Status changed to: Added to Theme
 
KristinL
Community Team
Community Team
Status changed to: Completed
Comments from Instructure

 

For more information, please read through the  2024 API and CLI Change Log.

dsweeney2
Community Participant
Author

Can this please be reopened? The API has been changed to add post_manually to includes for various get calls for courses, however, the idea includes API course creation and update endpoints as well.

KristinL
Community Team
Community Team
Status changed to: Added to Theme

Hi @dsweeney2 -

Thanks for the message! Yes, we can mark this as Aligned to Theme, but we'll leave the history as it was mentioned in the API log.

After talking with a colleague, I wonder if the Canvas Developers Group could help you identify a solution. They looked at your initial idea and are unsure if it's possible via API as you describe. The developers group may be able to figure out how to add the GraphQL components into their code sooner than a REST API option becomes available.

dsweeney2
Community Participant
Author

Thanks @KristinL,

We are using GraphQL for ad-hoc requests, but asking our integration team to change their integration pattern for this one field will see the request at the very bottom of their priority list. For anyone who is wondering about the GraphQL pattern try this:

mutation MyMutation {
                    setCoursePostPolicy(input: {courseId: "some_number", postManually: true}) {
                        errors {
                            message
                            attribute
                        }
                        postPolicy {
                            course {
                                sisId
                            }
                            postManually
                        }
                    }
                }
KristinL
Community Team
Community Team
Status changed to: Completed

Hi @dsweeney2 - I'm here with another update. The Product Manager who oversees the API log requests that we mark this thread as Completed as the main request aligns with the recent update.

However, they acknowledge that your request was not met in full, and they're asking if you'd be willing to create a new idea with the remaining pieces. It'll help them better track that piece and align it to future projects.

dsweeney2
Community Participant
Author

Thanks @KristinL ,

Completing this one is fine. I've created a new idea:

Add POST and PUT calls in courses API for post_manually