lms-api 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 777bf9afd9565fde961baae2844dc52c76805923
4
- data.tar.gz: fac9b9652c3bd22324495f1773bac632299c89d4
3
+ metadata.gz: f134bb198925066aafd244adbe8b9458d38a902d
4
+ data.tar.gz: 918c848dd6f101ed790ad89f639d86898544957b
5
5
  SHA512:
6
- metadata.gz: 8a1b01e99e069189e1ffa1904946f44975f01dd47aaf4c6da0e6fe4d050823edfd2cbbf5edc888d8d501fdf5c049b851941c93c0ba44526ac96b4cf18878394d
7
- data.tar.gz: f4bad4474f786009e32df7aec3a916a0b6e3a49ee30f2f30c72976394470f2778f4be7bba5a60fa00b76b36c80ec8727cc8505a951abcfd4ea6103f86b9a9601
6
+ metadata.gz: c83f5a8f9ce82dced14cd51bfe9e2d114fb25f32654ef4ce97b7ad027558fa90be54f634ed5fb2205bf1f5cc90998da1cbdd7ba00660a55f8aa65a9231aef6a0
7
+ data.tar.gz: c5dbb430ce2cdb6ab58b09ce37a36eb226f8c421b2c34f3a38e1f24b25db22c7e63848f07b354d177d13141254e6f77204485fa93f91b8c75427e9a566aefd24
@@ -1,4 +1,3 @@
1
- require 'byebug'
2
1
  module CanvasApi
3
2
 
4
3
  module GraphQLHelpers
@@ -282,7 +282,6 @@ module LMS
282
282
  end
283
283
 
284
284
  def self.lms_url(type, params, payload = nil)
285
- params = params.to_h
286
285
  endpoint = LMS::CANVAS_URLs[type]
287
286
  parameters = endpoint[:parameters]
288
287
 
@@ -312,7 +311,7 @@ module LMS
312
311
  uri_proc = endpoint[:uri]
313
312
  path_parameters = parameters.select { |p| p["paramType"] == "path" }.
314
313
  map { |p| p["name"].to_sym }
315
- args = params.slice(*path_parameters)
314
+ args = params.slice(*path_parameters).deep_symbolize_keys
316
315
  uri = args.blank? ? uri_proc.call : uri_proc.call(**args)
317
316
 
318
317
  # Handle scopes in the url. These API endpoints allow for additional path
@@ -15,7 +15,7 @@ module LMS
15
15
  "LIST_ACCOUNTS_FOR_COURSE_ADMINS" => { uri: ->() { "course_accounts" }, method: "GET", parameters: [] },
16
16
  "GET_SINGLE_ACCOUNT" => { uri: ->(id:) { "accounts/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
17
17
  "GET_SUB_ACCOUNTS_OF_ACCOUNT" => { uri: ->(account_id:) { "accounts/#{account_id}/sub_accounts" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"recursive", "type"=>"boolean", "format"=>nil, "required"=>false}] },
18
- "LIST_ACTIVE_COURSES_IN_ACCOUNT" => { uri: ->(account_id:) { "accounts/#{account_id}/courses" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"with_enrollments", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_type", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["teacher", "student", "ta", "observer", "designer"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"published", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"completed", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"by_teachers", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"by_subaccounts", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"hide_enrollmentless_courses", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["created", "claimed", "available", "completed", "deleted", "all"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"enrollment_term_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"search_term", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["syllabus_body", "term", "course_progress", "storage_quota_used_mb", "total_students", "teachers"], "items"=>{"type"=>"string"}}] },
18
+ "LIST_ACTIVE_COURSES_IN_ACCOUNT" => { uri: ->(account_id:) { "accounts/#{account_id}/courses" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"with_enrollments", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_type", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["teacher", "student", "ta", "observer", "designer"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"published", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"completed", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"blueprint", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"blueprint_associated", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"by_teachers", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"by_subaccounts", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"hide_enrollmentless_courses", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["created", "claimed", "available", "completed", "deleted", "all"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"enrollment_term_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"search_term", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["syllabus_body", "term", "course_progress", "storage_quota_used_mb", "total_students", "teachers"], "items"=>{"type"=>"string"}}] },
19
19
  "UPDATE_ACCOUNT" => { uri: ->(id:) { "accounts/#{id}" }, method: "PUT", parameters: [{"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"account[name]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[default_time_zone]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[default_storage_quota_mb]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"account[default_user_storage_quota_mb]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"account[default_group_storage_quota_mb]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][restrict_student_past_view][value]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][restrict_student_past_view][locked]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][restrict_student_future_view][value]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][restrict_student_future_view][locked]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][lock_all_announcements][value]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][lock_all_announcements][locked]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][restrict_student_future_listing][value]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[settings][restrict_student_future_listing][locked]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[services]", "type"=>"Hash", "format"=>nil, "required"=>false}] },
20
20
  "DELETE_USER_FROM_ROOT_ACCOUNT" => { uri: ->(account_id:, user_id:) { "accounts/#{account_id}/users/#{user_id}" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>true}] },
21
21
  "CREATE_NEW_SUB_ACCOUNT" => { uri: ->(account_id:) { "accounts/#{account_id}/sub_accounts" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"account[name]", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"account[sis_account_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"account[default_storage_quota_mb]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"account[default_user_storage_quota_mb]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"account[default_group_storage_quota_mb]", "type"=>"integer", "format"=>"int64", "required"=>false}] },
@@ -61,7 +61,7 @@ module LMS
61
61
  "LIST_ASSIGNMENTS" => { uri: ->(course_id:) { "courses/#{course_id}/assignments" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["submission", "assignment_visibility", "all_dates", "overrides", "observed_users"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"search_term", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"override_assignment_dates", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"needs_grading_count_by_section", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"bucket", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming", "future"]}, {"paramType"=>"query", "name"=>"assignment_ids", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}] },
62
62
  "LIST_ASSIGNMENTS_FOR_USER" => { uri: ->(user_id:, course_id:) { "users/#{user_id}/courses/#{course_id}/assignments" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}] },
63
63
  "GET_SINGLE_ASSIGNMENT" => { uri: ->(course_id:, id:) { "courses/#{course_id}/assignments/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["submission", "assignment_visibility", "overrides", "observed_users"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"override_assignment_dates", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"needs_grading_count_by_section", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"all_dates", "type"=>"boolean", "format"=>nil, "required"=>false}] },
64
- "CREATE_ASSIGNMENT" => { uri: ->(course_id:) { "courses/#{course_id}/assignments" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"assignment[name]", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"assignment[position]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[submission_types]", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["online_quiz", "none", "on_paper", "online_quiz", "discussion_topic", "external_tool", "online_upload", "online_text_entry", "online_url", "media_recording"], "items"=>{"type"=>"string"}}, {"paramType"=>"form", "name"=>"assignment[allowed_extensions]", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"form", "name"=>"assignment[turnitin_enabled]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[vericite_enabled]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[turnitin_settings]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[integration_data]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[integration_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[peer_reviews]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[automatic_peer_reviews]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[notify_of_update]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[group_category_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grade_group_students_individually]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[external_tool_tag_attributes]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[points_possible]", "type"=>"Float", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grading_type]", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["pass_fail", "percent", "letter_grade", "gpa_scale", "points"]}, {"paramType"=>"form", "name"=>"assignment[due_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[lock_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[unlock_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[description]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[assignment_group_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[muted]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[assignment_overrides]", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"$ref"=>"AssignmentOverride"}}, {"paramType"=>"form", "name"=>"assignment[only_visible_to_overrides]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[published]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grading_standard_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[omit_from_final_grade]", "type"=>"boolean", "format"=>nil, "required"=>false}] },
64
+ "CREATE_ASSIGNMENT" => { uri: ->(course_id:) { "courses/#{course_id}/assignments" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"assignment[name]", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"assignment[position]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[submission_types]", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["online_quiz", "none", "on_paper", "online_quiz", "discussion_topic", "external_tool", "online_upload", "online_text_entry", "online_url", "media_recording"], "items"=>{"type"=>"string"}}, {"paramType"=>"form", "name"=>"assignment[allowed_extensions]", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"form", "name"=>"assignment[turnitin_enabled]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[vericite_enabled]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[turnitin_settings]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[integration_data]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[integration_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[peer_reviews]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[automatic_peer_reviews]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[notify_of_update]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[group_category_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grade_group_students_individually]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[external_tool_tag_attributes]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[points_possible]", "type"=>"Float", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grading_type]", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["pass_fail", "percent", "letter_grade", "gpa_scale", "points"]}, {"paramType"=>"form", "name"=>"assignment[due_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[lock_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[unlock_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[description]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[assignment_group_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[muted]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[assignment_overrides]", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"$ref"=>"AssignmentOverride"}}, {"paramType"=>"form", "name"=>"assignment[only_visible_to_overrides]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[published]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grading_standard_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[omit_from_final_grade]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[quiz_lti]", "type"=>"boolean", "format"=>nil, "required"=>false}] },
65
65
  "EDIT_ASSIGNMENT" => { uri: ->(course_id:, id:) { "courses/#{course_id}/assignments/#{id}" }, method: "PUT", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"assignment[name]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[position]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[submission_types]", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["online_quiz", "none", "on_paper", "online_quiz", "discussion_topic", "external_tool", "online_upload", "online_text_entry", "online_url", "media_recording"], "items"=>{"type"=>"string"}}, {"paramType"=>"form", "name"=>"assignment[allowed_extensions]", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"form", "name"=>"assignment[turnitin_enabled]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[vericite_enabled]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[turnitin_settings]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[integration_data]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[integration_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[peer_reviews]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[automatic_peer_reviews]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[notify_of_update]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[group_category_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grade_group_students_individually]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[external_tool_tag_attributes]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[points_possible]", "type"=>"Float", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grading_type]", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["pass_fail", "percent", "letter_grade", "gpa_scale", "points"]}, {"paramType"=>"form", "name"=>"assignment[due_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[lock_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[unlock_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[description]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[assignment_group_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[muted]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[assignment_overrides]", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"$ref"=>"AssignmentOverride"}}, {"paramType"=>"form", "name"=>"assignment[only_visible_to_overrides]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[published]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"assignment[grading_standard_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"assignment[omit_from_final_grade]", "type"=>"boolean", "format"=>nil, "required"=>false}] },
66
66
  "LIST_ASSIGNMENT_OVERRIDES" => { uri: ->(course_id:, assignment_id:) { "courses/#{course_id}/assignments/#{assignment_id}/overrides" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}] },
67
67
  "GET_SINGLE_ASSIGNMENT_OVERRIDE" => { uri: ->(course_id:, assignment_id:, id:) { "courses/#{course_id}/assignments/#{assignment_id}/overrides/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
@@ -83,6 +83,12 @@ module LMS
83
83
  "QUERY_BY_LOGIN" => { uri: ->(login_id:) { "audit/authentication/logins/#{login_id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"login_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"start_time", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"end_time", "type"=>"DateTime", "format"=>nil, "required"=>false}] },
84
84
  "QUERY_BY_ACCOUNT" => { uri: ->(account_id:) { "audit/authentication/accounts/#{account_id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"start_time", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"end_time", "type"=>"DateTime", "format"=>nil, "required"=>false}] },
85
85
  "QUERY_BY_USER" => { uri: ->(user_id:) { "audit/authentication/users/#{user_id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"start_time", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"end_time", "type"=>"DateTime", "format"=>nil, "required"=>false}] },
86
+ "GET_BLUEPRINT_INFORMATION" => { uri: ->(course_id:, template_id:) { "courses/#{course_id}/blueprint_templates/#{template_id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"template_id", "type"=>"string", "format"=>nil, "required"=>true}] },
87
+ "GET_ASSOCIATED_COURSE_INFORMATION" => { uri: ->(course_id:, template_id:) { "courses/#{course_id}/blueprint_templates/#{template_id}/associated_courses" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"template_id", "type"=>"string", "format"=>nil, "required"=>true}] },
88
+ "UPDATE_ASSOCIATED_COURSES" => { uri: ->(course_id:, template_id:) { "courses/#{course_id}/blueprint_templates/#{template_id}/update_associations" }, method: "PUT", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"template_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"course_ids_to_add", "type"=>"Array", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course_ids_to_remove", "type"=>"Array", "format"=>nil, "required"=>false}] },
89
+ "BEGIN_MIGRATION_TO_PUSH_TO_ASSOCIATED_COURSES" => { uri: ->(course_id:, template_id:) { "courses/#{course_id}/blueprint_templates/#{template_id}/migrations" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"template_id", "type"=>"string", "format"=>nil, "required"=>true}] },
90
+ "LIST_BLUEPRINT_MIGRATIONS" => { uri: ->(course_id:, template_id:) { "courses/#{course_id}/blueprint_templates/#{template_id}/migrations" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"template_id", "type"=>"string", "format"=>nil, "required"=>true}] },
91
+ "SHOW_BLUEPRINT_MIGRATION" => { uri: ->(course_id:, template_id:, id:) { "courses/#{course_id}/blueprint_templates/#{template_id}/migrations/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"template_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
86
92
  "LIST_BOOKMARKS" => { uri: ->() { "users/self/bookmarks" }, method: "GET", parameters: [] },
87
93
  "CREATE_BOOKMARK" => { uri: ->() { "users/self/bookmarks" }, method: "POST", parameters: [{"paramType"=>"form", "name"=>"name", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"url", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"position", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"data", "type"=>"string", "format"=>nil, "required"=>false}] },
88
94
  "GET_BOOKMARK" => { uri: ->(id:) { "users/self/bookmarks/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
@@ -173,8 +179,8 @@ module LMS
173
179
  "CREATE_NEW_COURSE" => { uri: ->(account_id:) { "accounts/#{account_id}/courses" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"course[name]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[course_code]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[start_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[end_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[license]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[is_public]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[is_public_to_auth_users]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[public_syllabus]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[public_syllabus_to_auth]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[public_description]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[allow_student_wiki_edits]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[allow_wiki_comments]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[allow_student_forum_attachments]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[open_enrollment]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[self_enrollment]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[restrict_enrollments_to_course_dates]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[term_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"course[sis_course_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[integration_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[hide_final_grades]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[apply_assignment_group_weights]", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[time_zone]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"offer", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enroll_me", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[syllabus_body]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"course[grading_standard_id]", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"form", "name"=>"course[course_format]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enable_sis_reactivation", "type"=>"boolean", "format"=>nil, "required"=>false}] },
174
180
  "COURSES_UPLOAD_FILE" => { uri: ->(course_id:) { "courses/#{course_id}/files" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}] },
175
181
  "LIST_STUDENTS" => { uri: ->(course_id:) { "courses/#{course_id}/students" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}] },
176
- "LIST_USERS_IN_COURSE_USERS" => { uri: ->(course_id:) { "courses/#{course_id}/users" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"search_term", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_type", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["teacher", "student", "student_view", "ta", "observer", "designer"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"enrollment_role", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_role_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["email", "enrollments", "locked", "avatar_url", "test_student", "bio", "custom_links"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"user_ids", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"enrollment_state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["active", "invited", "rejected", "completed", "inactive"], "items"=>{"type"=>"string"}}] },
177
- "LIST_USERS_IN_COURSE_SEARCH_USERS" => { uri: ->(course_id:) { "courses/#{course_id}/search_users" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"search_term", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_type", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["teacher", "student", "student_view", "ta", "observer", "designer"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"enrollment_role", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_role_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["email", "enrollments", "locked", "avatar_url", "test_student", "bio", "custom_links"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"user_ids", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"enrollment_state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["active", "invited", "rejected", "completed", "inactive"], "items"=>{"type"=>"string"}}] },
182
+ "LIST_USERS_IN_COURSE_USERS" => { uri: ->(course_id:) { "courses/#{course_id}/users" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"search_term", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_type", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["teacher", "student", "student_view", "ta", "observer", "designer"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"enrollment_role", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_role_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["email", "enrollments", "locked", "avatar_url", "test_student", "bio", "custom_links", "current_grading_period_scores"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"user_ids", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"enrollment_state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["active", "invited", "rejected", "completed", "inactive"], "items"=>{"type"=>"string"}}] },
183
+ "LIST_USERS_IN_COURSE_SEARCH_USERS" => { uri: ->(course_id:) { "courses/#{course_id}/search_users" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"search_term", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_type", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["teacher", "student", "student_view", "ta", "observer", "designer"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"enrollment_role", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"enrollment_role_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["email", "enrollments", "locked", "avatar_url", "test_student", "bio", "custom_links", "current_grading_period_scores"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"user_ids", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"query", "name"=>"enrollment_state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["active", "invited", "rejected", "completed", "inactive"], "items"=>{"type"=>"string"}}] },
178
184
  "LIST_RECENTLY_LOGGED_IN_STUDENTS" => { uri: ->(course_id:) { "courses/#{course_id}/recent_students" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}] },
179
185
  "GET_SINGLE_USER" => { uri: ->(course_id:, id:) { "courses/#{course_id}/users/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
180
186
  "COURSES_PREVIEW_PROCESSED_HTML" => { uri: ->(course_id:) { "courses/#{course_id}/preview_html" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"html", "type"=>"string", "format"=>nil, "required"=>false}] },
@@ -247,7 +253,7 @@ module LMS
247
253
  "UNSUBSCRIBE_FROM_TOPIC_COURSES" => { uri: ->(course_id:, topic_id:) { "courses/#{course_id}/discussion_topics/#{topic_id}/subscribed" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"topic_id", "type"=>"string", "format"=>nil, "required"=>true}] },
248
254
  "UNSUBSCRIBE_FROM_TOPIC_GROUPS" => { uri: ->(group_id:, topic_id:) { "groups/#{group_id}/discussion_topics/#{topic_id}/subscribed" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"group_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"topic_id", "type"=>"string", "format"=>nil, "required"=>true}] },
249
255
  "CREATE_ENROLLMENT_TERM" => { uri: ->(account_id:) { "accounts/#{account_id}/terms" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"enrollment_term[name]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[start_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[end_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[sis_term_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[overrides][enrollment_type][start_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[overrides][enrollment_type][end_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}] },
250
- "UPDATE_ENROLLMENT_TERM" => { uri: ->(account_id:, id:) { "accounts/#{account_id}/terms/#{id}" }, method: "PUT", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
256
+ "UPDATE_ENROLLMENT_TERM" => { uri: ->(account_id:, id:) { "accounts/#{account_id}/terms/#{id}" }, method: "PUT", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"enrollment_term[name]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[start_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[end_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[sis_term_id]", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[overrides][enrollment_type][start_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"form", "name"=>"enrollment_term[overrides][enrollment_type][end_at]", "type"=>"DateTime", "format"=>nil, "required"=>false}] },
251
257
  "DELETE_ENROLLMENT_TERM" => { uri: ->(account_id:, id:) { "accounts/#{account_id}/terms/#{id}" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
252
258
  "LIST_ENROLLMENT_TERMS" => { uri: ->(account_id:) { "accounts/#{account_id}/terms" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"workflow_state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["active", "deleted", "all"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["overrides"], "items"=>{"type"=>"string"}}] },
253
259
  "LIST_ENROLLMENTS_COURSES" => { uri: ->(course_id:) { "courses/#{course_id}/enrollments" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"type", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"role", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"state", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["active", "invited", "creation_pending", "deleted", "rejected", "completed", "inactive"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["avatar_url", "group_ids", "locked", "observed_users", "can_be_removed"], "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"user_id", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"grading_period_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"sis_account_id", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"sis_course_id", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"sis_section_id", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"sis_user_id", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}] },
@@ -501,8 +507,8 @@ module LMS
501
507
  "GET_ALL_PEER_REVIEWS_SECTIONS_SUBMISSIONS" => { uri: ->(section_id:, assignment_id:, submission_id:) { "sections/#{section_id}/assignments/#{assignment_id}/submissions/#{submission_id}/peer_reviews" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"section_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"submission_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"include", "type"=>"array", "format"=>nil, "required"=>false, "enum"=>["submission_comments", "user"], "items"=>{"type"=>"string"}}] },
502
508
  "PEER_REVIEWS_CREATE_PEER_REVIEW_COURSES" => { uri: ->(course_id:, assignment_id:, submission_id:) { "courses/#{course_id}/assignments/#{assignment_id}/submissions/#{submission_id}/peer_reviews" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"submission_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>true}] },
503
509
  "PEER_REVIEWS_CREATE_PEER_REVIEW_SECTIONS" => { uri: ->(section_id:, assignment_id:, submission_id:) { "sections/#{section_id}/assignments/#{assignment_id}/submissions/#{submission_id}/peer_reviews" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"section_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"submission_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>true}] },
504
- "PEER_REVIEWS_CREATE_PEER_REVIEW_COURSES" => { uri: ->(course_id:, assignment_id:, submission_id:) { "courses/#{course_id}/assignments/#{assignment_id}/submissions/#{submission_id}/peer_reviews" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"submission_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>true}] },
505
- "PEER_REVIEWS_CREATE_PEER_REVIEW_SECTIONS" => { uri: ->(section_id:, assignment_id:, submission_id:) { "sections/#{section_id}/assignments/#{assignment_id}/submissions/#{submission_id}/peer_reviews" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"section_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"submission_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>true}] },
510
+ "DELETE_PEER_REVIEW_COURSES" => { uri: ->(course_id:, assignment_id:, submission_id:) { "courses/#{course_id}/assignments/#{assignment_id}/submissions/#{submission_id}/peer_reviews" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"course_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"submission_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>true}] },
511
+ "DELETE_PEER_REVIEW_SECTIONS" => { uri: ->(section_id:, assignment_id:, submission_id:) { "sections/#{section_id}/assignments/#{assignment_id}/submissions/#{submission_id}/peer_reviews" }, method: "DELETE", parameters: [{"paramType"=>"path", "name"=>"section_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"assignment_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"submission_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"query", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>true}] },
506
512
  "LIST_POLL_SESSIONS_FOR_POLL" => { uri: ->(poll_id:) { "polls/#{poll_id}/poll_sessions" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"poll_id", "type"=>"string", "format"=>nil, "required"=>true}] },
507
513
  "GET_RESULTS_FOR_SINGLE_POLL_SESSION" => { uri: ->(poll_id:, id:) { "polls/#{poll_id}/poll_sessions/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"poll_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
508
514
  "CREATE_SINGLE_POLL_SESSION" => { uri: ->(poll_id:) { "polls/#{poll_id}/poll_sessions" }, method: "POST", parameters: [{"paramType"=>"path", "name"=>"poll_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"form", "name"=>"poll_sessions[course_id]", "type"=>"array", "format"=>"int64", "required"=>true, "items"=>{"type"=>"integer"}}, {"paramType"=>"form", "name"=>"poll_sessions[course_section_id]", "type"=>"array", "format"=>"int64", "required"=>false, "items"=>{"type"=>"integer"}}, {"paramType"=>"form", "name"=>"poll_sessions[has_public_results]", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"boolean"}}] },
@@ -580,8 +586,8 @@ module LMS
580
586
  "GET_SIS_IMPORT_STATUS" => { uri: ->(account_id:, id:) { "accounts/#{account_id}/sis_imports/#{id}" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
581
587
  "ABORT_SIS_IMPORT" => { uri: ->(account_id:, id:) { "accounts/#{account_id}/sis_imports/#{id}/abort" }, method: "PUT", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}, {"paramType"=>"path", "name"=>"id", "type"=>"string", "format"=>nil, "required"=>true}] },
582
588
  "ABORT_ALL_PENDING_SIS_IMPORTS" => { uri: ->(account_id:) { "accounts/#{account_id}/sis_imports/abort_all_pending" }, method: "PUT", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"string", "format"=>nil, "required"=>true}] },
583
- "RETRIEVE_ASSIGNMENTS_ENABLED_FOR_GRADE_EXPORT_TO_SIS_ACCOUNTS" => { uri: ->(account_id:) { "/sis/accounts/#{account_id}/assignments" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"integer", "format"=>"int64", "required"=>true}, {"paramType"=>"query", "name"=>"course_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"starts_before", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"ends_after", "type"=>"DateTime", "format"=>nil, "required"=>false}] },
584
- "RETRIEVE_ASSIGNMENTS_ENABLED_FOR_GRADE_EXPORT_TO_SIS_COURSES" => { uri: ->(course_id:) { "/sis/courses/#{course_id}/assignments" }, method: "GET", parameters: [{"paramType"=>"query", "name"=>"account_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"path", "name"=>"course_id", "type"=>"integer", "format"=>"int64", "required"=>true}, {"paramType"=>"query", "name"=>"starts_before", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"ends_after", "type"=>"DateTime", "format"=>nil, "required"=>false}] },
589
+ "RETRIEVE_ASSIGNMENTS_ENABLED_FOR_GRADE_EXPORT_TO_SIS_ACCOUNTS" => { uri: ->(account_id:) { "/sis/accounts/#{account_id}/assignments" }, method: "GET", parameters: [{"paramType"=>"path", "name"=>"account_id", "type"=>"integer", "format"=>"int64", "required"=>true}, {"paramType"=>"query", "name"=>"course_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"starts_before", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"ends_after", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["student_overrides"]}] },
590
+ "RETRIEVE_ASSIGNMENTS_ENABLED_FOR_GRADE_EXPORT_TO_SIS_COURSES" => { uri: ->(course_id:) { "/sis/courses/#{course_id}/assignments" }, method: "GET", parameters: [{"paramType"=>"query", "name"=>"account_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"path", "name"=>"course_id", "type"=>"integer", "format"=>"int64", "required"=>true}, {"paramType"=>"query", "name"=>"starts_before", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"ends_after", "type"=>"DateTime", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"include", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["student_overrides"]}] },
585
591
  "FIND_RECIPIENTS_CONVERSATIONS" => { uri: ->() { "conversations/find_recipients" }, method: "GET", parameters: [{"paramType"=>"query", "name"=>"search", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"context", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"exclude", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"type", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["user", "context"]}, {"paramType"=>"query", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"from_conversation_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"permissions", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}] },
586
592
  "FIND_RECIPIENTS_SEARCH" => { uri: ->() { "search/recipients" }, method: "GET", parameters: [{"paramType"=>"query", "name"=>"search", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"context", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"exclude", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}, {"paramType"=>"query", "name"=>"type", "type"=>"string", "format"=>nil, "required"=>false, "enum"=>["user", "context"]}, {"paramType"=>"query", "name"=>"user_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"from_conversation_id", "type"=>"integer", "format"=>"int64", "required"=>false}, {"paramType"=>"query", "name"=>"permissions", "type"=>"array", "format"=>nil, "required"=>false, "items"=>{"type"=>"string"}}] },
587
593
  "LIST_ALL_COURSES" => { uri: ->() { "search/all_courses" }, method: "GET", parameters: [{"paramType"=>"query", "name"=>"search", "type"=>"string", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"public_only", "type"=>"boolean", "format"=>nil, "required"=>false}, {"paramType"=>"query", "name"=>"open_enrollment_only", "type"=>"boolean", "format"=>nil, "required"=>false}] },
@@ -1,3 +1,3 @@
1
1
  module LMS
2
- VERSION = "1.3.0".freeze
2
+ VERSION = "1.3.1".freeze
3
3
  end
@@ -3,278 +3,19 @@ require "active_support"
3
3
  require "active_support/core_ext/object/blank"
4
4
  require "active_support/core_ext/string/inflections"
5
5
 
6
- namespace :canvas do
7
- module GraphQLHelpers
8
-
9
- def graphql_type(name, property)
10
- if property["$ref"]
11
- "#{property['$ref']}, resolve: function(model){ return model.#{name}; }"
12
- else
13
- type = property["type"]
14
- case type
15
- when "integer", "string", "boolean", "datetime", "number"
16
- graphql_primitive(type, property["format"])
17
- when "array"
18
- begin
19
- type = if property["items"]["$ref"]
20
- property["items"]["$ref"]
21
- else
22
- graphql_primitive(property["items"]["type"], property["items"]["format"])
23
- end
24
- rescue
25
- type = "GraphQLString"
26
- end
27
- "new GraphQLList(#{type})"
28
- when "object"
29
- # TODO handle objects
30
- nil
31
- else
32
- "unknown - #{property}"
33
- end
34
- end
35
- end
36
-
37
- def graphql_resolve(name, property)
38
- if property["$ref"]
39
- "function(model){ return model.#{name}; }"
40
- elsif property["type"] == "array" && property["items"] && property["items"]["$ref"]
41
- "function(model){ return model.#{name}; }"
42
- end
43
- end
44
-
45
- def graphql_primitive(type, format)
46
- case type
47
- when "integer"
48
- "GraphQLInt"
49
- when "number"
50
- if format == "float64"
51
- "GraphQLFloat"
52
- else
53
- # TODO many of the LMS types with 'number' don't indicate a type so we have to guess
54
- # Hopefully that changes. For now we go with float
55
- "GraphQLFloat"
56
- end
57
- when "string"
58
- "GraphQLString"
59
- when "boolean"
60
- "GraphQLBoolean"
61
- when "datetime"
62
- "GraphQLDateTime"
63
- end
64
- end
65
-
66
- def fields(model, resource_name)
67
- model["properties"].map do |name, property|
68
- # HACK. This property doesn't have any metadata. Throw in a couple lines of code
69
- # specific to this field.
70
- if name == "created_source" && property == "manual|sis|api"
71
- "#{name}: new GraphQLEnumType({ name: '#{name}', values: { manual: { value: 'manual' }, sis: { value: 'sis' }, api: { value: 'api' } } })"
72
- else
73
-
74
- description = ""
75
- if property["description"].present? && property["example"].present?
76
- description << "#{safe_js(property['description'])}. Example: #{safe_js(property['example'])}".gsub("..", "").gsub("\n", " ")
77
- end
78
-
79
- if type = graphql_type(name, property)
80
- resolve = graphql_resolve(name, property)
81
- resolve = "resolve: #{resolve}, " if resolve.present?
82
- "#{name}: { type: #{type}, #{resolve}description: \"#{description}\" }"
83
- end
84
-
85
- end
86
- end.compact
87
- end
88
-
89
- def safe_js(str)
90
- str = str.join(", ") if str.is_a?(Array)
91
- str = str.map { |_k, v| v }.join(", ") if str.is_a?(Hash)
92
- return str unless str.is_a?(String)
93
- str.gsub('"', "'")
94
- end
95
- end
96
-
97
- module JsHelpers
98
- def js_url_parts(api_url)
99
- api_url.split(/(\{[a-z_]+\})/).map do |part|
100
- if part[0] == "{"
101
- arg = part.gsub(/[\{\}]/, "")
102
- "args['#{arg}']"
103
- else
104
- %{"#{part}"}
105
- end
106
- end
107
- end
108
-
109
- def js_args(args)
110
- if args.present?
111
- "['#{args.join("', '")}']"
112
- else
113
- "[]"
114
- end
115
- end
116
-
117
- def parameters_doc(operation)
118
- if operation["parameters"].present?
119
- parameters = operation["parameters"].
120
- reject { |p| p["paramType"] == "path" }.
121
- map { |p| "#{p['name']}#{p['required'] ? ' (required)' : ''}" }.
122
- compact
123
- if parameters.present?
124
- "\n// const query = {\n// #{parameters.join("\n// ")}\n// }"
125
- else
126
- ""
127
- end
128
- else
129
- ""
130
- end
131
- end
132
-
133
- def key_args(args)
134
- if args.blank?
135
- ""
136
- elsif args.length > 1
137
- "#{nickname}_{#{args.join('}_{')}}"
138
- else
139
- "#{nickname}_#{args[0]}"
140
- end
141
- end
142
-
143
- def reducer_key(nickname, args)
144
- "#{nickname}#{key_args(args)}"
145
- end
146
-
147
- end
148
-
149
- module RubyHelpers
6
+ require "lms/canvas_urls"
7
+ require "lms/helper_urls"
150
8
 
151
- def ruby_api_url(api_url)
152
- api_url.gsub("{", "#\{")
153
- end
9
+ require "canvas_api"
154
10
 
155
- end
156
-
157
- class Render
158
- include GraphQLHelpers
159
- include JsHelpers
160
- include RubyHelpers
161
- attr_accessor :template, :description, :resource, :api_url, :operation,
162
- :args, :method, :api, :name, :resource_name, :resource_api,
163
- :nickname, :notes, :content, :summary, :model, :model_name
164
-
165
- def initialize(template, api, resource, resource_api, operation, parameters, content, model)
166
- @template = File.read(File.expand_path(template, __dir__))
167
- if api
168
- @api = api
169
- @name = @api["path"].gsub("/", "").gsub(".json", "")
170
- @description = @api["description"]
171
- end
172
- if resource
173
- @resource = resource
174
- @resource_name = resource["resourcePath"].gsub("/", "")
175
- end
176
- if resource_api
177
- @resource_api = resource_api
178
- @api_url = resource_api["path"].gsub("/v1/", "")
179
- @args = args(@api_url)
180
- end
181
- if operation
182
- nickname = operation["nickname"]
183
- nickname = "#{@name}_#{nickname}" if [
184
- "upload_file",
185
- "query_by_course",
186
- "preview_processed_html",
187
- "create_peer_review_courses",
188
- "create_peer_review_sections",
189
- "set_extensions_for_student_quiz_submissions"
190
- ].include?(nickname)
191
-
192
- @method = operation["method"]
193
- @operation = operation
194
- @nickname = nickname
195
- @notes = operation["notes"].gsub("\n", "\n// ")
196
- @summary = operation["summary"]
197
- end
198
- if parameters
199
- @parameters = parameters.map { |p| p.delete("description"); p }
200
- end
201
- @content = content
202
- @model = model
203
- end
204
-
205
- def args(api_url)
206
- api_url.split("/").map do |part|
207
- if part[0] == "{"
208
- part.gsub(/[\{\}]/, "")
209
- end
210
- end.compact
211
- end
212
-
213
- def render
214
- ERB.new(@template, nil, "-").result(binding).strip
215
- end
216
-
217
- def save(file)
218
- File.write(file, render)
219
- end
220
-
221
- end
222
-
223
- class LMSApiBuilder
224
-
225
- def self.build
226
- current_path = File.expand_path(File.dirname(__FILE__))
227
- atomic_client = File.expand_path(File.join(current_path, "../../../atomic-client"))
228
- atomic_lti = File.expand_path(File.join(current_path, "../../../atomic-lti"))
229
- project_root = File.expand_path(File.join(current_path, "../../"))
230
-
231
- endpoint = "https://canvas.instructure.com/doc/api"
232
- directory = HTTParty.get("#{endpoint}/api-docs.json")
233
- lms_urls_rb = []
234
- lms_urls_js = []
235
- models = []
236
- queries = []
237
- mutations = []
238
- directory["apis"].each do |api|
239
- puts "Generating #{api['description']}"
240
- resource = HTTParty.get("#{endpoint}#{api['path']}")
241
- constants = []
242
- resource["apis"].each do |resource_api|
243
- resource_api["operations"].each do |operation|
244
- parameters = operation["parameters"]
245
- constants << Render.new("./canvas_api/constant.erb", api, resource, resource_api, operation, parameters, nil, nil).render
246
- lms_urls_rb << Render.new("./canvas_api/rb_url.erb", api, resource, resource_api, operation, parameters, nil, nil).render
247
- lms_urls_js << Render.new("./canvas_api/js_url.erb", api, resource, resource_api, operation, parameters, nil, nil).render
248
- if "GET" == operation["method"].upcase
249
- queries << Render.new("./canvas_api/graphql_query.erb", api, resource, resource_api, operation, parameters, nil, nil).render
250
- else
251
- mutations << Render.new("./canvas_api/graphql_mutation.erb", api, resource, resource_api, operation, parameters, nil, nil).render
252
- end
253
- end
254
- end
255
- resource["models"].map do |_name, model|
256
- if model["properties"] # Don't generate models without properties
257
- models << Render.new("./canvas_api/graphql_model.erb", api, resource, nil, nil, nil, nil, model).render
258
- end
259
- end
260
- # Generate one file of constants for every LMS API
261
- constants_renderer = Render.new("./canvas_api/constants.erb", api, resource, nil, nil, nil, constants, nil)
262
- constants_renderer.save("#{atomic_client}/client/js/libs/canvas/constants/#{constants_renderer.name}.js")
263
- end
264
-
265
- Render.new("./canvas_api/rb_urls.erb", nil, nil, nil, nil, nil, lms_urls_rb, nil).save("#{project_root}/lib/lms/canvas_urls.rb")
266
- Render.new("./canvas_api/js_urls.erb", nil, nil, nil, nil, nil, lms_urls_js, nil).save("#{atomic_lti}/lib/canvas/urls.js")
267
-
268
- # GraphQL - still not complete
269
- Render.new("./canvas_api/graphql_types.erb", nil, nil, nil, nil, nil, models.compact, nil).save("#{atomic_lti}/lib/canvas/graphql_types.js")
270
- Render.new("./canvas_api/graphql_queries.erb", nil, nil, nil, nil, nil, queries, nil).save("#{atomic_lti}/lib/canvas/graphql_queries.js")
271
- Render.new("./canvas_api/graphql_mutations.erb", nil, nil, nil, nil, nil, mutations, nil).save("#{atomic_lti}/lib/canvas/graphql_mutations.js")
272
- end
273
-
274
- end
11
+ namespace :canvas do
275
12
 
276
13
  desc "Scrape the LMS api"
277
14
  task :api do
278
- LMSApiBuilder.build
15
+ current_path = File.expand_path(File.dirname(__FILE__))
16
+ client_app_path = File.expand_path(File.join(current_path, "../../../atomic-client/client/libs/canvas/constants"))
17
+ server_app_path = File.expand_path(File.join(current_path, "../../../atomic-lti"))
18
+ project_root = File.expand_path(File.join(current_path, "../../"))
19
+ CanvasApi::Builder.build(project_root, client_app_path, server_app_path)
279
20
  end
280
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lms-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atomic Jolt
@@ -131,18 +131,6 @@ files:
131
131
  - lib/lms/version.rb
132
132
  - lib/lms_api.rb
133
133
  - lib/tasks/canvas_api.rake
134
- - lib/tasks/canvas_api/constant.erb
135
- - lib/tasks/canvas_api/constants.erb
136
- - lib/tasks/canvas_api/graphql_model.erb
137
- - lib/tasks/canvas_api/graphql_mutation.erb
138
- - lib/tasks/canvas_api/graphql_mutations.erb
139
- - lib/tasks/canvas_api/graphql_queries.erb
140
- - lib/tasks/canvas_api/graphql_query.erb
141
- - lib/tasks/canvas_api/graphql_types.erb
142
- - lib/tasks/canvas_api/js_url.erb
143
- - lib/tasks/canvas_api/js_urls.erb
144
- - lib/tasks/canvas_api/rb_url.erb
145
- - lib/tasks/canvas_api/rb_urls.erb
146
134
  homepage: https://github.com/atomicjolt/lms_api
147
135
  licenses:
148
136
  - MIT
@@ -1,10 +0,0 @@
1
- <% parameters_doc = parameters_doc(operation) -%>
2
- // <%=@summary%>
3
- // <%=@notes%>
4
- //
5
- // API Docs: https://canvas.instructure.com/doc/api/<%=@resource_name%>.html
6
- // API Url: <%=@api_url%>
7
- //
8
- // Example:<%=parameters_doc%>
9
- // return canvasRequest(<%=@nickname%>, {<%=@args.join(', ')%>}<%= parameters_doc.present? ? ", query" : ""%>);
10
- export const <%=@nickname.camelcase(:lower)%> = { type: '<%=@nickname.upcase%>', method: '<%=@method.downcase%>', key: '<%=reducer_key(@nickname, @args)%>', required: <%=js_args(@args)%> };
@@ -1,4 +0,0 @@
1
- //
2
- // <%= @description %>
3
- //
4
- <%=@content.join("\n\n")%>
@@ -1,7 +0,0 @@
1
- const <%=@model['id']%> = new GraphQLObjectType({
2
- name: "<%=@model['id']%>",
3
- description: "<%=@description%>. API Docs: https://canvas.instructure.com/doc/api/<%=@name%>.html",
4
- fields: function(){
5
- <%=fields(@model, @resource_name).join(",\n ")%>
6
- }
7
- });
File without changes
@@ -1,6 +0,0 @@
1
- const Mutuation = new GraphQLObjectType({
2
- name: 'Canvas Api Mutations',
3
- fields: {
4
- <%=@content.join("\n\n")%>
5
- }
6
- });
@@ -1,7 +0,0 @@
1
- const Query = new GraphQLObjectType({
2
- name: 'Canvas Api Queries',
3
- description: "Root of the Canvas Api",
4
- fields: () => ({
5
- <%=@content.join("\n\n")%>
6
- })
7
- });
@@ -1,7 +0,0 @@
1
- <%=@nickname%>: {
2
- type: new GraphQLList(Post),
3
- description: "<%=@description%>",
4
- resolve: function(context, args) {
5
- return canvasRequest(context, args, urls.<%=@nickname.upcase%>);
6
- }
7
- }
@@ -1,64 +0,0 @@
1
- import {
2
- GraphQLBoolean,
3
- GraphQLFloat,
4
- GraphQLID,
5
- GraphQLInt,
6
- GraphQLList,
7
- GraphQLNonNull,
8
- GraphQLObjectType,
9
- GraphQLSchema,
10
- GraphQLString
11
- } from 'graphql';
12
-
13
- import {
14
- connectionArgs,
15
- connectionDefinitions,
16
- connectionFromArray,
17
- fromGlobalId,
18
- globalIdField,
19
- mutationWithClientMutationId,
20
- nodeDefinitions,
21
- connectionFromPromisedArray
22
- } from 'graphql-relay';
23
-
24
- import {
25
- GraphQLLimitedString,
26
- GraphQLDateTime
27
- } from 'graphql-custom-types';
28
-
29
- /**
30
- * We get the node interface and field from the Relay library.
31
- *
32
- * The first method defines the way we resolve an ID to its object.
33
- * The second defines the way we resolve an object to its GraphQL type.
34
- */
35
- var {nodeInterface, nodeField} = nodeDefinitions(
36
- (globalId) => {
37
- var {type, id} = fromGlobalId(globalId);
38
- if (type === 'User') {
39
- return getUser(id);
40
- } else if (type === 'Widget') {
41
- return getWidget(id);
42
- } else {
43
- return null;
44
- }
45
- },
46
- (obj) => {
47
- if (obj instanceof User) {
48
- return userType;
49
- } else if (obj instanceof Widget) {
50
- return widgetType;
51
- } else {
52
- return null;
53
- }
54
- }
55
- );
56
-
57
- <%=@content.join("\n\n")%>
58
-
59
- const Schema = new GraphQLSchema({
60
- query: Query,
61
- mutation: Mutuation
62
- });
63
-
64
- export default Schema;
@@ -1 +0,0 @@
1
- <%=@nickname.upcase%>: { uri: function(args){return <%=js_url_parts(@api_url).join(' + ')%>}, method: "<%=@method%>", parameters: <%=@parameters.to_json%> }
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- <%=@content.join(",\n ")%>
3
- };
@@ -1 +0,0 @@
1
- "<%=@nickname.upcase%>" => { uri: ->(<%=@args.map{|a| "#{a}:"}.join(', ')%>) { "<%=ruby_api_url(@api_url)%>" }, method: "<%=@method%>", parameters: <%=@parameters%> }
@@ -1,5 +0,0 @@
1
- module LMS
2
- CANVAS_URLs = {
3
- <%=@content.join(",\n ")%>
4
- }
5
- end