IPR and Distribution Notices
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.
IMS takes no
position regarding the validity or scope of any intellectual property or other
rights that might be claimed to pertain to the implementation or use of the
technology described in this document or the extent to which any license under
such rights might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on IMS's
procedures with respect to rights in IMS specifications can be found at the IMS
Intellectual Property Rights web page: http://www.imsglobal.org/ipr/
Copyright © 2016 IMS Global Learning Consortium. All Rights Reserved.
Use of this
specification to develop products or services is governed by the license with
IMS found on the IMS website: http://www.imsglobal.org/
Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.
THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
© 2016 IMS Global Learning Consortium, Inc.
All Rights Reserved.
The IMS Logo and Learning Tools Interoperability (LTI) are trademarks of the IMS Global
Learning Consortium, Inc. in the United States and/or other countries.
This specification defines a REST API for reading and updating Tool Settings. Following common conventions, the API uses a different HTTP verb for each type of operation: GET for read and PUT for update.
In the IMS LTI standard, Tool Settings may be attached to certain resources within the
Tool Consumer system. In particular, settings may be attached to LtiLink
,
ToolProxyBinding
, and ToolProxy
resources. Each of these resource types
is a kind of ToolSettingsContainer
. Through the REST API described in this document,
a client may request settings from one particular container. By including the bubble
query parameter, the client may request that the response contain settings from "higher-level"
containers as well. For example, a client may request settings from an LtiLink
resource
and with bubble=all
, the client will also receive settings from the learning context
that contains the link plus settings defined at the system level (within the ToolProxy).
When requesting settings via an HTTP GET request, the client specifies the desired format with the
Accept
header. When submitting settings via an HTTP PUT request, the client declares the
format of the supplied JSON document with the Content-Type
header.
LtiLink
, ToolProxyBinding
, and
ToolProxy
. This specification does not mandate any particular URL
templates for these endpoints, but the following templates are recommended:
{+base}/lti/links/{link_id}/custom {+base}/lis/{context_type}/{context_id}/bindings/{vendor_code}/{product_code}/custom {+base}/lti/ToolProxy/{tool_proxy_guid}/custom
where base
is the base URL, and the path parameters are defined as follows:
For example, these templates might yield something like the following URL values:
https://lms.example.com/lti/links/402854/custom https://lms.example.com/lis/CourseSection/9283/bindings/acme.com/assessment-tool/custom https://lms.example.com/lti/ToolProxy/e6b6f6cc253a4d23ad57defbbd2a8e37/custom
The first URL provides access to tool settings scoped to a particular LtiLink. The second URL provides access to tool settings scoped to a particular learning context. The third URL provides access to system wide tool settings.
A Tool Consumer that implements this REST API must declare its URL templates within the Tool Consumer Profile. The templates are for information purposes and there is no contract that the Tool Consumer must support all possible endpoints that can be derived from each template. The The recommended practice is to have the Tool arrange for the Tool Consumer to send fully formed endpoints in the launch requests by specifying certain variables as launch parameters. The LTI standard defines the following variables:
Parameter | Description |
---|---|
bubble | This query parameter specifies that the response should contain Tool Settings not only from the
scope targeted by the endpoint URL, but also all higher-level scopes.
For example, if the request
is submitted to an LtiLink resource and the bubble parameter is present,
then the response would include link-level, context-level and system-level
settings.
There are two possible values for the |
Request Header Name | Value |
---|---|
Authorization | Authorization parameters dictated by the OAuth Body Hash Protocol |
Accept | A comma-separated list containing at least one of the following media types: |
Table 3 describes the possible responses from the GET method.
HTTP Status | Description |
---|---|
200 OK | The request was successful.
The response contains a document in one of the formats specified by the Accept header. |
301 Moved Permanently | The URI for the requested resource has changed. In this case, the response body is empty, and the new URI is provided in the |
307 Temporary Redirect | The requested resource resides temporarily under a different URI. In this case, the response body is empty, and the temporary URI is defined by the |
401 Unauthorized | The client did not authenticate properly. |
404 Not Found | The server has not found anything matching the request URI. |
406 Not Acceptable | The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request. |
500 Internal Service Error | The server encountered an unexpected condition which prevented it from fulfilling the request. |
Request Header Name | Value |
---|---|
Content-Type | One of:
|
Authorization | Authorization parameters dictated by the OAuth Body Hash Protocol |
Table 5 describes the possible responses from the PUT method. In all cases, the response body is empty.
HTTP Status | Description |
---|---|
200 OK | The request was successful. |
401 Unauthorized | The client did not authenticate properly. |
404 Not Found | The server has not found anything matching the request URI. |
500 Internal Service Error | The server encountered an unexpected condition which prevented it from fulfilling the request. |
Title: | A REST API for Tool Settings in multiple formats |
---|---|
Editor: | Stephen Vickers (IMS Global) |
Version: | 1.0 |
Version Date: | 10 September 2015 |
Release: | Final Release |
Status: | IMS Final Release |
Purpose: | This document is made available for review and comment by the public community at large. |
The following list of individuals contributed to the authoring of this document:
Craig Dunk | D2L | Padraig O'hiceadha | HMH |
Viktor Haag | D2L | Charles Severance | IMS Global |
Brad Humphrey | Instructure | Colin Smythe | IMS Global |
Greg McFall | Pearson | Matt Stoelting | Cengage |
Mark McKell | IMS Global | John Tibbetts | Vitalsource |
Bracken Mosbacker | Lumen Learning | Claude Vervoort | Cengage |
Lance Neumann | Blackboard | Stephen Vickers | IMS Global |