Introduction
In order to help you find the best solutions to your e-learning needs, we've been hard at work implementing the LTI 1.3 standard in SCORM Cloud. We've already talked about one half of this, which is using SCORM Cloud Dispatch to distribute your content as an LTI 1.3 Tool. Now, as of the release on 06/22/2022, we have implemented the other half: using SCORM Cloud as an LTI 1.3 Platform.
How is this different from an LTI 1.3 Tool?
When using SCORM Cloud LTI 1.3 Dispatch, you are sharing content that you've imported, be it SCORM, xAPI, cmi5, etc., and sharing it with a learning system via the LTI 1.3 standard. So if you have a customer who wants to use your courses, but has an LTI 1.3 Platform they're using, you can easily share your imported content with them using SCORM Cloud LTI 1.3 Dispatch.
When using SCORM Cloud as an LTI 1.3 Platform, however, you are importing an LTI 1.3 tool from another source into your SCORM Cloud application. So for example, if you wanted to provide your learners with a library of content that was distributed as an LTI 1.3 tool, you can use the following procedure to import that content into your application, and then deliver it to your customers like any other piece of e-learning content!
How does it work?
Currently, the setup steps to use SCORM Cloud as an LTI 1.3 Platform are only available through the V2 API. Once the course has been imported, it will appear in the SCORM Cloud UI where you can launch it in the sandbox environment, create invitations and dispatches, and see various reports about the course.
Creating a content connector
The first step in this process involves creating a content connector for your application. A content connector serves as the "base of operations" for a collection of LTI 1.3 Tools. So if you have a collection of tools you'd like to import that all share a public key and OIDC auth endpoint, you can upload them all under one content connector.
Just like everything else in the API, content connectors are application-dependent. So if you have multiple SCORM Cloud applications in your realm, you'll have to create the content connector in the application you want to import the courses into.
You'll start with a call to "CreateConnector" with a body similar to the following:
{
"contentConnectorType": "ContentConnector.Lti13",
"configuration": {
"toolPublicKey": "{encodedPublicKey}",
"toolOidcLoginInitiationsEndpoint": "{toolOIDCEndpoint}",
"toolOidcLaunchRedirectUris": ["{toolRedirectUri}", {toolRedirectUri}", etc]
}
}
For the "toolPublicKey" argument, you'll need to make sure the public key value is JSON encoded so that all white space is replaced by escape characters (e.g. new lines become "\n"). The "toolOidcLaunchRedirectUris" argument is a list containing all of the redirect URIs for the tools you want to launch using this connector. Even if you're only importing one tool with this connector, this value still needs to be a list.
Configuring the LTI 1.3 tool
If the content connector was created successfully, you will receive a 200 response with the ID of the connector you just created. From there, you can call "GetConnectorsList" with "includeAdditionalInstanceInformation" set to "true" which will return something like the following:
{
"connectorEntries": [
{
"configuration": {
"toolPublicKey": "{encodedPublicKey}",
"toolOidcLoginInitiationsEndpoint": "{toolOIDCEndpoint}",
"toolOidcLaunchRedirectUris": [
"{toolRedirectUri}",
"{toolRedirectUri}",
etc
]
},
"connectorId": "{connectorId}",
"contentConnectorType": "ContentConnector.Lti13",
"additionalInstanceInformation": {
"issuer": "https://cloud.scorm.com",
"toolClientId": "{toolClientId}",
"jwksEndpoint": "https://cloud.scorm.com/api/v2/plugin/lti13/{connectorId}/jwks?externalConfig=...",
"oidcAuthorizationUrl": "https://cloud.scorm.com/ScormEngineInterface/defaultui/player/authorizations.html",
"deploymentId": "{deploymentId}",
"accessTokenUrl": "https://cloud.scorm.com/api/v2/plugin/lti13/{connectorId}/token?externalConfig=..."
},
"enabled": true
},
...
]
}
You will then use the values from the "additionalInstanceInformation" section to configure the LTI 1.3 tool you want to import into SCORM Cloud.
Importing the LTI 1.3 Tool into SCORM Cloud
The final step of the process is to import the LTI 1.3 tool into SCORM Cloud as a course. You can do this by calling "CreateNoUploadAndImportCourseJob" with a body like the following:
{
"connectorReferenceRequest": {
"connectorId": "{connectorId}",
"metadataForConnector": {
"url": "{toolLaunchUri}",
"title": "{course title}",
"ltiMetadata": {
"description": "{course description}",
"context": {
"contextId": "{context}"
}
}
}
}
}
The course title, course description, and context can be any values you want. Context is optional, but necessary if you want to take advantage of the Assignment and Grades Services. The "connectorId" should be the value that was returned from the call to "GetConnectorsList" from the previous step, and the "url" should be the resource link URI. In most cases, it will be the same URI that you used for one of the "toolOidcLaunchRedirectUris" earlier. However, if you're importing an LTI 1.3 tool from another Rustici product (Engine, Content Controller, or another SCORM Cloud realm), you'll need the "targetLinkUri" for this value (which will be different from the redirect URIs you specified earlier). For a refresher on how to get this value for an LTI 1.3 Dispatch in SCORM Cloud, see this article about LTI 1.3 Dispatch in SCORM Cloud.
Launching the LTI 1.3 tool from SCORM Cloud
Once the content has been imported, you can then treat it like any other course that you've imported in other ways! You can create registrations, send out invitations, or even create Dispatches to share with your customers in their LMS.
Can I do this in the SCORM Cloud UI?
Once the course is imported, you can do anything you can do with another course package in the UI. However, as of the time of the writing of this article, there isn't a way to perform the content connector tasks in the SCORM Cloud UI. We are constantly working on improving the SCORM Cloud user experience, so we do have plans to provide a way to do everything outlined here via the UI. However as of right now, it's only possible to create LTI 1.3 content connectors and retrieve their details through the API.
As always, if you have any questions or concerns, feel free to reach out to support@rusticisoftware.com