I am attempting to link a rubric to several assignments on Canvas. However, we want to hide the points in the rubric from students. Is there a Canvas API to achieve this?
On the GUI, this is accomplished by editing the rubric and by choosing "Remove points from rubric". This step needs to be performed for each assignment item. This change seems to affect the rubric_settings object of an assignment and sets its hide_points property to true.
According to the rubrics API page, this option does not seem to be available via Canvas API. Am I missing something?
Is there a way to set hide_points to true through the API?
Hi @raj_veeravalli ,
We have been having the same trouble with rubrics, we have an assignment we want to deploy via the API and attach rubric with the points removed.
I only just found your post. Did you ever find a solution?
Hi @david_amore ,
Yes, I did. I created the assignment in a sandbox, edited it to remove the points, and captured the change via Google Chrome as a CURL request and converted it to python-requests.
Essentially, your rubric needs to be in the request that you send along with a couple of parameters (that removes points). These parameters are only supported as a POST request as they don't have equivalents on the API. It's messy.
This was an option for us only because we create the same assignment and rubric across nearly 100 courses.
Thanks @raj_veeravalli ,
That is very helpful. We are looking to add an assignment with the same rubric to a similar number of courses, so I think we're on the same wave length. So far we've been able to push the rubric association and assignment to the courses, but then have to manually open each assignment in each course to remove the points from the rubric manually.
Am I right in thinking the parameters (for removing points) you used are these ones:
I noticed as per the documentation, the hide_points setting is only described in the structure of the RubricAssociation object. However, neither the create nor update RubricAssociation endpoints seemed to support this parameter. It's read-only and I've confirmed based on my testing. Hence, I had to go the chrome inspect route.
My approach was to create a global Rubric at the account level and do a RubricAssociation with each assignment using the API. The assignment will have the rubric attached but points will not be removed (as it's not supported on the API). However, using the payload that you retrieve via Chrome Inspect and via the POST request that you do to perform the RubricAssociation, you get a few dynamic results from this response. You can use these to "update" your RubricAssociation once again using a PUT request.
I've listed the bits for the payload that you will need. The rest will depend on the content in your Rubric.
'rubric_association[id]': page_response["rubric_association"]["id"], 'rubric_association_id': page_response["rubric_association"]["id"], 'rubric_association[association_id]': page_response["rubric_association"]["association_id"], 'rubric_association[context_id]': course.id, 'rubric_association[context_type]': 'Course', 'rubric_association[association_type]': 'Assignment', 'rubric_association[use_for_grading]': '0', 'rubric_association[purpose]': 'grading', 'rubric_association[hide_score_total]': '0', 'rubric_association[hide_points]': '1', 'rubric_association[hide_outcome_results]': '0', 'rubric_association[context_code]': "course_" + str(course.id), 'rubric_id': rubric_id, 'skip_updating_points_possible': False,
I had some existing code and had to get things done quickly You can probably do this better and maybe skip a step.
No worries. Let me know how you go.
Am I going crazy or did my response get deleted? Would appreciate it if someone can at least notify me if I am in breach of some rule, so I can make amends, instead of silently deleting my post. It's poor form.
I've reported my post to seek a response.