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:

  • LinkLevel - uses the credentials (namely: ApplicationKey, SharedSecret) provided in this request.

  • ToolConsumerWide - uses the credentials configured in itslearning for the whole site/organisation and domain from the launch URL.

Default value: LinkLevel.

Text

  • LinkLevel

  • ToolConsumerWide

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:

  • ExistingWindow - open inside itslearning environment

  • NewWindow - open in a new browser window

  • Popup640 - open in a new browser pop-up window with the dimensions 640x480

  • Popup800 - open in a new browser pop-up window with the dimensions 800x600

  • Popup1024 - open in a new browser pop-up window with the dimensions 1024x768

Default value: ExistingWindow.

Text

  • ExistingWindow

  • NewWindow

  • Popup640

  • Popup800

  • Popup1024

O

HashAlgorithm

The hashing algorithm for signature.

Default value: Sha1.

Text

  • Sha1

  • Sha256

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:

  • Anonymous - No name or e-mail information is send, of course an id is still sent so the tool can uniquely identify a user

  • EmailOnly - Only the e-mail address will be sent to the learning tool

  • NameOnly - Only user's name will be sent to the learning tool

  • Public - All information (name and e-mail) will be sent to the learning tool

Default value: Anonymous.

Text

  • Anonymous

  • EmailOnly

  • NameOnly

  • Public

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

Create Extension Instance 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

LTI content with <XMLConfiguration>
<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>
LTI content with <ManualConfiguration> and <LaunchCredentialManagement> = LinkLevel
<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>
LTI content with <ManualConfiguration> and <LaunchCredentialManagement> = ToolConsumerWide
 <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>
LTI content with <DeepLinkConfiguration>
<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).