"Visible course nav tools" question

Jump to solution
Community Explorer

A higher-up asked my boss and me whether it's possible to track which faculty members are using the Attendance (Roll Call) tool in their courses. Since we have it disabled by default in all of our credit-bearing courses, we thought we might be able to answer this by finding out in which active courses it appears as an active nav link. We see a couple of possible API calls that would do this, sort of:

visible course nav tools get.png
How might one modify either of these to check all of one quarter's worth of courses for the presence of the Attendance tool in the active nav column?

Labels (2)
1 Solution
Community Champion


I'm going to answer your question about the API, then suggest alternative approaches.

The first endpoint, Get visible course navigation tools, allows you to get results for more than one course at a time. The second one allows you to get the external tools for just a single course. Using the first one would allow you to make fewer API calls.

Let's pretend that you have courses with course IDs of 123, 423, and 573.

For the first one, you would make a GET to the endpoint with

GET <instance>/api/v1/external_tools/visible_course_nav_tools?context_codes[]=course_123&context_codes[]=course_423&context_codes[]=course_573

With many API calls, you can use a SIS course ID rather than the Canvas course ID. I was not able to get that to work here, so you would need the Canvas Course ID for all of your courses if you want to gather data from more than one course at a time. If you want to use the individual course version, then you could use the SIS Course ID.

The Live API that you showed looks like it uses + between context codes. The + is how a space gets encoded, so I'm not sure if they meant + or space.  You would not specify the context_code[]= there since that's the input that you're filling in. Regardless, you do not want to use the Live API to program this. It's meant for quick testing of endpoints, not for serious programming.

Since you're going to need to iterate through every course, you will need to write a script that gathers and processes the results.


You can also use the Tabs API to determine availability, but you would have to do it for each course. You could use the SIS Course ID format with this call. This is a more generic call that returns information about all tabs. The one you found works because RollCall Attendance is an LTI / external tool, but some other institutions may want to hide a built-in navigation tab and the Tabs API would get that.


Having RollCall Attendance visible in the course navigation menu is not the same as using RollCall Attendance. We have faculty that don't organize their navigation menu and so they have things visible that they don't use. Since RollCall Attendance is only visible to instructors, the students will not be clicking on it or asking about it, so a faculty may not think to remove it.

Disabling RollCall Attendance may not be a one-time thing. If faculty import previous courses that had it enabled, then it would be re-enabled for that course.


There is an LTI Report available to Canvas Admins. It's under Admin > Settings > Reports > LTI reports. It gives a list of every course-level LTI that is installed. Unfortunately, for account-level LTIs, such as RollCall Attendance, it is only listed once.


If you have access to Canvas Data 2 (CD2), then the courses.tab_configuration field contains a list of order and visibility of tabs for the course navigation menu. Determining who has the RollCall Attendance tab visible would be a database query and then some processing. The information in that field is stored as a YAML serialized list, so you may need to do processing outside of SQL or you may be able to do some kind of wildcard search. I don't have access to our CD2 installation right now to check for you.


Probably the best -- no programming required -- way to determine who is using RollCall Attendance (as opposed to just having it visible) is to have a Canvas Admin pull an attendance report. To do this, go to Admin > Attendance.

You can request a list of all attendance across all courses, but only for a week at a time. You could run the report a couple of times to cover multiple weeks and increase the likelihood of getting those courses that use RollCall.

You will get an email with a link to the attendance report. The attendance report is ran in the background and may take several minutes. You have 6 hours to download the report, so don't set it up and then go home for the evening.

When the report comes, it has a list of all of the attendance, but it also includes information about the courses, including the course ID and instructor.

The SIS Course Code is in column B and the teacher's name is in column J. This lets you know both what courses and which faculty are using it.

You can use Excel with formulas like =UNIQUE(B:B) or =UNIQUE(J:J) to extract just the list of courses or faculty. You can also use the Data > Data Tools > Remove Duplicates option if you don't like typing formulas. 

I just ran the report for us between Feb 1 and Feb 7 and discovered that we have 40 instructors using RollCall Attendance for 80 courses. It took about 10 minutes (in a generally slow time -- early Sunday morning) to generate the report with ~2400 records.

The thing with RollCall attendance is that it's not something that can easily be automated. However, this is likely not something that you need to be running every night as you will want to work with the faculty to provide alternatives.

View solution in original post