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