d2l_sdk 0.1.10 → 0.1.11

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: 4f7d151a275583e45a75dadc1282f5c9d2c8dc09
4
- data.tar.gz: e74a5359b1aa0393f3c3d39a9078e6d5b1a52887
3
+ metadata.gz: 8baf58bbb4cf4601e5bdc09002d4aa4ef7fcc817
4
+ data.tar.gz: 03495e277c7f02dd515175c924f9aa7a4e784c33
5
5
  SHA512:
6
- metadata.gz: 8ce26d16bfdb64942f20473b6cdf86a1769dbd69ada54f6f7db1f385becefa2921db44ed3c3b96eb05301977a5fe8ad8c645dbcfca5a938b486a0af5f8ba3bdf
7
- data.tar.gz: a5be1c83743cbac6b44676e629323a327dced170235ec86926e3bceaedf84ef927bfdfb0ca985183698d09dfca5858da1e6425c51740f01d85411f7c076ebbf7
6
+ metadata.gz: 5dca7539939e209ee06f9d87cf3475aa3158df7c20d68aefb7665fb64946073625f5e153d03ad25de1a4ea3f2aedc228f2bc2b2803a4f2ad374f3f28f13750fb
7
+ data.tar.gz: 2d5c1653e2c2b66688862b5b257ef556706d59331d9a80638d023e64a415e51a8896803d96c2f253641d811513f06222e87de34d6d508bca952732612b93608f
@@ -0,0 +1,28 @@
1
+ engines:
2
+ rubocop:
3
+ enabled: true
4
+ reek:
5
+ enabled: false
6
+ duplication:
7
+ enabled: false
8
+ markdownlint:
9
+ enabled: false
10
+ fixme:
11
+ enabled: false
12
+ ratings:
13
+ paths:
14
+ - Gemfile.lock
15
+ - "**.rb"
16
+ - "**.md"
17
+
18
+ exclude_paths:
19
+ - "pkg/*"
20
+ - "old/*"
21
+ - "spec/*"
22
+ - "tests/*"
23
+ - "example_tests/*"
24
+ - "example_scripts/*"
25
+ - ".vscode/*"
26
+ - "backup/*"
27
+ - "bin/*"
28
+
@@ -0,0 +1,28 @@
1
+ speedups:
2
+ rescue_vs_respond_to: true
3
+ module_eval: true
4
+ shuffle_first_vs_sample: true
5
+ for_loop_vs_each: true
6
+ each_with_index_vs_while: false
7
+ map_flatten_vs_flat_map: true
8
+ reverse_each_vs_reverse_each: true
9
+ select_first_vs_detect: true
10
+ sort_vs_sort_by: true
11
+ fetch_with_argument_vs_block: true
12
+ keys_each_vs_each_key: true
13
+ hash_merge_bang_vs_hash_brackets: true
14
+ block_vs_symbol_to_proc: true
15
+ proc_call_vs_yield: true
16
+ gsub_vs_tr: true
17
+ select_last_vs_reverse_detect: true
18
+ getter_vs_attr_reader: true
19
+ setter_vs_attr_writer: true
20
+
21
+ exclude_paths:
22
+ - 'pkg/*'
23
+ - 'backup/*'
24
+ - 'bin/*'
25
+ - 'example_scripts/*'
26
+ - 'example_tests/*'
27
+ - 'old/*'
28
+
@@ -0,0 +1,67 @@
1
+
2
+ # SDK requires some methods to include higher amounts of parameters
3
+ Metrics/ParameterLists:
4
+ Enabled: true
5
+ Max: 12
6
+
7
+
8
+ Style/IndentationWidth:
9
+ Enabled: false
10
+
11
+ # Some of the methods are schema checkers and require
12
+ # extremely long schema declarations.
13
+ Metrics/LineLength:
14
+ Enabled: true
15
+ Max: 166
16
+
17
+ Metrics/MethodLength:
18
+ Enabled: true
19
+ Max: 90
20
+
21
+ # Due to the presence of global API keys, this is disabled.
22
+ Style/GlobalVars:
23
+ Enabled: false
24
+
25
+ # Indentation of comments.
26
+ Style/CommentIndentation:
27
+ Enabled: false
28
+
29
+ # ! Checks trailing blank lines and final newline.
30
+ Style/TrailingBlankLines:
31
+ Enabled: false
32
+
33
+ Style/EmptyLines:
34
+ Enabled: false
35
+
36
+ Style/StringLiters:
37
+ Enabled: false
38
+
39
+ Style/IndentHash:
40
+ Enabled: false
41
+
42
+ Style/AsciiComments:
43
+ Enabled: false
44
+
45
+ Style/DefWithParentheses:
46
+ Enabled: false
47
+
48
+ Style/AccessorMethodName:
49
+ Enabled: false
50
+
51
+ Style/FirstParameterIndentation:
52
+ Enabled: false
53
+
54
+ Style/IndentAssignment:
55
+ Enabled: false
56
+
57
+ Style/StringLiterals:
58
+ Enabled: false
59
+
60
+ Metrics/CyclomaticComplexity:
61
+ Enabled: false
62
+
63
+ Metrics/AbcSize:
64
+ Enabled: false
65
+
66
+ Metrics/PerceievedComplexity:
67
+ Enabled: false
@@ -0,0 +1,9 @@
1
+ // Place your settings in this file to overwrite default and user settings.
2
+ {
3
+ "todohighlight.keywords": [ "BROKEN:", "BUG:",{
4
+ "text": "REVIEW:", // custom text to be highlighted
5
+ "color": "#ffffff", // the text color, any css color identifier is valid
6
+ "backgroundColor": "#007777", // the text background color
7
+ "overviewRulerColor": "grey" //the color of the ruler mark on the scroll bar. use rgba() and define transparent colors to play well with other decorations.
8
+ } ]
9
+ }
data/Gemfile CHANGED
@@ -2,8 +2,9 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in d2l_api.gemspec
4
4
  gem "awesome_print"
5
- gem "rest-client"
6
5
  gem "json"
7
- gem "test-unit"
6
+ gem "rest-client"
8
7
  gem "colorize"
8
+ gem "test-unit"
9
9
  gem "json-schema"
10
+ gem 'zip'
data/README.md CHANGED
@@ -1,10 +1,11 @@
1
1
  # Ruby Valence SDK
2
- [![Gem Version](https://badge.fury.io/rb/d2l_sdk.svg)](https://badge.fury.io/rb/d2l_sdk)
2
+ [![Gem Version](https://badge.fury.io/rb/d2l_sdk.svg)](https://badge.fury.io/rb/d2l_sdk) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/dc8a7273c7d046c788ce312b0af45452)](https://www.codacy.com/app/Andrew-Kulpa/d2l_sdk?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=WIU/d2l_sdk&amp;utm_campaign=Badge_Grade) [![Code Climate](https://codeclimate.com/github/WIU/d2l_sdk/badges/gpa.svg)](https://codeclimate.com/github/WIU/d2l_sdk) <a href = "https://docs.google.com/presentation/d/1RjwFW2URxTPECRUJzhJBpF6IPyHj_rOp47_DP1qEg7E/edit#slide=id.p" ><img src="https://lh3.ggpht.com/9rwhkrvgiLhXVBeKtScn1jlenYk-4k3Wyqt1PsbUr9jhGew0Gt1w9xbwO4oePPd5yOM=w300" width="25"></a> <a href = "https://community.brightspace.com/tlc/wiki/illinois_connection_april_7_2017" > <img src="https://ltsa.sheridancollege.ca/learning-technology-portal/wp-content/uploads/sites/9/2014/10/brightspace-logo.jpeg" width="25"></a>
3
3
 
4
4
  The Ruby Valence SDK utilizes a CRUD based API that facilitates HTTP methods coinciding with Brightspace's routing table to perform common CRUD functions.
5
5
 
6
6
  You can:
7
- - create, get, update, and delete users, courses, semesters, org_units, and course_templates.
7
+
8
+ - create, get, update, and delete users, courses, semesters, organizational units, and course templates, etc.
8
9
  - search for users and courses based on their parameters, as opposed to the API's need for explicitly stated Usernames and Id's.
9
10
 
10
11
  The Valence sdk
@@ -13,6 +14,10 @@ The Valence sdk
13
14
 
14
15
  While not all functions have been implemented for the Learning Platform of the Valence sdk, all critical CRUD functionalities have been implemented.
15
16
 
17
+ ***NOTE:*** I have been previously asked if some functions could be implemented without requiring input that is a Hash conforming particularly to D2L's specified API. Unfortunately, there are more often times than not JSON blocks that need to be passed with over 10 values defined. In these cases, it is unfortunately rather ugly to call functions with all of these arguments. Some API calls have been done this way due to their relatively small number of required JSON parameter values. Others quite simply cannot be done this way.
18
+
19
+ If, at any time, you feel that you have an idea for a particular function of the SDK or just want to suggest something, please submit an Issue. Also, if there are any issues, for obvious reasons, please submit an Issue for this too. I greatly appreciate any feedback or contribution!!
20
+
16
21
  ### Index
17
22
  1. [Tech] (#tech)
18
23
  2. [Installation] (#installation)
@@ -99,96 +104,368 @@ $ gem cleanup d2l_sdk
99
104
  * `get_whoami`
100
105
  * `get_users(String org_defined_id, String username, String bookmark)`
101
106
  * `get_user_by_username(String username)`
102
- * `get_users_by_bookmark(String bookmark)`
103
107
  * `does_user_exist(String username)`
104
108
  * `multithreaded_user_search(String parameter, String search_string, Int num_of_threads, Boolean regex)`
105
- * `get_user_by_user_id(String user_id)`
106
- * `update_user_data(String user_id, JSON new_data)`
107
- * `delete_user_data(String user_id)`
109
+ * `get_user_by_user_id(Int user_id)`
110
+ * `update_user_data(Int user_id, JSON new_data)`
111
+ * `delete_user_data(Int user_id)`
112
+ * `get_user_activation_settings(Int user_id)`
113
+ * `update_user_activation_settings(Int user_id, boolean is_active)`
114
+ * **TODO:**`link_user_google_apps_account`
115
+ * `delete_subscription(int carrier_id, int message_type_id`
116
+ * `get_all_notification_carrier_channels`
117
+ * `subscribe_to_carrier_notification(int carrier_id, int message_type_id`
118
+ * `delete_user_password(Int user_id)`
119
+ * `reset_user_password(Int user_id)`
120
+ * `update_user_password(Int user_id, String new_password)`
121
+ * `get_all_user_roles`
122
+ * `get_user_role(int role_id)`
123
+ * `get_enrolled_roles_in_org_unit(Int org_unit_id)`
124
+ * **TODO:**`create_new_role_from_existing_role`
125
+ * `remove_current_user_profile_image`
126
+ * `remove_profile_image_by_profile_id(int profile_id)`
127
+ * `remove_profile_image_by_user_id(int user_id)`
128
+ * `get_current_user_profile`
129
+ * `get_current_user_profile_image(int thumbnail_size)`
130
+ * `get_user_profile_by_profile_id(optional int profile_id)`
131
+ * `get_profile_image(int profile_id, optional int thumbnail_size)`
132
+ * `get_user_profile_by_user_id(int user_id)`
133
+ * `get_user_profile_image(int user_id)`
134
+ * **TODO:**`update_current_user_profile_image`
135
+ * **TODO:**`update_profile_image_by_profile_id`
136
+ * **TODO:**`update_profile_image_by_user_id`
137
+ * **TODO:**`update_current_user_profile_data`
138
+ * **TODO:**`update_profile_by_profile_id`
139
+ * UNSTABLE:`get_lis_roles(optional String lis_urn)`
140
+ * UNSTABLE:`get_user_role_lis_mappings_by_urn(optional String lis_urn, optional int d2lid)`
141
+ * UNSTABLE:`get_user_role_lis_mappings_by_role(String role_id, optional int d2lid)`
142
+ * **TODO:**&&UNSTABLE:`map_user_role_to_lis_roles(String role_id, String[] mappings)`
143
+ * `get_current_user_locale_settings`
144
+ * `get_local_account_settings(int user_id)`
145
+ * `update_current_user_locale_account_settings(int locale_id)`
146
+ * `update_user_locale_account_settings(int user_id, int locale_id)`
147
+ * UNSTABLE:`get_all_locales(optional String bookmark)`
148
+ * UNSTABLE:`get_locale_properties(int locale_id)`
108
149
  2. Semesters
109
150
  * `create_semester_data(JSON semester_data)`
110
151
  * `get_all_semesters`
111
- * `get_semester_by_id(String org_unit_id)`
152
+ * `get_semester_by_id(Int org_unit_id)`
112
153
  * `add_course_to_semester(Int course_id, Int semester_id)`
113
154
  * `remove_course_from_semester(Int course_id, Int semester_id)`
114
155
  * `get_semester_by_name(String search_string)`
115
- * `update_semester_data(String org_unit_id, JSON semester_data)`
116
- * `recycle_semester_data(String org_unit_id)`
156
+ * `update_semester_data(Int org_unit_id, JSON semester_data)`
157
+ * `recycle_semester_data(Int org_unit_id)`
117
158
  * `recycle_semester_by_name(String name)`
118
159
  3. Courses
160
+ * `delete_course_by_id(int org_unit_id)`
161
+ * `get_parent_outypes_courses_schema_constraints`
162
+ * `get_course_by_id(Int org_unit_id)`
163
+ * `get_course_image(int org_unit_id, optional int width, optional int height)`
119
164
  * `create_course_data(JSON course_data)`
120
- * `get_org_department_classes(String org_unit_id)`
121
- * `get_course_by_id(String org_unit_id)`
165
+ * `update_course_data(int course_id, JSON course_data)`
166
+ * `update_course_image(int org_unit_id, String image_file_path)`
167
+ * `get_copy_job_request_status(int org_unit_id, String job_token)`
168
+ * `create_new_copy_job_request(int org_unit_it, JSON create_copy_job_request)`
169
+ * **TODO:**UNSTABLE:`get_copy_job_logs(optional String bookmark, optional int page_size, optional int source_org_unit_id, optional int destination_org_unit_id, optional String start_date, optional String end_date)`
170
+ * `get_course_import_job_request_status(int org_unit_id, string job_token)`
171
+ * `get_course_import_job_request_logs(int org_unit_id, String job_token, optional String bookmark)`
172
+ * `create_course_import_request(int org_unit_id, String file_path, optional String callback_url)`
173
+ * `get_org_department_classes(Int org_unit_id)`
122
174
  * `get_all_courses`
123
175
  * `get_courses_by_name(String org_unit_name)`
124
176
  * `get_courses_by_property_by_string(String property, String search_string)`
125
177
  * `get_courses_by_property_by_regex(String property, regular-expression regex)`
126
- * `update_course_data(String course_id, JSON new_data)`
127
- * `delete_course_by_id(String org_unit_id)`
128
178
  4. Course Templates
179
+ * `delete_course_template(Int org_unit_id)`
180
+ * `get_course_template(Int org_unit_id)`
181
+ * `get_course_templates_schema`
129
182
  * `create_course_template(JSON course_template_data)`
130
- * `get_course_template(String org_unit_id)`
183
+ * `update_course_template(Int org_unit_id, JSON new_data)`
131
184
  * `get_all_course_templates`
132
185
  * `get_course_template_by_name(String org_unit_name)`
133
- * `get_course_templates_by_schema`
134
- * `update_course_template(String org_unit_id, JSON new_data)`
135
- * `delete_course_template(String org_unit_id)`
136
186
  * `delete_all_course_templates_with_name(String name)`
187
+ * **TODO:**``delete_all_course_templates_by_regex(Regexp regex)``
137
188
  5. Org Units
138
- * `get_org_unit_descendants(String org_unit_id, Int ou_type_id)`
139
- * `get_paged_org_unit_descendants(String org_unit_id, Int ou_type_id, String bookmark)`
140
- * `get_org_unit_parents(String org_unit_id, Int ou_type_id)`
141
- * `add_parent_to_org_unit(Int parent_ou_id, Int child_ou_id)`
142
- * `get_org_unit_ancestors(String org_unit_id, Int ou_type_id)`
143
- * `get_org_unit_children(String org_unit_id, Int ou_type_id)`
144
- * `get_paged_org_unit_children(String org_unit_id, String bookmark)`
145
- * `get_org_unit_properties(String org_unit_id)`
189
+ * `get_organization_info`
146
190
  * `delete_relationship_of_child_with_parent(Int parent_ou_id, Int child_ou_id)`
147
191
  * `delete_relationship_of_parent_with_child(Int parent_ou_id, Int child_ou_id)`
148
- * `get_all_childless_org_units(String org_unit_type String org_unit_code, String org_unit_name, String bookmark)`
149
- * `get_all_orphans(String org_unit_type String org_unit_code, String org_unit_name, String bookmark)`
150
- * `add_child_org_unit(String org_unit_id, Int child_org_unit_id)`
151
- * `get_recycled_org_units(String bookmark)`
152
- * `recycle_org_unit(String org_unit_id)`
153
- * `delete_recycled_org_unit(String org_unit_id)`
154
- * `restore_recyced_org_unit(string org_unit_id)`
192
+ * `get_properties_of_all_org_units(optional String org_unit_type, optional String org_unit_code, optional String org_unit_name, optional String bookmark)`
193
+ * `get_org_unit_properties(Int org_unit_id)`
194
+ * `get_all_childless_org_units(optional String org_unit_type, optional String org_unit_code, optional String org_unit_name, optional String bookmark)`
195
+ * `get_all_orphans(optional String org_unit_type, optional String org_unit_code, optional String org_unit_name, optional String bookmark)`
196
+ * `get_org_unit_ancestors(Int org_unit_id, optional int ou_type_id)`
197
+ * `get_org_unit_children(Int org_unit_id, optional Int ou_type_id)`
198
+ * `get_paged_org_unit_children(Int org_unit_id, String bookmark)`
199
+ * `get_org_unit_descendants(Int org_unit_id, Int ou_type_id)`
200
+ * `get_paged_org_unit_descendants(Int org_unit_id, Int ou_type_id, String bookmark)`
201
+ * `get_org_unit_parents(Int org_unit_id, Int ou_type_id)`
155
202
  * `create_custom_org_unit(JSON org_unit_data)`
156
- * `update_org_unit(String org_unit_id, JSON org_unit_data)`
157
- * `get_organization_info`
158
- * `get_all_org_units_by_type_id(Int outype_id)`
159
- * `get_outype(Int outype_id)`
203
+ * `add_child_org_unit(Int org_unit_id, Int child_org_unit_id)`
204
+ * `add_parent_to_org_unit(Int parent_ou_id, Int child_ou_id)`
205
+ * `update_org_unit(Int org_unit_id, JSON org_unit_data)`
206
+ * **TODO:**`get_org_unit_color_scheme(Int org_unit_id)`
207
+ * **TODO:**`set_new_org_unit_color_scheme(Int org_unit_id, JSON color_scheme)`
208
+ * `delete_recycled_org_unit(Int org_unit_id)`
209
+ * `get_recycled_org_units(String bookmark)`
210
+ * `recycle_org_unit(Int org_unit_id)`
211
+ * `restore_recyced_org_unit(Int org_unit_id)`
212
+ * `delete_outype(string outype_id)`
160
213
  * `get_all_outypes`
214
+ * `get_outype(Int outype_id)`
215
+ * `get_department_outype`
216
+ * `get_semester_outype`
217
+ * `create_custom_outype(JSON create_org_unit_type_data)`
218
+ * `update_custom_outype(Int outype_id, JSON create_org_unit_type_data)`
219
+ * `get_all_org_units_by_type_id(Int outype_id)`
161
220
  6. Enrollments
162
- * `create_user_enrollment(JSON course_enrollment_data)`
163
- * `get_user_enrollment_data_by_org_unit(String user_id, String org_unit_id)`
164
- * `get_all_enrollments_of_user(String user_id, optional String org_unit_type_id, optional String role_d, optional String bookmark)`
165
- * `get_org_unit_enrollment_data_by_user(String org_unit_id, String user_id)`
166
- * `get_enrollments_details_of_current_user`
221
+ * `delete_user_enrollment(Int user_id, Int org_unit_id)`
222
+ * `get_enrolled_users_in_classlist(Int org_unit_id)`
167
223
  * `get_all_enrollments_of_current_user(optional String bookmark, optional String sort_by, optional boolean is_active, optional UTCDATETIME start_date_time, optional UTCDATETIME end_date_time, optional boolean can_access)`
168
- * `get_enrolled_users_in_classlist(String org_unit_id)`
169
- * `delete_user_enrollment(String user_id, String org_unit_id)`
224
+ * `get_enrollments_details_of_current_user(Int org_unit_id)`
225
+ * `get_org_unit_enrollments(Int org_unit_id, optional Int role_id, optional Int bookmark)`
226
+ * `get_org_unit_enrollment_data_by_user(Int org_unit_id, Int user_id)`
227
+ * `get_all_enrollments_of_user(Int user_id, optional Int org_unit_type_id, optional String role_d, optional String bookmark)`
228
+ * `create_user_enrollment(JSON course_enrollment_data)`
229
+ * `get_user_enrollment_data_by_org_unit(Int user_id, Int org_unit_id)`
230
+ * `delete_current_user_org_unit_pin(Int org_unit_id)`
231
+ * `pin_org_unit_for_current_context(Int org_unit_id)`
232
+ * `remove_auditee(Int auditor_id, Int auditee_id)`
233
+ * `get_auditee(Int auditee_id)`
234
+ * `get_auditor(Int auditor_id)`
235
+ * `get_auditor_auditees(Int auditor_id)`
236
+ * `add_auditor_auditee(Int auditor_id, Int auditee_id)`
170
237
  7. Groups
171
- * `delete_group_category(String org_unit_id, String group_category_id)`
172
- * `delete_group(String org_unit_id, String group_category_id, String group_id)`
173
- * `remove_user_from_group(String org_unit_id, String group_category_id, String group_id, String user_id)`
174
- * `get_all_org_unit_group_categories(String org_unit_id)`
175
- * `get_org_unit_group_category(String org_unit_id, String group_category_id)`
176
- * `get_all_group_category_groups(String org_unit_id, String group_category_id)`
177
- * `get_org_unit_group(String org_unit_id, String group_category_id, String group_id)`
178
- * `create_org_unit_group_category(String org_unit_id, JSON group_category_data)`
179
- * `create_org_unit_group(String org_unit_id String group_category_id, JSON group_data)`
180
- * `update_org_unit_group(String org_unit_id, String group_category_id, String group_id, JSON group_data)`
181
- * `enroll_user_in_group(String org_unit_id, String group_category_id, String group_id, String user_id)`
182
- * `update_org_unit_group_category(String org_unit_id, String group_category_id, JSON group_category_data)`
238
+ * `delete_group_category(Int org_unit_id, Int group_category_id)`
239
+ * `delete_group(Int org_unit_id, Int group_category_id, Int group_id)`
240
+ * `remove_user_from_group(Int org_unit_id, Int group_category_id, Int group_id, Int user_id)`
241
+ * `get_all_org_unit_group_categories(Int org_unit_id)`
242
+ * `get_org_unit_group_category(Int org_unit_id, Int group_category_id)`
243
+ * `get_all_group_category_groups(Int org_unit_id, Int group_category_id)`
244
+ * `get_org_unit_group(Int org_unit_id, Int group_category_id, Int group_id)`
245
+ * `create_org_unit_group_category(Int org_unit_id, JSON group_category_data)`
246
+ * `create_org_unit_group(Int org_unit_id, Int group_category_id, JSON group_data)`
247
+ * `update_org_unit_group(Int org_unit_id, Int group_category_id, Int group_id, JSON group_data)`
248
+ * `enroll_user_in_group(Int org_unit_id, Int group_category_id, Int group_id, Int user_id)`
249
+ * `update_org_unit_group_category(Int org_unit_id, Int group_category_id, JSON group_category_data)`
250
+ * `is_group_category_locker_set_up(Int org_unit_id, Int group_category_id)`
183
251
  8. Sections
184
- * `delete_section(String org_unit_id, String section_id)`
185
- * `get_org_unit_sections(String org_unit_id)`
186
- * `get_org_unit_section_property_data(String org_unit_id)`
187
- * `get_section_data(String org_unit_id, String section_id)`
188
- * `create_org_unit_section(String org_unit_id JSON section_data)`
189
- * `enroll_user_in_org_section(String org_unit_id, String section_id, JSON section_data)`
190
- * `update_org_unit_section_properties(String org_unit_id, JSON section_property_data)`
191
- * `update_org_unit_section_info(String org_unit_id, String section_id, JSON section_data)`
252
+ * `delete_section(Int org_unit_id, Int section_id)`
253
+ * `get_org_unit_sections(Int org_unit_id)`
254
+ * `get_org_unit_section_property_data(Int org_unit_id)`
255
+ * `get_section_data(Int org_unit_id, Int section_id)`
256
+ * `create_org_unit_section(Int org_unit_id JSON section_data)`
257
+ * `enroll_user_in_org_section(Int org_unit_id, Int section_id, JSON section_data)`
258
+ * `initialize_org_unit_sections(Int org_unit_id, JSON section_property_data)`
259
+ * `update_org_unit_section_properties(Int org_unit_id, JSON section_property_data)`
260
+ * `update_org_unit_section_info(Int org_unit_id, Int section_id, JSON section_data)`
261
+ * `create_section_code(String star_number, String course_data)`
262
+ * `get_section_by_section_code(String code)`
263
+ * `get_section_id_by_section_code(String code)`
264
+ * `get_section_data_by_code(String code)`
265
+ 9. **TODO:** Course Content
266
+ * `delete_module(Int org_unit_id, Int module_id)`
267
+ * `delete_topic(Int org_unit_id, Int topic_id)`
268
+ * `get_module(Int org_unit_id, Int module_id)`
269
+ * `get_module_structure(Int org_unit_id, Int module_id)`
270
+ * `get_root_modules(Int org_unit_id)`
271
+ * `get_topic(Int org_unit_id, Int topic_id)`
272
+ * `get_topic_file(Int org_unit_id, Int topic_id, optional Bool stream)`
273
+ * **TODO:**`add_child_to_module(Int org_unit_id, Int module_id, optional JSON child)`
274
+ * `create_root_module(Int org_unit_id, JSON content_module)`
275
+ * `update_module(Int org_unit_id, Int module_id, JSON content_module)`
276
+ * `update_topic(Int org_unit_id, Int topic_id, JSON content_topic)`
277
+ * `get_course_overview(Int org_unit_id)`
278
+ * `get_course_overview_file_attachment(Int org_unit_id)`
279
+ * `delete_isbn_association(Int org_unit_id, String isbn)`
280
+ * `get_org_units_of_isbn(String isbn)`
281
+ * `get_isbns_of_org_unit(Int org_unit_id)`
282
+ * `get_isbn_org_unit_association(Int org_unit_id, String isbn)`
283
+ * `create_isbn_org_unit_association(Int org_unit_id, JSON isbn_association_data)`
284
+ * `get_user_overdue_items(Int org_unit_ids_CSV, optional boolean completion, optional String start_date_time, optional end_date_time)`
285
+ * `get_current_user_still_due_items(Int org_unit_ids_CSV, optional boolean completion, optional String start_date_time, optional end_date_time)`
286
+ * `get_current_user_organized_scheduled_items(Int org_unit_ids_CSV, optional boolean completion, optional String start_date_time, optional end_date_time)`
287
+ * `get_current_user_scheduled_item_count(Int org_unit_ids_CSV, optional boolean completion, optional String start_date_time, optional end_date_time)`
288
+ * `get_current_user_completed_scheduled_items(Int org_unit_ids_CSV, optional String completion_from_date_time, optional completed_to_date_time)`
289
+ * `get_current_user_completed_scheduled_items_with_due_date(Int org_unit_ids_CSV, optional String completion_from_date_time, optional completed_to_date_time)`
290
+ * `get_current_user_scheduled_items(Int org_unit_ids_CSV, optional boolean completion, optional String start_date_time, optional end_date_time)`
291
+ * `get_current_user_org_unit_scheduled_item_count(Int org_unit_ids_CSV, optional boolean completion, optional String start_date_time, optional end_date_time)`
292
+ * `get_user_overdue_items_count(Int user_id, Int org_unit_ids_CSV)`
293
+ * `get_current_user_overdue_items_count(Int org_unit_ids_CSV)`
294
+ * `get_bookmarked_topics(Int org_unit_id)`
295
+ * `get_most_recently_visited_topics(Int org_unit_id)`
296
+ * `get_org_unit_toc(Int org_unit_id, optional boolean ignore_module_data_restrictions)`
297
+ * `get_current_user_progress(Int org_unit_id, String level)`
298
+ * **TODO:**UNSTABLE:`get_progress_of_users`
299
+ * **TODO:**UNSTABLE:`get_user_progress`
300
+ * **TODO:**UNSTABLE:`update_user_progress`
301
+ 10. Course Templates
302
+ * `delete_course_template(Int org_unit_id)`
303
+ * `get_course_template(Int org_unit_id)`
304
+ * `get_course_templates_schema`
305
+ * `create_course_template(JSON course_template_data)`
306
+ * `update_course_template(Int org_unit_id, JSON course_template_data)`
307
+ * `get_all_course_templates`
308
+ * `get_course_template_by_name(String org_unit_name)`
309
+ * `delete_all_course_templates_with_name(String name)`
310
+ * **TODO:**`delete_all_course_templates_by_regex(regex)`
311
+ 11. Datahub
312
+ * `get_all_data_sets`
313
+ * `get_data_set(String data_set_id)`
314
+ * `create_export_job(JSON create_export_job_data)`
315
+ * `get_all_export_jobs(optional String bookmark)`
316
+ * `get_data_export_job(String export_job_id)`
317
+ * `get_job_status_code(String export_job_id)`
318
+ * `download_job_csv(String export_job_id)`
319
+ * `unzip(String file_path, regex csv_filter)`
320
+ * `get_current_courses(String csv_fname)`
321
+ * WIU_filter_formatted_via_instr:`filter_formatted_enrollments(String csv_fname, optional regex regex_filter, String instr_fname)`
322
+ 12. Demographics
323
+ * `delete_user_demographics(Int user_id, optional String entry_ids)`
324
+ * `get_all_demographics_by_org_unit(Int user_id, optional String field_ids, optional String role_ids, optional Int user_ids, optional String search, optional String bookmark)`
325
+ * `get_all_demographics_by_org_unit_by_user(Int org_unit_id, Int user_id, optional String field_ids)`
326
+ * `get_all_demographics(Int user_id, optional String field_ids, optional String role_ids, optional Int user_ids, optional String search, optional String bookmark)`
327
+ * `get_user_demographics(Int user_id, optional String field_ids, optional String bookmark)`
328
+ * `update_user_demographics(Int user_id, JSON demographics_entry_data)`
329
+ * `delete_demographics_field(String field_id)`
330
+ * `get_all_demographic_fields(optional String bookmark)`
331
+ * `get_demographic_field(String field_id)`
332
+ * `create_demographic_field(JSON demographics_field)`
333
+ * `update_demographics_field(String field_id, JSON demographics_field)`
334
+ * `get_all_demographic_types(optional String bookmark)`
335
+ * `get_demographic_type(String data_type_id)`
336
+ 13. Discussions
337
+ * `delete_org_unit_discussion(Int org_unit_id, Int forum_id)`
338
+ * `get_org_unit_discussions(Int org_unit_id)`
339
+ * `get_org_unit_discussion(Int org_unit_id, Int forum_id)`
340
+ * `create_org_unit_discussion(Int org_unit_id, JSON forum_data)`
341
+ * `update_forum(Int org_unit_id, Int forum_id, JSON forum_data)`
342
+ * `delete_topic(Int org_unit_id, Int forum_id, Int topic_id)`
343
+ * `delete_topic_group_restriction(Int org_unit_id, Int forum_id, Int topic_id)`
344
+ * `get_forum_topics(Int org_unit_id, Int forum_id)`
345
+ * `get_forum_topic(Int org_unit_id, Int forum_id, Int topic_id)`
346
+ * `get_forum_topic_group_restrictions(Int org_unit_id, Int forum_id, Int topic_id)`
347
+ * `create_forum_topic(Int org_unit_id, Int forum_id, JSON create_topic_data)`
348
+ * `update_forum_topic(Int org_unit_id, Int forum_id, Int topic_id, JSON create_topic_data)`
349
+ * `add_group_to_group_restriction_list(Int org_unit_id, Int forum_id, Int topic_id, Int group_id)`
350
+ * `delete_topic_post(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
351
+ * `get_forum_topic_posts(Int org_unit_id, Int forum_id, Int topic_id, optional Int page_size, optional Int page_number, optional boolean threads_only, optional Int thread_id, optional String sort)`
352
+ * `get_forum_topic_post(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
353
+ * `get_forum_topic_post_approval_status(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
354
+ * `get_forum_topic_post_flagged_status(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
355
+ * `get_forum_topic_post_rating_data(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
356
+ * `get_current_user_forum_topic_post_rating_data(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
357
+ * `get_forum_topic_post_read_status(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
358
+ * `get_forum_topic_post_vote_data(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
359
+ * `get_current_user_forum_topic_post_vote_data(Int org_unit_id, Int forum_id, Int topic_id, Int post_id)`
360
+ * `create_topic_post(Int org_unit_id, Int forum_id, Int topic_id, JSON create_post_data, optional String[] files)`
361
+ * `update_topic_post(Int org_unit_id, Int forum_id, Int topic_id, Int post_id, JSON create_post_data)`
362
+ * `update_topic_post_approval_status(Int org_unit_id, Int forum_id, Int topic_id, Int post_id, boolean is_approved)`
363
+ * `update_topic_post_flagged_status(Int org_unit_id, Int forum_id, Int topic_id, Int post_id, boolean is_flagged)`
364
+ * `update_topic_post_current_user_rating(Int org_unit_id, Int forum_id, Int topic_id, Int post_id, Int rating)`
365
+ * `update_topic_post_read_status(Int org_unit_id, Int forum_id, Int topic_id, Int post_id, boolean is_read)`
366
+ * `update_topic_post_current_user_vote_data(Int org_unit_id, Int forum_id, Int topic_id, Int post_id, String vote)`
367
+ 14. Dropbox
368
+ * `get_org_unit_dropbox_folders(Int org_unit_id, optional boolean only_current_students_and_groups)`
369
+ * `get_dropbox_folder(Int org_unit_id, Int folder_id)`
370
+ * `get_dropbox_file_attachment(Int org_unit_id, Int folder_id, Int file_id)`
371
+ * `create_dropbox_folder(Int org_unit_id, JSON dropbox_folder_update_data)`
372
+ * `update_dropbox_folder(Int org_unit_id, JSON dropbox_folder_update_data)`
373
+ * `get_current_user_assessable_folders(optional int type)`
374
+ * `get_dropbox_folder_submissions(Int org_unit_id, Int folder_id, optional boolean active_only)`
375
+ * `get_dropbox_submission_file(Int org_unit_id, Int folder_id, Int submission_id, Int file_id)`
376
+ * TODO:`post_new_group_submission(???)`
377
+ * TODO:`post_current_user_new_submission(???)`
378
+ * `mark_file_as_read(Int org_unit_id, Int folder_id, Int submission_id)`
379
+ * `remove_feedback_entry_file_attachment(Int org_unit_id, Int folder_id, entity_type, Int entity_id, Int file_id)`
380
+ * `get_dropbox_folder_entity_feedback_entry(Int org_unit_id, Int folder_id, Int entity_id)`
381
+ * `get_feedback_entry_file_attachment(Int org_unit_id, Int folder_id, Int entity_id, Int file_id)`
382
+ * TODO:`post_feedback_without_attachment(Int org_unit_id, Int folder_id, Int entity_id, entity_type, ??? dropbox_feedback)`
383
+ * TODO:`attach_file_to_feedback_entry(???)`
384
+ * TODO:`initiate_feedback_entry_file_upload(???)`
385
+ * `get_dropbox_folder_categories(Int org_unit_id)`
386
+ * `get_dropbox_folder_category_info(Int org_unit_id, Int category_id)`
387
+ * `update_dropbox_folder_category(Int org_unit_id, Int category_id, Int dropbox_category_id, String dropbox_category_name)`
388
+ 15. Grades
389
+ * `delete_org_unit_grade_object(Int org_unit_id, Int grade_object_id)`
390
+ * `get_org_unit_grades(Int org_unit_id)`
391
+ * `get_org_unit_grade_object(Int org_unit_id, Int grade_object_id)`
392
+ * TODO:`create_org_unit_grade_object(Int org_unit_id, JSON grade_object, ?? type)`
393
+ * TODO:`update_org_unit_grade_object(Int org_unit_id, JSON grade_object)`
394
+ * `delete_org_unit_grade_category(Int org_unit_id, Int category_id)`
395
+ * `get_org_unit_grade_categories(Int org_unit_id)`
396
+ * `get_org_unit_grade_category(Int org_unit_id, Int category_id)`
397
+ * `create_org_unit_grade_category(Int org_unit_id, JSON grade_category_data)`
398
+ * `get_org_unit_grade_schemes(Int org_unit_id)`
399
+ * `get_org_unit_grade_scheme(Int org_unit_id, Int grade_scheme_id)`
400
+ * `get_current_user_final_grade(Int org_unit_id)`
401
+ * TODO:`get_current_user_final_grades(Int org_unit_ids_csv)`
402
+ * `get_user_final_grade(Int org_unit_id, Int user_id, optional String grade_type)`
403
+ * `get_all_grade_object_grades(Int org_unit_id, Int grade_object_id, optional String sort , optional Int page_size, optional boolean is_graded, optional String search_text)`
404
+ * `get_user_grade_object_grade(Int org_unit_id, Int grade_object_id, Int user_id)`
405
+ * `get_current_user_org_unit_grades(Int org_unit_id)`
406
+ * `get_user_org_unit_grades(Int org_unit_id, Int user_id)`
407
+ * `delete_course_completion(Int org_unit_id, Int completion_id)`
408
+ * `get_org_unit_completion_records(Int org_unit_id, optional Int user_id, optional String start_expiry , optional String end_expiry , optional String bookmark)`
409
+ * `get_user_completion_records(user_id, optional String start_expiry , optional String end_expiry , optional String bookmark)`
410
+ * TODO:`create_course_completion(Int org_unit_id, JSON course_completion_data)`
411
+ * TODO:`update_course_completion(Int org_unit_id, Int completion_id, JSON course_completion_data)`
412
+ * `get_grade_item_statistics(Int org_unit_id, Int grade_object_id)`
413
+ * `get_org_unit_grade_config(Int org_unit_id)`
414
+ * TODO:`update_org_unit_grade_config(Int org_unit_id, ??? grade_setup_info)`
415
+ * `get_grade_exempt_users(Int org_unit_id, Int grade_object_id)`
416
+ * `get_is_user_exempt(Int org_unit_id, Int grade_object_id, Int user_id)`
417
+ * `exempt_user_from_grade(Int org_unit_id, Int grade_object_id, Int user_id)`
418
+ * `remove_user_grade_exemption(Int org_unit_id, Int grade_object_id, Int user_id)`
419
+ * `get_user_grade_exemptions(Int org_unit_id, Int user_id)`
420
+ * TODO:`bulk_grade_exemption_update(Int org_unit_id, Int user_id, JSON bulk_grade_exemption_update_block)`
421
+ * TODO:UNSTABLE:`get_org_unit_rubrics`
422
+ * TODO:UNSTABLE:`get_org_unit_assessment`
423
+ * TODO:UNSTABLE:`update_org_unit_assessment`
424
+ 16. **TODO:** Lockers
425
+ 17. **TODO:** Logging
426
+ 18. LTI
427
+ * `delete_lti_link(Int lti_link_id)`
428
+ * `get_org_unit_lti_links(Int org_unit_id)`
429
+ * `get_lti_link_info(Int org_unit_id, Int lti_link_id)`
430
+ * `register_lti_link(Int org_unit_id, JSON create_lti_link_data)`
431
+ * `create_lti_quicklink(Int org_unit_id, Int lti_link_id)`
432
+ * `update_lti_link(Int lti_link_id, JSON create_lti_link_data)`
433
+ * `delete_LTI_tool_provider_registration(Int tp_id)`
434
+ * `get_org_unit_lti_tool_providers(Int org_unit_id)`
435
+ * `get_lti_tool_provider_information(Int org_unit_id, Int tp_id)`
436
+ * `register_lti_tool_provider(Int org_unit_id, JSON create_lti_provider_data)`
437
+ * `update_lti_tool_provider(Int tp_id, JSON create_lti_provider_data)`
438
+ 19. News
439
+ * `delete_news_item(Int org_unit_id, Int news_item_id)`
440
+ * `delete_news_item_attachment(Int org_unit_id, Int news_item_id, Int file_id)`
441
+ * `get_current_user_feed(optional String since , optional String until )`
442
+ * `get_org_unit_news_items(Int org_unit_id, optional String since )`
443
+ * UNSTABLE:`get_deleted_news(Int org_unit_id, optional boolean global)`
444
+ * `get_org_unit_news_item(Int org_unit_id, Int news_item_id)`
445
+ * `get_news_item_attachment(Int org_unit_id, Int news_item_id, Int file_id)`
446
+ * TODO:`create_news_item(Int org_unit_id, JSON news_item_data, optional String[] attachments)`
447
+ * UNSTABLE:`restore_news_item(Int org_unit_id, Int news_item_id)`
448
+ * TODO:`add_news_item_attachment(Int org_unit_id, Int news_item_id, JSON attachment_data)`
449
+ * `hide_news_item(Int org_unit_id, Int news_item_id)`
450
+ * `publish_draft_news_item(Int org_unit_id, Int news_item_id)`
451
+ * `unhide_news_item(Int org_unit_id, Int news_item_id)`
452
+ * TODO:`update_news_item(Int org_unit_id, Int news_item_id, JSON news_item_data)`
453
+ 20. **TODO::UNSTABLE:** Permissions
454
+ 21. Calendar
455
+ * `delete_org_unit_calendar_event(Int org_unit_id, Int event_id)`
456
+ * `get_org_unit_calendar_event(Int org_unit_id, Int event_id)`
457
+ * `get_current_user_calendar_events_by_org_unit(Int org_unit_id, optional boolean associated_events_only)`
458
+ * `get_current_user_calendar_events_by_org_units(optional boolean association, optional boolean event_type, Int org_unit_ids_csv, UTCDateTime start_date_time, UTCDateTime end_date_time)`
459
+ * `get_current_user_events_by_org_unit(optional boolean association, optional boolean event_type, UTCDateTime start_date_time, UTCDateTime end_date_time)`
460
+ * `get_calendar_event_count(optional boolean association, optional boolean event_type, org_unit_ids_csv, UTCDateTime start_date_time, UTCDateTime end_date_time)`
461
+ * `get_org_unit_calendar_event_count(optional boolean association, optional boolean event_type, UTCDateTime start_date_time, UTCDateTime end_date_time)`
462
+ * `get_paged_calendar_events_by_org_units(Int org_unit_ids_csv, UTCDateTime start_date_time, UTCDateTime end_date_time, optional String bookmark)`
463
+ * `get_user_calendar_events(Int org_unit_id, Int user_id, UTCDateTime start_date_time, UTCDateTime end_date_time, optional String bookmark)`
464
+ * `create_event(Int org_unit_id, JSON event_data)`
465
+ * `update_event(Int org_unit_id, Int event_id, JSON event_data)`
466
+ 22. ???
467
+ 23. Profit
468
+
192
469
 
193
470
  ## Contributing
194
471
  1. Fork it!
@@ -201,6 +478,7 @@ $ gem cleanup d2l_sdk
201
478
  * December 1, 2016: Project began
202
479
  * December 20, 2016: Release version 0.1.2 published to RubyGems.org as `d2l_api`
203
480
  * March 7, 2017: Release version 0.1.7 published to RubyGems.org as `d2l_sdk`
481
+ * April 7, 2017: Presentation at Brightspace Illinois Connection on the SDK.
204
482
 
205
483
  ## Credits
206
484
  Matt Mencel: Assigning and assisting in this project.