@groton/canvas-api 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +5 -16
  3. package/dist/Endpoints/Lti/Assignments/Submissions/History/get.d.ts +2 -1
  4. package/dist/Endpoints/Lti/Assignments/Submissions/get.d.ts +2 -1
  5. package/dist/Endpoints/Lti/Subscriptions/create.d.ts +2 -2
  6. package/dist/Endpoints/Lti/Subscriptions/delete_webhook_subscription.d.ts +2 -1
  7. package/dist/Endpoints/Lti/Subscriptions/list.d.ts +2 -1
  8. package/dist/Endpoints/Lti/Subscriptions/show_single_webhook_subscription.d.ts +2 -1
  9. package/dist/Endpoints/Lti/Subscriptions/update.d.ts +2 -1
  10. package/dist/Endpoints/Lti/UuidMap/download_uuid_mapping_for_this_sandbox.d.ts +2 -1
  11. package/dist/Endpoints/Quiz/V1/Courses/Quizzes/Items/MediaUploadUrl/get.d.ts +2 -1
  12. package/dist/Endpoints/Sis/Accounts/Assignments/retrieve_assignments_enabled_for_grade_export_to_sis_accounts.d.ts +2 -1
  13. package/dist/Endpoints/Sis/Courses/Assignments/retrieve_assignments_enabled_for_grade_export_to_sis_courses.d.ts +2 -1
  14. package/dist/Endpoints/Sis/Courses/DisablePostToSis/disable_assignments_currently_enabled_for_grade_export_to_sis.d.ts +2 -1
  15. package/dist/Endpoints/V1/Accounts/AccountCalendars/update.d.ts +2 -1
  16. package/dist/Endpoints/V1/Accounts/AccountNotifications/create.d.ts +2 -1
  17. package/dist/Endpoints/V1/Accounts/AccountNotifications/update.d.ts +2 -1
  18. package/dist/Endpoints/V1/Accounts/Analytics/Completed/Activity/get.d.ts +2 -1
  19. package/dist/Endpoints/V1/Accounts/Analytics/Completed/Grades/get.d.ts +2 -1
  20. package/dist/Endpoints/V1/Accounts/Analytics/Completed/Statistics/get.d.ts +2 -1
  21. package/dist/Endpoints/V1/Accounts/Analytics/Completed/StatisticsBySubaccount/get.d.ts +2 -1
  22. package/dist/Endpoints/V1/Accounts/Analytics/Current/Activity/get.d.ts +2 -1
  23. package/dist/Endpoints/V1/Accounts/Analytics/Current/Grades/get.d.ts +2 -1
  24. package/dist/Endpoints/V1/Accounts/Analytics/Current/Statistics/get.d.ts +2 -1
  25. package/dist/Endpoints/V1/Accounts/Analytics/Current/StatisticsBySubaccount/get.d.ts +2 -1
  26. package/dist/Endpoints/V1/Accounts/Analytics/Terms/Activity/get.d.ts +2 -1
  27. package/dist/Endpoints/V1/Accounts/Analytics/Terms/Grades/get.d.ts +2 -1
  28. package/dist/Endpoints/V1/Accounts/Analytics/Terms/Statistics/get.d.ts +2 -1
  29. package/dist/Endpoints/V1/Accounts/Analytics/Terms/StatisticsBySubaccount/get.d.ts +2 -1
  30. package/dist/Endpoints/V1/Accounts/AuthenticationProviders/delete_authentication_provider.d.ts +2 -1
  31. package/dist/Endpoints/V1/Accounts/BrandVariables/get.d.ts +32 -0
  32. package/dist/Endpoints/V1/Accounts/BrandVariables/get.js +18 -0
  33. package/dist/Endpoints/V1/Accounts/BrandVariables/index.d.ts +1 -0
  34. package/dist/Endpoints/V1/Accounts/BrandVariables/index.js +1 -0
  35. package/dist/Endpoints/V1/Accounts/BulkEnrollment/enroll_multiple_users_to_one_or_more_courses.d.ts +7 -0
  36. package/dist/Endpoints/V1/Accounts/BulkEnrollment/enroll_multiple_users_to_one_or_more_courses.js +2 -0
  37. package/dist/Endpoints/V1/Accounts/CspSettings/Domains/BatchCreate/add_multiple_allowed_domains_to_account.d.ts +2 -1
  38. package/dist/Endpoints/V1/Accounts/CspSettings/Domains/add_allowed_domain_to_account.d.ts +2 -1
  39. package/dist/Endpoints/V1/Accounts/CspSettings/Domains/remove_domain_from_account.d.ts +2 -1
  40. package/dist/Endpoints/V1/Accounts/CspSettings/Lock/lock_or_unlock_current_csp_settings_for_sub_accounts_and_courses.d.ts +2 -1
  41. package/dist/Endpoints/V1/Accounts/CspSettings/enable_disable_or_clear_explicit_csp_setting_accounts.d.ts +2 -1
  42. package/dist/Endpoints/V1/Accounts/CspSettings/get.d.ts +2 -1
  43. package/dist/Endpoints/V1/Accounts/DeveloperKeys/create.d.ts +3 -4
  44. package/dist/Endpoints/V1/Accounts/ExternalTools/RceFavorites/mark_tool_as_rce_favorite.d.ts +2 -1
  45. package/dist/Endpoints/V1/Accounts/ExternalTools/RceFavorites/unmark_tool_as_rce_favorite.d.ts +2 -1
  46. package/dist/Endpoints/V1/Accounts/ExternalTools/SessionlessLaunch/get.d.ts +2 -1
  47. package/dist/Endpoints/V1/Accounts/ExternalTools/TopNavFavorites/add_tool_to_top_navigation_favorites.d.ts +2 -1
  48. package/dist/Endpoints/V1/Accounts/ExternalTools/TopNavFavorites/remove_tool_from_top_navigation_favorites.d.ts +2 -1
  49. package/dist/Endpoints/V1/Accounts/ExternalTools/create.d.ts +17 -187
  50. package/dist/Endpoints/V1/Accounts/ExternalTools/create.js +4 -0
  51. package/dist/Endpoints/V1/Accounts/ExternalTools/delete_external_tool_accounts.d.ts +2 -1
  52. package/dist/Endpoints/V1/Accounts/ExternalTools/get.d.ts +2 -1
  53. package/dist/Endpoints/V1/Accounts/ExternalTools/list.d.ts +11 -4
  54. package/dist/Endpoints/V1/Accounts/ExternalTools/update.d.ts +9 -2
  55. package/dist/Endpoints/V1/Accounts/ExternalTools/update.js +7 -1
  56. package/dist/Endpoints/V1/Accounts/Features/Enabled/list.d.ts +2 -1
  57. package/dist/Endpoints/V1/Accounts/Features/list.d.ts +9 -1
  58. package/dist/Endpoints/V1/Accounts/GradingPeriodSets/create.d.ts +2 -1
  59. package/dist/Endpoints/V1/Accounts/GradingPeriodSets/delete_grading_period_set.d.ts +2 -1
  60. package/dist/Endpoints/V1/Accounts/GradingPeriodSets/list.d.ts +2 -1
  61. package/dist/Endpoints/V1/Accounts/GradingPeriodSets/update_grading_period_set.d.ts +2 -1
  62. package/dist/Endpoints/V1/Accounts/GradingPeriods/delete_grading_period_accounts.d.ts +2 -1
  63. package/dist/Endpoints/V1/Accounts/GradingPeriods/list.d.ts +2 -1
  64. package/dist/Endpoints/V1/Accounts/GradingStandards/delete_grading_standard_accounts.d.ts +35 -0
  65. package/dist/Endpoints/V1/Accounts/GradingStandards/delete_grading_standard_accounts.js +15 -0
  66. package/dist/Endpoints/V1/Accounts/GradingStandards/index.d.ts +2 -0
  67. package/dist/Endpoints/V1/Accounts/GradingStandards/index.js +2 -0
  68. package/dist/Endpoints/V1/Accounts/GradingStandards/update.d.ts +77 -0
  69. package/dist/Endpoints/V1/Accounts/GradingStandards/update.js +19 -0
  70. package/dist/Endpoints/V1/Accounts/Logins/create.d.ts +2 -1
  71. package/dist/Endpoints/V1/Accounts/Logins/list.d.ts +2 -1
  72. package/dist/Endpoints/V1/Accounts/Logins/update.d.ts +2 -1
  73. package/dist/Endpoints/V1/Accounts/LtiApps/LaunchDefinitions/list.d.ts +2 -1
  74. package/dist/Endpoints/V1/Accounts/LtiRegistrations/History/get.d.ts +39 -0
  75. package/dist/Endpoints/V1/Accounts/LtiRegistrations/History/get.js +19 -0
  76. package/dist/Endpoints/V1/Accounts/LtiRegistrations/History/index.d.ts +1 -0
  77. package/dist/Endpoints/V1/Accounts/LtiRegistrations/History/index.js +1 -0
  78. package/dist/Endpoints/V1/Accounts/LtiRegistrations/OverlayHistory/get.d.ts +45 -0
  79. package/dist/Endpoints/V1/Accounts/LtiRegistrations/OverlayHistory/get.js +15 -0
  80. package/dist/Endpoints/V1/Accounts/LtiRegistrations/OverlayHistory/index.d.ts +1 -0
  81. package/dist/Endpoints/V1/Accounts/LtiRegistrations/OverlayHistory/index.js +1 -0
  82. package/dist/Endpoints/V1/Accounts/LtiRegistrations/UpdateRequests/Apply/apply_lti_registration_update_requst.d.ts +63 -0
  83. package/dist/Endpoints/V1/Accounts/LtiRegistrations/UpdateRequests/Apply/apply_lti_registration_update_requst.js +17 -0
  84. package/dist/Endpoints/V1/Accounts/LtiRegistrations/UpdateRequests/Apply/index.d.ts +1 -0
  85. package/dist/Endpoints/V1/Accounts/LtiRegistrations/UpdateRequests/Apply/index.js +1 -0
  86. package/dist/Endpoints/V1/Accounts/LtiRegistrations/UpdateRequests/index.d.ts +1 -0
  87. package/dist/Endpoints/V1/Accounts/LtiRegistrations/UpdateRequests/index.js +1 -0
  88. package/dist/Endpoints/V1/Accounts/LtiRegistrations/index.d.ts +3 -0
  89. package/dist/Endpoints/V1/Accounts/LtiRegistrations/index.js +3 -0
  90. package/dist/Endpoints/V1/Accounts/LtiRegistrations/update.d.ts +5 -0
  91. package/dist/Endpoints/V1/Accounts/OutcomeGroupLinks/get.d.ts +2 -0
  92. package/dist/Endpoints/V1/Accounts/OutcomeGroupLinks/get.js +2 -0
  93. package/dist/Endpoints/V1/Accounts/OutcomeGroups/get.d.ts +2 -0
  94. package/dist/Endpoints/V1/Accounts/OutcomeGroups/get.js +2 -0
  95. package/dist/Endpoints/V1/Accounts/OutcomeGroups/show_outcome_group_accounts.d.ts +2 -0
  96. package/dist/Endpoints/V1/Accounts/OutcomeGroups/show_outcome_group_accounts.js +2 -0
  97. package/dist/Endpoints/V1/Accounts/Permissions/permissions.d.ts +5 -3
  98. package/dist/Endpoints/V1/Accounts/Reports/list.d.ts +2 -1
  99. package/dist/Endpoints/V1/Accounts/Roles/Permissions/index.d.ts +1 -0
  100. package/dist/Endpoints/V1/Accounts/Roles/Permissions/index.js +1 -0
  101. package/dist/Endpoints/V1/Accounts/Roles/Permissions/list.d.ts +42 -0
  102. package/dist/Endpoints/V1/Accounts/Roles/Permissions/list.js +22 -0
  103. package/dist/Endpoints/V1/Accounts/Roles/create.d.ts +2 -98
  104. package/dist/Endpoints/V1/Accounts/Roles/index.d.ts +1 -0
  105. package/dist/Endpoints/V1/Accounts/Roles/index.js +1 -0
  106. package/dist/Endpoints/V1/Accounts/Roles/update.d.ts +3 -1
  107. package/dist/Endpoints/V1/Accounts/RootOutcomeGroup/redirect_to_root_outcome_group_for_context_accounts.d.ts +2 -1
  108. package/dist/Endpoints/V1/Accounts/Rubrics/UsedLocations/get.d.ts +3 -3
  109. package/dist/Endpoints/V1/Accounts/Rubrics/UsedLocations/get.js +3 -3
  110. package/dist/Endpoints/V1/Accounts/Rubrics/list.d.ts +2 -1
  111. package/dist/Endpoints/V1/Accounts/Search/search_account_domains.d.ts +2 -1
  112. package/dist/Endpoints/V1/Accounts/Settings/settings.d.ts +2 -1
  113. package/dist/Endpoints/V1/Accounts/Tabs/list.d.ts +2 -1
  114. package/dist/Endpoints/V1/Accounts/index.d.ts +1 -0
  115. package/dist/Endpoints/V1/Accounts/index.js +1 -0
  116. package/dist/Endpoints/V1/Accounts/update.d.ts +12 -0
  117. package/dist/Endpoints/V1/Announcements/list.d.ts +2 -2
  118. package/dist/Endpoints/V1/AppointmentGroups/Groups/list.d.ts +2 -1
  119. package/dist/Endpoints/V1/AppointmentGroups/Users/list.d.ts +2 -1
  120. package/dist/Endpoints/V1/AppointmentGroups/create.d.ts +2 -1
  121. package/dist/Endpoints/V1/AppointmentGroups/delete_appointment_group.d.ts +2 -1
  122. package/dist/Endpoints/V1/AppointmentGroups/get.d.ts +2 -1
  123. package/dist/Endpoints/V1/AppointmentGroups/list.d.ts +2 -1
  124. package/dist/Endpoints/V1/AppointmentGroups/update.d.ts +2 -1
  125. package/dist/Endpoints/V1/Audit/Authentication/Accounts/query_by_account.d.ts +2 -1
  126. package/dist/Endpoints/V1/Audit/Authentication/Logins/query_by_login.d.ts +2 -1
  127. package/dist/Endpoints/V1/Audit/Authentication/Users/query_by_user.d.ts +2 -1
  128. package/dist/Endpoints/V1/BrandVariables/get.d.ts +2 -1
  129. package/dist/Endpoints/V1/CalendarEvents/Reservations/reserve_time_slot.d.ts +2 -1
  130. package/dist/Endpoints/V1/CalendarEvents/Reservations/reserve_time_slot_participant_id.d.ts +2 -1
  131. package/dist/Endpoints/V1/CalendarEvents/SaveEnabledAccountCalendars/save_enabled_account_calendars.d.ts +2 -1
  132. package/dist/Endpoints/V1/CalendarEvents/create.d.ts +2 -1
  133. package/dist/Endpoints/V1/CalendarEvents/delete_calendar_event.d.ts +2 -1
  134. package/dist/Endpoints/V1/CalendarEvents/get.d.ts +2 -0
  135. package/dist/Endpoints/V1/CalendarEvents/get.js +2 -0
  136. package/dist/Endpoints/V1/CalendarEvents/update.d.ts +2 -1
  137. package/dist/Endpoints/V1/Conversations/AddMessage/add_message.d.ts +2 -1
  138. package/dist/Endpoints/V1/Conversations/AddRecipients/add_recipients.d.ts +2 -1
  139. package/dist/Endpoints/V1/Conversations/Batches/get.d.ts +2 -1
  140. package/dist/Endpoints/V1/Conversations/FindRecipients/find_recipients.d.ts +2 -1
  141. package/dist/Endpoints/V1/Conversations/FindRecipients/find_recipients_conversations.d.ts +2 -1
  142. package/dist/Endpoints/V1/Conversations/MarkAllAsRead/mark_all_as_read.d.ts +2 -1
  143. package/dist/Endpoints/V1/Conversations/RemoveMessages/delete_message.d.ts +2 -1
  144. package/dist/Endpoints/V1/Conversations/UnreadCount/unread_count.d.ts +2 -1
  145. package/dist/Endpoints/V1/Conversations/create.d.ts +14 -8
  146. package/dist/Endpoints/V1/Conversations/create.js +6 -0
  147. package/dist/Endpoints/V1/Conversations/delete_conversation.d.ts +2 -1
  148. package/dist/Endpoints/V1/Conversations/get.d.ts +2 -1
  149. package/dist/Endpoints/V1/Conversations/list.d.ts +7 -4
  150. package/dist/Endpoints/V1/Conversations/list.js +4 -0
  151. package/dist/Endpoints/V1/Conversations/update.d.ts +2 -1
  152. package/dist/Endpoints/V1/Courses/ActivityStream/Summary/course_activity_stream_summary.d.ts +2 -1
  153. package/dist/Endpoints/V1/Courses/ActivityStream/course_activity_stream.d.ts +2 -1
  154. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/Messages/index.d.ts +1 -0
  155. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/Messages/index.js +1 -0
  156. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/Messages/post_message_to_conversation.d.ts +47 -0
  157. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/Messages/post_message_to_conversation.js +15 -0
  158. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/create.d.ts +35 -0
  159. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/create.js +15 -0
  160. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/delete_ai_conversation.d.ts +40 -0
  161. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/delete_ai_conversation.js +15 -0
  162. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/get.d.ts +35 -0
  163. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/get.js +15 -0
  164. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/index.d.ts +4 -0
  165. package/dist/Endpoints/V1/Courses/AiExperiences/Conversations/index.js +4 -0
  166. package/dist/Endpoints/V1/Courses/AiExperiences/Edit/index.d.ts +1 -0
  167. package/dist/Endpoints/V1/Courses/AiExperiences/Edit/index.js +1 -0
  168. package/dist/Endpoints/V1/Courses/AiExperiences/Edit/show_edit_ai_experience_form.d.ts +35 -0
  169. package/dist/Endpoints/V1/Courses/AiExperiences/Edit/show_edit_ai_experience_form.js +15 -0
  170. package/dist/Endpoints/V1/Courses/AiExperiences/New/index.d.ts +1 -0
  171. package/dist/Endpoints/V1/Courses/AiExperiences/New/index.js +1 -0
  172. package/dist/Endpoints/V1/Courses/AiExperiences/New/show_new_ai_experience_form.d.ts +29 -0
  173. package/dist/Endpoints/V1/Courses/AiExperiences/New/show_new_ai_experience_form.js +15 -0
  174. package/dist/Endpoints/V1/Courses/AiExperiences/create.d.ts +48 -0
  175. package/dist/Endpoints/V1/Courses/AiExperiences/create.js +15 -0
  176. package/dist/Endpoints/V1/Courses/AiExperiences/delete_ai_experience.d.ts +35 -0
  177. package/dist/Endpoints/V1/Courses/AiExperiences/delete_ai_experience.js +15 -0
  178. package/dist/Endpoints/V1/Courses/AiExperiences/index.d.ts +8 -0
  179. package/dist/Endpoints/V1/Courses/AiExperiences/index.js +8 -0
  180. package/dist/Endpoints/V1/Courses/AiExperiences/list.d.ts +35 -0
  181. package/dist/Endpoints/V1/Courses/AiExperiences/list.js +15 -0
  182. package/dist/Endpoints/V1/Courses/AiExperiences/show_ai_experience.d.ts +35 -0
  183. package/dist/Endpoints/V1/Courses/AiExperiences/show_ai_experience.js +15 -0
  184. package/dist/Endpoints/V1/Courses/AiExperiences/update.d.ts +51 -0
  185. package/dist/Endpoints/V1/Courses/AiExperiences/update.js +15 -0
  186. package/dist/Endpoints/V1/Courses/Analytics/Activity/get.d.ts +2 -1
  187. package/dist/Endpoints/V1/Courses/Analytics/Assignments/get.d.ts +2 -1
  188. package/dist/Endpoints/V1/Courses/Analytics/StudentSummaries/get.d.ts +2 -1
  189. package/dist/Endpoints/V1/Courses/Analytics/Users/Activity/get.d.ts +2 -1
  190. package/dist/Endpoints/V1/Courses/Analytics/Users/Assignments/get.d.ts +2 -1
  191. package/dist/Endpoints/V1/Courses/Analytics/Users/Communication/get.d.ts +2 -1
  192. package/dist/Endpoints/V1/Courses/AssignOutcomeOrder/set_outcome_ordering_for_lmgb.d.ts +2 -1
  193. package/dist/Endpoints/V1/Courses/AssignmentGroups/list.d.ts +3 -1
  194. package/dist/Endpoints/V1/Courses/Assignments/Allocate/allocate_peer_review.d.ts +35 -0
  195. package/dist/Endpoints/V1/Courses/Assignments/Allocate/allocate_peer_review.js +15 -0
  196. package/dist/Endpoints/V1/Courses/Assignments/Allocate/index.d.ts +1 -0
  197. package/dist/Endpoints/V1/Courses/Assignments/Allocate/index.js +1 -0
  198. package/dist/Endpoints/V1/Courses/Assignments/AnonymousProvisionalGrades/Status/show_provisional_grade_status_for_student.d.ts +2 -1
  199. package/dist/Endpoints/V1/Courses/Assignments/AnonymousSubmissions/get.d.ts +2 -1
  200. package/dist/Endpoints/V1/Courses/Assignments/AnonymousSubmissions/grade_or_comment_on_submission_by_anonymous_id_courses.d.ts +16 -3
  201. package/dist/Endpoints/V1/Courses/Assignments/DateDetails/get.d.ts +10 -1
  202. package/dist/Endpoints/V1/Courses/Assignments/DateDetails/update.d.ts +2 -1
  203. package/dist/Endpoints/V1/Courses/Assignments/Extensions/set_extensions_for_student_assignment_submissions.d.ts +2 -1
  204. package/dist/Endpoints/V1/Courses/Assignments/GradeableStudents/list.d.ts +2 -1
  205. package/dist/Endpoints/V1/Courses/Assignments/ProvisionalGrades/BulkSelect/bulk_select_provisional_grades.d.ts +2 -1
  206. package/dist/Endpoints/V1/Courses/Assignments/ProvisionalGrades/Publish/publish_provisional_grades_for_assignment.d.ts +2 -1
  207. package/dist/Endpoints/V1/Courses/Assignments/ProvisionalGrades/Select/select_provisional_grade.d.ts +2 -1
  208. package/dist/Endpoints/V1/Courses/Assignments/ProvisionalGrades/Status/show_provisional_grade_status_for_student.d.ts +2 -1
  209. package/dist/Endpoints/V1/Courses/Assignments/SubmissionSummary/submission_summary_courses.d.ts +2 -1
  210. package/dist/Endpoints/V1/Courses/Assignments/Submissions/DocumentAnnotations/Read/get.d.ts +2 -1
  211. package/dist/Endpoints/V1/Courses/Assignments/Submissions/DocumentAnnotations/Read/mark_document_annotations_as_read_courses.d.ts +2 -1
  212. package/dist/Endpoints/V1/Courses/Assignments/Submissions/Read/mark_submission_as_read_courses.d.ts +2 -1
  213. package/dist/Endpoints/V1/Courses/Assignments/Submissions/Read/mark_submission_as_unread_courses.d.ts +2 -1
  214. package/dist/Endpoints/V1/Courses/Assignments/Submissions/Read/mark_submission_item_as_read_courses.d.ts +2 -1
  215. package/dist/Endpoints/V1/Courses/Assignments/Submissions/RubricAssessments/Read/get.d.ts +2 -1
  216. package/dist/Endpoints/V1/Courses/Assignments/Submissions/RubricAssessments/Read/mark_rubric_assessments_as_read_courses_rubric_assessments.d.ts +2 -1
  217. package/dist/Endpoints/V1/Courses/Assignments/Submissions/RubricComments/Read/get.d.ts +2 -1
  218. package/dist/Endpoints/V1/Courses/Assignments/Submissions/RubricComments/Read/mark_rubric_assessments_as_read_courses_rubric_comments.d.ts +2 -1
  219. package/dist/Endpoints/V1/Courses/Assignments/Submissions/get.d.ts +2 -1
  220. package/dist/Endpoints/V1/Courses/Assignments/Submissions/grade_or_comment_on_submission_courses.d.ts +16 -3
  221. package/dist/Endpoints/V1/Courses/Assignments/Submissions/submit_assignment_courses.d.ts +2 -1
  222. package/dist/Endpoints/V1/Courses/Assignments/create.d.ts +46 -0
  223. package/dist/Endpoints/V1/Courses/Assignments/get.d.ts +2 -1
  224. package/dist/Endpoints/V1/Courses/Assignments/index.d.ts +1 -0
  225. package/dist/Endpoints/V1/Courses/Assignments/index.js +1 -0
  226. package/dist/Endpoints/V1/Courses/Assignments/update.d.ts +52 -0
  227. package/dist/Endpoints/V1/Courses/BlueprintTemplates/RestrictItem/set_or_remove_restrictions_on_blueprint_course_object.d.ts +2 -1
  228. package/dist/Endpoints/V1/Courses/BlueprintTemplates/UpdateAssociations/update.d.ts +2 -1
  229. package/dist/Endpoints/V1/Courses/BrandVariables/get.d.ts +32 -0
  230. package/dist/Endpoints/V1/Courses/BrandVariables/get.js +18 -0
  231. package/dist/Endpoints/V1/Courses/BrandVariables/index.d.ts +1 -0
  232. package/dist/Endpoints/V1/Courses/BrandVariables/index.js +1 -0
  233. package/dist/Endpoints/V1/Courses/BulkUserProgress/get.d.ts +2 -1
  234. package/dist/Endpoints/V1/Courses/BulkUserTags/bulk_fetch_user_tags_for_multiple_users_in_course.d.ts +39 -0
  235. package/dist/Endpoints/V1/Courses/BulkUserTags/bulk_fetch_user_tags_for_multiple_users_in_course.js +16 -0
  236. package/dist/Endpoints/V1/Courses/BulkUserTags/index.d.ts +1 -0
  237. package/dist/Endpoints/V1/Courses/BulkUserTags/index.js +1 -0
  238. package/dist/Endpoints/V1/Courses/CalendarEvents/Timetable/get.d.ts +2 -1
  239. package/dist/Endpoints/V1/Courses/CalendarEvents/Timetable/set_course_timetable.d.ts +2 -1
  240. package/dist/Endpoints/V1/Courses/CalendarEvents/TimetableEvents/create.d.ts +2 -1
  241. package/dist/Endpoints/V1/Courses/ContentMigrations/AssetIdMapping/get.d.ts +2 -1
  242. package/dist/Endpoints/V1/Courses/CourseCopy/copy_course_content.d.ts +2 -1
  243. package/dist/Endpoints/V1/Courses/CourseCopy/get.d.ts +2 -1
  244. package/dist/Endpoints/V1/Courses/CoursePacing/create.d.ts +2 -0
  245. package/dist/Endpoints/V1/Courses/CoursePacing/create.js +2 -0
  246. package/dist/Endpoints/V1/Courses/CspSettings/enable_disable_or_clear_explicit_csp_setting_courses.d.ts +2 -1
  247. package/dist/Endpoints/V1/Courses/CspSettings/get.d.ts +2 -1
  248. package/dist/Endpoints/V1/Courses/CustomGradebookColumns/Reorder/reorder_custom_columns.d.ts +2 -1
  249. package/dist/Endpoints/V1/Courses/DiscussionTopics/DateDetails/get.d.ts +10 -1
  250. package/dist/Endpoints/V1/Courses/DiscussionTopics/DateDetails/update.d.ts +2 -1
  251. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/Rating/rate_entry_courses.d.ts +2 -1
  252. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/Read/mark_entry_as_read_courses.d.ts +2 -1
  253. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/Read/mark_entry_as_unread_courses.d.ts +2 -1
  254. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/Replies/list.d.ts +2 -1
  255. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/Replies/post_reply_courses.d.ts +2 -1
  256. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/delete_entry_courses.d.ts +2 -1
  257. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/list.d.ts +2 -1
  258. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/post_entry_courses.d.ts +2 -1
  259. package/dist/Endpoints/V1/Courses/DiscussionTopics/Entries/update.d.ts +2 -1
  260. package/dist/Endpoints/V1/Courses/DiscussionTopics/EntryList/list.d.ts +2 -1
  261. package/dist/Endpoints/V1/Courses/DiscussionTopics/Read/mark_topic_as_read_courses.d.ts +2 -1
  262. package/dist/Endpoints/V1/Courses/DiscussionTopics/Read/mark_topic_as_unread_courses.d.ts +2 -1
  263. package/dist/Endpoints/V1/Courses/DiscussionTopics/ReadAll/mark_all_entries_as_read_courses.d.ts +2 -1
  264. package/dist/Endpoints/V1/Courses/DiscussionTopics/ReadAll/mark_all_entries_as_unread_courses.d.ts +2 -1
  265. package/dist/Endpoints/V1/Courses/DiscussionTopics/ReadAll/mark_all_topic_as_read_courses.d.ts +2 -1
  266. package/dist/Endpoints/V1/Courses/DiscussionTopics/Reorder/reorder_pinned_topics_courses.d.ts +2 -1
  267. package/dist/Endpoints/V1/Courses/DiscussionTopics/Subscribed/subscribe_to_topic_courses.d.ts +2 -1
  268. package/dist/Endpoints/V1/Courses/DiscussionTopics/Subscribed/unsubscribe_from_topic_courses.d.ts +2 -1
  269. package/dist/Endpoints/V1/Courses/DiscussionTopics/Summaries/Disable/disable_summary_courses.d.ts +2 -1
  270. package/dist/Endpoints/V1/Courses/DiscussionTopics/Summaries/Feedback/summary_feedback_courses.d.ts +2 -1
  271. package/dist/Endpoints/V1/Courses/DiscussionTopics/Summaries/find_last_summary_courses.d.ts +2 -1
  272. package/dist/Endpoints/V1/Courses/DiscussionTopics/Summaries/find_or_create_summary_courses.d.ts +2 -1
  273. package/dist/Endpoints/V1/Courses/DiscussionTopics/View/get.d.ts +2 -1
  274. package/dist/Endpoints/V1/Courses/DiscussionTopics/create.d.ts +2 -1
  275. package/dist/Endpoints/V1/Courses/DiscussionTopics/delete_topic_courses.d.ts +2 -1
  276. package/dist/Endpoints/V1/Courses/DiscussionTopics/get.d.ts +2 -1
  277. package/dist/Endpoints/V1/Courses/DiscussionTopics/update.d.ts +2 -1
  278. package/dist/Endpoints/V1/Courses/DismissMigrationLimitationMessage/remove_quiz_migration_alert.d.ts +2 -1
  279. package/dist/Endpoints/V1/Courses/EffectiveDueDates/get.d.ts +2 -1
  280. package/dist/Endpoints/V1/Courses/Enrollments/Accept/accept_course_invitation.d.ts +2 -1
  281. package/dist/Endpoints/V1/Courses/Enrollments/Reject/reject_course_invitation.d.ts +2 -1
  282. package/dist/Endpoints/V1/Courses/ExternalTools/SessionlessLaunch/get.d.ts +2 -1
  283. package/dist/Endpoints/V1/Courses/ExternalTools/VisibleCourseNavTools/get.d.ts +2 -1
  284. package/dist/Endpoints/V1/Courses/ExternalTools/create.d.ts +17 -187
  285. package/dist/Endpoints/V1/Courses/ExternalTools/create.js +4 -0
  286. package/dist/Endpoints/V1/Courses/ExternalTools/delete_external_tool_courses.d.ts +2 -1
  287. package/dist/Endpoints/V1/Courses/ExternalTools/get.d.ts +2 -1
  288. package/dist/Endpoints/V1/Courses/ExternalTools/list.d.ts +11 -4
  289. package/dist/Endpoints/V1/Courses/ExternalTools/update.d.ts +9 -2
  290. package/dist/Endpoints/V1/Courses/ExternalTools/update.js +7 -1
  291. package/dist/Endpoints/V1/Courses/Features/Enabled/list.d.ts +2 -1
  292. package/dist/Endpoints/V1/Courses/Features/list.d.ts +9 -1
  293. package/dist/Endpoints/V1/Courses/Files/DateDetails/get.d.ts +10 -1
  294. package/dist/Endpoints/V1/Courses/Files/DateDetails/update.d.ts +2 -1
  295. package/dist/Endpoints/V1/Courses/Files/Quota/get.d.ts +2 -1
  296. package/dist/Endpoints/V1/Courses/Folders/ByPath/index.d.ts +1 -1
  297. package/dist/Endpoints/V1/Courses/Folders/ByPath/index.js +1 -1
  298. package/dist/Endpoints/V1/Courses/GradingPeriods/BatchUpdate/batchUpdate.d.ts +2 -1
  299. package/dist/Endpoints/V1/Courses/GradingPeriods/delete_grading_period_courses.d.ts +2 -1
  300. package/dist/Endpoints/V1/Courses/GradingPeriods/get.d.ts +2 -1
  301. package/dist/Endpoints/V1/Courses/GradingPeriods/list.d.ts +2 -1
  302. package/dist/Endpoints/V1/Courses/GradingPeriods/update.d.ts +2 -1
  303. package/dist/Endpoints/V1/Courses/GradingStandards/delete_grading_standard_courses.d.ts +35 -0
  304. package/dist/Endpoints/V1/Courses/GradingStandards/delete_grading_standard_courses.js +15 -0
  305. package/dist/Endpoints/V1/Courses/GradingStandards/index.d.ts +2 -0
  306. package/dist/Endpoints/V1/Courses/GradingStandards/index.js +2 -0
  307. package/dist/Endpoints/V1/Courses/GradingStandards/update.d.ts +77 -0
  308. package/dist/Endpoints/V1/Courses/GradingStandards/update.js +19 -0
  309. package/dist/Endpoints/V1/Courses/GroupCategories/ExportTags/export_tags_and_users_in_course.d.ts +29 -0
  310. package/dist/Endpoints/V1/Courses/GroupCategories/ExportTags/export_tags_and_users_in_course.js +15 -0
  311. package/dist/Endpoints/V1/Courses/GroupCategories/ExportTags/index.d.ts +1 -0
  312. package/dist/Endpoints/V1/Courses/GroupCategories/ExportTags/index.js +1 -0
  313. package/dist/Endpoints/V1/Courses/GroupCategories/ImportTags/import_differentiation_tags.d.ts +57 -0
  314. package/dist/Endpoints/V1/Courses/GroupCategories/ImportTags/import_differentiation_tags.js +18 -0
  315. package/dist/Endpoints/V1/Courses/GroupCategories/ImportTags/index.d.ts +1 -0
  316. package/dist/Endpoints/V1/Courses/GroupCategories/ImportTags/index.js +1 -0
  317. package/dist/Endpoints/V1/Courses/GroupCategories/index.d.ts +2 -0
  318. package/dist/Endpoints/V1/Courses/GroupCategories/index.js +2 -0
  319. package/dist/Endpoints/V1/Courses/LatePolicy/create.d.ts +2 -1
  320. package/dist/Endpoints/V1/Courses/LatePolicy/get.d.ts +2 -1
  321. package/dist/Endpoints/V1/Courses/LatePolicy/patch_late_policy.d.ts +2 -1
  322. package/dist/Endpoints/V1/Courses/LiveAssessments/Results/create.d.ts +2 -1
  323. package/dist/Endpoints/V1/Courses/LiveAssessments/Results/list.d.ts +2 -1
  324. package/dist/Endpoints/V1/Courses/LiveAssessments/create.d.ts +2 -1
  325. package/dist/Endpoints/V1/Courses/LiveAssessments/list.d.ts +2 -1
  326. package/dist/Endpoints/V1/Courses/LtiApps/LaunchDefinitions/list.d.ts +2 -1
  327. package/dist/Endpoints/V1/Courses/Modules/AssignmentOverrides/update.d.ts +2 -1
  328. package/dist/Endpoints/V1/Courses/Modules/DateDetails/get.d.ts +10 -1
  329. package/dist/Endpoints/V1/Courses/Modules/Items/Done/mark_module_item_as_done_not_done.d.ts +2 -1
  330. package/dist/Endpoints/V1/Courses/Modules/Items/MarkRead/mark_module_item_read.d.ts +2 -1
  331. package/dist/Endpoints/V1/Courses/Modules/Items/SelectMasteryPath/select_mastery_path.d.ts +2 -1
  332. package/dist/Endpoints/V1/Courses/OutcomeAlignments/get.d.ts +3 -0
  333. package/dist/Endpoints/V1/Courses/OutcomeAlignments/get.js +3 -0
  334. package/dist/Endpoints/V1/Courses/OutcomeGroupLinks/get.d.ts +2 -0
  335. package/dist/Endpoints/V1/Courses/OutcomeGroupLinks/get.js +2 -0
  336. package/dist/Endpoints/V1/Courses/OutcomeGroups/get.d.ts +2 -0
  337. package/dist/Endpoints/V1/Courses/OutcomeGroups/get.js +2 -0
  338. package/dist/Endpoints/V1/Courses/OutcomeGroups/show_outcome_group_courses.d.ts +2 -0
  339. package/dist/Endpoints/V1/Courses/OutcomeGroups/show_outcome_group_courses.js +2 -0
  340. package/dist/Endpoints/V1/Courses/OutcomeResults/get.d.ts +2 -1
  341. package/dist/Endpoints/V1/Courses/OutcomeRollups/get.d.ts +2 -1
  342. package/dist/Endpoints/V1/Courses/Pages/DateDetails/get.d.ts +10 -1
  343. package/dist/Endpoints/V1/Courses/Pages/DateDetails/update.d.ts +2 -1
  344. package/dist/Endpoints/V1/Courses/Permissions/permissions.d.ts +5 -3
  345. package/dist/Endpoints/V1/Courses/PreviewHtml/preview_processed_html.d.ts +2 -1
  346. package/dist/Endpoints/V1/Courses/QuizExtensions/set_extensions_for_student_quiz_submissions.d.ts +2 -1
  347. package/dist/Endpoints/V1/Courses/Quizzes/DateDetails/get.d.ts +10 -1
  348. package/dist/Endpoints/V1/Courses/Quizzes/DateDetails/update.d.ts +2 -1
  349. package/dist/Endpoints/V1/Courses/Quizzes/Extensions/set_extensions_for_student_quiz_submissions.d.ts +2 -1
  350. package/dist/Endpoints/V1/Courses/Quizzes/Groups/Reorder/reorder_question_groups.d.ts +2 -1
  351. package/dist/Endpoints/V1/Courses/Quizzes/Groups/create.d.ts +2 -1
  352. package/dist/Endpoints/V1/Courses/Quizzes/Groups/delete_question_group.d.ts +2 -1
  353. package/dist/Endpoints/V1/Courses/Quizzes/Groups/update.d.ts +2 -1
  354. package/dist/Endpoints/V1/Courses/Quizzes/IpFilters/get.d.ts +2 -1
  355. package/dist/Endpoints/V1/Courses/Quizzes/Questions/delete_quiz_question.d.ts +2 -1
  356. package/dist/Endpoints/V1/Courses/Quizzes/Reorder/reorder_quiz_items.d.ts +2 -1
  357. package/dist/Endpoints/V1/Courses/Quizzes/Reports/abort_generation_of_report_or_remove_previously_generated_one.d.ts +2 -1
  358. package/dist/Endpoints/V1/Courses/Quizzes/Statistics/fetching_latest_quiz_statistics.d.ts +2 -1
  359. package/dist/Endpoints/V1/Courses/Quizzes/Submission/get.d.ts +2 -1
  360. package/dist/Endpoints/V1/Courses/Quizzes/SubmissionUsers/Message/send_message_to_unsubmitted_or_submitted_users_for_quiz.d.ts +2 -1
  361. package/dist/Endpoints/V1/Courses/Quizzes/Submissions/Complete/complete_quiz_submission_turn_it_in.d.ts +2 -1
  362. package/dist/Endpoints/V1/Courses/Quizzes/Submissions/Events/retrieve_captured_events.d.ts +2 -1
  363. package/dist/Endpoints/V1/Courses/Quizzes/Submissions/Events/submit_captured_events.d.ts +2 -1
  364. package/dist/Endpoints/V1/Courses/Quizzes/Submissions/Time/get.d.ts +2 -1
  365. package/dist/Endpoints/V1/Courses/Quizzes/Submissions/create.d.ts +2 -1
  366. package/dist/Endpoints/V1/Courses/Quizzes/Submissions/get.d.ts +2 -1
  367. package/dist/Endpoints/V1/Courses/Quizzes/Submissions/update.d.ts +2 -1
  368. package/dist/Endpoints/V1/Courses/Quizzes/delete_quiz.d.ts +2 -0
  369. package/dist/Endpoints/V1/Courses/Quizzes/delete_quiz.js +2 -0
  370. package/dist/Endpoints/V1/Courses/Restore/index.d.ts +1 -0
  371. package/dist/Endpoints/V1/Courses/Restore/index.js +1 -0
  372. package/dist/Endpoints/V1/Courses/Restore/restore_course_version.d.ts +38 -0
  373. package/dist/Endpoints/V1/Courses/Restore/restore_course_version.js +15 -0
  374. package/dist/Endpoints/V1/Courses/RootOutcomeGroup/redirect_to_root_outcome_group_for_context_courses.d.ts +2 -1
  375. package/dist/Endpoints/V1/Courses/RubricAssociations/RubricAssessments/create.d.ts +2 -2
  376. package/dist/Endpoints/V1/Courses/RubricAssociations/RubricAssessments/update.d.ts +2 -2
  377. package/dist/Endpoints/V1/Courses/Rubrics/UsedLocations/get.d.ts +3 -3
  378. package/dist/Endpoints/V1/Courses/Rubrics/UsedLocations/get.js +3 -3
  379. package/dist/Endpoints/V1/Courses/Rubrics/create.d.ts +3 -3
  380. package/dist/Endpoints/V1/Courses/Rubrics/create.js +1 -1
  381. package/dist/Endpoints/V1/Courses/Rubrics/list.d.ts +2 -1
  382. package/dist/Endpoints/V1/Courses/Rubrics/update.d.ts +3 -3
  383. package/dist/Endpoints/V1/Courses/Rubrics/update.js +1 -1
  384. package/dist/Endpoints/V1/Courses/SearchUsers/list.d.ts +6 -0
  385. package/dist/Endpoints/V1/Courses/Settings/get.d.ts +2 -1
  386. package/dist/Endpoints/V1/Courses/Settings/update.d.ts +2 -1
  387. package/dist/Endpoints/V1/Courses/Students/Submissions/list.d.ts +2 -1
  388. package/dist/Endpoints/V1/Courses/Submissions/BulkMarkRead/mark_bulk_submissions_as_read_courses.d.ts +2 -1
  389. package/dist/Endpoints/V1/Courses/Submissions/ClearUnread/clear_unread_status_for_all_submissions_courses.d.ts +2 -1
  390. package/dist/Endpoints/V1/Courses/Tabs/list.d.ts +2 -1
  391. package/dist/Endpoints/V1/Courses/Todo/course_todo_items.d.ts +2 -1
  392. package/dist/Endpoints/V1/Courses/UsageRights/remove_usage_rights_courses.d.ts +2 -1
  393. package/dist/Endpoints/V1/Courses/Users/list.d.ts +6 -0
  394. package/dist/Endpoints/V1/Courses/WhatIfGrades/Reset/reset_what_if_scores_for_current_user_for_entire_course_and_recalculate_grades.d.ts +2 -0
  395. package/dist/Endpoints/V1/Courses/WhatIfGrades/Reset/reset_what_if_scores_for_current_user_for_entire_course_and_recalculate_grades.js +2 -0
  396. package/dist/Endpoints/V1/Courses/delete_conclude_course.d.ts +2 -1
  397. package/dist/Endpoints/V1/Courses/index.d.ts +4 -0
  398. package/dist/Endpoints/V1/Courses/index.js +4 -0
  399. package/dist/Endpoints/V1/Courses/update.d.ts +2 -1
  400. package/dist/Endpoints/V1/DeveloperKeys/update.d.ts +3 -4
  401. package/dist/Endpoints/V1/EnqueueOutcomeRollupCalculation/enqueue_delayed_outcome_rollup_calculation_job.d.ts +28 -0
  402. package/dist/Endpoints/V1/EnqueueOutcomeRollupCalculation/enqueue_delayed_outcome_rollup_calculation_job.js +13 -0
  403. package/dist/Endpoints/V1/EnqueueOutcomeRollupCalculation/index.d.ts +1 -0
  404. package/dist/Endpoints/V1/EnqueueOutcomeRollupCalculation/index.js +1 -0
  405. package/dist/Endpoints/V1/ErrorReports/create.d.ts +2 -1
  406. package/dist/Endpoints/V1/ExternalTools/VisibleCourseNavTools/get.d.ts +2 -1
  407. package/dist/Endpoints/V1/Features/Environment/list.d.ts +2 -1
  408. package/dist/Endpoints/V1/Files/IconMetadata/get.d.ts +2 -1
  409. package/dist/Endpoints/V1/Files/PublicUrl/get.d.ts +2 -1
  410. package/dist/Endpoints/V1/Folders/delete_folder.d.ts +2 -1
  411. package/dist/Endpoints/V1/Global/OutcomeGroups/show_outcome_group_global.d.ts +2 -0
  412. package/dist/Endpoints/V1/Global/OutcomeGroups/show_outcome_group_global.js +2 -0
  413. package/dist/Endpoints/V1/Global/RootOutcomeGroup/redirect_to_root_outcome_group_for_context_global.d.ts +2 -1
  414. package/dist/Endpoints/V1/GradingPeriodSets/GradingPeriods/BatchUpdate/batchUpdate.d.ts +2 -1
  415. package/dist/Endpoints/V1/GroupCategories/Export/export_groups_in_and_users_in_category.d.ts +2 -1
  416. package/dist/Endpoints/V1/GroupCategories/delete_group_category.d.ts +2 -1
  417. package/dist/Endpoints/V1/Groups/ActivityStream/Summary/group_activity_stream_summary.d.ts +2 -1
  418. package/dist/Endpoints/V1/Groups/ActivityStream/group_activity_stream.d.ts +2 -1
  419. package/dist/Endpoints/V1/Groups/Assignments/Override/redirect_to_assignment_override_for_group.d.ts +2 -1
  420. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/Rating/rate_entry_groups.d.ts +2 -1
  421. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/Read/mark_entry_as_read_groups.d.ts +2 -1
  422. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/Read/mark_entry_as_unread_groups.d.ts +2 -1
  423. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/Replies/list.d.ts +2 -1
  424. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/Replies/post_reply_groups.d.ts +2 -1
  425. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/delete_entry_groups.d.ts +2 -1
  426. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/list.d.ts +2 -1
  427. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/post_entry_groups.d.ts +2 -1
  428. package/dist/Endpoints/V1/Groups/DiscussionTopics/Entries/update.d.ts +2 -1
  429. package/dist/Endpoints/V1/Groups/DiscussionTopics/EntryList/list.d.ts +2 -1
  430. package/dist/Endpoints/V1/Groups/DiscussionTopics/Read/mark_topic_as_read_groups.d.ts +2 -1
  431. package/dist/Endpoints/V1/Groups/DiscussionTopics/Read/mark_topic_as_unread_groups.d.ts +2 -1
  432. package/dist/Endpoints/V1/Groups/DiscussionTopics/ReadAll/mark_all_entries_as_read_groups.d.ts +2 -1
  433. package/dist/Endpoints/V1/Groups/DiscussionTopics/ReadAll/mark_all_entries_as_unread_groups.d.ts +2 -1
  434. package/dist/Endpoints/V1/Groups/DiscussionTopics/ReadAll/mark_all_topic_as_read_groups.d.ts +2 -1
  435. package/dist/Endpoints/V1/Groups/DiscussionTopics/Reorder/reorder_pinned_topics_groups.d.ts +2 -1
  436. package/dist/Endpoints/V1/Groups/DiscussionTopics/Subscribed/subscribe_to_topic_groups.d.ts +2 -1
  437. package/dist/Endpoints/V1/Groups/DiscussionTopics/Subscribed/unsubscribe_from_topic_groups.d.ts +2 -1
  438. package/dist/Endpoints/V1/Groups/DiscussionTopics/Summaries/Disable/disable_summary_groups.d.ts +2 -1
  439. package/dist/Endpoints/V1/Groups/DiscussionTopics/Summaries/Feedback/summary_feedback_groups.d.ts +2 -1
  440. package/dist/Endpoints/V1/Groups/DiscussionTopics/Summaries/find_last_summary_groups.d.ts +2 -1
  441. package/dist/Endpoints/V1/Groups/DiscussionTopics/Summaries/find_or_create_summary_groups.d.ts +2 -1
  442. package/dist/Endpoints/V1/Groups/DiscussionTopics/View/get.d.ts +2 -1
  443. package/dist/Endpoints/V1/Groups/DiscussionTopics/create.d.ts +2 -1
  444. package/dist/Endpoints/V1/Groups/DiscussionTopics/delete_topic_groups.d.ts +2 -1
  445. package/dist/Endpoints/V1/Groups/DiscussionTopics/get.d.ts +2 -1
  446. package/dist/Endpoints/V1/Groups/DiscussionTopics/update.d.ts +2 -1
  447. package/dist/Endpoints/V1/Groups/ExternalTools/list.d.ts +11 -4
  448. package/dist/Endpoints/V1/Groups/Files/Quota/get.d.ts +2 -1
  449. package/dist/Endpoints/V1/Groups/Files/upload.d.ts +2 -2
  450. package/dist/Endpoints/V1/Groups/Files/upload.js +2 -2
  451. package/dist/Endpoints/V1/Groups/Folders/ByPath/index.d.ts +1 -1
  452. package/dist/Endpoints/V1/Groups/Folders/ByPath/index.js +1 -1
  453. package/dist/Endpoints/V1/Groups/Invite/invite_others_to_group.d.ts +2 -1
  454. package/dist/Endpoints/V1/Groups/Memberships/leave_group_memberships.d.ts +2 -1
  455. package/dist/Endpoints/V1/Groups/Permissions/permissions.d.ts +5 -3
  456. package/dist/Endpoints/V1/Groups/PreviewHtml/preview_processed_html.d.ts +2 -1
  457. package/dist/Endpoints/V1/Groups/Tabs/list.d.ts +2 -1
  458. package/dist/Endpoints/V1/Groups/UsageRights/remove_usage_rights_groups.d.ts +2 -1
  459. package/dist/Endpoints/V1/Groups/Users/bulk_delete_memberships_bulk_deletes_memberships_by_providing_array_of_user_ids.d.ts +36 -0
  460. package/dist/Endpoints/V1/Groups/Users/bulk_delete_memberships_bulk_deletes_memberships_by_providing_array_of_user_ids.js +15 -0
  461. package/dist/Endpoints/V1/Groups/Users/index.d.ts +1 -0
  462. package/dist/Endpoints/V1/Groups/Users/index.js +1 -0
  463. package/dist/Endpoints/V1/Groups/Users/leave_group_users.d.ts +2 -1
  464. package/dist/Endpoints/V1/ManuallyCreatedCoursesAccount/get.d.ts +3 -0
  465. package/dist/Endpoints/V1/ManuallyCreatedCoursesAccount/get.js +3 -0
  466. package/dist/Endpoints/V1/MediaAttachments/update.d.ts +4 -1
  467. package/dist/Endpoints/V1/MediaAttachments/update.js +2 -0
  468. package/dist/Endpoints/V1/MediaObjects/update.d.ts +4 -1
  469. package/dist/Endpoints/V1/MediaObjects/update.js +2 -0
  470. package/dist/Endpoints/V1/Permissions/Groups/index.d.ts +1 -0
  471. package/dist/Endpoints/V1/Permissions/Groups/index.js +1 -0
  472. package/dist/Endpoints/V1/Permissions/Groups/retrieve_permission_groups.d.ts +22 -0
  473. package/dist/Endpoints/V1/Permissions/Groups/retrieve_permission_groups.js +18 -0
  474. package/dist/Endpoints/V1/Permissions/Help/get.d.ts +28 -0
  475. package/dist/Endpoints/V1/Permissions/Help/get.js +16 -0
  476. package/dist/Endpoints/V1/Permissions/Help/index.d.ts +1 -0
  477. package/dist/Endpoints/V1/Permissions/Help/index.js +1 -0
  478. package/dist/Endpoints/V1/Permissions/index.d.ts +2 -0
  479. package/dist/Endpoints/V1/Permissions/index.js +2 -0
  480. package/dist/Endpoints/V1/PollSessions/Closed/list.d.ts +2 -1
  481. package/dist/Endpoints/V1/PollSessions/Opened/list.d.ts +2 -1
  482. package/dist/Endpoints/V1/Polls/PollChoices/create.d.ts +2 -1
  483. package/dist/Endpoints/V1/Polls/PollChoices/delete_poll_choice.d.ts +2 -1
  484. package/dist/Endpoints/V1/Polls/PollChoices/get.d.ts +2 -1
  485. package/dist/Endpoints/V1/Polls/PollChoices/list.d.ts +2 -1
  486. package/dist/Endpoints/V1/Polls/PollChoices/update.d.ts +2 -1
  487. package/dist/Endpoints/V1/Polls/PollSessions/Close/close_opened_poll_session.d.ts +2 -1
  488. package/dist/Endpoints/V1/Polls/PollSessions/Open/open_poll_session.d.ts +2 -1
  489. package/dist/Endpoints/V1/Polls/PollSessions/PollSubmissions/create.d.ts +2 -1
  490. package/dist/Endpoints/V1/Polls/PollSessions/PollSubmissions/get.d.ts +2 -1
  491. package/dist/Endpoints/V1/Polls/PollSessions/create.d.ts +2 -1
  492. package/dist/Endpoints/V1/Polls/PollSessions/delete_poll_session.d.ts +2 -1
  493. package/dist/Endpoints/V1/Polls/PollSessions/get.d.ts +2 -1
  494. package/dist/Endpoints/V1/Polls/PollSessions/list.d.ts +2 -1
  495. package/dist/Endpoints/V1/Polls/PollSessions/update.d.ts +2 -1
  496. package/dist/Endpoints/V1/Polls/create.d.ts +2 -1
  497. package/dist/Endpoints/V1/Polls/delete_poll.d.ts +2 -1
  498. package/dist/Endpoints/V1/Polls/get.d.ts +2 -1
  499. package/dist/Endpoints/V1/Polls/list.d.ts +2 -1
  500. package/dist/Endpoints/V1/Polls/update.d.ts +2 -1
  501. package/dist/Endpoints/V1/QuizSubmissions/Questions/Flag/flagging_question.d.ts +2 -1
  502. package/dist/Endpoints/V1/QuizSubmissions/Questions/FormattedAnswer/get.d.ts +2 -1
  503. package/dist/Endpoints/V1/QuizSubmissions/Questions/Unflag/unflagging_question.d.ts +2 -1
  504. package/dist/Endpoints/V1/QuizSubmissions/Questions/get.d.ts +2 -1
  505. package/dist/Endpoints/V1/Rubrics/UploadTemplate/templated_file_for_importing_rubric.d.ts +2 -0
  506. package/dist/Endpoints/V1/Rubrics/UploadTemplate/templated_file_for_importing_rubric.js +2 -0
  507. package/dist/Endpoints/V1/Search/AllCourses/list.d.ts +2 -1
  508. package/dist/Endpoints/V1/Search/Recipients/find_recipients_search.d.ts +2 -1
  509. package/dist/Endpoints/V1/Sections/Assignments/AnonymousSubmissions/get.d.ts +2 -1
  510. package/dist/Endpoints/V1/Sections/Assignments/AnonymousSubmissions/grade_or_comment_on_submission_by_anonymous_id_sections.d.ts +16 -3
  511. package/dist/Endpoints/V1/Sections/Assignments/Override/redirect_to_assignment_override_for_section.d.ts +2 -1
  512. package/dist/Endpoints/V1/Sections/Assignments/SubmissionSummary/submission_summary_sections.d.ts +2 -1
  513. package/dist/Endpoints/V1/Sections/Assignments/Submissions/DocumentAnnotations/Read/get.d.ts +2 -1
  514. package/dist/Endpoints/V1/Sections/Assignments/Submissions/DocumentAnnotations/Read/mark_document_annotations_as_read_sections.d.ts +2 -1
  515. package/dist/Endpoints/V1/Sections/Assignments/Submissions/Read/mark_submission_as_read_sections.d.ts +2 -1
  516. package/dist/Endpoints/V1/Sections/Assignments/Submissions/Read/mark_submission_as_unread_sections.d.ts +2 -1
  517. package/dist/Endpoints/V1/Sections/Assignments/Submissions/Read/mark_submission_item_as_read_sections.d.ts +2 -1
  518. package/dist/Endpoints/V1/Sections/Assignments/Submissions/RubricAssessments/Read/get.d.ts +2 -1
  519. package/dist/Endpoints/V1/Sections/Assignments/Submissions/RubricAssessments/Read/mark_rubric_assessments_as_read_sections_rubric_assessments.d.ts +2 -1
  520. package/dist/Endpoints/V1/Sections/Assignments/Submissions/RubricComments/Read/get.d.ts +2 -1
  521. package/dist/Endpoints/V1/Sections/Assignments/Submissions/RubricComments/Read/mark_rubric_assessments_as_read_sections_rubric_comments.d.ts +2 -1
  522. package/dist/Endpoints/V1/Sections/Assignments/Submissions/get.d.ts +2 -1
  523. package/dist/Endpoints/V1/Sections/Assignments/Submissions/grade_or_comment_on_submission_sections.d.ts +16 -3
  524. package/dist/Endpoints/V1/Sections/Assignments/Submissions/submit_assignment_sections.d.ts +2 -1
  525. package/dist/Endpoints/V1/Sections/Students/Submissions/list.d.ts +2 -1
  526. package/dist/Endpoints/V1/Sections/Submissions/BulkMarkRead/mark_bulk_submissions_as_read_sections.d.ts +2 -1
  527. package/dist/Endpoints/V1/Sections/Submissions/ClearUnread/clear_unread_status_for_all_submissions_sections.d.ts +2 -1
  528. package/dist/Endpoints/V1/Services/Kaltura/get.d.ts +2 -1
  529. package/dist/Endpoints/V1/Services/KalturaSession/start_kaltura_session.d.ts +2 -1
  530. package/dist/Endpoints/V1/Settings/Environment/list.d.ts +2 -1
  531. package/dist/Endpoints/V1/Users/ActivityStream/list.d.ts +2 -1
  532. package/dist/Endpoints/V1/Users/Colors/get.d.ts +2 -1
  533. package/dist/Endpoints/V1/Users/Colors/list.d.ts +2 -1
  534. package/dist/Endpoints/V1/Users/Colors/update.d.ts +2 -1
  535. package/dist/Endpoints/V1/Users/CommunicationChannels/NotificationPreferenceCategories/list.d.ts +2 -1
  536. package/dist/Endpoints/V1/Users/ContentShares/remove_content_share.d.ts +2 -1
  537. package/dist/Endpoints/V1/Users/Courses/Assignments/list.d.ts +2 -1
  538. package/dist/Endpoints/V1/Users/CustomData/delete_custom_data.d.ts +2 -1
  539. package/dist/Endpoints/V1/Users/CustomData/load_custom_data.d.ts +2 -1
  540. package/dist/Endpoints/V1/Users/CustomData/store_custom_data.d.ts +2 -1
  541. package/dist/Endpoints/V1/Users/DashboardPositions/get.d.ts +2 -1
  542. package/dist/Endpoints/V1/Users/DashboardPositions/update.d.ts +2 -1
  543. package/dist/Endpoints/V1/Users/Eportfolios/moderate_all_eportfolios_for_user.d.ts +2 -1
  544. package/dist/Endpoints/V1/Users/Features/Enabled/list.d.ts +2 -1
  545. package/dist/Endpoints/V1/Users/Features/list.d.ts +9 -1
  546. package/dist/Endpoints/V1/Users/Files/Quota/get.d.ts +2 -1
  547. package/dist/Endpoints/V1/Users/FilesUiVersionPreference/update.d.ts +2 -1
  548. package/dist/Endpoints/V1/Users/Folders/ByPath/index.d.ts +1 -1
  549. package/dist/Endpoints/V1/Users/Folders/ByPath/index.js +1 -1
  550. package/dist/Endpoints/V1/Users/GradedSubmissions/get.d.ts +2 -0
  551. package/dist/Endpoints/V1/Users/GradedSubmissions/get.js +2 -0
  552. package/dist/Endpoints/V1/Users/Logins/delete_user_login.d.ts +2 -1
  553. package/dist/Endpoints/V1/Users/Logins/list.d.ts +2 -1
  554. package/dist/Endpoints/V1/Users/MobileSessions/log_users_out_of_all_mobile_apps_id.d.ts +12 -3
  555. package/dist/Endpoints/V1/Users/MobileSessions/log_users_out_of_all_mobile_apps_id.js +2 -1
  556. package/dist/Endpoints/V1/Users/MobileSessions/log_users_out_of_all_mobile_apps_mobile_sessions.d.ts +12 -3
  557. package/dist/Endpoints/V1/Users/MobileSessions/log_users_out_of_all_mobile_apps_mobile_sessions.js +2 -1
  558. package/dist/Endpoints/V1/Users/PageViews/Query/Results/beta_get_query_results.d.ts +40 -0
  559. package/dist/Endpoints/V1/Users/PageViews/Query/Results/beta_get_query_results.js +20 -0
  560. package/dist/Endpoints/V1/Users/PageViews/Query/Results/index.d.ts +1 -0
  561. package/dist/Endpoints/V1/Users/PageViews/Query/Results/index.js +1 -0
  562. package/dist/Endpoints/V1/Users/PageViews/Query/beta_initiate_page_views_query.d.ts +54 -0
  563. package/dist/Endpoints/V1/Users/PageViews/Query/beta_initiate_page_views_query.js +21 -0
  564. package/dist/Endpoints/V1/Users/PageViews/Query/beta_poll_query_status.d.ts +40 -0
  565. package/dist/Endpoints/V1/Users/PageViews/Query/beta_poll_query_status.js +20 -0
  566. package/dist/Endpoints/V1/Users/PageViews/Query/index.d.ts +3 -0
  567. package/dist/Endpoints/V1/Users/PageViews/Query/index.js +3 -0
  568. package/dist/Endpoints/V1/Users/PageViews/index.d.ts +1 -0
  569. package/dist/Endpoints/V1/Users/PageViews/index.js +1 -0
  570. package/dist/Endpoints/V1/Users/PageViews/list.d.ts +0 -10
  571. package/dist/Endpoints/V1/Users/PageViews/list.js +0 -10
  572. package/dist/Endpoints/V1/Users/ResetPassword/kickoff_password_recovery_flow.d.ts +2 -1
  573. package/dist/Endpoints/V1/Users/Self/ActivityStream/Summary/activity_stream_summary.d.ts +2 -1
  574. package/dist/Endpoints/V1/Users/Self/ActivityStream/hide_all_stream_items.d.ts +2 -1
  575. package/dist/Endpoints/V1/Users/Self/ActivityStream/hide_stream_item.d.ts +2 -1
  576. package/dist/Endpoints/V1/Users/Self/ActivityStream/list.d.ts +2 -1
  577. package/dist/Endpoints/V1/Users/Self/Bookmarks/delete_bookmark.d.ts +2 -1
  578. package/dist/Endpoints/V1/Users/Self/CommunicationChannels/NotificationPreferenceCategories/update.d.ts +2 -1
  579. package/dist/Endpoints/V1/Users/Self/CommunicationChannels/NotificationPreferences/update.d.ts +2 -1
  580. package/dist/Endpoints/V1/Users/Self/CourseNicknames/clear_course_nicknames.d.ts +2 -1
  581. package/dist/Endpoints/V1/Users/Self/Favorites/Courses/reset_course_favorites.d.ts +2 -1
  582. package/dist/Endpoints/V1/Users/Self/Favorites/Groups/reset_group_favorites.d.ts +2 -1
  583. package/dist/Endpoints/V1/Users/Self/PandataEventsToken/get_pandata_events_jwt_token_and_its_expiration_date.d.ts +2 -1
  584. package/dist/Endpoints/V1/Users/Self/Todo/list.d.ts +2 -1
  585. package/dist/Endpoints/V1/Users/Self/TodoItemCount/list.d.ts +2 -1
  586. package/dist/Endpoints/V1/Users/Self/UpcomingEvents/list.d.ts +2 -1
  587. package/dist/Endpoints/V1/Users/Sessions/terminate_all_user_sessions.d.ts +2 -1
  588. package/dist/Endpoints/V1/Users/Settings/update.d.ts +10 -1
  589. package/dist/Endpoints/V1/Users/Tabs/list.d.ts +2 -1
  590. package/dist/Endpoints/V1/Users/TemporaryEnrollmentStatus/show_temporary_enrollment_recipient_and_provider_status.d.ts +2 -1
  591. package/dist/Endpoints/V1/Users/TextEditorPreference/update.d.ts +2 -1
  592. package/dist/Endpoints/V1/Users/Tokens/create.d.ts +2 -1
  593. package/dist/Endpoints/V1/Users/Tokens/delete_access_token.d.ts +2 -1
  594. package/dist/Endpoints/V1/Users/Tokens/show_access_token.d.ts +2 -1
  595. package/dist/Endpoints/V1/Users/Tokens/update.d.ts +2 -1
  596. package/dist/Endpoints/V1/Users/UsageRights/remove_usage_rights_users.d.ts +2 -1
  597. package/dist/Endpoints/V1/Users/UserGeneratedTokens/index.d.ts +1 -0
  598. package/dist/Endpoints/V1/Users/UserGeneratedTokens/index.js +1 -0
  599. package/dist/Endpoints/V1/Users/UserGeneratedTokens/list.d.ts +40 -0
  600. package/dist/Endpoints/V1/Users/UserGeneratedTokens/list.js +17 -0
  601. package/dist/Endpoints/V1/Users/index.d.ts +1 -0
  602. package/dist/Endpoints/V1/Users/index.js +1 -0
  603. package/dist/Endpoints/V1/index.d.ts +2 -0
  604. package/dist/Endpoints/V1/index.js +2 -0
  605. package/dist/Overrides.d.ts +32 -23
  606. package/dist/Resources/AccessTokens.d.ts +64 -0
  607. package/dist/Resources/AccessTokens.js +1 -0
  608. package/dist/Resources/AiExperiences.d.ts +27 -0
  609. package/dist/Resources/AiExperiences.js +1 -0
  610. package/dist/Resources/Conversations.d.ts +2 -0
  611. package/dist/Resources/CoursePace.d.ts +2 -2
  612. package/dist/Resources/DeveloperKeys.d.ts +2 -0
  613. package/dist/Resources/ExternalTools.d.ts +532 -0
  614. package/dist/Resources/ExternalTools.js +1 -0
  615. package/dist/Resources/FeatureFlags.d.ts +6 -0
  616. package/dist/Resources/Files.d.ts +0 -1
  617. package/dist/Resources/LearningObjectDates.d.ts +9 -0
  618. package/dist/Resources/LtiRegistrations.d.ts +41 -2
  619. package/dist/Resources/ProficiencyRatings.d.ts +2 -1
  620. package/dist/Resources/Roles.d.ts +30 -2
  621. package/dist/Resources/Users.d.ts +51 -0
  622. package/dist/Resources/WhatIfGrades.d.ts +3 -2
  623. package/dist/Resources/index.d.ts +3 -0
  624. package/dist/Resources/index.js +3 -0
  625. package/package.json +10 -10
  626. package/var/render.log +1075 -1027
  627. package/dist/Endpoints/V1/Courses/Folders/ByPath/resolve_path_courses_full_path.d.ts +0 -36
  628. package/dist/Endpoints/V1/Courses/Folders/ByPath/resolve_path_courses_full_path.js +0 -20
  629. package/dist/Endpoints/V1/Groups/Folders/ByPath/resolve_path_groups_full_path.d.ts +0 -36
  630. package/dist/Endpoints/V1/Groups/Folders/ByPath/resolve_path_groups_full_path.js +0 -20
  631. package/dist/Endpoints/V1/Users/Folders/ByPath/resolve_path_users_full_path.d.ts +0 -36
  632. package/dist/Endpoints/V1/Users/Folders/ByPath/resolve_path_users_full_path.js +0 -20
package/var/render.log CHANGED
@@ -1,1027 +1,1075 @@
1
- {"level":"info","message":"Templates will be read from /Users/sbattis/Documents/GitHub/canvas-cli/packages/api/swagger-renderer/templates","timestamp":"2025-09-02T01:30:21.206Z"}
2
- {"level":"info","message":"Rendered TypeScript files will be written to /Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src","timestamp":"2025-09-02T01:30:21.207Z"}
3
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.211Z"}
4
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.211Z"}
5
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.211Z"}
6
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.212Z"}
7
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.212Z"}
8
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.212Z"}
9
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.212Z"}
10
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.212Z"}
11
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.215Z"}
12
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.217Z"}
13
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.217Z"}
14
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.217Z"}
15
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.217Z"}
16
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.217Z"}
17
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.217Z"}
18
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.218Z"}
19
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
20
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
21
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
22
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
23
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
24
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
25
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
26
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
27
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
28
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
29
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
30
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.219Z"}
31
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.219Z"}
32
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
33
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
34
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
35
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.219Z"}
36
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.221Z"}
37
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.221Z"}
38
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.221Z"}
39
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.222Z"}
40
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.222Z"}
41
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.223Z"}
42
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.223Z"}
43
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.223Z"}
44
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.223Z"}
45
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.223Z"}
46
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.223Z"}
47
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.223Z"}
48
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.223Z"}
49
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.223Z"}
50
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
51
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
52
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
53
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
54
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
55
- {"level":"debug","message":"Interpretting type: \"uuid\" as RefType","timestamp":"2025-09-02T01:30:21.224Z"}
56
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
57
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
58
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.224Z"}
59
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.225Z"}
60
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.225Z"}
61
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.226Z"}
62
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.226Z"}
63
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.227Z"}
64
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.227Z"}
65
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.227Z"}
66
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.228Z"}
67
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.228Z"}
68
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.228Z"}
69
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.228Z"}
70
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.229Z"}
71
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.230Z"}
72
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.230Z"}
73
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.230Z"}
74
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.230Z"}
75
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.230Z"}
76
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.232Z"}
77
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.232Z"}
78
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.232Z"}
79
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.232Z"}
80
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.232Z"}
81
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.232Z"}
82
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
83
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
84
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
85
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
86
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
87
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
88
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
89
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
90
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
91
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
92
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
93
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.233Z"}
94
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.233Z"}
95
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.235Z"}
96
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.235Z"}
97
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.235Z"}
98
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.235Z"}
99
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.235Z"}
100
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.235Z"}
101
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.236Z"}
102
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.236Z"}
103
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.236Z"}
104
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.236Z"}
105
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.236Z"}
106
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.236Z"}
107
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.237Z"}
108
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.237Z"}
109
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.237Z"}
110
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.237Z"}
111
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.237Z"}
112
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.238Z"}
113
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.238Z"}
114
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.239Z"}
115
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.239Z"}
116
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.239Z"}
117
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.239Z"}
118
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.239Z"}
119
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.239Z"}
120
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.239Z"}
121
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.239Z"}
122
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.239Z"}
123
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.240Z"}
124
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.240Z"}
125
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.240Z"}
126
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.240Z"}
127
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.241Z"}
128
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.241Z"}
129
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.241Z"}
130
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.241Z"}
131
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.241Z"}
132
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.241Z"}
133
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
134
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
135
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
136
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
137
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
138
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
139
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
140
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
141
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.244Z"}
142
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.245Z"}
143
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.246Z"}
144
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.246Z"}
145
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.246Z"}
146
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.246Z"}
147
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.246Z"}
148
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.249Z"}
149
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.249Z"}
150
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.251Z"}
151
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.251Z"}
152
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.251Z"}
153
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.251Z"}
154
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.251Z"}
155
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.251Z"}
156
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.251Z"}
157
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.252Z"}
158
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.253Z"}
159
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
160
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
161
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
162
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
163
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
164
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
165
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
166
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
167
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
168
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
169
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
170
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
171
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.254Z"}
172
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.256Z"}
173
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.256Z"}
174
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.256Z"}
175
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.256Z"}
176
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.256Z"}
177
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.256Z"}
178
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.256Z"}
179
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.257Z"}
180
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.258Z"}
181
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.258Z"}
182
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.258Z"}
183
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.258Z"}
184
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.258Z"}
185
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.258Z"}
186
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.258Z"}
187
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.258Z"}
188
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.258Z"}
189
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.258Z"}
190
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.258Z"}
191
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.258Z"}
192
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.259Z"}
193
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.259Z"}
194
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.259Z"}
195
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.259Z"}
196
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.259Z"}
197
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.261Z"}
198
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.263Z"}
199
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.263Z"}
200
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.263Z"}
201
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.263Z"}
202
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.263Z"}
203
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.263Z"}
204
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.265Z"}
205
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.265Z"}
206
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.265Z"}
207
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.265Z"}
208
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.265Z"}
209
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.266Z"}
210
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.267Z"}
211
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.267Z"}
212
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.267Z"}
213
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.267Z"}
214
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.267Z"}
215
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.267Z"}
216
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.267Z"}
217
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.268Z"}
218
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.270Z"}
219
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.270Z"}
220
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.270Z"}
221
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.270Z"}
222
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.271Z"}
223
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.271Z"}
224
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.271Z"}
225
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.274Z"}
226
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.274Z"}
227
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.274Z"}
228
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.274Z"}
229
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.275Z"}
230
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.275Z"}
231
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.277Z"}
232
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.277Z"}
233
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.277Z"}
234
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.277Z"}
235
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.277Z"}
236
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.278Z"}
237
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.278Z"}
238
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.278Z"}
239
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.279Z"}
240
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.280Z"}
241
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.281Z"}
242
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.281Z"}
243
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.282Z"}
244
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.282Z"}
245
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.283Z"}
246
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.283Z"}
247
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.283Z"}
248
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.283Z"}
249
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.283Z"}
250
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
251
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
252
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:21.284Z"}
253
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
254
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
255
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
256
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
257
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
258
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.284Z"}
259
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.286Z"}
260
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.286Z"}
261
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.286Z"}
262
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.286Z"}
263
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.286Z"}
264
- {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2025-09-02T01:30:21.288Z"}
265
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.047Z"}
266
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.047Z"}
267
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.047Z"}
268
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.047Z"}
269
- {"level":"debug","message":"Interpretting type: \"AccountCalendar\" as RefType","timestamp":"2025-09-02T01:30:23.047Z"}
270
- {"level":"debug","message":"Interpretting type: \"AccountCalendar\" as RefType","timestamp":"2025-09-02T01:30:23.047Z"}
271
- {"level":"debug","message":"Overriding type \"{ \"count\": \"integer\" }\" as { count: number }","timestamp":"2025-09-02T01:30:23.047Z"}
272
- {"level":"debug","message":"Interpretting type: \"AccountNotification\" as RefType","timestamp":"2025-09-02T01:30:23.047Z"}
273
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.048Z"}
274
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.048Z"}
275
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.048Z"}
276
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.048Z"}
277
- {"level":"debug","message":"Interpretting type: \"AccountNotification\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
278
- {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
279
- {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
280
- {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
281
- {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
282
- {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
283
- {"level":"debug","message":"Interpretting type: \"TermsOfService\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
284
- {"level":"debug","message":"Interpretting type: \"HelpLinks\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
285
- {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
286
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.048Z"}
287
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.048Z"}
288
- {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
289
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.048Z"}
290
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.048Z"}
291
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
292
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
293
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
294
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.048Z"}
295
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
296
- {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
297
- {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
298
- {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2025-09-02T01:30:23.048Z"}
299
- {"level":"debug","message":"Interpretting type: \"Admin\" as RefType","timestamp":"2025-09-02T01:30:23.049Z"}
300
- {"level":"debug","message":"Interpretting type: \"Admin\" as RefType","timestamp":"2025-09-02T01:30:23.049Z"}
301
- {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2025-09-02T01:30:23.049Z"}
302
- {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2025-09-02T01:30:23.049Z"}
303
- {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2025-09-02T01:30:23.049Z"}
304
- {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2025-09-02T01:30:23.049Z"}
305
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.049Z"}
306
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.049Z"}
307
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.049Z"}
308
- {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
309
- {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
310
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.050Z"}
311
- {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
312
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.050Z"}
313
- {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
314
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
315
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
316
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
317
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
318
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.050Z"}
319
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.050Z"}
320
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.050Z"}
321
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.050Z"}
322
- {"level":"debug","message":"Overriding operation edit_assignment properties tsFormParameters 0 tsFormParameters","timestamp":"2025-09-02T01:30:23.050Z"}
323
- {"level":"debug","message":"{\n \"method\": \"PUT\",\n \"summary\": \"Edit an assignment\",\n \"notes\": \"Modify an existing assignment.\",\n \"nickname\": \"edit_assignment\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[name]\",\n \"description\": \"The assignment name.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[position]\",\n \"description\": \"The position of this assignment in the group when displaying\\nassignment lists.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"online_quiz\",\n \"none\",\n \"on_paper\",\n \"discussion_topic\",\n \"external_tool\",\n \"online_upload\",\n \"online_text_entry\",\n \"online_url\",\n \"media_recording\",\n \"student_annotation\"\n ],\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_extensions]\",\n \"description\": \"Allowed extensions if submission_types includes \\\"online_upload\\\"\\n\\nExample:\\n allowed_extensions: [\\\"docx\\\",\\\"ppt\\\"]\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_enabled]\",\n \"description\": \"Only applies when the Turnitin plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles Turnitin submissions for the assignment.\\nWill be ignored if Turnitin is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[vericite_enabled]\",\n \"description\": \"Only applies when the VeriCite plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles VeriCite submissions for the assignment.\\nWill be ignored if VeriCite is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_settings]\",\n \"description\": \"Settings to send along to turnitin. See Assignment object definition for\\nformat.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[sis_assignment_id]\",\n \"description\": \"The sis id of the Assignment\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_data]\",\n \"description\": \"Data used for SIS integrations. Requires admin-level token with the \\\"Manage SIS\\\" permission. JSON string required.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_id]\",\n \"description\": \"Unique ID from third party integrations\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_reviews]\",\n \"description\": \"If submission_types does not include external_tool,discussion_topic,\\nonline_quiz, or on_paper, determines whether or not peer reviews\\nwill be turned on for the assignment.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[automatic_peer_reviews]\",\n \"description\": \"Whether peer reviews will be assigned automatically by Canvas or if\\nteachers must manually assign peer reviews. Does not apply if peer reviews\\nare not enabled.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[notify_of_update]\",\n \"description\": \"If true, Canvas will send a notification to students in the class\\nnotifying them that the content has changed.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[group_category_id]\",\n \"description\": \"If present, the assignment will become a group assignment assigned\\nto the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grade_group_students_individually]\",\n \"description\": \"If this is a group assignment, teachers have the options to grade\\nstudents individually. If false, Canvas will apply the assignment's\\nscore to each member of the group. If true, the teacher can manually\\nassign scores to each member of the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[external_tool_tag_attributes]\",\n \"description\": \"Hash of external tool parameters if submission_types is [\\\"external_tool\\\"].\\nSee Assignment object definition for format.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[points_possible]\",\n \"description\": \"The maximum points possible on the assignment.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_type]\",\n \"description\": \"The strategy used for grading the assignment.\\nThe assignment defaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ]\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[due_at]\",\n \"description\": \"The day/time the assignment is due.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[lock_at]\",\n \"description\": \"The day/time the assignment is locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[unlock_at]\",\n \"description\": \"The day/time the assignment is unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[description]\",\n \"description\": \"The assignment's description, supports HTML.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_group_id]\",\n \"description\": \"The assignment group id to put the assignment in.\\nDefaults to the top assignment group in the course.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_overrides]\",\n \"description\": \"List of overrides for the assignment.\\nIf the +assignment[assignment_overrides]+ key is absent, any existing\\noverrides are kept as is. If the +assignment[assignment_overrides]+ key is\\npresent, existing overrides are updated or deleted (and new ones created,\\nas necessary) to match the provided list.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[only_visible_to_overrides]\",\n \"description\": \"Whether this assignment is only visible to overrides\\n(Only useful if 'differentiated assignments' account setting is on)\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[published]\",\n \"description\": \"Whether this assignment is published.\\n(Only useful if 'draft state' account setting is on)\\nUnpublished assignments are not visible to students.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_standard_id]\",\n \"description\": \"The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course.\\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[omit_from_final_grade]\",\n \"description\": \"Whether this assignment is counted towards a student's final grade.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[hide_in_gradebook]\",\n \"description\": \"Whether this assignment is shown in the gradebook.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[moderated_grading]\",\n \"description\": \"Whether this assignment is moderated.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_count]\",\n \"description\": \"The maximum number of provisional graders who may issue grades for this\\nassignment. Only relevant for moderated assignments. Must be a positive\\nvalue, and must be set to 1 if the course has fewer than two active\\ninstructors. Otherwise, the maximum value is the number of active\\ninstructors in the course minus one, or 10 if the course has more than 11\\nactive instructors.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[final_grader_id]\",\n \"description\": \"The user ID of the grader responsible for choosing final grades for this\\nassignment. Only relevant for moderated assignments.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_comments_visible_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' comments are visible to other\\nprovisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_anonymous_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' identities are hidden from\\nother provisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_names_visible_to_final_grader]\",\n \"description\": \"Boolean indicating if provisional grader identities are visible to the\\nthe final grader. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[anonymous_grading]\",\n \"description\": \"Boolean indicating if the assignment is graded anonymously. If true,\\ngraders cannot see student identities.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_attempts]\",\n \"description\": \"The number of submission attempts allowed for this assignment. Set to -1 or null for\\nunlimited attempts.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[annotatable_attachment_id]\",\n \"description\": \"The Attachment ID of the document being annotated.\\n\\nOnly applies when submission_types includes \\\"student_annotation\\\".\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[force_updated_at]\",\n \"description\": \"If true, updated_at will be set even if no changes were made.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": true,\n \"items\": {\n \"type\": \"string\"\n }\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"Assignment\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/assignments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"Assignment\"\n }\n ],\n \"tsType\": {\n \"type\": \"Assignment\",\n \"tsReferences\": [\n {\n \"type\": \"Assignment\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{id}\",\n \"tsName\": \"update\",\n \"tsUpload\": false,\n \"tsFormParameters\": [\n {\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"tsOptional\": \"?\",\n \"tsType\": {\n \"type\": \"('online_quiz'|'none'|'on_paper'|'discussion_topic'|'external_tool'|'online_upload'|'online_text_entry'|'online_url'|'media_recording'|'student_annotation')[]\"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.050Z"}
324
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.091Z"}
325
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.091Z"}
326
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.091Z"}
327
- {"level":"debug","message":"Overriding operation edit_assignment properties tsFormParameters 0 tsFormParameters","timestamp":"2025-09-02T01:30:23.091Z"}
328
- {"level":"debug","message":"{\n \"method\": \"PUT\",\n \"summary\": \"Edit an assignment\",\n \"notes\": \"Modify an existing assignment.\",\n \"nickname\": \"edit_assignment\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[name]\",\n \"description\": \"The assignment name.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[position]\",\n \"description\": \"The position of this assignment in the group when displaying\\nassignment lists.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"online_quiz\",\n \"none\",\n \"on_paper\",\n \"discussion_topic\",\n \"external_tool\",\n \"online_upload\",\n \"online_text_entry\",\n \"online_url\",\n \"media_recording\",\n \"student_annotation\"\n ],\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_extensions]\",\n \"description\": \"Allowed extensions if submission_types includes \\\"online_upload\\\"\\n\\nExample:\\n allowed_extensions: [\\\"docx\\\",\\\"ppt\\\"]\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_enabled]\",\n \"description\": \"Only applies when the Turnitin plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles Turnitin submissions for the assignment.\\nWill be ignored if Turnitin is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[vericite_enabled]\",\n \"description\": \"Only applies when the VeriCite plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles VeriCite submissions for the assignment.\\nWill be ignored if VeriCite is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_settings]\",\n \"description\": \"Settings to send along to turnitin. See Assignment object definition for\\nformat.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[sis_assignment_id]\",\n \"description\": \"The sis id of the Assignment\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_data]\",\n \"description\": \"Data used for SIS integrations. Requires admin-level token with the \\\"Manage SIS\\\" permission. JSON string required.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_id]\",\n \"description\": \"Unique ID from third party integrations\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_reviews]\",\n \"description\": \"If submission_types does not include external_tool,discussion_topic,\\nonline_quiz, or on_paper, determines whether or not peer reviews\\nwill be turned on for the assignment.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[automatic_peer_reviews]\",\n \"description\": \"Whether peer reviews will be assigned automatically by Canvas or if\\nteachers must manually assign peer reviews. Does not apply if peer reviews\\nare not enabled.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[notify_of_update]\",\n \"description\": \"If true, Canvas will send a notification to students in the class\\nnotifying them that the content has changed.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[group_category_id]\",\n \"description\": \"If present, the assignment will become a group assignment assigned\\nto the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grade_group_students_individually]\",\n \"description\": \"If this is a group assignment, teachers have the options to grade\\nstudents individually. If false, Canvas will apply the assignment's\\nscore to each member of the group. If true, the teacher can manually\\nassign scores to each member of the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[external_tool_tag_attributes]\",\n \"description\": \"Hash of external tool parameters if submission_types is [\\\"external_tool\\\"].\\nSee Assignment object definition for format.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[points_possible]\",\n \"description\": \"The maximum points possible on the assignment.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_type]\",\n \"description\": \"The strategy used for grading the assignment.\\nThe assignment defaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ]\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[due_at]\",\n \"description\": \"The day/time the assignment is due.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[lock_at]\",\n \"description\": \"The day/time the assignment is locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[unlock_at]\",\n \"description\": \"The day/time the assignment is unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[description]\",\n \"description\": \"The assignment's description, supports HTML.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_group_id]\",\n \"description\": \"The assignment group id to put the assignment in.\\nDefaults to the top assignment group in the course.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_overrides]\",\n \"description\": \"List of overrides for the assignment.\\nIf the +assignment[assignment_overrides]+ key is absent, any existing\\noverrides are kept as is. If the +assignment[assignment_overrides]+ key is\\npresent, existing overrides are updated or deleted (and new ones created,\\nas necessary) to match the provided list.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[only_visible_to_overrides]\",\n \"description\": \"Whether this assignment is only visible to overrides\\n(Only useful if 'differentiated assignments' account setting is on)\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[published]\",\n \"description\": \"Whether this assignment is published.\\n(Only useful if 'draft state' account setting is on)\\nUnpublished assignments are not visible to students.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_standard_id]\",\n \"description\": \"The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course.\\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[omit_from_final_grade]\",\n \"description\": \"Whether this assignment is counted towards a student's final grade.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[hide_in_gradebook]\",\n \"description\": \"Whether this assignment is shown in the gradebook.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[moderated_grading]\",\n \"description\": \"Whether this assignment is moderated.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_count]\",\n \"description\": \"The maximum number of provisional graders who may issue grades for this\\nassignment. Only relevant for moderated assignments. Must be a positive\\nvalue, and must be set to 1 if the course has fewer than two active\\ninstructors. Otherwise, the maximum value is the number of active\\ninstructors in the course minus one, or 10 if the course has more than 11\\nactive instructors.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[final_grader_id]\",\n \"description\": \"The user ID of the grader responsible for choosing final grades for this\\nassignment. Only relevant for moderated assignments.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_comments_visible_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' comments are visible to other\\nprovisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_anonymous_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' identities are hidden from\\nother provisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_names_visible_to_final_grader]\",\n \"description\": \"Boolean indicating if provisional grader identities are visible to the\\nthe final grader. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[anonymous_grading]\",\n \"description\": \"Boolean indicating if the assignment is graded anonymously. If true,\\ngraders cannot see student identities.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_attempts]\",\n \"description\": \"The number of submission attempts allowed for this assignment. Set to -1 or null for\\nunlimited attempts.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[annotatable_attachment_id]\",\n \"description\": \"The Attachment ID of the document being annotated.\\n\\nOnly applies when submission_types includes \\\"student_annotation\\\".\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[force_updated_at]\",\n \"description\": \"If true, updated_at will be set even if no changes were made.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": true,\n \"items\": {\n \"type\": \"string\"\n }\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"Assignment\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/assignments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"Assignment\"\n },\n {\n \"type\": \"AssignmentOverride\"\n }\n ],\n \"tsType\": {\n \"type\": \"Assignment\",\n \"tsReferences\": [\n {\n \"type\": \"Assignment\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{id}\",\n \"tsName\": \"update\",\n \"tsUpload\": false,\n \"tsFormParameters\": [\n {\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"tsOptional\": \"?\",\n \"tsType\": {\n \"type\": \"('online_quiz'|'none'|'on_paper'|'discussion_topic'|'external_tool'|'online_upload'|'online_text_entry'|'online_url'|'media_recording'|'student_annotation')[]\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[name]\",\n \"description\": \"The assignment name.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[name]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[position]\",\n \"description\": \"The position of this assignment in the group when displaying\\nassignment lists.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[position]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"online_quiz\",\n \"none\",\n \"on_paper\",\n \"discussion_topic\",\n \"external_tool\",\n \"online_upload\",\n \"online_text_entry\",\n \"online_url\",\n \"media_recording\",\n \"student_annotation\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"tsType\": {\n \"type\": \"string[]\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_extensions]\",\n \"description\": \"Allowed extensions if submission_types includes \\\"online_upload\\\"\\n\\nExample:\\n allowed_extensions: [\\\"docx\\\",\\\"ppt\\\"]\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"\\\"assignment[allowed_extensions]\\\"\",\n \"tsType\": {\n \"type\": \"string[]\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_enabled]\",\n \"description\": \"Only applies when the Turnitin plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles Turnitin submissions for the assignment.\\nWill be ignored if Turnitin is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[turnitin_enabled]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[vericite_enabled]\",\n \"description\": \"Only applies when the VeriCite plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles VeriCite submissions for the assignment.\\nWill be ignored if VeriCite is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[vericite_enabled]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_settings]\",\n \"description\": \"Settings to send along to turnitin. See Assignment object definition for\\nformat.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[turnitin_settings]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[sis_assignment_id]\",\n \"description\": \"The sis id of the Assignment\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[sis_assignment_id]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_data]\",\n \"description\": \"Data used for SIS integrations. Requires admin-level token with the \\\"Manage SIS\\\" permission. JSON string required.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[integration_data]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_id]\",\n \"description\": \"Unique ID from third party integrations\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[integration_id]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_reviews]\",\n \"description\": \"If submission_types does not include external_tool,discussion_topic,\\nonline_quiz, or on_paper, determines whether or not peer reviews\\nwill be turned on for the assignment.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[peer_reviews]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[automatic_peer_reviews]\",\n \"description\": \"Whether peer reviews will be assigned automatically by Canvas or if\\nteachers must manually assign peer reviews. Does not apply if peer reviews\\nare not enabled.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[automatic_peer_reviews]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[notify_of_update]\",\n \"description\": \"If true, Canvas will send a notification to students in the class\\nnotifying them that the content has changed.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[notify_of_update]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[group_category_id]\",\n \"description\": \"If present, the assignment will become a group assignment assigned\\nto the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[group_category_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grade_group_students_individually]\",\n \"description\": \"If this is a group assignment, teachers have the options to grade\\nstudents individually. If false, Canvas will apply the assignment's\\nscore to each member of the group. If true, the teacher can manually\\nassign scores to each member of the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grade_group_students_individually]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[external_tool_tag_attributes]\",\n \"description\": \"Hash of external tool parameters if submission_types is [\\\"external_tool\\\"].\\nSee Assignment object definition for format.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[external_tool_tag_attributes]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[points_possible]\",\n \"description\": \"The maximum points possible on the assignment.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[points_possible]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: number\\n\\nformat: 'float'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_type]\",\n \"description\": \"The strategy used for grading the assignment.\\nThe assignment defaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ],\n \"tsName\": \"\\\"assignment[grading_type]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[due_at]\",\n \"description\": \"The day/time the assignment is due.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[due_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[lock_at]\",\n \"description\": \"The day/time the assignment is locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[lock_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[unlock_at]\",\n \"description\": \"The day/time the assignment is unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[unlock_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[description]\",\n \"description\": \"The assignment's description, supports HTML.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[description]\\\"\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_group_id]\",\n \"description\": \"The assignment group id to put the assignment in.\\nDefaults to the top assignment group in the course.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[assignment_group_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_overrides]\",\n \"description\": \"List of overrides for the assignment.\\nIf the +assignment[assignment_overrides]+ key is absent, any existing\\noverrides are kept as is. If the +assignment[assignment_overrides]+ key is\\npresent, existing overrides are updated or deleted (and new ones created,\\nas necessary) to match the provided list.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n },\n \"tsName\": \"\\\"assignment[assignment_overrides]\\\"\",\n \"tsType\": {\n \"type\": \"AssignmentOverride[]\",\n \"tsReferences\": [\n {\n \"type\": \"AssignmentOverride\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[only_visible_to_overrides]\",\n \"description\": \"Whether this assignment is only visible to overrides\\n(Only useful if 'differentiated assignments' account setting is on)\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[only_visible_to_overrides]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[published]\",\n \"description\": \"Whether this assignment is published.\\n(Only useful if 'draft state' account setting is on)\\nUnpublished assignments are not visible to students.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[published]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_standard_id]\",\n \"description\": \"The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course.\\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grading_standard_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[omit_from_final_grade]\",\n \"description\": \"Whether this assignment is counted towards a student's final grade.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[omit_from_final_grade]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[hide_in_gradebook]\",\n \"description\": \"Whether this assignment is shown in the gradebook.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[hide_in_gradebook]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[moderated_grading]\",\n \"description\": \"Whether this assignment is moderated.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[moderated_grading]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_count]\",\n \"description\": \"The maximum number of provisional graders who may issue grades for this\\nassignment. Only relevant for moderated assignments. Must be a positive\\nvalue, and must be set to 1 if the course has fewer than two active\\ninstructors. Otherwise, the maximum value is the number of active\\ninstructors in the course minus one, or 10 if the course has more than 11\\nactive instructors.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grader_count]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[final_grader_id]\",\n \"description\": \"The user ID of the grader responsible for choosing final grades for this\\nassignment. Only relevant for moderated assignments.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[final_grader_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_comments_visible_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' comments are visible to other\\nprovisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grader_comments_visible_to_graders]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_anonymous_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' identities are hidden from\\nother provisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[graders_anonymous_to_graders]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_names_visible_to_final_grader]\",\n \"description\": \"Boolean indicating if provisional grader identities are visible to the\\nthe final grader. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[graders_names_visible_to_final_grader]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[anonymous_grading]\",\n \"description\": \"Boolean indicating if the assignment is graded anonymously. If true,\\ngraders cannot see student identities.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[anonymous_grading]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_attempts]\",\n \"description\": \"The number of submission attempts allowed for this assignment. Set to -1 or null for\\nunlimited attempts.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[allowed_attempts]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[annotatable_attachment_id]\",\n \"description\": \"The Attachment ID of the document being annotated.\\n\\nOnly applies when submission_types includes \\\"student_annotation\\\".\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[annotatable_attachment_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[force_updated_at]\",\n \"description\": \"If true, updated_at will be set even if no changes were made.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[force_updated_at]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": true,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated \",\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"tsType\": {\n \"type\": \"string[]\"\n }\n },\n {\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"tsOptional\": \"?\",\n \"tsType\": {\n \"type\": \"('online_quiz'|'none'|'on_paper'|'discussion_topic'|'external_tool'|'online_upload'|'online_text_entry'|'online_url'|'media_recording'|'student_annotation')[]\"\n }\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Assignments/update.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.092Z"}
329
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
330
- {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
331
- {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
332
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
333
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
334
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
335
- {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
336
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
337
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
338
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
339
- {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
340
- {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
341
- {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
342
- {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
343
- {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
344
- {"level":"debug","message":"Interpretting type: \"SSOSettings\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
345
- {"level":"debug","message":"Interpretting type: \"SSOSettings\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
346
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
347
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
348
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
349
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
350
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
351
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
352
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
353
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
354
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
355
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
356
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
357
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
358
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
359
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
360
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
361
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
362
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
363
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
364
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
365
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
366
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
367
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
368
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
369
- {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
370
- {"level":"debug","message":"Interpretting type: \"BlueprintTemplate\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
371
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
372
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
373
- {"level":"debug","message":"Interpretting type: \"BlueprintMigration\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
374
- {"level":"debug","message":"Interpretting type: \"BlueprintRestriction\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
375
- {"level":"debug","message":"Interpretting type: \"BlueprintMigration\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
376
- {"level":"debug","message":"Interpretting type: \"BlueprintMigration\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
377
- {"level":"debug","message":"Interpretting type: \"Bookmark\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
378
- {"level":"debug","message":"Interpretting type: \"Bookmark\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
379
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
380
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
381
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
382
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
383
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
384
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
385
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
386
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
387
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
388
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
389
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
390
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
391
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
392
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
393
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
394
- {"level":"debug","message":"Interpretting type: \"CalendarEvent\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
395
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
396
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
397
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
398
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
399
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
400
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
401
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.092Z"}
402
- {"level":"debug","message":"Interpretting type: \"ExperienceSummary\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
403
- {"level":"debug","message":"Interpretting type: \"{experience: String} The newly set experience\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
404
- {"level":"debug","message":"Interpretting type: \"{role: String} The newly set role\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
405
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
406
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.092Z"}
407
- {"level":"debug","message":"Interpretting type: \"CommunicationChannel\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
408
- {"level":"debug","message":"Interpretting type: \"CommunicationChannel\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
409
- {"level":"debug","message":"Interpretting type: \"CommunicationChannel\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
410
- {"level":"debug","message":"Overriding type \"{success: true}\" as { success: true }","timestamp":"2025-09-02T01:30:23.092Z"}
411
- {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
412
- {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
413
- {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
414
- {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2025-09-02T01:30:23.092Z"}
415
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.092Z"}
416
- {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
417
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.093Z"}
418
- {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
419
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.093Z"}
420
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
421
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
422
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
423
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
424
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
425
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
426
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
427
- {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
428
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
429
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
430
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
431
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
432
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
433
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.093Z"}
434
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
435
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
436
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
437
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
438
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.093Z"}
439
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
440
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.093Z"}
441
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
442
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
443
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
444
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
445
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.093Z"}
446
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
447
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.093Z"}
448
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
449
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
450
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
451
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
452
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.093Z"}
453
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
454
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.093Z"}
455
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
456
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
457
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
458
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.093Z"}
459
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.093Z"}
460
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
461
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
462
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
463
- {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2025-09-02T01:30:23.093Z"}
464
- {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2025-09-02T01:30:23.093Z"}
465
- {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2025-09-02T01:30:23.093Z"}
466
- {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2025-09-02T01:30:23.093Z"}
467
- {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2025-09-02T01:30:23.093Z"}
468
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.093Z"}
469
- {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
470
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.094Z"}
471
- {"level":"debug","message":"Interpretting type: \"{ \"unread_count\": \"integer\" }\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
472
- {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
473
- {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
474
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.094Z"}
475
- {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
476
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
477
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
478
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
479
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
480
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
481
- {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
482
- {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
483
- {"level":"debug","message":"Overriding type \"Datetime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
484
- {"level":"debug","message":"Overriding type \"Datetime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
485
- {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
486
- {"level":"debug","message":"Overriding type \"Datetime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
487
- {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
488
- {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
489
- {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
490
- {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
491
- {"level":"debug","message":"Interpretting type: \"CourseProgress\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
492
- {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2025-09-02T01:30:23.094Z"}
493
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
494
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.094Z"}
495
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.094Z"}
496
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the course.\\n\\nThis API endpoint is the first step in uploading a file to a course.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course can upload files\\nto the course. By default, this is Teachers, TAs and Designers.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/courses.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.094Z"}
497
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.094Z"}
498
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the course.\\n\\nThis API endpoint is the first step in uploading a file to a course.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course can upload files\\nto the course. By default, this is Teachers, TAs and Designers.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/courses.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.094Z"}
499
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
500
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
501
- {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
502
- {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
503
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
504
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
505
- {"level":"debug","message":"Interpretting type: \"BlueprintRestriction\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
506
- {"level":"debug","message":"Interpretting type: \"multiple BlueprintRestrictions\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
507
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
508
- {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
509
- {"level":"debug","message":"Interpretting type: \"CustomColumn\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
510
- {"level":"debug","message":"Interpretting type: \"CustomColumn\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
511
- {"level":"debug","message":"Interpretting type: \"CustomColumn\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
512
- {"level":"debug","message":"Interpretting type: \"ColumnDatum\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
513
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
514
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.095Z"}
515
- {"level":"debug","message":"Interpretting type: \"DeveloperKeyAccountBinding\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
516
- {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
517
- {"level":"debug","message":"Overriding type \"json\" as JSONObject","timestamp":"2025-09-02T01:30:23.095Z"}
518
- {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
519
- {"level":"debug","message":"Overriding type \"json\" as JSONObject","timestamp":"2025-09-02T01:30:23.095Z"}
520
- {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
521
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
522
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
523
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
524
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
525
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
526
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
527
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
528
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
529
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
530
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
531
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
532
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
533
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
534
- {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
535
- {"level":"debug","message":"Interpretting type: \"DiscussionTopic\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
536
- {"level":"debug","message":"Interpretting type: \"DiscussionTopic\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
537
- {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
538
- {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
539
- {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
540
- {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
541
- {"level":"debug","message":"Interpretting type: \"EpubExport\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
542
- {"level":"debug","message":"Interpretting type: \"EpubExport\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
543
- {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
544
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
545
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
546
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
547
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
548
- {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
549
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
550
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
551
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
552
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
553
- {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
554
- {"level":"debug","message":"Interpretting type: \"EnrollmentTermsList\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
555
- {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
556
- {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
557
- {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
558
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
559
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
560
- {"level":"debug","message":"Overriding type \"Deprecated\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
561
- {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
562
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
563
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
564
- {"level":"debug","message":"Overriding type \"Deprecated\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
565
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
566
- {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
567
- {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
568
- {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
569
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.095Z"}
570
- {"level":"debug","message":"Interpretting type: \"SerializedHash\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
571
- {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
572
- {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
573
- {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
574
- {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
575
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
576
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
577
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
578
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
579
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
580
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.095Z"}
581
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
582
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
583
- {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
584
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.096Z"}
585
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.096Z"}
586
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.096Z"}
587
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.096Z"}
588
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
589
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
590
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
591
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
592
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
593
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
594
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
595
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
596
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
597
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
598
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
599
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
600
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
601
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
602
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
603
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
604
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
605
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
606
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
607
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
608
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
609
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
610
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
611
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
612
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
613
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
614
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
615
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
616
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
617
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.096Z"}
618
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
619
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.096Z"}
620
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.096Z"}
621
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a folder.\\n\\nThis API endpoint is the first step in uploading a file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course or group can\\nupload files to a folder in that course or group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"folder_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/folders/{folder_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.096Z"}
622
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.097Z"}
623
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a folder.\\n\\nThis API endpoint is the first step in uploading a file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course or group can\\nupload files to a folder in that course or group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"folder_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/folders/{folder_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Folders/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"folder_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"folder_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.097Z"}
624
- {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2025-09-02T01:30:23.097Z"}
625
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.097Z"}
626
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.097Z"}
627
- {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2025-09-02T01:30:23.097Z"}
628
- {"level":"debug","message":"Interpretting type: \"UsageRights\" as RefType","timestamp":"2025-09-02T01:30:23.097Z"}
629
- {"level":"debug","message":"Interpretting type: \"UsageRights\" as RefType","timestamp":"2025-09-02T01:30:23.097Z"}
630
- {"level":"debug","message":"Interpretting type: \"UsageRights\" as RefType","timestamp":"2025-09-02T01:30:23.097Z"}
631
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.097Z"}
632
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.097Z"}
633
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.097Z"}
634
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.097Z"}
635
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.097Z"}
636
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.097Z"}
637
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.097Z"}
638
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
639
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
640
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
641
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.098Z"}
642
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.098Z"}
643
- {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
644
- {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
645
- {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
646
- {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
647
- {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
648
- {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
649
- {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
650
- {"level":"debug","message":"Interpretting type: \"GroupCategory and groups operation results\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
651
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.098Z"}
652
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.098Z"}
653
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
654
- {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
655
- {"level":"debug","message":"Interpretting type: \"GroupMembership | Progress\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
656
- {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
657
- {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
658
- {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
659
- {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
660
- {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
661
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.098Z"}
662
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the group.\\n\\nThis API endpoint is the first step in uploading a file to a group.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a group can upload files\\nto the group. By default, this is anybody participating in the\\ngroup, or any admin over the group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"group_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/groups.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/groups/{group_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.098Z"}
663
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.098Z"}
664
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the group.\\n\\nThis API endpoint is the first step in uploading a file to a group.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a group can upload files\\nto the group. By default, this is anybody participating in the\\ngroup, or any admin over the group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"group_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/groups.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/groups/{group_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Groups/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"group_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"group_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.098Z"}
665
- {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
666
- {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
667
- {"level":"debug","message":"Interpretting type: \"GroupMembership or a JSON response detailing partial failures if some memberships could not be created.\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
668
- {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
669
- {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
670
- {"level":"debug","message":"Interpretting type: \"InstAccessToken\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
671
- {"level":"debug","message":"Interpretting type: \"JWT\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
672
- {"level":"debug","message":"Interpretting type: \"JWT\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
673
- {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
674
- {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
675
- {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
676
- {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
677
- {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
678
- {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2025-09-02T01:30:23.098Z"}
679
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
680
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
681
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
682
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.098Z"}
683
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
684
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
685
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
686
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.098Z"}
687
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
688
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
689
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
690
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.098Z"}
691
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
692
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
693
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.098Z"}
694
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.098Z"}
695
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
696
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
697
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
698
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.099Z"}
699
- {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
700
- {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
701
- {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
702
- {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
703
- {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
704
- {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
705
- {"level":"debug","message":"Interpretting type: \"ListLtiRegistrationsResponse\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
706
- {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
707
- {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
708
- {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
709
- {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
710
- {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
711
- {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
712
- {"level":"debug","message":"Interpretting type: \"Lti::RegistrationAccountBinding\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
713
- {"level":"debug","message":"Interpretting type: \"ContextSearchResponse\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
714
- {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
715
- {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
716
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
717
- {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
718
- {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
719
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
720
- {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
721
- {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
722
- {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
723
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
724
- {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
725
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
726
- {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
727
- {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
728
- {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
729
- {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
730
- {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
731
- {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
732
- {"level":"debug","message":"Interpretting type: \"ModuleItemSequence\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
733
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.099Z"}
734
- {"level":"debug","message":"Interpretting type: \"NamesAndRoleMemberships\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
735
- {"level":"debug","message":"Interpretting type: \"NamesAndRoleMemberships\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
736
- {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
737
- {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
738
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
739
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
740
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
741
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
742
- {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
743
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
744
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
745
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
746
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.099Z"}
747
- {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
748
- {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
749
- {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
750
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
751
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
752
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
753
- {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2025-09-02T01:30:23.099Z"}
754
- {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2025-09-02T01:30:23.099Z"}
755
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
756
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
757
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
758
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
759
- {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2025-09-02T01:30:23.099Z"}
760
- {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
761
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
762
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
763
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
764
- {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2025-09-02T01:30:23.099Z"}
765
- {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2025-09-02T01:30:23.099Z"}
766
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
767
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
768
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
769
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.099Z"}
770
- {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2025-09-02T01:30:23.099Z"}
771
- {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
772
- {"level":"debug","message":"Interpretting type: \"AccommodationResponse\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
773
- {"level":"debug","message":"Interpretting type: \"AccommodationResponse\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
774
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
775
- {"level":"debug","message":"Interpretting type: \"NoticeCatalog\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
776
- {"level":"debug","message":"Interpretting type: \"NoticeHandler\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
777
- {"level":"debug","message":"Interpretting type: \"NotificationPreference\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
778
- {"level":"debug","message":"Interpretting type: \"NotificationPreference\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
779
- {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
780
- {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
781
- {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
782
- {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
783
- {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
784
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
785
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
786
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
787
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
788
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
789
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
790
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.099Z"}
791
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
792
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
793
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
794
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
795
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
796
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
797
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
798
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
799
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
800
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
801
- {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
802
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
803
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
804
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
805
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
806
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
807
- {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
808
- {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
809
- {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
810
- {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
811
- {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
812
- {"level":"debug","message":"Overriding type \"array of outcome ids\" as string[]","timestamp":"2025-09-02T01:30:23.100Z"}
813
- {"level":"debug","message":"Overriding type \"array of outcome ids\" as string[]","timestamp":"2025-09-02T01:30:23.100Z"}
814
- {"level":"debug","message":"Interpretting type: \"Outcome\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
815
- {"level":"debug","message":"Interpretting type: \"Outcome\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
816
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
817
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
818
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
819
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
820
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
821
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
822
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.100Z"}
823
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
824
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.100Z"}
825
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
826
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
827
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
828
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.100Z"}
829
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
830
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.100Z"}
831
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
832
- {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
833
- {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
834
- {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
835
- {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
836
- {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
837
- {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
838
- {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
839
- {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
840
- {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
841
- {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
842
- {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
843
- {"level":"debug","message":"Interpretting type: \"LtiAssignment\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
844
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.100Z"}
845
- {"level":"debug","message":"Overriding operation list_planner_items_planner properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2025-09-02T01:30:23.100Z"}
846
- {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_planner\",\n \"parameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\"\n },\n \"tsEndpoint\": \"/api/v1/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false\n}","timestamp":"2025-09-02T01:30:23.100Z"}
847
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
848
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
849
- {"level":"debug","message":"Overriding operation list_planner_items_planner properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2025-09-02T01:30:23.101Z"}
850
- {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_planner\",\n \"parameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\"\n },\n \"tsEndpoint\": \"/api/v1/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false,\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Planner/Items/list.ts\",\n \"tsQueryParameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"start_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"end_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"context_codes\",\n \"tsType\": {\n \"type\": \"string[]\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"observed_user_id\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ],\n \"tsName\": \"filter\",\n \"tsType\": {\n \"type\": \"string\"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.101Z"}
851
- {"level":"debug","message":"Overriding operation list_planner_items_users properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2025-09-02T01:30:23.101Z"}
852
- {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_users\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\"\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false\n}","timestamp":"2025-09-02T01:30:23.101Z"}
853
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
854
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
855
- {"level":"debug","message":"Overriding operation list_planner_items_users properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2025-09-02T01:30:23.101Z"}
856
- {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_users\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\"\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false,\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Users/Planner/Items/list.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ],\n \"tsQueryParameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"start_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"end_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"context_codes\",\n \"tsType\": {\n \"type\": \"string[]\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"observed_user_id\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ],\n \"tsName\": \"filter\",\n \"tsType\": {\n \"type\": \"string\"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.101Z"}
857
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
858
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
859
- {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
860
- {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
861
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
862
- {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
863
- {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2025-09-02T01:30:23.101Z"}
864
- {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
865
- {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
866
- {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
867
- {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
868
- {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
869
- {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
870
- {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
871
- {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
872
- {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
873
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
874
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
875
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
876
- {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
877
- {"level":"debug","message":"Overriding type \"json\" as JSONObject","timestamp":"2025-09-02T01:30:23.101Z"}
878
- {"level":"debug","message":"Interpretting type: \"QuizAssignmentOverrideSetContainer\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
879
- {"level":"debug","message":"Interpretting type: \"QuizAssignmentOverrideSetContainer\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
880
- {"level":"debug","message":"Interpretting type: \"QuizGroup\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
881
- {"level":"debug","message":"Interpretting type: \"QuizQuestion\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
882
- {"level":"debug","message":"Interpretting type: \"QuizQuestion\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
883
- {"level":"debug","message":"Interpretting type: \"[Answer]\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
884
- {"level":"debug","message":"Interpretting type: \"QuizQuestion\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
885
- {"level":"debug","message":"Interpretting type: \"[Answer]\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
886
- {"level":"debug","message":"Interpretting type: \"QuizReport\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
887
- {"level":"debug","message":"Overriding type \"String[]\" as string[]","timestamp":"2025-09-02T01:30:23.101Z"}
888
- {"level":"debug","message":"Interpretting type: \"QuizReport\" as RefType","timestamp":"2025-09-02T01:30:23.101Z"}
889
- {"level":"debug","message":"Overriding type \"String[]\" as string[]","timestamp":"2025-09-02T01:30:23.101Z"}
890
- {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.101Z"}
891
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.101Z"}
892
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Associate a new quiz submission file\\n\\nThis API endpoint is the first step in uploading a quiz submission file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow as these parameters are interpreted as per the\\ndocumentation there.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"quiz_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"name\",\n \"description\": \"The name of the quiz submission file\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"on_duplicate\",\n \"description\": \"How to handle duplicate names\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/quiz_submission_files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/quizzes/{quiz_id}/submissions/self/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.101Z"}
893
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.101Z"}
894
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Associate a new quiz submission file\\n\\nThis API endpoint is the first step in uploading a quiz submission file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow as these parameters are interpreted as per the\\ndocumentation there.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"quiz_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"name\",\n \"description\": \"The name of the quiz submission file\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"on_duplicate\",\n \"description\": \"How to handle duplicate names\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/quiz_submission_files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/quizzes/{quiz_id}/submissions/self/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"paramType\": \"form\",\n \"name\": \"name\",\n \"description\": \"The name of the quiz submission file\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"name\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"on_duplicate\",\n \"description\": \"How to handle duplicate names\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"on_duplicate\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Quizzes/Submissions/Self/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"quiz_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"quiz_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.101Z"}
895
- {"level":"debug","message":"Interpretting type: \"Numeric\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
896
- {"level":"debug","message":"Interpretting type: \"QuizUserConversation\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
897
- {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
898
- {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
899
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
900
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
901
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
902
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
903
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
904
- {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
905
- {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
906
- {"level":"debug","message":"Interpretting type: \"Result\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
907
- {"level":"debug","message":"Interpretting type: \"Result\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
908
- {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
909
- {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
910
- {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
911
- {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
912
- {"level":"debug","message":"Overriding type \"Deprecated\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
913
- {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
914
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.102Z"}
915
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.102Z"}
916
- {"level":"debug","message":"Interpretting type: \"Rubric\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
917
- {"level":"debug","message":"Interpretting type: \"Rubric\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
918
- {"level":"debug","message":"Interpretting type: \"Rubric\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
919
- {"level":"debug","message":"Interpretting type: \"UsedLocations\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
920
- {"level":"debug","message":"Interpretting type: \"UsedLocations\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
921
- {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
922
- {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
923
- {"level":"debug","message":"Overriding type \"a CSV file in the format that can be imported\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
924
- {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
925
- {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
926
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.102Z"}
927
- {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2025-09-02T01:30:23.102Z"}
928
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
929
- {"level":"debug","message":"Interpretting type: \"RubricAssociation\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
930
- {"level":"debug","message":"Interpretting type: \"RubricAssociation\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
931
- {"level":"debug","message":"Interpretting type: \"RubricAssociation\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
932
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.102Z"}
933
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.102Z"}
934
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.102Z"}
935
- {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
936
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
937
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
938
- {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
939
- {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
940
- {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
941
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
942
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
943
- {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
944
- {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
945
- {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
946
- {"level":"debug","message":"Interpretting type: \"SharedBrandConfig\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
947
- {"level":"debug","message":"Interpretting type: \"SharedBrandConfig\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
948
- {"level":"debug","message":"Interpretting type: \"SharedBrandConfig\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
949
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
950
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
951
- {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
952
- {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
953
- {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
954
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
955
- {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
956
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
957
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
958
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
959
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.102Z"}
960
- {"level":"debug","message":"Interpretting type: \"SubmissionComment\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
961
- {"level":"debug","message":"Interpretting type: \"SubmissionComment\" as RefType","timestamp":"2025-09-02T01:30:23.102Z"}
962
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.102Z"}
963
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to attach to a submission comment\\n\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then PUT the file_id to the\\nsubmission API to attach it to a comment\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submission_comments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.102Z"}
964
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.102Z"}
965
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to attach to a submission comment\\n\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then PUT the file_id to the\\nsubmission API to attach it to a comment\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submission_comments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Assignments/Submissions/Comments/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"assignment_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.102Z"}
966
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.103Z"}
967
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.103Z"}
968
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.103Z"}
969
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.103Z"}
970
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.103Z"}
971
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.103Z"}
972
- {"level":"debug","message":"Overriding operation upload_file_courses properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.103Z"}
973
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_courses\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.103Z"}
974
- {"level":"debug","message":"Overriding operation upload_file_courses properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.103Z"}
975
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_courses\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Assignments/Submissions/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"assignment_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.103Z"}
976
- {"level":"debug","message":"Overriding operation upload_file_sections properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.103Z"}
977
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_sections\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"section_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.103Z"}
978
- {"level":"debug","message":"Overriding operation upload_file_sections properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.103Z"}
979
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_sections\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"section_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Sections/Assignments/Submissions/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"section_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"section_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"assignment_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.103Z"}
980
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.103Z"}
981
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.103Z"}
982
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
983
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
984
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
985
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
986
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
987
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
988
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
989
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
990
- {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
991
- {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
992
- {"level":"debug","message":"Interpretting type: \"Tab\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
993
- {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
994
- {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
995
- {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
996
- {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
997
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
998
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
999
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1000
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1001
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1002
- {"level":"debug","message":"Interpretting type: \"PairingCode\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1003
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.104Z"}
1004
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.104Z"}
1005
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the user's personal files section.\\n\\nThis API endpoint is the first step in uploading a file to a user's files.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nNote that typically users will only be able to upload files to their\\nown files section. Passing a user_id of +self+ is an easy shortcut\\nto specify the current user.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.104Z"}
1006
- {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2025-09-02T01:30:23.104Z"}
1007
- {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the user's personal files section.\\n\\nThis API endpoint is the first step in uploading a file to a user's files.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nNote that typically users will only be able to upload files to their\\nown files section. Passing a user_id of +self+ is an easy shortcut\\nto specify the current user.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Users/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.104Z"}
1008
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1009
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1010
- {"level":"debug","message":"Overriding type \"URL\" as string","timestamp":"2025-09-02T01:30:23.104Z"}
1011
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1012
- {"level":"debug","message":"Overriding operation get_custom_colors properties tsName 0 tsName","timestamp":"2025-09-02T01:30:23.104Z"}
1013
- {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"Get custom colors\",\n \"notes\": \"Returns all custom colors that have been saved for a user.\",\n \"nickname\": \"get_custom_colors\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"void\"\n },\n \"tsEndpoint\": \"/api/v1/users/{id}/colors\",\n \"tsName\": \"list\",\n \"tsUpload\": false\n}","timestamp":"2025-09-02T01:30:23.104Z"}
1014
- {"level":"debug","message":"Overriding operation get_custom_colors properties tsName 0 tsName","timestamp":"2025-09-02T01:30:23.104Z"}
1015
- {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"Get custom colors\",\n \"notes\": \"Returns all custom colors that have been saved for a user.\",\n \"nickname\": \"get_custom_colors\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"void\"\n },\n \"tsEndpoint\": \"/api/v1/users/{id}/colors\",\n \"tsName\": \"list\",\n \"tsUpload\": false,\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Users/Colors/list.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2025-09-02T01:30:23.104Z"}
1016
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1017
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1018
- {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1019
- {"level":"debug","message":"Interpretting type: \"Profile\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1020
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.104Z"}
1021
- {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2025-09-02T01:30:23.104Z"}
1022
- {"level":"debug","message":"Interpretting type: \"JSON\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1023
- {"level":"debug","message":"Interpretting type: \"CourseNickname\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1024
- {"level":"debug","message":"Interpretting type: \"CourseNickname\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1025
- {"level":"debug","message":"Interpretting type: \"CourseNickname\" as RefType","timestamp":"2025-09-02T01:30:23.104Z"}
1026
- {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2025-09-02T01:30:23.104Z"}
1027
- {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2025-09-02T01:30:23.104Z"}
1
+ {"level":"info","message":"Templates will be read from /Users/sbattis/Documents/GitHub/canvas-cli/packages/api/swagger-renderer/templates","timestamp":"2026-01-05T22:05:30.047Z"}
2
+ {"level":"info","message":"Rendered TypeScript files will be written to /Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src","timestamp":"2026-01-05T22:05:30.048Z"}
3
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.050Z"}
4
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.050Z"}
5
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.050Z"}
6
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.050Z"}
7
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.051Z"}
8
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.051Z"}
9
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.051Z"}
10
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.051Z"}
11
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.053Z"}
12
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.053Z"}
13
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.053Z"}
14
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.053Z"}
15
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.053Z"}
16
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.054Z"}
17
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.054Z"}
18
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.054Z"}
19
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
20
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
21
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
22
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
23
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
24
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
25
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
26
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
27
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
28
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
29
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
30
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.055Z"}
31
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.055Z"}
32
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
33
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
34
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
35
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.055Z"}
36
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
37
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
38
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
39
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
40
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
41
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
42
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
43
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
44
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
45
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.056Z"}
46
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.056Z"}
47
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.057Z"}
48
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.057Z"}
49
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.057Z"}
50
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.057Z"}
51
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.057Z"}
52
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
53
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
54
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
55
+ {"level":"debug","message":"Interpretting type: \"uuid\" as RefType","timestamp":"2026-01-05T22:05:30.058Z"}
56
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
57
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
58
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
59
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
60
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.058Z"}
61
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
62
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
63
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
64
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
65
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
66
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
67
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
68
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
69
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.059Z"}
70
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.059Z"}
71
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.060Z"}
72
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.060Z"}
73
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.060Z"}
74
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.060Z"}
75
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.060Z"}
76
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
77
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
78
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.061Z"}
79
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.061Z"}
80
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.061Z"}
81
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
82
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
83
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
84
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
85
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
86
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.061Z"}
87
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
88
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
89
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
90
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
91
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
92
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
93
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
94
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.062Z"}
95
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
96
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
97
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.062Z"}
98
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.063Z"}
99
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.063Z"}
100
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.063Z"}
101
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.063Z"}
102
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.063Z"}
103
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.063Z"}
104
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.063Z"}
105
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.064Z"}
106
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.064Z"}
107
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.064Z"}
108
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.064Z"}
109
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.064Z"}
110
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.064Z"}
111
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.064Z"}
112
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
113
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
114
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
115
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
116
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.065Z"}
117
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.065Z"}
118
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
119
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
120
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
121
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
122
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.065Z"}
123
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.066Z"}
124
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.066Z"}
125
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.066Z"}
126
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.066Z"}
127
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.070Z"}
128
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.070Z"}
129
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.070Z"}
130
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.070Z"}
131
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.070Z"}
132
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.070Z"}
133
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.071Z"}
134
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.071Z"}
135
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.071Z"}
136
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.071Z"}
137
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
138
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
139
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
140
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
141
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
142
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
143
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
144
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
145
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
146
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.072Z"}
147
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.073Z"}
148
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.073Z"}
149
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.073Z"}
150
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.073Z"}
151
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.073Z"}
152
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.074Z"}
153
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.074Z"}
154
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.075Z"}
155
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.075Z"}
156
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.075Z"}
157
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.075Z"}
158
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.075Z"}
159
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.075Z"}
160
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.075Z"}
161
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.075Z"}
162
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.076Z"}
163
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
164
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
165
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
166
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
167
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
168
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
169
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
170
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
171
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.076Z"}
172
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.077Z"}
173
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.077Z"}
174
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.077Z"}
175
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.077Z"}
176
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.077Z"}
177
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.077Z"}
178
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.078Z"}
179
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.078Z"}
180
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.078Z"}
181
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.078Z"}
182
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.078Z"}
183
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.078Z"}
184
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.078Z"}
185
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.078Z"}
186
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.078Z"}
187
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.078Z"}
188
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.078Z"}
189
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.078Z"}
190
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
191
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
192
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
193
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.079Z"}
194
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
195
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
196
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
197
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
198
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.079Z"}
199
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.079Z"}
200
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
201
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.079Z"}
202
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.079Z"}
203
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.080Z"}
204
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
205
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
206
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
207
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.081Z"}
208
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
209
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.081Z"}
210
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
211
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
212
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
213
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.081Z"}
214
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.081Z"}
215
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.082Z"}
216
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.082Z"}
217
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.082Z"}
218
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.082Z"}
219
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.083Z"}
220
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.083Z"}
221
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.083Z"}
222
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.083Z"}
223
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.083Z"}
224
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.084Z"}
225
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.084Z"}
226
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.084Z"}
227
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.084Z"}
228
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.085Z"}
229
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.085Z"}
230
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.085Z"}
231
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.086Z"}
232
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.086Z"}
233
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.086Z"}
234
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.086Z"}
235
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.086Z"}
236
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.086Z"}
237
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.087Z"}
238
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.087Z"}
239
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.087Z"}
240
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.087Z"}
241
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.087Z"}
242
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.088Z"}
243
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.088Z"}
244
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.088Z"}
245
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.088Z"}
246
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.088Z"}
247
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.088Z"}
248
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.088Z"}
249
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.089Z"}
250
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.089Z"}
251
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.089Z"}
252
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.089Z"}
253
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.090Z"}
254
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.090Z"}
255
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.090Z"}
256
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
257
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
258
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
259
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
260
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:30.091Z"}
261
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
262
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
263
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
264
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
265
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
266
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.091Z"}
267
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.092Z"}
268
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.092Z"}
269
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.092Z"}
270
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.092Z"}
271
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.092Z"}
272
+ {"level":"debug","message":"Overriding type \"datetime\" as string","timestamp":"2026-01-05T22:05:30.094Z"}
273
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.249Z"}
274
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.249Z"}
275
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.249Z"}
276
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.249Z"}
277
+ {"level":"debug","message":"Interpretting type: \"AccountCalendar\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
278
+ {"level":"debug","message":"Interpretting type: \"AccountCalendar\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
279
+ {"level":"debug","message":"Overriding type \"{ \"count\": \"integer\" }\" as { count: number }","timestamp":"2026-01-05T22:05:31.249Z"}
280
+ {"level":"debug","message":"Interpretting type: \"AccountNotification\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
281
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.249Z"}
282
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.249Z"}
283
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.249Z"}
284
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.249Z"}
285
+ {"level":"debug","message":"Interpretting type: \"AccountNotification\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
286
+ {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
287
+ {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
288
+ {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
289
+ {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2026-01-05T22:05:31.249Z"}
290
+ {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
291
+ {"level":"debug","message":"Interpretting type: \"TermsOfService\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
292
+ {"level":"debug","message":"Interpretting type: \"HelpLinks\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
293
+ {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
294
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.250Z"}
295
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.250Z"}
296
+ {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
297
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.250Z"}
298
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.250Z"}
299
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
300
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
301
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
302
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.250Z"}
303
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
304
+ {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
305
+ {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
306
+ {"level":"debug","message":"Interpretting type: \"Account\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
307
+ {"level":"debug","message":"Interpretting type: \"Admin\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
308
+ {"level":"debug","message":"Interpretting type: \"Admin\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
309
+ {"level":"debug","message":"Interpretting type: \"{Object} Hash with id and messages array, or empty object if no active conversation\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
310
+ {"level":"debug","message":"Interpretting type: \"{Object} Hash with conversation_id and initial messages array\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
311
+ {"level":"debug","message":"Interpretting type: \"{Object} Hash with id and updated messages array\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
312
+ {"level":"debug","message":"Interpretting type: \"{Object} Success message\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
313
+ {"level":"debug","message":"Interpretting type: \"AiExperience\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
314
+ {"level":"debug","message":"Interpretting type: \"AiExperience\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
315
+ {"level":"debug","message":"Interpretting type: \"AiExperience\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
316
+ {"level":"debug","message":"Interpretting type: \"AiExperience\" as RefType","timestamp":"2026-01-05T22:05:31.250Z"}
317
+ {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
318
+ {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
319
+ {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
320
+ {"level":"debug","message":"Interpretting type: \"ExternalFeed\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
321
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
322
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
323
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
324
+ {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
325
+ {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
326
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.251Z"}
327
+ {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
328
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.251Z"}
329
+ {"level":"debug","message":"Interpretting type: \"AssignmentGroup\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
330
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
331
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
332
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
333
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
334
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
335
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
336
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
337
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.251Z"}
338
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
339
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
340
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.251Z"}
341
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.251Z"}
342
+ {"level":"debug","message":"Overriding operation edit_assignment properties tsFormParameters 0 tsFormParameters","timestamp":"2026-01-05T22:05:31.251Z"}
343
+ {"level":"debug","message":"{\n \"method\": \"PUT\",\n \"summary\": \"Edit an assignment\",\n \"notes\": \"Modify an existing assignment.\",\n \"nickname\": \"edit_assignment\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[name]\",\n \"description\": \"The assignment name.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[position]\",\n \"description\": \"The position of this assignment in the group when displaying\\nassignment lists.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"online_quiz\",\n \"none\",\n \"on_paper\",\n \"discussion_topic\",\n \"external_tool\",\n \"online_upload\",\n \"online_text_entry\",\n \"online_url\",\n \"media_recording\",\n \"student_annotation\"\n ],\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_extensions]\",\n \"description\": \"Allowed extensions if submission_types includes \\\"online_upload\\\"\\n\\nExample:\\n allowed_extensions: [\\\"docx\\\",\\\"ppt\\\"]\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_enabled]\",\n \"description\": \"Only applies when the Turnitin plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles Turnitin submissions for the assignment.\\nWill be ignored if Turnitin is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[vericite_enabled]\",\n \"description\": \"Only applies when the VeriCite plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles VeriCite submissions for the assignment.\\nWill be ignored if VeriCite is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_settings]\",\n \"description\": \"Settings to send along to turnitin. See Assignment object definition for\\nformat.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[sis_assignment_id]\",\n \"description\": \"The sis id of the Assignment\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_data]\",\n \"description\": \"Data used for SIS integrations. Requires admin-level token with the \\\"Manage SIS\\\" permission. JSON string required.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_id]\",\n \"description\": \"Unique ID from third party integrations\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_reviews]\",\n \"description\": \"If submission_types does not include external_tool,discussion_topic,\\nonline_quiz, or on_paper, determines whether or not peer reviews\\nwill be turned on for the assignment.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[automatic_peer_reviews]\",\n \"description\": \"Whether peer reviews will be assigned automatically by Canvas or if\\nteachers must manually assign peer reviews. Does not apply if peer reviews\\nare not enabled.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[notify_of_update]\",\n \"description\": \"If true, Canvas will send a notification to students in the class\\nnotifying them that the content has changed.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[group_category_id]\",\n \"description\": \"If present, the assignment will become a group assignment assigned\\nto the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grade_group_students_individually]\",\n \"description\": \"If this is a group assignment, teachers have the options to grade\\nstudents individually. If false, Canvas will apply the assignment's\\nscore to each member of the group. If true, the teacher can manually\\nassign scores to each member of the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[external_tool_tag_attributes]\",\n \"description\": \"Hash of external tool parameters if submission_types is [\\\"external_tool\\\"].\\nSee Assignment object definition for format.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[points_possible]\",\n \"description\": \"The maximum points possible on the assignment.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_type]\",\n \"description\": \"The strategy used for grading the assignment.\\nThe assignment defaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ]\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[due_at]\",\n \"description\": \"The day/time the assignment is due.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[lock_at]\",\n \"description\": \"The day/time the assignment is locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[unlock_at]\",\n \"description\": \"The day/time the assignment is unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[description]\",\n \"description\": \"The assignment's description, supports HTML.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_group_id]\",\n \"description\": \"The assignment group id to put the assignment in.\\nDefaults to the top assignment group in the course.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_overrides]\",\n \"description\": \"List of overrides for the assignment.\\nIf the +assignment[assignment_overrides]+ key is absent, any existing\\noverrides are kept as is. If the +assignment[assignment_overrides]+ key is\\npresent, existing overrides are updated or deleted (and new ones created,\\nas necessary) to match the provided list.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[only_visible_to_overrides]\",\n \"description\": \"Whether this assignment is only visible to overrides\\n(Only useful if 'differentiated assignments' account setting is on)\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[published]\",\n \"description\": \"Whether this assignment is published.\\n(Only useful if 'draft state' account setting is on)\\nUnpublished assignments are not visible to students.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_standard_id]\",\n \"description\": \"The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course.\\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[omit_from_final_grade]\",\n \"description\": \"Whether this assignment is counted towards a student's final grade.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[hide_in_gradebook]\",\n \"description\": \"Whether this assignment is shown in the gradebook.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[moderated_grading]\",\n \"description\": \"Whether this assignment is moderated.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_count]\",\n \"description\": \"The maximum number of provisional graders who may issue grades for this\\nassignment. Only relevant for moderated assignments. Must be a positive\\nvalue, and must be set to 1 if the course has fewer than two active\\ninstructors. Otherwise, the maximum value is the number of active\\ninstructors in the course minus one, or 10 if the course has more than 11\\nactive instructors.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[final_grader_id]\",\n \"description\": \"The user ID of the grader responsible for choosing final grades for this\\nassignment. Only relevant for moderated assignments.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_comments_visible_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' comments are visible to other\\nprovisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_anonymous_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' identities are hidden from\\nother provisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_names_visible_to_final_grader]\",\n \"description\": \"Boolean indicating if provisional grader identities are visible to the\\nthe final grader. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[anonymous_grading]\",\n \"description\": \"Boolean indicating if the assignment is graded anonymously. If true,\\ngraders cannot see student identities.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_attempts]\",\n \"description\": \"The number of submission attempts allowed for this assignment. Set to -1 or null for\\nunlimited attempts.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[annotatable_attachment_id]\",\n \"description\": \"The Attachment ID of the document being annotated.\\n\\nOnly applies when submission_types includes \\\"student_annotation\\\".\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[asset_processors]\",\n \"description\": \"Document processors for this assignment. New document processors can only be added\\nvia the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication.\\nDeletion of document processors (passing an empty array) is allowed via API.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"Array\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[force_updated_at]\",\n \"description\": \"If true, updated_at will be set even if no changes were made.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][points_possible]\",\n \"description\": \"The maximum points possible for peer reviews.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][grading_type]\",\n \"description\": \"The strategy used for grading peer reviews.\\nDefaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ]\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][due_at]\",\n \"description\": \"The day/time the peer reviews are due. Must be between the lock dates if there are lock dates.\\nAccepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][lock_at]\",\n \"description\": \"The day/time the peer reviews are locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][unlock_at]\",\n \"description\": \"The day/time the peer reviews are unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][peer_review_overrides]\",\n \"description\": \"List of overrides for the peer reviews.\\nWhen updating overrides:\\n- Include \\\"id\\\" to update an existing override\\n- Omit \\\"id\\\" to create a new override\\n- Omit an override from the list to delete it\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": true,\n \"items\": {\n \"type\": \"string\"\n }\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"Assignment\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/assignments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"Assignment\"\n }\n ],\n \"tsType\": {\n \"type\": \"Assignment\",\n \"tsReferences\": [\n {\n \"type\": \"Assignment\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{id}\",\n \"tsName\": \"update\",\n \"tsUpload\": false,\n \"tsFormParameters\": [\n {\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"tsOptional\": \"?\",\n \"tsType\": {\n \"type\": \"('online_quiz'|'none'|'on_paper'|'discussion_topic'|'external_tool'|'online_upload'|'online_text_entry'|'online_url'|'media_recording'|'student_annotation')[]\"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.252Z"}
344
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
345
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
346
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
347
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.300Z"}
348
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
349
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
350
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
351
+ {"level":"debug","message":"Overriding operation edit_assignment properties tsFormParameters 0 tsFormParameters","timestamp":"2026-01-05T22:05:31.300Z"}
352
+ {"level":"debug","message":"{\n \"method\": \"PUT\",\n \"summary\": \"Edit an assignment\",\n \"notes\": \"Modify an existing assignment.\",\n \"nickname\": \"edit_assignment\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[name]\",\n \"description\": \"The assignment name.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[position]\",\n \"description\": \"The position of this assignment in the group when displaying\\nassignment lists.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"online_quiz\",\n \"none\",\n \"on_paper\",\n \"discussion_topic\",\n \"external_tool\",\n \"online_upload\",\n \"online_text_entry\",\n \"online_url\",\n \"media_recording\",\n \"student_annotation\"\n ],\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_extensions]\",\n \"description\": \"Allowed extensions if submission_types includes \\\"online_upload\\\"\\n\\nExample:\\n allowed_extensions: [\\\"docx\\\",\\\"ppt\\\"]\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_enabled]\",\n \"description\": \"Only applies when the Turnitin plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles Turnitin submissions for the assignment.\\nWill be ignored if Turnitin is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[vericite_enabled]\",\n \"description\": \"Only applies when the VeriCite plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles VeriCite submissions for the assignment.\\nWill be ignored if VeriCite is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_settings]\",\n \"description\": \"Settings to send along to turnitin. See Assignment object definition for\\nformat.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[sis_assignment_id]\",\n \"description\": \"The sis id of the Assignment\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_data]\",\n \"description\": \"Data used for SIS integrations. Requires admin-level token with the \\\"Manage SIS\\\" permission. JSON string required.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_id]\",\n \"description\": \"Unique ID from third party integrations\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_reviews]\",\n \"description\": \"If submission_types does not include external_tool,discussion_topic,\\nonline_quiz, or on_paper, determines whether or not peer reviews\\nwill be turned on for the assignment.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[automatic_peer_reviews]\",\n \"description\": \"Whether peer reviews will be assigned automatically by Canvas or if\\nteachers must manually assign peer reviews. Does not apply if peer reviews\\nare not enabled.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[notify_of_update]\",\n \"description\": \"If true, Canvas will send a notification to students in the class\\nnotifying them that the content has changed.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[group_category_id]\",\n \"description\": \"If present, the assignment will become a group assignment assigned\\nto the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grade_group_students_individually]\",\n \"description\": \"If this is a group assignment, teachers have the options to grade\\nstudents individually. If false, Canvas will apply the assignment's\\nscore to each member of the group. If true, the teacher can manually\\nassign scores to each member of the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[external_tool_tag_attributes]\",\n \"description\": \"Hash of external tool parameters if submission_types is [\\\"external_tool\\\"].\\nSee Assignment object definition for format.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[points_possible]\",\n \"description\": \"The maximum points possible on the assignment.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_type]\",\n \"description\": \"The strategy used for grading the assignment.\\nThe assignment defaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ]\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[due_at]\",\n \"description\": \"The day/time the assignment is due.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[lock_at]\",\n \"description\": \"The day/time the assignment is locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[unlock_at]\",\n \"description\": \"The day/time the assignment is unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[description]\",\n \"description\": \"The assignment's description, supports HTML.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_group_id]\",\n \"description\": \"The assignment group id to put the assignment in.\\nDefaults to the top assignment group in the course.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_overrides]\",\n \"description\": \"List of overrides for the assignment.\\nIf the +assignment[assignment_overrides]+ key is absent, any existing\\noverrides are kept as is. If the +assignment[assignment_overrides]+ key is\\npresent, existing overrides are updated or deleted (and new ones created,\\nas necessary) to match the provided list.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[only_visible_to_overrides]\",\n \"description\": \"Whether this assignment is only visible to overrides\\n(Only useful if 'differentiated assignments' account setting is on)\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[published]\",\n \"description\": \"Whether this assignment is published.\\n(Only useful if 'draft state' account setting is on)\\nUnpublished assignments are not visible to students.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_standard_id]\",\n \"description\": \"The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course.\\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[omit_from_final_grade]\",\n \"description\": \"Whether this assignment is counted towards a student's final grade.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[hide_in_gradebook]\",\n \"description\": \"Whether this assignment is shown in the gradebook.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[moderated_grading]\",\n \"description\": \"Whether this assignment is moderated.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_count]\",\n \"description\": \"The maximum number of provisional graders who may issue grades for this\\nassignment. Only relevant for moderated assignments. Must be a positive\\nvalue, and must be set to 1 if the course has fewer than two active\\ninstructors. Otherwise, the maximum value is the number of active\\ninstructors in the course minus one, or 10 if the course has more than 11\\nactive instructors.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[final_grader_id]\",\n \"description\": \"The user ID of the grader responsible for choosing final grades for this\\nassignment. Only relevant for moderated assignments.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_comments_visible_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' comments are visible to other\\nprovisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_anonymous_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' identities are hidden from\\nother provisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_names_visible_to_final_grader]\",\n \"description\": \"Boolean indicating if provisional grader identities are visible to the\\nthe final grader. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[anonymous_grading]\",\n \"description\": \"Boolean indicating if the assignment is graded anonymously. If true,\\ngraders cannot see student identities.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_attempts]\",\n \"description\": \"The number of submission attempts allowed for this assignment. Set to -1 or null for\\nunlimited attempts.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[annotatable_attachment_id]\",\n \"description\": \"The Attachment ID of the document being annotated.\\n\\nOnly applies when submission_types includes \\\"student_annotation\\\".\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[asset_processors]\",\n \"description\": \"Document processors for this assignment. New document processors can only be added\\nvia the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication.\\nDeletion of document processors (passing an empty array) is allowed via API.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"Array\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[force_updated_at]\",\n \"description\": \"If true, updated_at will be set even if no changes were made.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][points_possible]\",\n \"description\": \"The maximum points possible for peer reviews.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][grading_type]\",\n \"description\": \"The strategy used for grading peer reviews.\\nDefaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ]\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][due_at]\",\n \"description\": \"The day/time the peer reviews are due. Must be between the lock dates if there are lock dates.\\nAccepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][lock_at]\",\n \"description\": \"The day/time the peer reviews are locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][unlock_at]\",\n \"description\": \"The day/time the peer reviews are unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][peer_review_overrides]\",\n \"description\": \"List of overrides for the peer reviews.\\nWhen updating overrides:\\n- Include \\\"id\\\" to update an existing override\\n- Omit \\\"id\\\" to create a new override\\n- Omit an override from the list to delete it\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": true,\n \"items\": {\n \"type\": \"string\"\n }\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"Assignment\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/assignments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"Assignment\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"AssignmentOverride\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"AssignmentOverride\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"tsType\": {\n \"type\": \"Assignment\",\n \"tsReferences\": [\n {\n \"type\": \"Assignment\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{id}\",\n \"tsName\": \"update\",\n \"tsUpload\": false,\n \"tsFormParameters\": [\n {\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"tsOptional\": \"?\",\n \"tsType\": {\n \"type\": \"('online_quiz'|'none'|'on_paper'|'discussion_topic'|'external_tool'|'online_upload'|'online_text_entry'|'online_url'|'media_recording'|'student_annotation')[]\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[name]\",\n \"description\": \"The assignment name.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[name]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[position]\",\n \"description\": \"The position of this assignment in the group when displaying\\nassignment lists.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[position]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"online_quiz\",\n \"none\",\n \"on_paper\",\n \"discussion_topic\",\n \"external_tool\",\n \"online_upload\",\n \"online_text_entry\",\n \"online_url\",\n \"media_recording\",\n \"student_annotation\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"tsType\": {\n \"type\": \"string[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_extensions]\",\n \"description\": \"Allowed extensions if submission_types includes \\\"online_upload\\\"\\n\\nExample:\\n allowed_extensions: [\\\"docx\\\",\\\"ppt\\\"]\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"\\\"assignment[allowed_extensions]\\\"\",\n \"tsType\": {\n \"type\": \"string[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_enabled]\",\n \"description\": \"Only applies when the Turnitin plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles Turnitin submissions for the assignment.\\nWill be ignored if Turnitin is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[turnitin_enabled]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[vericite_enabled]\",\n \"description\": \"Only applies when the VeriCite plugin is enabled for a course and\\nthe submission_types array includes \\\"online_upload\\\".\\nToggles VeriCite submissions for the assignment.\\nWill be ignored if VeriCite is not available for the course.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[vericite_enabled]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[turnitin_settings]\",\n \"description\": \"Settings to send along to turnitin. See Assignment object definition for\\nformat.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[turnitin_settings]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[sis_assignment_id]\",\n \"description\": \"The sis id of the Assignment\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[sis_assignment_id]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_data]\",\n \"description\": \"Data used for SIS integrations. Requires admin-level token with the \\\"Manage SIS\\\" permission. JSON string required.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[integration_data]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[integration_id]\",\n \"description\": \"Unique ID from third party integrations\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[integration_id]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_reviews]\",\n \"description\": \"If submission_types does not include external_tool,discussion_topic,\\nonline_quiz, or on_paper, determines whether or not peer reviews\\nwill be turned on for the assignment.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[peer_reviews]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[automatic_peer_reviews]\",\n \"description\": \"Whether peer reviews will be assigned automatically by Canvas or if\\nteachers must manually assign peer reviews. Does not apply if peer reviews\\nare not enabled.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[automatic_peer_reviews]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[notify_of_update]\",\n \"description\": \"If true, Canvas will send a notification to students in the class\\nnotifying them that the content has changed.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[notify_of_update]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[group_category_id]\",\n \"description\": \"If present, the assignment will become a group assignment assigned\\nto the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[group_category_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grade_group_students_individually]\",\n \"description\": \"If this is a group assignment, teachers have the options to grade\\nstudents individually. If false, Canvas will apply the assignment's\\nscore to each member of the group. If true, the teacher can manually\\nassign scores to each member of the group.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grade_group_students_individually]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[external_tool_tag_attributes]\",\n \"description\": \"Hash of external tool parameters if submission_types is [\\\"external_tool\\\"].\\nSee Assignment object definition for format.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[external_tool_tag_attributes]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[points_possible]\",\n \"description\": \"The maximum points possible on the assignment.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[points_possible]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: number\\n\\nformat: 'float'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_type]\",\n \"description\": \"The strategy used for grading the assignment.\\nThe assignment defaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ],\n \"tsName\": \"\\\"assignment[grading_type]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[due_at]\",\n \"description\": \"The day/time the assignment is due.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[due_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[lock_at]\",\n \"description\": \"The day/time the assignment is locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[lock_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[unlock_at]\",\n \"description\": \"The day/time the assignment is unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[unlock_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[description]\",\n \"description\": \"The assignment's description, supports HTML.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[description]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_group_id]\",\n \"description\": \"The assignment group id to put the assignment in.\\nDefaults to the top assignment group in the course.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[assignment_group_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[assignment_overrides]\",\n \"description\": \"List of overrides for the assignment.\\nIf the +assignment[assignment_overrides]+ key is absent, any existing\\noverrides are kept as is. If the +assignment[assignment_overrides]+ key is\\npresent, existing overrides are updated or deleted (and new ones created,\\nas necessary) to match the provided list.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n },\n \"tsName\": \"\\\"assignment[assignment_overrides]\\\"\",\n \"tsType\": {\n \"type\": \"AssignmentOverride[]\",\n \"tsReferences\": [\n {\n \"type\": \"AssignmentOverride\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[only_visible_to_overrides]\",\n \"description\": \"Whether this assignment is only visible to overrides\\n(Only useful if 'differentiated assignments' account setting is on)\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[only_visible_to_overrides]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[published]\",\n \"description\": \"Whether this assignment is published.\\n(Only useful if 'draft state' account setting is on)\\nUnpublished assignments are not visible to students.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[published]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grading_standard_id]\",\n \"description\": \"The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course.\\nThis will update the grading_type for the course to 'letter_grade' unless it is already 'gpa_scale'.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grading_standard_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[omit_from_final_grade]\",\n \"description\": \"Whether this assignment is counted towards a student's final grade.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[omit_from_final_grade]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[hide_in_gradebook]\",\n \"description\": \"Whether this assignment is shown in the gradebook.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[hide_in_gradebook]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[moderated_grading]\",\n \"description\": \"Whether this assignment is moderated.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[moderated_grading]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_count]\",\n \"description\": \"The maximum number of provisional graders who may issue grades for this\\nassignment. Only relevant for moderated assignments. Must be a positive\\nvalue, and must be set to 1 if the course has fewer than two active\\ninstructors. Otherwise, the maximum value is the number of active\\ninstructors in the course minus one, or 10 if the course has more than 11\\nactive instructors.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grader_count]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[final_grader_id]\",\n \"description\": \"The user ID of the grader responsible for choosing final grades for this\\nassignment. Only relevant for moderated assignments.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[final_grader_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[grader_comments_visible_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' comments are visible to other\\nprovisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[grader_comments_visible_to_graders]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_anonymous_to_graders]\",\n \"description\": \"Boolean indicating if provisional graders' identities are hidden from\\nother provisional graders. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[graders_anonymous_to_graders]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[graders_names_visible_to_final_grader]\",\n \"description\": \"Boolean indicating if provisional grader identities are visible to the\\nthe final grader. Only relevant for moderated assignments.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[graders_names_visible_to_final_grader]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[anonymous_grading]\",\n \"description\": \"Boolean indicating if the assignment is graded anonymously. If true,\\ngraders cannot see student identities.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[anonymous_grading]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[allowed_attempts]\",\n \"description\": \"The number of submission attempts allowed for this assignment. Set to -1 or null for\\nunlimited attempts.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[allowed_attempts]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[annotatable_attachment_id]\",\n \"description\": \"The Attachment ID of the document being annotated.\\n\\nOnly applies when submission_types includes \\\"student_annotation\\\".\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[annotatable_attachment_id]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: integer\\n\\nformat: 'int64'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[asset_processors]\",\n \"description\": \"Document processors for this assignment. New document processors can only be added\\nvia the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication.\\nDeletion of document processors (passing an empty array) is allowed via API.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"Array\"\n },\n \"tsName\": \"\\\"assignment[asset_processors]\\\"\",\n \"tsType\": {\n \"type\": \"string[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[force_updated_at]\",\n \"description\": \"If true, updated_at will be set even if no changes were made.\",\n \"type\": \"boolean\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[force_updated_at]\\\"\",\n \"tsType\": {\n \"type\": \"boolean | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: boolean\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][points_possible]\",\n \"description\": \"The maximum points possible for peer reviews.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[peer_review][points_possible]\\\"\",\n \"tsType\": {\n \"type\": \"number | string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: number\\n\\nformat: 'float'\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][grading_type]\",\n \"description\": \"The strategy used for grading peer reviews.\\nDefaults to \\\"points\\\" if this field is omitted.\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"pass_fail\",\n \"percent\",\n \"letter_grade\",\n \"gpa_scale\",\n \"points\",\n \"not_graded\"\n ],\n \"tsName\": \"\\\"assignment[peer_review][grading_type]\\\"\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][due_at]\",\n \"description\": \"The day/time the peer reviews are due. Must be between the lock dates if there are lock dates.\\nAccepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[peer_review][due_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][lock_at]\",\n \"description\": \"The day/time the peer reviews are locked after. Must be after the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[peer_review][lock_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][unlock_at]\",\n \"description\": \"The day/time the peer reviews are unlocked. Must be before the due date if there is a due date.\\nAccepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z.\",\n \"type\": \"DateTime\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"\\\"assignment[peer_review][unlock_at]\\\"\",\n \"tsType\": {\n \"description\": \"format: date-time\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[peer_review][peer_review_overrides]\",\n \"description\": \"List of overrides for the peer reviews.\\nWhen updating overrides:\\n- Include \\\"id\\\" to update an existing override\\n- Omit \\\"id\\\" to create a new override\\n- Omit an override from the list to delete it\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"$ref\": \"AssignmentOverride\"\n },\n \"tsName\": \"\\\"assignment[peer_review][peer_review_overrides]\\\"\",\n \"tsType\": {\n \"type\": \"AssignmentOverride[]\",\n \"tsReferences\": [\n {\n \"type\": \"AssignmentOverride\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"assignment[submission_types]\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": true,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated \",\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"tsType\": {\n \"type\": \"string[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"tsName\": \"\\\"assignment[submission_types]\\\"\",\n \"description\": \"Only applies if the assignment doesn't have student submissions.\\n\\nList of supported submission types for the assignment.\\nUnless the assignment is allowing online submissions, the array should\\nonly have one element.\\n\\nIf not allowing online submissions, your options are:\\n \\\"online_quiz\\\"\\n \\\"none\\\"\\n \\\"on_paper\\\"\\n \\\"discussion_topic\\\"\\n \\\"external_tool\\\"\\n\\nIf you are allowing online submissions, you can have one or many\\nallowed submission types:\\n\\n \\\"online_upload\\\"\\n \\\"online_text_entry\\\"\\n \\\"online_url\\\"\\n \\\"media_recording\\\" (Only valid when the Kaltura plugin is enabled)\\n \\\"student_annotation\\\"\",\n \"tsOptional\": \"?\",\n \"tsType\": {\n \"type\": \"('online_quiz'|'none'|'on_paper'|'discussion_topic'|'external_tool'|'online_upload'|'online_text_entry'|'online_url'|'media_recording'|'student_annotation')[]\"\n }\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Assignments/update.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.300Z"}
353
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.300Z"}
354
+ {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2026-01-05T22:05:31.300Z"}
355
+ {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2026-01-05T22:05:31.300Z"}
356
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
357
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
358
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.300Z"}
359
+ {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2026-01-05T22:05:31.300Z"}
360
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
361
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
362
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
363
+ {"level":"debug","message":"Interpretting type: \"AssignmentOverride\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
364
+ {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
365
+ {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
366
+ {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
367
+ {"level":"debug","message":"Interpretting type: \"AuthenticationProvider\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
368
+ {"level":"debug","message":"Interpretting type: \"SSOSettings\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
369
+ {"level":"debug","message":"Interpretting type: \"SSOSettings\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
370
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
371
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
372
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
373
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
374
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
375
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
376
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
377
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
378
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
379
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
380
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
381
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
382
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
383
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
384
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
385
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
386
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
387
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
388
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
389
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
390
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
391
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
392
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
393
+ {"level":"debug","message":"Interpretting type: \"BlackoutDate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
394
+ {"level":"debug","message":"Interpretting type: \"BlueprintTemplate\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
395
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
396
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
397
+ {"level":"debug","message":"Interpretting type: \"BlueprintMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
398
+ {"level":"debug","message":"Interpretting type: \"BlueprintRestriction\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
399
+ {"level":"debug","message":"Interpretting type: \"BlueprintMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
400
+ {"level":"debug","message":"Interpretting type: \"BlueprintMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
401
+ {"level":"debug","message":"Interpretting type: \"Bookmark\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
402
+ {"level":"debug","message":"Interpretting type: \"Bookmark\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
403
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
404
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
405
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
406
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
407
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
408
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
409
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
410
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
411
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
412
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
413
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
414
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
415
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
416
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
417
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
418
+ {"level":"debug","message":"Interpretting type: \"CalendarEvent\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
419
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
420
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
421
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
422
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
423
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
424
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
425
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
426
+ {"level":"debug","message":"Interpretting type: \"ExperienceSummary\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
427
+ {"level":"debug","message":"Interpretting type: \"{experience: String} The newly set experience\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
428
+ {"level":"debug","message":"Interpretting type: \"{role: String} The newly set role\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
429
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
430
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
431
+ {"level":"debug","message":"Interpretting type: \"CommunicationChannel\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
432
+ {"level":"debug","message":"Interpretting type: \"CommunicationChannel\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
433
+ {"level":"debug","message":"Interpretting type: \"CommunicationChannel\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
434
+ {"level":"debug","message":"Overriding type \"{success: true}\" as { success: true }","timestamp":"2026-01-05T22:05:31.301Z"}
435
+ {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
436
+ {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
437
+ {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
438
+ {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
439
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.301Z"}
440
+ {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
441
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.301Z"}
442
+ {"level":"debug","message":"Interpretting type: \"ContentExport\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
443
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.301Z"}
444
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
445
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
446
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
447
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
448
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
449
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
450
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
451
+ {"level":"debug","message":"Interpretting type: \"MigrationIssue\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
452
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
453
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
454
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
455
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
456
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
457
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
458
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
459
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
460
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
461
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
462
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.301Z"}
463
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
464
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
465
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
466
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
467
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
468
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
469
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.301Z"}
470
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
471
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
472
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
473
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
474
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
475
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
476
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.301Z"}
477
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.301Z"}
478
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.301Z"}
479
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
480
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
481
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
482
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.301Z"}
483
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.301Z"}
484
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
485
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
486
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
487
+ {"level":"debug","message":"Interpretting type: \"ContentMigration\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
488
+ {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2026-01-05T22:05:31.302Z"}
489
+ {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2026-01-05T22:05:31.302Z"}
490
+ {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2026-01-05T22:05:31.302Z"}
491
+ {"level":"debug","message":"Overriding type \"list of content items\" as {type: string, property: string, title?: string, count?: number, sub_items_url?: string}[]","timestamp":"2026-01-05T22:05:31.302Z"}
492
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.302Z"}
493
+ {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
494
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.302Z"}
495
+ {"level":"debug","message":"Interpretting type: \"{ \"unread_count\": \"integer\" }\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
496
+ {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
497
+ {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
498
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.302Z"}
499
+ {"level":"debug","message":"Interpretting type: \"ContentShare\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
500
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
501
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
502
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
503
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
504
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
505
+ {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
506
+ {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
507
+ {"level":"debug","message":"Overriding type \"Datetime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
508
+ {"level":"debug","message":"Overriding type \"Datetime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
509
+ {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
510
+ {"level":"debug","message":"Overriding type \"Datetime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
511
+ {"level":"debug","message":"Interpretting type: \"CoursePace\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
512
+ {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
513
+ {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
514
+ {"level":"debug","message":"Interpretting type: \"Report\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
515
+ {"level":"debug","message":"Interpretting type: \"CourseProgress\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
516
+ {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2026-01-05T22:05:31.302Z"}
517
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
518
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.302Z"}
519
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.302Z"}
520
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the course.\\n\\nThis API endpoint is the first step in uploading a file to a course.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course can upload files\\nto the course. By default, this is Teachers, TAs and Designers.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/courses.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.302Z"}
521
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.302Z"}
522
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the course.\\n\\nThis API endpoint is the first step in uploading a file to a course.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course can upload files\\nto the course. By default, this is Teachers, TAs and Designers.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/courses.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.302Z"}
523
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
524
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
525
+ {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
526
+ {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
527
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
528
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
529
+ {"level":"debug","message":"Interpretting type: \"BlueprintRestriction\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
530
+ {"level":"debug","message":"Interpretting type: \"multiple BlueprintRestrictions\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
531
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
532
+ {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
533
+ {"level":"debug","message":"Interpretting type: \"Course\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
534
+ {"level":"debug","message":"Interpretting type: \"CustomColumn\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
535
+ {"level":"debug","message":"Interpretting type: \"CustomColumn\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
536
+ {"level":"debug","message":"Interpretting type: \"CustomColumn\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
537
+ {"level":"debug","message":"Interpretting type: \"ColumnDatum\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
538
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
539
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.303Z"}
540
+ {"level":"debug","message":"Interpretting type: \"DeveloperKeyAccountBinding\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
541
+ {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
542
+ {"level":"debug","message":"Overriding type \"json\" as JSONObject","timestamp":"2026-01-05T22:05:31.303Z"}
543
+ {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
544
+ {"level":"debug","message":"Overriding type \"json\" as JSONObject","timestamp":"2026-01-05T22:05:31.303Z"}
545
+ {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
546
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
547
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
548
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
549
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
550
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
551
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
552
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
553
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
554
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
555
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
556
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
557
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
558
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
559
+ {"level":"debug","message":"Interpretting type: \"Assignment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
560
+ {"level":"debug","message":"Interpretting type: \"DiscussionTopic\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
561
+ {"level":"debug","message":"Interpretting type: \"DiscussionTopic\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
562
+ {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
563
+ {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
564
+ {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
565
+ {"level":"debug","message":"Interpretting type: \"ePortfolio\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
566
+ {"level":"debug","message":"Interpretting type: \"EpubExport\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
567
+ {"level":"debug","message":"Interpretting type: \"EpubExport\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
568
+ {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
569
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
570
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
571
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
572
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
573
+ {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
574
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
575
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
576
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
577
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
578
+ {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
579
+ {"level":"debug","message":"Interpretting type: \"EnrollmentTermsList\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
580
+ {"level":"debug","message":"Interpretting type: \"EnrollmentTerm\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
581
+ {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
582
+ {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
583
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
584
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
585
+ {"level":"debug","message":"Overriding type \"Deprecated\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
586
+ {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
587
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
588
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
589
+ {"level":"debug","message":"Overriding type \"Deprecated\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
590
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
591
+ {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
592
+ {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
593
+ {"level":"debug","message":"Interpretting type: \"Enrollment\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
594
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
595
+ {"level":"debug","message":"Interpretting type: \"SerializedHash\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
596
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
597
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
598
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
599
+ {"level":"debug","message":"Overriding type \"variable\" as JSONValue","timestamp":"2026-01-05T22:05:31.303Z"}
600
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
601
+ {"level":"debug","message":"Overriding type \"variable\" as JSONValue","timestamp":"2026-01-05T22:05:31.303Z"}
602
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
603
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
604
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
605
+ {"level":"debug","message":"Interpretting type: \"ContextExternalTool\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
606
+ {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
607
+ {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
608
+ {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
609
+ {"level":"debug","message":"Interpretting type: \"Favorite\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
610
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
611
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
612
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
613
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
614
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
615
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
616
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
617
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
618
+ {"level":"debug","message":"Interpretting type: \"FeatureFlag\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
619
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.303Z"}
620
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.303Z"}
621
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.303Z"}
622
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.303Z"}
623
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
624
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
625
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
626
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
627
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
628
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
629
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
630
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
631
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
632
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
633
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
634
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
635
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
636
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
637
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
638
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
639
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
640
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
641
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
642
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
643
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
644
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
645
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
646
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
647
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
648
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
649
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
650
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
651
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
652
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.303Z"}
653
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
654
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.303Z"}
655
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.303Z"}
656
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a folder.\\n\\nThis API endpoint is the first step in uploading a file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course or group can\\nupload files to a folder in that course or group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"folder_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/folders/{folder_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.303Z"}
657
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.304Z"}
658
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a folder.\\n\\nThis API endpoint is the first step in uploading a file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a course or group can\\nupload files to a folder in that course or group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"folder_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/folders/{folder_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Folders/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"folder_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"folder_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.304Z"}
659
+ {"level":"debug","message":"Interpretting type: \"File\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
660
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
661
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
662
+ {"level":"debug","message":"Interpretting type: \"Folder\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
663
+ {"level":"debug","message":"Interpretting type: \"UsageRights\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
664
+ {"level":"debug","message":"Interpretting type: \"UsageRights\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
665
+ {"level":"debug","message":"Interpretting type: \"UsageRights\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
666
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
667
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
668
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
669
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
670
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
671
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
672
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
673
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
674
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
675
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
676
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.304Z"}
677
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.304Z"}
678
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
679
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
680
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
681
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
682
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
683
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
684
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
685
+ {"level":"debug","message":"Interpretting type: \"GradingStandard\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
686
+ {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
687
+ {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
688
+ {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
689
+ {"level":"debug","message":"Interpretting type: \"GroupCategory and groups operation results\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
690
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.304Z"}
691
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.304Z"}
692
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
693
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
694
+ {"level":"debug","message":"Interpretting type: \"GroupCategory\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
695
+ {"level":"debug","message":"Interpretting type: \"GroupMembership | Progress\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
696
+ {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
697
+ {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
698
+ {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
699
+ {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
700
+ {"level":"debug","message":"Interpretting type: \"Group\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
701
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.304Z"}
702
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the group.\\n\\nThis API endpoint is the first step in uploading a file to a group.\\nSee the {file:file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a group can upload files\\nto the group. By default, this is anybody participating in the\\ngroup, or any admin over the group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"group_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/groups.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/groups/{group_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.304Z"}
703
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.304Z"}
704
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the group.\\n\\nThis API endpoint is the first step in uploading a file to a group.\\nSee the {file:file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nOnly those with the \\\"Manage Files\\\" permission on a group can upload files\\nto the group. By default, this is anybody participating in the\\ngroup, or any admin over the group.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"group_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/groups.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/groups/{group_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Groups/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"group_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"group_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.304Z"}
705
+ {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
706
+ {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
707
+ {"level":"debug","message":"Interpretting type: \"GroupMembership or a JSON response detailing partial failures if some memberships could not be created.\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
708
+ {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
709
+ {"level":"debug","message":"Interpretting type: \"GroupMembership\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
710
+ {"level":"debug","message":"Interpretting type: \"InstAccessToken\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
711
+ {"level":"debug","message":"Interpretting type: \"JWT\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
712
+ {"level":"debug","message":"Interpretting type: \"JWT\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
713
+ {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
714
+ {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
715
+ {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
716
+ {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
717
+ {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
718
+ {"level":"debug","message":"Interpretting type: \"LearningObjectDates\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
719
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
720
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
721
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
722
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.304Z"}
723
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
724
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
725
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
726
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.304Z"}
727
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
728
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
729
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
730
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.304Z"}
731
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
732
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
733
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
734
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.304Z"}
735
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
736
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
737
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.304Z"}
738
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.304Z"}
739
+ {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
740
+ {"level":"debug","message":"Overriding type \"object\" as JSONObject","timestamp":"2026-01-05T22:05:31.304Z"}
741
+ {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
742
+ {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
743
+ {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
744
+ {"level":"debug","message":"Interpretting type: \"LineItem\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
745
+ {"level":"debug","message":"Interpretting type: \"ListLtiRegistrationsResponse\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
746
+ {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
747
+ {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
748
+ {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
749
+ {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
750
+ {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
751
+ {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
752
+ {"level":"debug","message":"Interpretting type: \"Lti::RegistrationAccountBinding\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
753
+ {"level":"debug","message":"Interpretting type: \"ContextSearchResponse\" as RefType","timestamp":"2026-01-05T22:05:31.304Z"}
754
+ {"level":"debug","message":"Interpretting type: \"Lti::Registration\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
755
+ {"level":"debug","message":"Interpretting type: \"LtiConfigurationOverlay\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
756
+ {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
757
+ {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
758
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
759
+ {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
760
+ {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
761
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
762
+ {"level":"debug","message":"Interpretting type: \"Lti::ResourceLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
763
+ {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
764
+ {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
765
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
766
+ {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
767
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
768
+ {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
769
+ {"level":"debug","message":"Interpretting type: \"Module\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
770
+ {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
771
+ {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
772
+ {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
773
+ {"level":"debug","message":"Interpretting type: \"ModuleItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
774
+ {"level":"debug","message":"Interpretting type: \"ModuleItemSequence\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
775
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.305Z"}
776
+ {"level":"debug","message":"Interpretting type: \"NamesAndRoleMemberships\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
777
+ {"level":"debug","message":"Interpretting type: \"NamesAndRoleMemberships\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
778
+ {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
779
+ {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
780
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
781
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
782
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
783
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
784
+ {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
785
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
786
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
787
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
788
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.305Z"}
789
+ {"level":"debug","message":"Interpretting type: \"QuizItem\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
790
+ {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
791
+ {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
792
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
793
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
794
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
795
+ {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2026-01-05T22:05:31.305Z"}
796
+ {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2026-01-05T22:05:31.305Z"}
797
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
798
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
799
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
800
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
801
+ {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2026-01-05T22:05:31.305Z"}
802
+ {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
803
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
804
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
805
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
806
+ {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2026-01-05T22:05:31.305Z"}
807
+ {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2026-01-05T22:05:31.305Z"}
808
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
809
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
810
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
811
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
812
+ {"level":"debug","message":"Overriding type \"Positive Integer\" as number","timestamp":"2026-01-05T22:05:31.305Z"}
813
+ {"level":"debug","message":"Interpretting type: \"NewQuiz\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
814
+ {"level":"debug","message":"Interpretting type: \"AccommodationResponse\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
815
+ {"level":"debug","message":"Interpretting type: \"AccommodationResponse\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
816
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
817
+ {"level":"debug","message":"Interpretting type: \"NoticeCatalog\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
818
+ {"level":"debug","message":"Interpretting type: \"NoticeHandler\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
819
+ {"level":"debug","message":"Interpretting type: \"NotificationPreference\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
820
+ {"level":"debug","message":"Interpretting type: \"NotificationPreference\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
821
+ {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
822
+ {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
823
+ {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
824
+ {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
825
+ {"level":"debug","message":"Interpretting type: \"OriginalityReport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
826
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
827
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
828
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
829
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
830
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
831
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
832
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
833
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
834
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
835
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
836
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
837
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
838
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
839
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
840
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
841
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
842
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
843
+ {"level":"debug","message":"Interpretting type: \"OutcomeLink\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
844
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
845
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
846
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
847
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
848
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
849
+ {"level":"debug","message":"Interpretting type: \"OutcomeGroup\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
850
+ {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
851
+ {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
852
+ {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
853
+ {"level":"debug","message":"Interpretting type: \"OutcomeImport\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
854
+ {"level":"debug","message":"Overriding type \"array of outcome ids\" as string[]","timestamp":"2026-01-05T22:05:31.305Z"}
855
+ {"level":"debug","message":"Overriding type \"array of outcome ids\" as string[]","timestamp":"2026-01-05T22:05:31.305Z"}
856
+ {"level":"debug","message":"Overriding type \"RollupJob\" as JSONValue","timestamp":"2026-01-05T22:05:31.305Z"}
857
+ {"level":"debug","message":"Interpretting type: \"Outcome\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
858
+ {"level":"debug","message":"Interpretting type: \"Outcome\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
859
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
860
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
861
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
862
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
863
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
864
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
865
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
866
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
867
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
868
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
869
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
870
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
871
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
872
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
873
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.305Z"}
874
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
875
+ {"level":"debug","message":"Interpretting type: \"Page\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
876
+ {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
877
+ {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
878
+ {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
879
+ {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
880
+ {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
881
+ {"level":"debug","message":"Interpretting type: \"PageRevision\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
882
+ {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
883
+ {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
884
+ {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
885
+ {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
886
+ {"level":"debug","message":"Interpretting type: \"PeerReview\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
887
+ {"level":"debug","message":"Interpretting type: \"LtiAssignment\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
888
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.305Z"}
889
+ {"level":"debug","message":"Overriding operation list_planner_items_planner properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2026-01-05T22:05:31.305Z"}
890
+ {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_planner\",\n \"parameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false\n}","timestamp":"2026-01-05T22:05:31.305Z"}
891
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
892
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
893
+ {"level":"debug","message":"Overriding operation list_planner_items_planner properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2026-01-05T22:05:31.306Z"}
894
+ {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_planner\",\n \"parameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false,\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Planner/Items/list.ts\",\n \"tsQueryParameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"start_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"end_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"context_codes\",\n \"tsType\": {\n \"type\": \"string[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"observed_user_id\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ],\n \"tsName\": \"filter\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.306Z"}
895
+ {"level":"debug","message":"Overriding operation list_planner_items_users properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2026-01-05T22:05:31.306Z"}
896
+ {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_users\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false\n}","timestamp":"2026-01-05T22:05:31.306Z"}
897
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
898
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
899
+ {"level":"debug","message":"Overriding operation list_planner_items_users properties tsImports 0 tsImports,tsType, tsType 1 tsImports,tsType","timestamp":"2026-01-05T22:05:31.306Z"}
900
+ {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"List planner items\",\n \"notes\": \"Retrieve the paginated list of objects to be shown on the planner for the\\ncurrent user with the associated planner override to override an item's\\nvisibility if set.\\n\\nPlanner items for a student may also be retrieved by a linked observer. Use\\nthe path that accepts a user_id and supply the student's id.\",\n \"nickname\": \"list_planner_items_users\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ]\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/planner.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"PlannerItem\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Overrides.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"PlannerItem[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/planner/items\",\n \"tsName\": \"list\",\n \"tsUpload\": false,\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Users/Planner/Items/list.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ],\n \"tsQueryParameters\": [\n {\n \"paramType\": \"query\",\n \"name\": \"start_date\",\n \"description\": \"Only return items starting from the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"start_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"end_date\",\n \"description\": \"Only return items up to the given date.\\nThe value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.\",\n \"type\": \"Date\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"end_date\",\n \"tsType\": {\n \"description\": \"format: date\",\n \"type\": \"string\"\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"context_codes\",\n \"description\": \"List of context codes of courses and/or groups whose items you want to see.\\nIf not specified, defaults to all contexts associated to the current user.\\nNote that concluded courses will be ignored unless specified in the includes[]\\nparameter. The format of this field is the context type, followed by an underscore,\\nfollowed by the context id. For example: course_42, group_123\",\n \"type\": \"array\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"items\": {\n \"type\": \"string\"\n },\n \"tsName\": \"context_codes\",\n \"tsType\": {\n \"type\": \"string[]\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"observed_user_id\",\n \"description\": \"Return planner items for the given observed user. Must be accompanied by context_codes[].\\nThe user making the request must be observing the observed user in all the courses specified by\\ncontext_codes[].\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"observed_user_id\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"query\",\n \"name\": \"filter\",\n \"description\": \"Only return items that have new or unread activity\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"enum\": [\n \"new_activity\"\n ],\n \"tsName\": \"filter\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.306Z"}
901
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
902
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
903
+ {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
904
+ {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
905
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
906
+ {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
907
+ {"level":"debug","message":"Overriding type \"Date\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
908
+ {"level":"debug","message":"Interpretting type: \"PlannerNote\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
909
+ {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
910
+ {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
911
+ {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
912
+ {"level":"debug","message":"Interpretting type: \"PlannerOverride\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
913
+ {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
914
+ {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
915
+ {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
916
+ {"level":"debug","message":"Interpretting type: \"Proficiency\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
917
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
918
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
919
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
920
+ {"level":"debug","message":"Interpretting type: \"DeveloperKey\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
921
+ {"level":"debug","message":"Overriding type \"json\" as JSONObject","timestamp":"2026-01-05T22:05:31.306Z"}
922
+ {"level":"debug","message":"Interpretting type: \"QuizAssignmentOverrideSetContainer\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
923
+ {"level":"debug","message":"Interpretting type: \"QuizAssignmentOverrideSetContainer\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
924
+ {"level":"debug","message":"Interpretting type: \"QuizGroup\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
925
+ {"level":"debug","message":"Interpretting type: \"QuizQuestion\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
926
+ {"level":"debug","message":"Interpretting type: \"QuizQuestion\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
927
+ {"level":"debug","message":"Interpretting type: \"[Answer]\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
928
+ {"level":"debug","message":"Interpretting type: \"QuizQuestion\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
929
+ {"level":"debug","message":"Interpretting type: \"[Answer]\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
930
+ {"level":"debug","message":"Interpretting type: \"QuizReport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
931
+ {"level":"debug","message":"Overriding type \"String[]\" as string[]","timestamp":"2026-01-05T22:05:31.306Z"}
932
+ {"level":"debug","message":"Interpretting type: \"QuizReport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
933
+ {"level":"debug","message":"Overriding type \"String[]\" as string[]","timestamp":"2026-01-05T22:05:31.306Z"}
934
+ {"level":"debug","message":"Interpretting an array with items.$ref: \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.306Z"}
935
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.306Z"}
936
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Associate a new quiz submission file\\n\\nThis API endpoint is the first step in uploading a quiz submission file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow as these parameters are interpreted as per the\\ndocumentation there.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"quiz_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"name\",\n \"description\": \"The name of the quiz submission file\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"on_duplicate\",\n \"description\": \"How to handle duplicate names\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/quiz_submission_files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/quizzes/{quiz_id}/submissions/self/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.306Z"}
937
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.306Z"}
938
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Associate a new quiz submission file\\n\\nThis API endpoint is the first step in uploading a quiz submission file.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow as these parameters are interpreted as per the\\ndocumentation there.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"quiz_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"name\",\n \"description\": \"The name of the quiz submission file\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n },\n {\n \"paramType\": \"form\",\n \"name\": \"on_duplicate\",\n \"description\": \"How to handle duplicate names\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/quiz_submission_files.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/quizzes/{quiz_id}/submissions/self/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"paramType\": \"form\",\n \"name\": \"name\",\n \"description\": \"The name of the quiz submission file\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"name\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"paramType\": \"form\",\n \"name\": \"on_duplicate\",\n \"description\": \"How to handle duplicate names\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": false,\n \"deprecated\": false,\n \"tsName\": \"on_duplicate\",\n \"tsType\": {\n \"type\": \"string\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n }\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Quizzes/Submissions/Self/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"quiz_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"quiz_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.306Z"}
939
+ {"level":"debug","message":"Interpretting type: \"Numeric\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
940
+ {"level":"debug","message":"Interpretting type: \"QuizUserConversation\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
941
+ {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
942
+ {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
943
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
944
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
945
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
946
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
947
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
948
+ {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
949
+ {"level":"debug","message":"Interpretting type: \"Quiz\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
950
+ {"level":"debug","message":"Interpretting type: \"Result\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
951
+ {"level":"debug","message":"Interpretting type: \"Result\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
952
+ {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
953
+ {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
954
+ {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
955
+ {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
956
+ {"level":"debug","message":"Overriding type \"Deprecated\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
957
+ {"level":"debug","message":"Interpretting type: \"Role\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
958
+ {"level":"debug","message":"Interpretting type: \"PermissionHelpText\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
959
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.306Z"}
960
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.306Z"}
961
+ {"level":"debug","message":"Interpretting type: \"Rubric\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
962
+ {"level":"debug","message":"Interpretting type: \"Rubric\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
963
+ {"level":"debug","message":"Interpretting type: \"Rubric\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
964
+ {"level":"debug","message":"Interpretting type: \"UsedLocations\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
965
+ {"level":"debug","message":"Interpretting type: \"UsedLocations\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
966
+ {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
967
+ {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
968
+ {"level":"debug","message":"Overriding type \"a CSV file in the format that can be imported\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
969
+ {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
970
+ {"level":"debug","message":"Interpretting type: \"RubricImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
971
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.306Z"}
972
+ {"level":"debug","message":"Overriding type \"Hash\" as JSONObject","timestamp":"2026-01-05T22:05:31.306Z"}
973
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
974
+ {"level":"debug","message":"Interpretting type: \"RubricAssociation\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
975
+ {"level":"debug","message":"Interpretting type: \"RubricAssociation\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
976
+ {"level":"debug","message":"Interpretting type: \"RubricAssociation\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
977
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.306Z"}
978
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.306Z"}
979
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.306Z"}
980
+ {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
981
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
982
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
983
+ {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
984
+ {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
985
+ {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
986
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
987
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
988
+ {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
989
+ {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
990
+ {"level":"debug","message":"Interpretting type: \"Section\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
991
+ {"level":"debug","message":"Interpretting type: \"SharedBrandConfig\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
992
+ {"level":"debug","message":"Interpretting type: \"SharedBrandConfig\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
993
+ {"level":"debug","message":"Interpretting type: \"SharedBrandConfig\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
994
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
995
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
996
+ {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
997
+ {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
998
+ {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
999
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
1000
+ {"level":"debug","message":"Interpretting type: \"SisImport\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
1001
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
1002
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
1003
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
1004
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.306Z"}
1005
+ {"level":"debug","message":"Interpretting type: \"SubmissionComment\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
1006
+ {"level":"debug","message":"Interpretting type: \"SubmissionComment\" as RefType","timestamp":"2026-01-05T22:05:31.306Z"}
1007
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.306Z"}
1008
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to attach to a submission comment\\n\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then PUT the file_id to the\\nsubmission API to attach it to a comment\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submission_comments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.306Z"}
1009
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.306Z"}
1010
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to attach to a submission comment\\n\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then PUT the file_id to the\\nsubmission API to attach it to a comment\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submission_comments.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Assignments/Submissions/Comments/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"assignment_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.306Z"}
1011
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1012
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1013
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1014
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1015
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1016
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1017
+ {"level":"debug","message":"Overriding operation upload_file_courses properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.307Z"}
1018
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_courses\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1019
+ {"level":"debug","message":"Overriding operation upload_file_courses properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.307Z"}
1020
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_courses\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Courses/Assignments/Submissions/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"course_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"course_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"assignment_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1021
+ {"level":"debug","message":"Overriding operation upload_file_sections properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.307Z"}
1022
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_sections\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"section_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1023
+ {"level":"debug","message":"Overriding operation upload_file_sections properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.307Z"}
1024
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to a submission.\\n\\nThis API endpoint is the first step in uploading a file to a submission as a student.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow.\\n\\nThe final step of the file upload workflow will return the attachment data,\\nincluding the new file id. The caller can then POST to submit the\\n+online_upload+ assignment with these file ids.\",\n \"nickname\": \"upload_file_sections\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"section_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/submissions.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Sections/Assignments/Submissions/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"section_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"section_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"assignment_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"assignment_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n },\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1025
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1026
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1027
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1028
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1029
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1030
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1031
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1032
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1033
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1034
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1035
+ {"level":"debug","message":"Interpretting type: \"Progress\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1036
+ {"level":"debug","message":"Interpretting type: \"RubricAssessment\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1037
+ {"level":"debug","message":"Interpretting type: \"Tab\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1038
+ {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1039
+ {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1040
+ {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1041
+ {"level":"debug","message":"Interpretting type: \"TemporaryEnrollmentPairing\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1042
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1043
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1044
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1045
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1046
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1047
+ {"level":"debug","message":"Interpretting type: \"PairingCode\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1048
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.307Z"}
1049
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.307Z"}
1050
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the user's personal files section.\\n\\nThis API endpoint is the first step in uploading a file to a user's files.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nNote that typically users will only be able to upload files to their\\nown files section. Passing a user_id of +self+ is an easy shortcut\\nto specify the current user.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1051
+ {"level":"debug","message":"Overriding operation upload_file properties tsImports 0 tsImports,tsType,tsFormParameters, tsType 1 tsImports,tsType,tsFormParameters, tsFormParameters 2 tsImports,tsType,tsFormParameters","timestamp":"2026-01-05T22:05:31.307Z"}
1052
+ {"level":"debug","message":"{\n \"method\": \"POST\",\n \"summary\": \"Upload a file\",\n \"notes\": \"Upload a file to the user's personal files section.\\n\\nThis API endpoint is the first step in uploading a file to a user's files.\\nSee the {file:file.file_uploads.html File Upload Documentation} for details on\\nthe file upload workflow.\\n\\nNote that typically users will only be able to upload files to their\\nown files section. Passing a user_id of +self+ is an easy shortcut\\nto specify the current user.\",\n \"nickname\": \"upload_file\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"FileLocation\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"File\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Resources/Files.ts\"\n }\n ],\n \"tsType\": {\n \"type\": \"UploadResponse\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n },\n {\n \"type\": \"UploadResponse\",\n \"packagePath\": \"@groton/canvas-api.client.base\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{user_id}/files\",\n \"tsName\": \"upload\",\n \"tsUpload\": true,\n \"tsFormParameters\": [\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"name\",\n \"description\": \"The filename of the file. Any UTF-8 name is allowed. Path components such as `/` and `\\\\` will be treated as part of the filename, not a path to a sub-folder.\",\n \"tsType\": {\n \"type\": \"string\"\n }\n },\n {\n \"tsName\": \"size\",\n \"description\": \"The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: integer\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"content_type\",\n \"description\": \"The content type of the file. If not given, it will be guessed based on the file extension.\",\n \"tsType\": {\n \"type\": \"string\",\n \"description\": \"format: mime-type\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_id\",\n \"description\": \"The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent_folder_path are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"number\",\n \"description\": \"format: int64\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"parent_folder_path\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"folder\",\n \"description\": \"The path of the folder to store the file in. The path separator is the forward slash `/`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent_folder_id are sent an error will be returned. If neither is given, a default folder will be used.\",\n \"tsType\": {\n \"type\": \"string\"\n },\n \"tsDeprecation\": \"@deprecated Use parent_folder_path instead.\",\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"on_duplicate\",\n \"description\": \"How to handle duplicate filenames. If `overwrite`, then this file upload will overwrite any other file in the folder with the same name. If `rename`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is `overwrite`. This doesn't apply to file uploads in a context that doesn't have folders.\",\n \"tsType\": {\n \"type\": \"'overwrite'|'rename'\"\n },\n \"tsOptional\": \"?\"\n },\n {\n \"tsName\": \"success_include\",\n \"description\": \"An array of additional information to include in the upload success response. See Files API for more information.\",\n \"tsType\": {\n \"type\": \"string[]\"\n },\n \"tsOptional\": \"?\"\n }\n ],\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Users/Files/upload.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"user_id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"user_id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1053
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1054
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1055
+ {"level":"debug","message":"Overriding type \"URL\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1056
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1057
+ {"level":"debug","message":"Overriding operation get_custom_colors properties tsName 0 tsName","timestamp":"2026-01-05T22:05:31.307Z"}
1058
+ {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"Get custom colors\",\n \"notes\": \"Returns all custom colors that have been saved for a user.\",\n \"nickname\": \"get_custom_colors\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"tsType\": {\n \"type\": \"JSONValue\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{id}/colors\",\n \"tsName\": \"list\",\n \"tsUpload\": false\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1059
+ {"level":"debug","message":"Overriding operation get_custom_colors properties tsName 0 tsName","timestamp":"2026-01-05T22:05:31.307Z"}
1060
+ {"level":"debug","message":"{\n \"method\": \"GET\",\n \"summary\": \"Get custom colors\",\n \"notes\": \"Returns all custom colors that have been saved for a user.\",\n \"nickname\": \"get_custom_colors\",\n \"parameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false\n }\n ],\n \"response_fields\": [],\n \"deprecated\": false,\n \"deprecation_description\": \"\",\n \"type\": \"void\",\n \"specPath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/spec/users.json\",\n \"tsImports\": [\n {\n \"type\": \"client\",\n \"filePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Client.ts\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n },\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"tsType\": {\n \"type\": \"JSONValue\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ]\n },\n \"tsEndpoint\": \"/api/v1/users/{id}/colors\",\n \"tsName\": \"list\",\n \"tsUpload\": false,\n \"tsFilePath\": \"/Users/sbattis/Documents/GitHub/canvas-cli/packages/api/canvas-api/src/Endpoints/V1/Users/Colors/list.ts\",\n \"tsPathParameters\": [\n {\n \"paramType\": \"path\",\n \"name\": \"id\",\n \"description\": \"ID\",\n \"type\": \"string\",\n \"format\": null,\n \"required\": true,\n \"deprecated\": false,\n \"tsName\": \"id\",\n \"tsType\": {\n \"type\": \"string | number\",\n \"tsReferences\": [\n {\n \"type\": \"JSONValue\",\n \"packagePath\": \"@battis/typescript-tricks\"\n }\n ],\n \"description\": \"type: string \"\n }\n }\n ]\n}","timestamp":"2026-01-05T22:05:31.307Z"}
1061
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1062
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1063
+ {"level":"debug","message":"Interpretting type: \"User\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1064
+ {"level":"debug","message":"Interpretting type: \"Profile\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1065
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1066
+ {"level":"debug","message":"Overriding type \"DateTime\" as string","timestamp":"2026-01-05T22:05:31.307Z"}
1067
+ {"level":"debug","message":"Interpretting type: \"AsyncQueryResponse\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1068
+ {"level":"debug","message":"Interpretting type: \"AsyncQueryStatusResponse\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1069
+ {"level":"debug","message":"Interpretting type: \"QueryResultsResponse\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1070
+ {"level":"debug","message":"Interpretting type: \"JSON\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1071
+ {"level":"debug","message":"Interpretting type: \"CourseNickname\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1072
+ {"level":"debug","message":"Interpretting type: \"CourseNickname\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1073
+ {"level":"debug","message":"Interpretting type: \"CourseNickname\" as RefType","timestamp":"2026-01-05T22:05:31.307Z"}
1074
+ {"level":"debug","message":"Overriding type \"Array\" as string[]","timestamp":"2026-01-05T22:05:31.307Z"}
1075
+ {"level":"debug","message":"Overriding type \"Object\" as JSONObject","timestamp":"2026-01-05T22:05:31.307Z"}