LTI (Learning Tool Interoperability)
Input parameters
Message |
|||
Name |
Description |
Type |
M/O |
XmlConfiguration |
|
XmlConfigurationType |
M/O |
ManualConfiguration |
|
ManualConfigurationType |
M/O |
DeepLinkConfiguration |
|
DeepLinkConfigurationType |
M/O |
ApplicationKey |
Application key that the provider might supply you with, usually used to verify rights to access the tool. |
Text |
O |
SharedSecret |
Shared secret that the provider might supply you with, usually used to verify rights to access the tool. |
Text |
O |
LaunchCredentialManagement |
Controls the source of the application key and shared secret used for launch. Possible values:
Default value: LinkLevel. |
Text
|
O |
Description |
A textual description that will be shown on the page above the learning tool. |
Text |
O |
OpenIn |
Controls where the tool will be opened, note that in some cases the tool itself may override this setting. Possible values:
Default value: ExistingWindow. |
Text
|
O |
HashAlgorithm |
The hashing algorithm for signature. Default value: Sha1. |
Text
|
O |
Notes:
-
Either XmlConfiguration, ManualConfiguration or DeepLinkConfiguration must be specified. This means you should specify at least one.
-
When the LaunchCredentialManagement equals to ToolConsumerWide, providing of the ApplicationKey and SharedSecret is prohibited.
-
When the LaunchCredentialManagement equals to ToolConsumerWide, the Content Vendor (VendorId) must be specified too.
-
If you update the LTI, it is not recommented to change LaunchCredentialManagement from LinkLevel to ToolConsumerWide or the other way around. This because VendorId cannot be added/changed/removed when updating the LTI.
Exampe: If you update LTI from having LaunchCredentialManagement equals LinkLevel to ToolConsumerWide, you will need to specify a VendorId - which is not possible.
XmlConfigurationType |
|||
Name |
Description |
Type |
M/O |
Url |
The link to the configuration XML supplied by the tool provider. Should be less than or equal to 2000 characters. |
Text |
M/O |
Xml |
As an alternative to supplying a configuration link, you can also supply the XML directly. |
XML |
M/O |
Notes:
-
Either Url or Xml must be specified. This means you should specify at least one.
ManualConfigurationType |
|||
Name |
Description |
Type |
M/O |
LaunchUrl |
The link to the learning tool, also known as launch URL. Should be less than or equal to 2000 characters. |
Text |
M |
PrivacyLevel |
This setting determines the amount of information regarding you name/e-mail is sent. Possible values:
Default value: Anonymous. |
Text
|
O |
DeepLinkConfigurationType |
|||
Name |
Description |
Type |
M/O |
Url |
The link to the learning tool, also known as launch URL. Should be less than or equal to 2000 characters. |
Text |
M |
IFrameHeight |
The height of the new window (in pixels) which the resource can be embedded |
Text |
O |
IFrameWidth |
The width of the new window (in pixels) which the resource can be embedded |
Text |
O |
ThumbnailUrl |
The link to the thumbnail image of the resource. Should be less than or equal to 2000 characters. |
Text |
O |
Custom |
List of CustomField types |
CustomField |
O |
IconType |
The name of the icon for extension. |
Text |
O |
CustomField |
|||
Name |
Description |
Type |
M/O |
Key |
The key of custom parameter. |
Text |
M |
Value |
The value of custom parameter. |
Text |
M |
Content Schema
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
xs
:schema
xmlns:xs
=
"http://www.w3.org/2001/XMLSchema"
elementFormDefault
=
"qualified"
>
<
xs
:element
name
=
"LtiContent"
type
=
"LtiContent.Type"
/>
<
xs
:complexType
name
=
"LtiContent.Type"
>
<
xs
:sequence>
<
xs
:choice
minOccurs
=
"1"
maxOccurs
=
"1"
>
<
xs
:element
name
=
"XmlConfiguration"
type
=
"XmlConfiguration.Type"
/>
<
xs
:element
name
=
"ManualConfiguration"
type
=
"ManualConfiguration.Type"
/>
<
xs
:element
name
=
"DeepLinkConfiguration"
type
=
"DeepLinkConfiguration.Type"
/>
</
xs
:choice>
<
xs
:element
name
=
"ApplicationKey"
type
=
"xs:string"
minOccurs
=
"0"
maxOccurs
=
"1"
default
=
""
/>
<
xs
:element
name
=
"SharedSecret"
type
=
"xs:string"
minOccurs
=
"0"
maxOccurs
=
"1"
default
=
""
/>
<
xs
:element
name
=
"Description"
type
=
"xs:string"
minOccurs
=
"0"
maxOccurs
=
"1"
default
=
""
/>
<
xs
:element
name
=
"OpenIn"
type
=
"OpenInType.Enum"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"LaunchCredentialManagement"
type
=
"LaunchCredentialManagementType.Enum"
default
=
"LinkLevel"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"HashAlgorithm"
type
=
"HashAlgorithm"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
</
xs
:sequence>
</
xs
:complexType>
<
xs
:complexType
name
=
"DeepLinkConfiguration.Type"
>
<
xs
:sequence>
<
xs
:element
name
=
"Url"
type
=
"xs:string"
minOccurs
=
"1"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"IFrameHeight"
type
=
"xs:string"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"IFrameWidth"
type
=
"xs:string"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"Custom"
type
=
"Custom.Type"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"IconType"
type
=
"xs:string"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
</
xs
:sequence>
</
xs
:complexType>
<
xs
:complexType
name
=
"Custom.Type"
>
<
xs
:sequence>
<
xs
:element
name
=
"CustomField"
minOccurs
=
"0"
maxOccurs
=
"unbounded"
>
<
xs
:complexType>
<
xs
:sequence>
<
xs
:element
name
=
"Key"
type
=
"xs:string"
minOccurs
=
"1"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"Value"
type
=
"xs:string"
minOccurs
=
"1"
maxOccurs
=
"1"
/>
</
xs
:sequence>
</
xs
:complexType>
</
xs
:element>
</
xs
:sequence>
</
xs
:complexType>
<
xs
:complexType
name
=
"XmlConfiguration.Type"
>
<
xs
:choice
minOccurs
=
"1"
maxOccurs
=
"1"
>
<
xs
:element
name
=
"Url"
type
=
"xs:string"
/>
<
xs
:element
name
=
"Xml"
type
=
"xml.Type"
/>
</
xs
:choice>
</
xs
:complexType>
<
xs
:complexType
name
=
"ManualConfiguration.Type"
>
<
xs
:sequence>
<
xs
:element
name
=
"LaunchUrl"
type
=
"xs:string"
minOccurs
=
"1"
maxOccurs
=
"1"
/>
<
xs
:element
name
=
"PrivacyLevel"
type
=
"PrivacyLevel.Enum"
minOccurs
=
"0"
maxOccurs
=
"1"
/>
</
xs
:sequence>
</
xs
:complexType>
<
xs
:complexType
name
=
"xml.Type"
>
<
xs
:sequence>
<
xs
:any
minOccurs
=
"0"
processContents
=
"skip"
/>
</
xs
:sequence>
</
xs
:complexType>
<
xs
:simpleType
name
=
"OpenInType.Enum"
>
<
xs
:restriction
base
=
"xs:string"
>
<
xs
:enumeration
value
=
"ExistingWindow"
/>
<
xs
:enumeration
value
=
"NewWindow"
/>
<
xs
:enumeration
value
=
"Popup640"
/>
<
xs
:enumeration
value
=
"Popup800"
/>
<
xs
:enumeration
value
=
"Popup1024"
/>
</
xs
:restriction>
</
xs
:simpleType>
<
xs
:simpleType
name
=
"PrivacyLevel.Enum"
>
<
xs
:restriction
base
=
"xs:string"
>
<
xs
:enumeration
value
=
"Anonymous"
/>
<
xs
:enumeration
value
=
"EmailOnly"
/>
<
xs
:enumeration
value
=
"NameOnly"
/>
<
xs
:enumeration
value
=
"Public"
/>
</
xs
:restriction>
</
xs
:simpleType>
<
xs
:simpleType
name
=
"LaunchCredentialManagementType.Enum"
>
<
xs
:restriction
base
=
"xs:string"
>
<
xs
:enumeration
value
=
"LinkLevel"
/>
<
xs
:enumeration
value
=
"ToolConsumerWide"
/>
</
xs
:restriction>
</
xs
:simpleType>
<
xs
:simpleType
name
=
"HashAlgorithm"
>
<
xs
:restriction
base
=
"xs:string"
>
<
xs
:enumeration
value
=
"Sha1"
/>
<
xs
:enumeration
value
=
"Sha256"
/>
</
xs
:restriction>
</
xs
:simpleType>
</
xs
:schema>
Content example
<
Message
xmlns
=
"urn:message-schema"
>
<
CreateExtensionInstance
>
<
Location
>Course</
Location
>
<
ExtensionId
>5003</
ExtensionId
>
<
CourseId
>1</
CourseId
>
<
UserId
>6</
UserId
>
<
Title
>Link to a website</
Title
>
<
Content
>
<
LtiContent
>
<
XmlConfiguration
>
<
Url
>
http://www.edu-apps.org/tools/youtube/config.xml
</
Url
>
</
XmlConfiguration
>
<
Description
>youtube LTI</
Description
>
<
OpenIn
>ExistingWindow</
OpenIn
>
<
HashAlgorithm
>Sha1</
HashAlgorithm
>
</
LtiContent
>
</
Content
>
<
ElementProperties
>
<
Active
>true</
Active
>
<
AssessmentScale
>2</
AssessmentScale
>
</
ElementProperties
>
</
CreateExtensionInstance
>
</
Message
>
<
Message
xmlns
=
"urn:message-schema"
>
<
CreateExtensionInstance
>
<
Location
>Course</
Location
>
<
ExtensionId
>5003</
ExtensionId
>
<
CourseId
>1</
CourseId
>
<
UserId
>1</
UserId
>
<
Title
>LTI test tool</
Title
>
<
Content
>
<
LtiContent
>
<
ManualConfiguration
>
<
LaunchUrl
>
http://ltiapps.net/test/tp.php
</
LaunchUrl
>
</
ManualConfiguration
>
<
ApplicationKey
>test</
ApplicationKey
>
<
SharedSecret
>secret</
SharedSecret
>
<
Description
>LTI test tool</
Description
>
<
OpenIn
>ExistingWindow</
OpenIn
>
<
LaunchCredentialManagement
>LinkLevel</
LaunchCredentialManagement
>
</
LtiContent
>
</
Content
>
</
CreateExtensionInstance
>
</
Message
>
<
Message
xmlns
=
"urn:message-schema"
>
<
VendorId
>814ebfd8-8fa2-4448-94b8-a6ad1b9bfe12</
VendorId
>
<
CreateExtensionInstance
>
<
Location
>Course</
Location
>
<
ExtensionId
>5003</
ExtensionId
>
<
CourseId
>1</
CourseId
>
<
UserId
>1</
UserId
>
<
Title
>LTI test tool</
Title
>
<
Content
>
<
LtiContent
>
<
ManualConfiguration
>
<
LaunchUrl
>
http://ltiapps.net/test/tp.php
</
LaunchUrl
>
</
ManualConfiguration
>
<
Description
>LTI test tool</
Description
>
<
OpenIn
>ExistingWindow</
OpenIn
>
<
LaunchCredentialManagement
>ToolConsumerWide</
LaunchCredentialManagement
>
</
LtiContent
>
</
Content
>
</
CreateExtensionInstance
>
</
Message
>
<
Message
xmlns
=
"urn:message-schema"
>
<
VendorId
>814ebfd8-8fa2-4448-94b8-a6ad1b9bfe12</
VendorId
>
<
CreateExtensionInstance
>
<
Location
>Course</
Location
>
<
ExtensionId
>12167</
ExtensionId
>
<
CourseId
>1</
CourseId
>
<
UserId
>1</
UserId
>
<
Title
>LTI test tool</
Title
>
<
Content
>
<
LtiContent
>
<
DeepLinkConfiguration
>
<
Url
>
http://ltiapps.net/test/tp.php
</
Url
>
<
IFrameHeight
>1000</
IFrameHeight
>
<
IFrameWidth
>800</
IFrameWidth
>
<
ThumbnailUrl
>
http://ltiapps.net/test/thumbnail.jpg
</
ThumbnailUrl
>
</
DeepLinkConfiguration
>
<
Description
>LTI test tool</
Description
>
</
LtiContent
>
</
Content
>
</
CreateExtensionInstance
>
</
Message
>
Errors
-
Invalid configuration xml. An error occurred while reading the XML.
-
Invalid configuration url. An error occurred while retrieving the XML.
-
Invalid content: the length of the url is too long (the maximum length is 2000 characters).
-
Invalid configuration url. The length of the url is too long (the maximum length is 2000 characters).
-
Invalid uri scheme. Acceptable values are 'http' and 'https'.
-
Provided launch url is not valid.
-
Invalid content: the length of ApplicationKey is too long (the maximum length is 255 characters).
-
Invalid content: the length of SharedSecret is too long (the maximum length is 255 characters).
-
The value [asdf] of the launch credential management type is not supported.
-
When the launch credential management type equals to ToolConsumerWide, the content vendor must be provided too.
-
It is disallowed to provide value of ApplicationKey when value of LaunchCredentialManagement is different than LinkLevel.
-
Deep link configuration is missing.
-
Invalid deep link configuration: URL should be filled.
-
Invalid deep link configuration: the length of the url is too long (the maximum length is 2000 characters).
-
Invalid deep link configuration: the length of the thumbnail url is too long (the maximum length is 2000 characters).