d2l_sdk 0.1.9 → 0.1.10

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: 88964b8ade0908b80eda0463f78cc82a18ca4c6a
4
- data.tar.gz: 855c097579e67071038f779cee78e7b82daafddb
3
+ metadata.gz: 4f7d151a275583e45a75dadc1282f5c9d2c8dc09
4
+ data.tar.gz: e74a5359b1aa0393f3c3d39a9078e6d5b1a52887
5
5
  SHA512:
6
- metadata.gz: f7c1ccbd845a45c2f51680e603309f5b9a72f0572b32213c6a2350012fa29331f9fed7708ea494b73df3bd356472489522b7275d06f26d863afd4006e5c0ef0d
7
- data.tar.gz: d8476be7c9e325f11421bb91ff2cb11f1fe4622c11f026c93f5b94ece96020cf08694f30fc12f9ef2368c10ec6b3bf216a0ca8838f751d57fe9b9cebe1cc1ffd
6
+ metadata.gz: 8ce26d16bfdb64942f20473b6cdf86a1769dbd69ada54f6f7db1f385becefa2921db44ed3c3b96eb05301977a5fe8ad8c645dbcfca5a938b486a0af5f8ba3bdf
7
+ data.tar.gz: a5be1c83743cbac6b44676e629323a327dced170235ec86926e3bceaedf84ef927bfdfb0ca985183698d09dfca5858da1e6425c51740f01d85411f7c076ebbf7
@@ -0,0 +1,65 @@
1
+ require 'd2l_sdk'
2
+
3
+ # Setup vars for username and last name
4
+ # retrieved via rundeck args passed to this script.
5
+ @username = ARGV[0]
6
+ @new_lastname = ARGV[1]
7
+ @debug = false
8
+
9
+ # Check that the user exists.
10
+ # If the username doesn't exist, then raise.
11
+ # Why: You can't change a user's profile that you can't reference.
12
+ if !does_user_exist(@username)
13
+ raise ArgumentError, "ARGV[0], '#{@username}', is not a username that exists."
14
+ end
15
+
16
+ # Already asserted that the user exists. Retrieve Hash of the user's profile.
17
+ user_profile = get_user_by_username(@username)
18
+
19
+ # debug code
20
+ puts "Old User Data: \n" if @debug
21
+ ap user_profile if @debug
22
+
23
+ # Change the previous d2l user data and create a new json-formatted
24
+ # payload. The payload is merged! with a skeleton payload, but it as
25
+ # each parameter is defined, this will not affect its usage.
26
+ old_lastname = user_profile["LastName"]
27
+ user_profile["LastName"] = @new_lastname # update the user's lastname
28
+ user_profile["UserName"].sub! old_lastname, @new_lastname # update the user's username
29
+ unless user_profile["ExternalEmail"].nil?
30
+ user_profile["ExternalEmail"].sub! old_lastname, @new_lastname # update the user's email
31
+ end
32
+
33
+ # Check if there already is a user created with the +new username+
34
+ if does_user_exist(user_profile["UserName"])
35
+ raise RuntimeError, "A user already exists with the new username, '#{user_profile["UserName"]}'."
36
+ end
37
+
38
+ # Pull in data only necessary for user_data in +update+ form.
39
+ new_user_data =
40
+ {
41
+ 'OrgDefinedId' => user_profile["OrgDefinedId"],
42
+ 'FirstName' => user_profile["FirstName"],
43
+ 'MiddleName' => user_profile["MiddleName"],
44
+ 'LastName' => user_profile["LastName"], # Changed previously
45
+ 'ExternalEmail' => user_profile["ExternalEmail"],
46
+ 'UserName' => user_profile["UserName"],
47
+ 'Activation' =>
48
+ {
49
+ 'IsActive' => user_profile["Activation"]["IsActive"]
50
+ }
51
+ }
52
+
53
+ # Debug code
54
+ puts "New User Data: \n" if @debug
55
+ ap new_user_data if @debug
56
+
57
+ # Finally update the user's UserData
58
+ update_user_data(user_profile["UserId"], new_user_data)
59
+
60
+ # Check if the user was properly created.
61
+ if !does_user_exist(user_profile["UserName"])
62
+ raise "The user's last name was unsuccessfully updated."
63
+ else
64
+ puts "The username was successfully updated to: '#{user_profile["UserName"]}'."
65
+ end
@@ -0,0 +1,264 @@
1
+ require_relative 'requests'
2
+ require 'json-schema'
3
+
4
+ ##################
5
+ ## Calendar ######
6
+ ##################
7
+ # REVIEW: Remove a calendar event from a particular org unit.
8
+ # Returns: ?
9
+ def delete_org_unit_calendar_event(org_unit_id, event_id)
10
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/event/#{event_id}"
11
+ _delete(path)
12
+ end
13
+
14
+ # REVIEW: Retrieve a calendar event from a particular org unit.
15
+ # Returns: a EventDataInfo JSON data block
16
+ def get_org_unit_calendar_event(org_unit_id, event_id)
17
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/event/#{event_id}"
18
+ _get(path)
19
+ end
20
+
21
+ # REVIEW: Retrieve all the calendar events for the calling user,
22
+ # within the provided org unit context.
23
+ # RETURNS: This action returns a JSON array of EventDataInfo data blocks.
24
+ def get_current_user_calendar_events_by_org_unit(org_unit_id, associated_events_only = nil)
25
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/events/"
26
+ path += "?associatedEventsOnly=#{associated_events_only}" unless associated_events_only.nil?
27
+ _get(path)
28
+ end
29
+
30
+ # REVIEW: Retrieve the calling user’s calendar events, within a
31
+ # number of org units (see query parameter)
32
+ # RETURNS: An ObjectListPage JSON block containing a list of EventDataInfo JSON data blocks.
33
+ def get_current_user_calendar_events_by_org_units(association = nil, event_type = nil,
34
+ org_unit_ids_csv, start_date_time,
35
+ end_date_time)
36
+ path = "/d2l/api/le/#{$le_ver}/calendar/events/myEvents/"
37
+ path += "?orgUnitIdsCSV=#{org_unit_ids_csv}"
38
+ path += "&startDateTime=#{start_date_time}"
39
+ path += "&endDateTime=#{end_date_time}"
40
+ path += "&association=#{association}" unless association.nil?
41
+ path += "&eventType=#{event_type}" unless event_type.nil?
42
+ _get(path)
43
+ end
44
+
45
+ # REVIEW: Retrieve the calling user’s events for a particular org unit.
46
+ # RETURNS: An ObjectListPage JSON block containing a list of EventDataInfo JSON data blocks.
47
+ def get_current_user_events_by_org_unit(association = nil, event_type = nil,
48
+ start_date_time, end_date_time)
49
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/events/myEvents/"
50
+ path += "&startDateTime=#{start_date_time}"
51
+ path += "&endDateTime=#{end_date_time}"
52
+ path += "&association=#{association}" unless association.nil?
53
+ path += "&eventType=#{event_type}" unless event_type.nil?
54
+ _get(path)
55
+ end
56
+
57
+ # REVIEW: Retrieve a count of calling user’s calendar events, within a number of org units
58
+ # RETURNS: An ObjectListPage JSON block containing a list of EventCountInfo JSON data blocks.
59
+ def get_calendar_event_count(association = nil, event_type = nil, org_unit_ids_csv,
60
+ start_date_time, end_date_time)
61
+ path = "/d2l/api/le/#{$le_ver}/calendar/events/myEvents/itemCounts/"
62
+ path += "?orgUnitIdsCSV=#{org_unit_ids_csv}"
63
+ path += "&startDateTime=#{start_date_time}"
64
+ path += "&endDateTime=#{end_date_time}"
65
+ path += "&association=#{association}" unless association.nil?
66
+ path += "&eventType=#{event_type}" unless event_type.nil?
67
+ _get(path)
68
+ end
69
+
70
+ # REVIEW: Retrieve a count of calling user’s calendar events, within the
71
+ # provided org unit context.
72
+ # RETURNS: An EventCountInfo JSON data block.
73
+ def get_org_unit_calendar_event_count(association = nil, event_type = nil,
74
+ start_date_time, end_date_time)
75
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/events/myEvents/itemCounts/"
76
+ path += "?startDateTime=#{start_date_time}"
77
+ path += "&endDateTime=#{end_date_time}"
78
+ path += "&association=#{association}" unless association.nil?
79
+ path += "&eventType=#{event_type}" unless event_type.nil?
80
+ _get(path)
81
+ end
82
+
83
+ # REVIEW: Retrieve all the calendar events for the calling user, within a number of org units.
84
+ # RETURNS: a paged result set containing the resulting EventDataInfo JSON data blocks
85
+ def get_paged_calendar_events_by_org_units(org_unit_ids_csv, start_date_time,
86
+ end_date_time, bookmark = '')
87
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/events/orgunits/"
88
+ path += "?orgUnitIdsCSV=#{org_unit_ids_csv}"
89
+ path += "&startDateTime=#{start_date_time}"
90
+ path += "&endDateTime=#{end_date_time}"
91
+ path += "&bookmark=#{bookmark}" unless bookmark == ''
92
+ _get(path)
93
+ end
94
+
95
+ # REVIEW: Retrieve all the calendar events for a specified user’s explicit
96
+ # enrollments within the organization containing the specified org unit.
97
+ # RETURNS: a paged result set containing the resulting EventDataInfo JSON data blocks
98
+ def get_user_calendar_events(org_unit_id, user_id, start_date_time, end_date_time,
99
+ bookmark = '')
100
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/events/user/"
101
+ path += "?userId=#{user_id}"
102
+ path += "&startDateTime=#{start_date_time}"
103
+ path += "&endDateTime=#{end_date_time}"
104
+ path += "&bookmark=#{bookmark}" unless bookmark == ''
105
+ _get(path)
106
+ # RETURNS: a paged result set containing the resulting EventDataInfo JSON data blocks
107
+ end
108
+
109
+ # Check the validity of the Calendar.EventData that is passed as a payload
110
+ def check_calendar_event_data_validity(event_data)
111
+ schema =
112
+ {
113
+ 'type' => 'object',
114
+ 'required' => %w(Title Description StartDateTime EndDateTime StartDay
115
+ EndDay GroupId RecurrenceInfo HasVisibilityRestrictions
116
+ VisibilityRestrictions CalendarEventViewUrl),
117
+ 'properties' =>
118
+ {
119
+ 'Title' => { 'type' => 'integer' },
120
+ "Description" => { 'type' => 'integer' },
121
+ "StartDateTime" => { 'type' => %w(string nil) }, # UTCDateTime || nil
122
+ "EndDateTime" => { 'type' => %w(string nil) }, # UTCDateTime || nil
123
+ "StartDay" => { 'type' => %w(string nil) }, # LocalDateTime || nil
124
+ "EndDay" => { 'type' => %w(string nil) }, # LocalDateTime || nil
125
+ "GroupId" => { 'type' => %w(integer nil) }, # D2LID || nil
126
+ "RecurrenceInfo" =>
127
+ {
128
+ 'type' => 'object',
129
+ 'required' => %w(RepeatType RepeatEvery RepeatOnInfo RepeatUntilDate),
130
+ 'properties' =>
131
+ {
132
+ "RepeatType" => { 'type' => 'integer' }, # number -- repeat type
133
+ "RepeatEvery" => { 'type' => 'integer' }, # number
134
+ "RepeatOnInfo" => # Calendar.RepeatOnInfo
135
+ {
136
+ 'type' => 'object',
137
+ 'required' => %w(Monday Tuesday Wednesday Thursday Friday
138
+ Saturday Sunday),
139
+ 'properties' =>
140
+ {
141
+ "Monday" => { 'type' => 'boolean' }, # boolean
142
+ "Tuesday" => { 'type' => 'boolean' }, # boolean
143
+ "Wednesday" => { 'type' => 'boolean' }, # boolean
144
+ "Thursday" => { 'type' => 'boolean' }, # boolean
145
+ "Friday" => { 'type' => 'boolean' }, # boolean
146
+ "Saturday" => { 'type' => 'boolean' }, # boolean
147
+ "Sunday" => { 'type' => 'boolean' }, # boolean
148
+ }
149
+ },
150
+ "RepeatUntilDate" => { 'type' => 'string' } # UTCDATETIME
151
+ }
152
+ }, # Calendar.RecurrenceInfo
153
+ "HasVisibilityRestrictions" => { 'type' => 'boolean' },
154
+ "VisibilityRestrictions" =>
155
+ {
156
+ 'type' => 'object',
157
+ 'required' => %w(Type Range HiddenRangeUnitType StartDate EndDate),
158
+ 'properties' =>
159
+ {
160
+ "Type" => { 'type' => 'integer' }, # <number:VISIBILITY_T>,
161
+ "Range" => { 'type' => %w(integer nil) }, # <number>|null,
162
+ "HiddenRangeUnitType" => { 'type' => %w(integer nil) }, # <number:HIDDENUNIT_T>|null,
163
+ "StartDate" => { 'type' => %w(string nil) }, # <string:UTCDateTime>|null,
164
+ "EndDate" => { 'type' => %w(string nil) } # <string:UTCDateTime>|null,
165
+ }
166
+ }, # Calendar.VisibilityInfo
167
+ "CalendarEventViewUrl" => { 'type' => 'string' } # url
168
+ }
169
+ }
170
+ JSON::Validator.validate!(schema, event_data, validate_schema: true)
171
+ end
172
+
173
+ # REVIEW: Create Schema checker; Check that this payload conforms to it.
174
+ # Create a new event.
175
+ # INPUT: Calendar.EventData
176
+ # RETURNS:a EventDataInfo data block for the newly created event.
177
+ def create_event(org_unit_id, event_data)
178
+ # POST /d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/event/
179
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/event/"
180
+ payload = { #Calendar.EventDataInfo
181
+ "Title" => "",
182
+ "Description" => "",
183
+ "StartDateTime" => nil, # UTCDateTime || nil
184
+ "EndDateTime" => nil, # UTCDateTime || nil
185
+ "StartDay" => nil, # LocalDateTime || nil
186
+ "EndDay" => nil, # LocalDateTime || nil
187
+ "GroupId" => nil, # D2LID || nil
188
+ "RecurrenceInfo" => # Calendar.RecurrenceInfo
189
+ {
190
+ "RepeatType" => 0, # number -- repeat type
191
+ "RepeatEvery" => 0, # number
192
+ "RepeatOnInfo" => # Calendar.RepeatOnInfo
193
+ {
194
+ "Monday" => false, # boolean
195
+ "Tuesday" => false, # boolean
196
+ "Wednesday" => false, # boolean
197
+ "Thursday" => false, # boolean
198
+ "Friday" => false, # boolean
199
+ "Saturday" => false, # boolean
200
+ "Sunday" => false, # boolean
201
+ },
202
+ "RepeatUntilDate" => "" # UTCDATETIME
203
+ },
204
+ "HasVisibilityRestrictions" => false,
205
+ "VisibilityRestrictions" => # Calendar.VisibilityInfo
206
+ {
207
+ "Type" => 0, # <number:VISIBILITY_T>,
208
+ "Range" => nil, # <number>|null,
209
+ "HiddenRangeUnitType" => nil, # <number:HIDDENUNIT_T>|null,
210
+ "StartDate" => nil, # <string:UTCDateTime>|null,
211
+ "EndDate" => nil # <string:UTCDateTime>|null,
212
+ },
213
+ "CalendarEventViewUrl" => "" # String:URL
214
+ }.merge!(event_data)
215
+ check_calendar_event_data_validity(payload) # NOTE: Test later
216
+ _post(path, payload)
217
+
218
+ end
219
+
220
+ # REVIEW: Create Schema checker; Check that this payload conforms to it.
221
+ # Update the properties for a calendar event from a particular org unit.
222
+ # INPUT: Calendar.EventData
223
+ # RETURNS:a EventDataInfo data block for the newly updated event.
224
+ def update_event(org_unit_id, event_id, event_data)
225
+ # PUT /d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/event/#{event_id}
226
+ path = "/d2l/api/le/#{$le_ver}/#{org_unit_id}/calendar/event/#{event_id}"
227
+ payload = { #Calendar.EventDataInfo
228
+ "Title" => "",
229
+ "Description" => "",
230
+ "StartDateTime" => nil, # UTCDateTime || nil
231
+ "EndDateTime" => nil, # UTCDateTime || nil
232
+ "StartDay" => nil, # LocalDateTime || nil
233
+ "EndDay" => nil, # LocalDateTime || nil
234
+ "GroupId" => nil, # D2LID || nil
235
+ "RecurrenceInfo" => # Calendar.RecurrenceInfo
236
+ {
237
+ "RepeatType" => 0, # number -- repeat type
238
+ "RepeatEvery" => 0, # number
239
+ "RepeatOnInfo" => # Calendar.RepeatOnInfo
240
+ {
241
+ "Monday" => false, # boolean
242
+ "Tuesday" => false, # boolean
243
+ "Wednesday" => false, # boolean
244
+ "Thursday" => false, # boolean
245
+ "Friday" => false, # boolean
246
+ "Saturday" => false, # boolean
247
+ "Sunday" => false, # boolean
248
+ },
249
+ "RepeatUntilDate" => "" # UTCDATETIME
250
+ },
251
+ "HasVisibilityRestrictions" => false,
252
+ "VisibilityRestrictions" => # Calendar.VisibilityInfo
253
+ {
254
+ "Type" => 0, # <number:VISIBILITY_T>,
255
+ "Range" => nil, # <number>|null,
256
+ "HiddenRangeUnitType" => nil, # <number:HIDDENUNIT_T>|null,
257
+ "StartDate" => nil, # <string:UTCDateTime>|null,
258
+ "EndDate" => nil # <string:UTCDateTime>|null,
259
+ },
260
+ "CalendarEventViewUrl" => "" # String:URL
261
+ }.merge!(event_data)
262
+ check_calendar_event_data_validity(payload) # NOTE: Test later
263
+ _put(path, payload)
264
+ end
@@ -151,7 +151,123 @@ def get_config_var_resolver(variable_id)
151
151
  end
152
152
 
153
153
  # NOTE: UNSTABLE!!!
154
- # TODO: Update the resolution strategy for an org unit configuration variable.
154
+ # TODO: UNSTABLE!!! --Update the resolution strategy for an org unit configuration variable.
155
155
  def update_org_unit_config_var_resolution(resolver_value)
156
156
  # PUT /d2l/api/lp/(version)/configVariables/(variableId)/resolver
157
157
  end
158
+
159
+ ################################################################################
160
+ ############################### TOOLS ###################################
161
+ ################################################################################
162
+ # NOTE: This section has been appended to config variables due to its similar
163
+ # placement in the GUI and the fact that tools functions are rather small
164
+ # in number.
165
+
166
+ ########################
167
+ # ORGANIZATION:#########
168
+ ########################
169
+
170
+ # REVIEW: Retrieve the current organization-level information for all tools.
171
+ # => GET /d2l/api/lp/(version)/tools/org/
172
+ # RETURNS: paged result set containing the resulting OrgInformation data blocks
173
+ def get_org_tools_info(include_restricted_tools = nil, bookmark = '')
174
+ path = "/d2l/api/lp/#{$lp_ver}/tools/org/?"
175
+ path += "includeRestrictedTools=#{includeRestrictedTools}&" unless include_restricted_tools.nil?
176
+ path += "bookmark=#{bookmark}" unless bookmark == ''
177
+ _get(path)
178
+ # RETURNS: paged result set containing the resulting OrgInformation data blocks
179
+ end
180
+
181
+ # REVIEW: Retrieve the current organization-level information for a tool.
182
+ # => GET /d2l/api/lp/(version)/tools/org/(toolId)
183
+ # RETURNS: an OrgInformation JSON block
184
+ def get_org_tool_info(tool_id)
185
+ path = "GET /d2l/api/lp/#{$lp_ver}/tools/org/#{tool_id}"
186
+ _get(path)
187
+ # RETURNS: an OrgInformation JSON block
188
+ end
189
+
190
+ # NOTE: Not inherent d2l_api function. This is to check that the update_status
191
+ # is actually a boolean and return a formatted UpdateStatus JSON block.
192
+ def check_and_create_update_status_payload(update_status)
193
+ if update_status != true && update_status != false
194
+ raise ArgumentError, 'update_status is not a boolean'
195
+ end
196
+ payload = {"Status" => update_status} # Tools.UpdateStatus JSON data block
197
+ payload
198
+ end
199
+
200
+ # REVIEW: Update the organization-level status for a tool.
201
+ # => PUT /d2l/api/lp/(version)/tools/org/(toolId)
202
+ def update_org_tool_status(tool_id, update_status)
203
+ path = "/d2l/api/lp/#{$lp_ver}/tools/org/#{tool_id}"
204
+ payload = check_and_create_update_status_payload(update_status)
205
+ _put(path, payload)
206
+ end
207
+
208
+ # REVIEW: Update a tool’s default status for new org units.
209
+ # => PUT /d2l/api/lp/(version)/tools/org/(toolId)/OUDefault
210
+ def update_tool_default_status(tool_id, update_status)
211
+ path = "/d2l/api/lp/#{$lp_ver}/tools/org/#{tool_id}/OUDefault"
212
+ payload = check_and_create_update_status_payload(update_status)
213
+ _put(path, payload)
214
+ end
215
+
216
+ # REVIEW: Update a tool’s current status for all org units.
217
+ # => PUT /d2l/api/lp/(version)/tools/org/(toolId)/OUDefault/override
218
+ def update_all_org_unit_tool_status(tool_id, update_status)
219
+ path = "/d2l/api/lp/#{$lp_ver}/tools/org/#{tool_id}/OUDefault/override"
220
+ payload = check_and_create_update_status_payload(update_status)
221
+ _put(path, payload)
222
+ end
223
+
224
+ ########################
225
+ # ORG UNITS:############
226
+ ########################
227
+
228
+ # REVIEW: Retrieve the current information for all tools enabled for the provided org unit.
229
+ # => GET /d2l/api/lp/(version)/tools/orgUnits/(orgUnitId)
230
+ def get_org_enabled_tools_info(org_unit_id, bookmark = '')
231
+ path = "/d2l/api/lp/#{$lp_ver}/tools/orgUnits/#{org_unit_id}?"
232
+ path += "bookmark=#{bookmark}" unless bookmark == ''
233
+ _get(path)
234
+ end
235
+
236
+ # REVIEW: Retrieve the current information for a tool enabled for the provided org unit.
237
+ # => GET /d2l/api/lp/(version)/tools/orgUnits/(orgUnitId)/(toolId)
238
+ def get_org_enabled_tool_info(org_unit_id, tool_id)
239
+ path = "/d2l/api/lp/#{$lp_ver}/tools/orgUnits/#{org_unit_id}/#{tool_id}"
240
+ _get(path)
241
+ end
242
+
243
+ def check_org_unit_information_validity(data_block)
244
+ schema = {
245
+ 'type' => 'object',
246
+ 'required' => %w(ToolId DisplayName OrgUnitId Status CustomNavbarName),
247
+ 'properties' => {
248
+ 'ToolId' => { 'type' => 'string' },
249
+ 'DisplayName' => { 'type' => 'string' },
250
+ 'CallbackUrl' => { 'type' => 'integer' },
251
+ 'Status' => { 'type' => 'boolean' },
252
+ 'CustomNavbarName' => { 'type' => 'string' }
253
+ }
254
+ }
255
+ JSON::Validator.validate!(schema, data_block, validate_schema: true)
256
+ end
257
+
258
+ # REVIEW: Update the org unit-level information for a tool.
259
+ # INPUT: OrgUnitInformation JSON block
260
+ # => PUT /d2l/api/lp/(version)/tools/orgUnits/(orgUnitId)/(toolId)
261
+ def update_org_unit_level_tool_info(org_unit_id, tool_id, org_unit_information)
262
+ path = "/d2l/api/lp/#{$lp_ver}/tools/orgUnits/#{org_unit_id}/#{tool_id}"
263
+ payload =
264
+ {
265
+ "ToolId" => "", # <string:D2LID>
266
+ "DisplayName" => "", # <string> ## added with LP v1.6 API
267
+ "OrgUnitId" => 0, # D2LID:number
268
+ "Status" => false, # boolean
269
+ "CustomNavbarName" => "" # <string>
270
+ }.merge!(org_unit_information)
271
+ check_org_unit_information_validity(payload) # NOTE: Check this later.
272
+ _put(path, payload)
273
+ end