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).