@pdigiacobbe
The problem you are describing might not be an issue at all with blueprints, but one related to Roll Call and Final Grades, which was just fixed and went into deployment on July 22.
It may be that you can push back out the proper settings from the blueprint master and fix it easily. I don't use blueprint courses and I don't use Attendance, so I cannot check this for you.
If that doesn't work and you are using weighted gradebooks, then maybe you can create an assignment group worth 0% of the grade and move the Attendance assignment to that group in your blueprint master and then propagate the changes. See How do I edit the Roll Call Attendance assignment? for more information. A potential issue there is that "The Attendance assignment will not appear until you have taken roll for at least one student" so you may not be able to do anything with it from the blueprint master, either.
You said you did your best to get Attendance set up within blueprint courses. I'm not sure what that means since the documentation says the assignment isn't created until someone takes attendance with it and the blueprint courses cannot have students in it. We might be in a pickle here.
Let's look at the not so easy ways. According to the blurb in the deployment notes ...
The Do Not Count Attendance Toward Final Grade setting is respected in the Attendance tool.
Explanation: When the Do Not Count Attendance Toward Final Grade setting was selected in the Attendance tool, the setting would overwrite the Do Not Count Assignment Toward Final Grade assignment setting if attendance was taken about 10 minutes after the last attendance was taken. This behavior occurred without a user modifying the setting within the Attendance tool. Canvas code has been updated to respect the final grade setting for the Attendance tool. Changing the setting in the Attendance assignment will also be respected, but assignment caching may display the setting inaccurately in the Attendance tool. To avoid caching behaviors, users should update the final grade setting in the Attendance tool.
It's that last line that bothers me. Setting the final grade in the Attendance tool is not something that can be done through the Canvas REST API.
You could create the 0% assignment group and move the Attendance into it via the REST API. That way, even if there was a problem with the caching, it wouldn't matter whether they counted it or not, it would be in a 0% assignment group. You would need to find the id of the 0% assignment group and then move the assignment into that group. If you use the list assignment groups endpoint and include the assignments, you can get both pieces of information at the same time.
The Canvas REST API can go through and set the do not count towards final flag. The edit an assignment endpoint has an assignment[omit_from_final_grade] parameter that you would need to set to true to not count Roll Call.
For either plan of attack, you would need to do this for every course that you wanted to change. You would need to get a list of assignments and figure out which one was the attendance. You could do that by looking at the title of the assignment or a safer way would be getting the Roll Call Attendance tool for the account and then looking at the assignments to see which one that was.
Basically, it's something like this:
- Get a list of the courses. You may want to filter those by term or by their status unless you're new to Canvas.
- For each course, get a list of the assignments with list assignment groups or list assignments endpoint.
- Scan through the assignments until you find the attendance assignment. If it's not there, then move on to the next course and skip step 4.
- Update the assignment and either move it to the 0% assignment group or toggle the do not count towards final flag. It's the same call, just different parameters.
You'll also need to worry about pagination for step 1 (you likely have more than 100 courses unless you are small and filter by term).
You picked a medium-sized problem for your first endeavor for the API. It's not trivial, but it is relatively straight forward. Let's hope the API