[Canvas Data] Improve course navigation links / tab data in cd2

Problem statement:

In cd1 there are course navigation tables that make it possible to understand the structure of the navigation in Canvas courses. This data is missing from cd2 and replaced by `courses.tab_configuration`. However, the tab_configuration is not well structured and/or missing important data. Here is the tab_configuration for my course: https://{canvas}/courses/{course_id}

 

[{"id":0},{"id":2},{"id":4},{"id":3},{"id":8},{"id":14},{"id":5},{"id":6},{"id":11},{"id":1},{"id":15},{"id":18},{"id":10},{"id":"context_external_tool_680"},{"id":"context_external_tool_737"},{"id":"context_external_tool_1096"},{"id":"context_external_tool_4400"},{"id":"context_external_tool_14311"},{"id":"context_external_tool_42332"},{"id":"context_external_tool_42334"},{"id":"context_external_tool_6419"},{"id":"context_external_tool_50814"},{"id":"context_external_tool_44054"},{"id":"context_external_tool_244"},{"id":"context_external_tool_201","hidden":true},{"id":"context_external_tool_677","hidden":true},{"id":"context_external_tool_1085","hidden":true},{"id":"context_external_tool_2985","hidden":true},{"id":"context_external_tool_2986","hidden":true},{"id":"context_external_tool_3081","hidden":true},{"id":"context_external_tool_15408","hidden":true},{"id":"context_external_tool_19323","hidden":true}]

 

 (See attached image for the example courses Navigation)

1. When the navigation item is an internal Canvas tool (i.e. `Pages`, `Assignments` etc) the tab_configuration looks like (below) and there is no table or equivalent information to *know* what the ids refer to.

 

 {"id":0},{"id":2},{"id":4},{"id":3},{"id":8},{"id":14},{"id":5},{"id":6},{"id":11},{"id":1},{"id":15},{"id":18},{"id":10}

 

 

2. For the above, there is no indication if the navigation item is visible or not to students. For instance, in my course https://{canvas}/courses/{course_id} Outcomes is part of the navigation but it is not visible. There is no indication in the tab_configuration that this is the case.

3. There is no name or other information associated with the navigation item, which can be confusing. For example, in my course I have `Item Banks` as a navigation item - but this shared the same external_tool_id more commonly known as `Quizzes 2`. In the API I can distinguish this, but I cannot know this is the Item Bank from `tab_configurations` API example: https://{canvas}//api/v1/courses/{course_id}/tabs

 

{ "id": "context_external_tool_1096", "html_url": "/courses/{course_id}/external_tools/1096", "full_url": "https://{canvas}/courses/{course_id}/external_tools/1096", "position": 16, "visibility": "public", "label": "Item Banks", "type": "external", "url": "https://{canvas}/courses/{course_id}/external_tools/sessionless_launch?id=1096&launch_type=course_navigation" }

 

4. The `Settings` is missing from tab_configurations (should be something like {"id":13}). While Settings typically cannot be changed and will appear last in the navigation - the data should nonetheless be complete and it should be included.

Related threads in the Community:

https://community.canvaslms.com/t5/Data-and-Analytics-Group/CD2-Courses-table-tab-configuration-fiel...

https://community.canvaslms.com/t5/Data-and-Analytics-Group/CD2-Courses-table-tab-configuration-fiel...

Proposed solution:

Expand tab_configuration data to:

  • include the names of all items (including internal Canvas items)

  • include all items (including settings)

  • include common hidden etc. field (i.e my example above Outcomes should be indicated as hidden to students)

  • include `position` in the tab_configuration to denote the order of the item in the course navigation

  • include some distinguishing field or value to distinguish between an item that is that is hidden from students but in the navigation, or those that are enabled but not part of the navigation (hidden to everyone)

User role(s):

admin