@@ -71,7 +71,7 @@ def list_external_tools_accounts(request_ctx, account_id, search_term=None, sele
7171def get_sessionless_launch_url_for_external_tool_courses (request_ctx , course_id , id = None , url = None , assignment_id = None , launch_type = None , ** request_kwargs ):
7272 """
7373 Returns a sessionless launch url for an external tool.
74-
74+
7575 Either the id or url must be provided.
7676
7777 :param request_ctx: The request context
@@ -107,7 +107,7 @@ def get_sessionless_launch_url_for_external_tool_courses(request_ctx, course_id,
107107def get_sessionless_launch_url_for_external_tool_accounts (request_ctx , account_id , id = None , url = None , assignment_id = None , launch_type = None , ** request_kwargs ):
108108 """
109109 Returns a sessionless launch url for an external tool.
110-
110+
111111 Either the id or url must be provided.
112112
113113 :param request_ctx: The request context
@@ -184,7 +184,7 @@ def get_single_external_tool_accounts(request_ctx, account_id, external_tool_id,
184184 return response
185185
186186
187- def create_external_tool_courses (request_ctx , course_id , name , privacy_level , consumer_key , shared_secret , description = None , url = None , domain = None , icon_url = None , text = None , not_selectable = None , custom_fields = None , account_navigation_url = None , account_navigation_enabled = None , account_navigation_text = None , user_navigation_url = None , user_navigation_enabled = None , user_navigation_text = None , course_navigation_url = None , course_navigation_enabled = None , course_navigation_text = None , course_navigation_visibility = None , course_navigation_default = None , editor_button_url = None , editor_button_enabled = None , editor_button_icon_url = None , editor_button_selection_width = None , editor_button_selection_height = None , resource_selection_url = None , resource_selection_enabled = None , resource_selection_icon_url = None , resource_selection_selection_width = None , resource_selection_selection_height = None , config_type = None , config_xml = None , config_url = None , ** request_kwargs ):
187+ def create_external_tool_courses (request_ctx , course_id , name = None , privacy_level = None , consumer_key = None , shared_secret = None , description = None , url = None , domain = None , icon_url = None , text = None , not_selectable = None , custom_fields = None , account_navigation_url = None , account_navigation_enabled = None , account_navigation_text = None , user_navigation_url = None , user_navigation_enabled = None , user_navigation_text = None , course_navigation_url = None , course_navigation_enabled = None , course_navigation_text = None , course_navigation_visibility = None , course_navigation_default = None , editor_button_url = None , editor_button_enabled = None , editor_button_icon_url = None , editor_button_selection_width = None , editor_button_selection_height = None , resource_selection_url = None , resource_selection_enabled = None , resource_selection_icon_url = None , resource_selection_selection_width = None , resource_selection_selection_height = None , config_type = None , config_xml = None , config_url = None , client_id = None , ** request_kwargs ):
188188 """
189189 Create an external tool in the specified course/account.
190190 The created tool will be returned, see the "show" endpoint for an example.
@@ -263,6 +263,8 @@ def create_external_tool_courses(request_ctx, course_id, name, privacy_level, co
263263 :type config_xml: string or None
264264 :param config_url: (optional) URL where the server can retrieve an XML tool configuration, as specified in the CC xml specification. This is required if "config_type" is set to "by_url"
265265 :type config_url: string or None
266+ :param client_id: (optional) LTI 1.3 client_id of the tool to install
267+ :type client_id: string or None
266268 :return: Create an external tool
267269 :rtype: requests.Response (with void data)
268270
@@ -273,50 +275,56 @@ def create_external_tool_courses(request_ctx, course_id, name, privacy_level, co
273275 utils .validate_attr_is_acceptable (privacy_level , privacy_level_types )
274276 utils .validate_attr_is_acceptable (course_navigation_visibility , course_navigation_visibility_types )
275277 path = '/v1/courses/{course_id}/external_tools'
276- payload = {
277- 'name' : name ,
278- 'privacy_level' : privacy_level ,
279- 'consumer_key' : consumer_key ,
280- 'shared_secret' : shared_secret ,
281- 'description' : description ,
282- 'url' : url ,
283- 'domain' : domain ,
284- 'icon_url' : icon_url ,
285- 'text' : text ,
286- 'not_selectable' : not_selectable ,
287- 'custom_fields' : custom_fields ,
288- 'account_navigation[url]' : account_navigation_url ,
289- 'account_navigation[enabled]' : account_navigation_enabled ,
290- 'account_navigation[text]' : account_navigation_text ,
291- 'user_navigation[url]' : user_navigation_url ,
292- 'user_navigation[enabled]' : user_navigation_enabled ,
293- 'user_navigation[text]' : user_navigation_text ,
294- 'course_navigation[url]' : course_navigation_url ,
295- 'course_navigation[enabled]' : course_navigation_enabled ,
296- 'course_navigation[text]' : course_navigation_text ,
297- 'course_navigation[visibility]' : course_navigation_visibility ,
298- 'course_navigation[default]' : course_navigation_default ,
299- 'editor_button[url]' : editor_button_url ,
300- 'editor_button[enabled]' : editor_button_enabled ,
301- 'editor_button[icon_url]' : editor_button_icon_url ,
302- 'editor_button[selection_width]' : editor_button_selection_width ,
303- 'editor_button[selection_height]' : editor_button_selection_height ,
304- 'resource_selection[url]' : resource_selection_url ,
305- 'resource_selection[enabled]' : resource_selection_enabled ,
306- 'resource_selection[icon_url]' : resource_selection_icon_url ,
307- 'resource_selection[selection_width]' : resource_selection_selection_width ,
308- 'resource_selection[selection_height]' : resource_selection_selection_height ,
309- 'config_type' : config_type ,
310- 'config_xml' : config_xml ,
311- 'config_url' : config_url ,
312- }
278+ payload = {}
279+ if client_id :
280+ payload = {
281+ 'client_id' : client_id
282+ }
283+ else :
284+ payload = {
285+ 'name' : name ,
286+ 'privacy_level' : privacy_level ,
287+ 'consumer_key' : consumer_key ,
288+ 'shared_secret' : shared_secret ,
289+ 'description' : description ,
290+ 'url' : url ,
291+ 'domain' : domain ,
292+ 'icon_url' : icon_url ,
293+ 'text' : text ,
294+ 'not_selectable' : not_selectable ,
295+ 'custom_fields' : custom_fields ,
296+ 'account_navigation[url]' : account_navigation_url ,
297+ 'account_navigation[enabled]' : account_navigation_enabled ,
298+ 'account_navigation[text]' : account_navigation_text ,
299+ 'user_navigation[url]' : user_navigation_url ,
300+ 'user_navigation[enabled]' : user_navigation_enabled ,
301+ 'user_navigation[text]' : user_navigation_text ,
302+ 'course_navigation[url]' : course_navigation_url ,
303+ 'course_navigation[enabled]' : course_navigation_enabled ,
304+ 'course_navigation[text]' : course_navigation_text ,
305+ 'course_navigation[visibility]' : course_navigation_visibility ,
306+ 'course_navigation[default]' : course_navigation_default ,
307+ 'editor_button[url]' : editor_button_url ,
308+ 'editor_button[enabled]' : editor_button_enabled ,
309+ 'editor_button[icon_url]' : editor_button_icon_url ,
310+ 'editor_button[selection_width]' : editor_button_selection_width ,
311+ 'editor_button[selection_height]' : editor_button_selection_height ,
312+ 'resource_selection[url]' : resource_selection_url ,
313+ 'resource_selection[enabled]' : resource_selection_enabled ,
314+ 'resource_selection[icon_url]' : resource_selection_icon_url ,
315+ 'resource_selection[selection_width]' : resource_selection_selection_width ,
316+ 'resource_selection[selection_height]' : resource_selection_selection_height ,
317+ 'config_type' : config_type ,
318+ 'config_xml' : config_xml ,
319+ 'config_url' : config_url ,
320+ }
313321 url = request_ctx .base_api_url + path .format (course_id = course_id )
314322 response = client .post (request_ctx , url , payload = payload , ** request_kwargs )
315323
316324 return response
317325
318326
319- def create_external_tool_accounts (request_ctx , account_id , name , privacy_level , consumer_key , shared_secret , description = None , url = None , domain = None , icon_url = None , text = None , not_selectable = None , custom_fields = None , account_navigation_url = None , account_navigation_enabled = None , account_navigation_text = None , user_navigation_url = None , user_navigation_enabled = None , user_navigation_text = None , course_navigation_url = None , course_navigation_enabled = None , course_navigation_text = None , course_navigation_visibility = None , course_navigation_default = None , editor_button_url = None , editor_button_enabled = None , editor_button_icon_url = None , editor_button_selection_width = None , editor_button_selection_height = None , resource_selection_url = None , resource_selection_enabled = None , resource_selection_icon_url = None , resource_selection_selection_width = None , resource_selection_selection_height = None , config_type = None , config_xml = None , config_url = None , ** request_kwargs ):
327+ def create_external_tool_accounts (request_ctx , account_id , name = None , privacy_level = None , consumer_key = None , shared_secret = None , description = None , url = None , domain = None , icon_url = None , text = None , not_selectable = None , custom_fields = None , account_navigation_url = None , account_navigation_enabled = None , account_navigation_text = None , user_navigation_url = None , user_navigation_enabled = None , user_navigation_text = None , course_navigation_url = None , course_navigation_enabled = None , course_navigation_text = None , course_navigation_visibility = None , course_navigation_default = None , editor_button_url = None , editor_button_enabled = None , editor_button_icon_url = None , editor_button_selection_width = None , editor_button_selection_height = None , resource_selection_url = None , resource_selection_enabled = None , resource_selection_icon_url = None , resource_selection_selection_width = None , resource_selection_selection_height = None , config_type = None , config_xml = None , config_url = None , client_id = None , ** request_kwargs ):
320328 """
321329 Create an external tool in the specified course/account.
322330 The created tool will be returned, see the "show" endpoint for an example.
@@ -395,6 +403,8 @@ def create_external_tool_accounts(request_ctx, account_id, name, privacy_level,
395403 :type config_xml: string or None
396404 :param config_url: (optional) URL where the server can retrieve an XML tool configuration, as specified in the CC xml specification. This is required if "config_type" is set to "by_url"
397405 :type config_url: string or None
406+ :param client_id: (optional) LTI 1.3 client_id of the tool to install
407+ :type client_id: string or None
398408 :return: Create an external tool
399409 :rtype: requests.Response (with void data)
400410
@@ -405,43 +415,49 @@ def create_external_tool_accounts(request_ctx, account_id, name, privacy_level,
405415 utils .validate_attr_is_acceptable (privacy_level , privacy_level_types )
406416 utils .validate_attr_is_acceptable (course_navigation_visibility , course_navigation_visibility_types )
407417 path = '/v1/accounts/{account_id}/external_tools'
408- payload = {
409- 'name' : name ,
410- 'privacy_level' : privacy_level ,
411- 'consumer_key' : consumer_key ,
412- 'shared_secret' : shared_secret ,
413- 'description' : description ,
414- 'url' : url ,
415- 'domain' : domain ,
416- 'icon_url' : icon_url ,
417- 'text' : text ,
418- 'not_selectable' : not_selectable ,
419- 'custom_fields' : custom_fields ,
420- 'account_navigation[url]' : account_navigation_url ,
421- 'account_navigation[enabled]' : account_navigation_enabled ,
422- 'account_navigation[text]' : account_navigation_text ,
423- 'user_navigation[url]' : user_navigation_url ,
424- 'user_navigation[enabled]' : user_navigation_enabled ,
425- 'user_navigation[text]' : user_navigation_text ,
426- 'course_navigation[url]' : course_navigation_url ,
427- 'course_navigation[enabled]' : course_navigation_enabled ,
428- 'course_navigation[text]' : course_navigation_text ,
429- 'course_navigation[visibility]' : course_navigation_visibility ,
430- 'course_navigation[default]' : course_navigation_default ,
431- 'editor_button[url]' : editor_button_url ,
432- 'editor_button[enabled]' : editor_button_enabled ,
433- 'editor_button[icon_url]' : editor_button_icon_url ,
434- 'editor_button[selection_width]' : editor_button_selection_width ,
435- 'editor_button[selection_height]' : editor_button_selection_height ,
436- 'resource_selection[url]' : resource_selection_url ,
437- 'resource_selection[enabled]' : resource_selection_enabled ,
438- 'resource_selection[icon_url]' : resource_selection_icon_url ,
439- 'resource_selection[selection_width]' : resource_selection_selection_width ,
440- 'resource_selection[selection_height]' : resource_selection_selection_height ,
441- 'config_type' : config_type ,
442- 'config_xml' : config_xml ,
443- 'config_url' : config_url ,
444- }
418+ payload = {}
419+ if client_id :
420+ payload = {
421+ 'client_id' : client_id
422+ }
423+ else :
424+ payload = {
425+ 'name' : name ,
426+ 'privacy_level' : privacy_level ,
427+ 'consumer_key' : consumer_key ,
428+ 'shared_secret' : shared_secret ,
429+ 'description' : description ,
430+ 'url' : url ,
431+ 'domain' : domain ,
432+ 'icon_url' : icon_url ,
433+ 'text' : text ,
434+ 'not_selectable' : not_selectable ,
435+ 'custom_fields' : custom_fields ,
436+ 'account_navigation[url]' : account_navigation_url ,
437+ 'account_navigation[enabled]' : account_navigation_enabled ,
438+ 'account_navigation[text]' : account_navigation_text ,
439+ 'user_navigation[url]' : user_navigation_url ,
440+ 'user_navigation[enabled]' : user_navigation_enabled ,
441+ 'user_navigation[text]' : user_navigation_text ,
442+ 'course_navigation[url]' : course_navigation_url ,
443+ 'course_navigation[enabled]' : course_navigation_enabled ,
444+ 'course_navigation[text]' : course_navigation_text ,
445+ 'course_navigation[visibility]' : course_navigation_visibility ,
446+ 'course_navigation[default]' : course_navigation_default ,
447+ 'editor_button[url]' : editor_button_url ,
448+ 'editor_button[enabled]' : editor_button_enabled ,
449+ 'editor_button[icon_url]' : editor_button_icon_url ,
450+ 'editor_button[selection_width]' : editor_button_selection_width ,
451+ 'editor_button[selection_height]' : editor_button_selection_height ,
452+ 'resource_selection[url]' : resource_selection_url ,
453+ 'resource_selection[enabled]' : resource_selection_enabled ,
454+ 'resource_selection[icon_url]' : resource_selection_icon_url ,
455+ 'resource_selection[selection_width]' : resource_selection_selection_width ,
456+ 'resource_selection[selection_height]' : resource_selection_selection_height ,
457+ 'config_type' : config_type ,
458+ 'config_xml' : config_xml ,
459+ 'config_url' : config_url ,
460+ }
445461 url = request_ctx .base_api_url + path .format (account_id = account_id )
446462 response = client .post (request_ctx , url , payload = payload , ** request_kwargs )
447463
@@ -749,5 +765,3 @@ def delete_external_tool_accounts(request_ctx, account_id, external_tool_id, **r
749765 response = client .delete (request_ctx , url , ** request_kwargs )
750766
751767 return response
752-
753-
0 commit comments