- 06 Oct 2023
- 20 Minutes to read
- Contributors
- Print
- DarkLight
- PDF
LTI (Learning Tools Integration)
- Updated on 06 Oct 2023
- 20 Minutes to read
- Contributors
- Print
- DarkLight
- PDF
Cirrus' support for 1EdTech's† (aka IMS Global†) standard for Learning Tools Integration (Wikipedia ⧉, IMS Global LTI ⧉) allows you to integrate Cirrus as a "Tool" in any LTI 1.3 compatible LMS or "Platform". Further below we also explain the Key Benefits of using LTI with Cirrus.
Certified examples are Canvas, Blackboard, and Sakai with 100 more in IMS Global's Product Directory.
† IMS Global rebranded itself as 1EdTech in 2022.
Many products and systems support LTI without being certified, like Cirrus. Please contact your vendor or IT, as open source LTI 1.3 libraries exist for all major programming languages (e.g. .Net ⧉) so support for the LTI 1.3 specification ⧉ can be added relatively easily to any of your systems.
Key Benefits
Seamless user experience
- From the LMS candidates can lauch directly into their Cirrus Dashboard or directly into their Exam.
- Instructors (Authors) can launch directly into Cirrus
- All this secure without extra login (Single Sign-On)
Results flow back into the LMS
- Scores published in Cirrus automatically appear in the LMS grade book
- Cirrus automatically creates grade book column in LMS for Exams
Instructors can reuse LMS course membership
- Sync Candidates' course membership in LMS for Exams
Minimized administration
- No need to provision users (Cirrus can create them on-the-fly as they enter from the LMS)
- New roles and permissions set correctly automatically.
LTI Quick Start
On this page we give a lot of technical / background information. Yet, the actual set up is rather easy so you could skip this and directly go to Setting up LTI in Cirrus.
Though if you then have any questions or perhaps even run into some issue we strongly recommend to read through this page as most frequently asked questions have been addressed, including how to troubleshoot.
Supported Scenarios
At the moment the following scenario's are supported:
Scenario | IMS Standard |
---|---|
Candidate Launch (Single Sign-On) into the Candidate Dashboard | LTI 1.3 Core |
Candidate Launch (Single Sign-On) into a particular Exam (Schedule) | LTI 1.3 Core |
Instructor (or any other mapped role) Launch into their Dashboard | LTI 1.3 Core |
Multi-role User Launch into Role Selection screen | LTI 1.3 Core |
Synchronize Candidates in Schedule from LMS Roster | LTI Advantage - Names and Role Provisioning Services 2.0 |
Prepare LMS Grade Book before sending scores | LTI Advantage - Assignment and Grade Services v2.0 |
Send published candidate Exam score to LMS | LTI Advantage - Assignment and Grade Services v2.0 |
LTI 1.3 vs REST API (vs Hybrid)
We kindly refer you to the REST API vs LTI 1.3 (vs Hybrid) section of our Integrations Overview of our functional Knowledge Base.
LTI1.0/1.1/1.2 no longer supported
LTI 1.x/2.x no longer secure
Following IMS Global's LTI Security Bulletin ⧉ from July 2019, in January 2021 Cirrus has released LTI 1.3 support. As existing Cirrus customers have migrated we have decided to end support for LTI 1.0/1.1/1.2. This in order to safeguard our customer's data.
LTI 1.3 Advantage enables better user experience
The enhanced capabilities of LTI Advantage, see Key Benefits, eliminate some significant drawbacks of LTI 1.x/Core.
Roadmap
All important LTI 1.3 Advantage features have been delivered now. Though we'd be keen to support the new LTI Proctoring standard.
During Q3 2021 we have released major enhancements to our LTI 1.3 capabilities giving Cirrus one of the best possible LTI integrations currently on the market. With it a single link into Cirrus gives a great user experience (causing us to also deprioritize Deep Linking). In Q1 2022 we released our Admin UI for LTI and routing via deployment_id
for a.o. Blackboard.
In case you're interested in sponsoring "LTI 1.3 Proctoring" (Standard based online proctoring) or are still interested in "Deep Linking v2.0" support please contact us ⧉.
- DONE: Q1 2022 Routing via
deployment_id
[CR-17397] - DONE: Q1 2022 Admin UI [CR-14784]
- DONE: Q2 2022 Blackboard test [CR-16543]
- DONE: Q1 2023 Candidate Sync optional Sakai group filter [CR-19211]
- Q1 2023 Security: Prevent "Clickjacking" - Framing of Cirrus [CR-19758]
- Pending an interested customer: Canvas test [CR-16539] (incl. minor 1d fix [CR-16776])
- Future: LTI 1.3 Proctoring - New standard for online proctoring
- Future (deprioritised): Deep Linking v2.0 (deprioritized as Cirrus works beautifully with only one single link)
Disclaimer: LMS behaviour is beyond Cirrus' control
E.g. how and where LTI Links can be placed in the LMS and what behaviour they support is beyond the control of the Cirrus Platform.
Please contact your LMS/Platform provider for guidance and support.
LTI Launch
Dashboard launch vs "Exam launch"
Cirrus fully supports the dashboard launch, including sending results back. We recommend to provision the tool once to let candidates land in their Candidate Dashboard (1). This removes the need to link to individual exams, and the odd chance it is inadvertently linked to the wrong Exam schedule in Cirrus.
(1) On the Candidate Dashboard candidates can start active Exams and review completed Exams.
N.B. If your users prefer "Exam launch" instead, this is of course supported. A combination of Dashboard launch and Exam launches is also supported.
Online Proctoring via Dashboard launch
Online Proctoring (e.g. Proctorio) is supported via the dashboard launch. The exam launch does not support online proctoring.
New tab/window - Prevent Clickjacking
In accordance with OWASP guidelines Cirrus will add Security headers to prevent IFRAMEs/framing of Cirrus to mitigate Clickjacking attacks (See Roadmap [CR-19758]).
Please always configure your launch links to open in a new tab/window.
Instructor: set up of "Exam launch"
(Please, read Dashboard launch vs "Exam launch" first.)
For the "Candidate Launch (Single Sign-On) into a particular Exam (Schedule) scenario", the LMS and Cirrus both need to know which Schedule is being launched.
In Cirrus, the External ID needs to be copied from the Schedule. And in the LMS added as value of the LTI custom parameter 'schedule_id'.
For example, for Cirrus Schedule "Introduction into Physics" with External ID '2021introphys1', the following LTI custom parameter needs to be configured in the LMS: schedule_id=2021introphys1
LTI Launch Fields
The mandatory LTI field sub containing the user id is the only user field used by Cirrus during launch to look up an existing user via its user id (= User External ID). Following the look up the Role Mapping (see below) is applied.
See Grades Service LMS provisioned grade book column "lineitemurl" ignored
Role Mapping
In Cirrus an administrator can configure the role mapping on the "IMS LIS Mappings" settings page.
As in many LMS'es users can have multiple roles and Cirrus users only one, the Priority column can be used to manage which role Cirrus should assume the LMS user to have.
Sometimes a person, e.g. a Teacher Assistant, can be both an Instructor in one course, and a Student in another. To support this, you have to:
a) Grant the Participate permission to Author role or any other role that might be granted to users that are also candidates
and
b) Ensure the Author-type role(s) have a higher Priority (lower numerically) than the Candidate-type roles.
(Cirrus will not grant the Participate permission automatically to enable organisations to stay in full control)
Ensure "Learner" is mapped to a Cirrus Candidate role or else candidates will get a 400 Error. Likewise ensure "Instructor" is mapped and vice versa for all other roles you intend to use
To support double roles, the LIS Roles are divided in Role Types "Candidate" and "Author":
Role Type | LIS Roles |
---|---|
Author | Administrator, Faculty, Guest, Instructor, Member, Mentor, None, Observer, Other, Staff |
Candidate | Learner, ProspectiveStudent, Student |
LMS Launch w/ LTI Roles | Candidate or Author part | Remarks |
---|---|---|
"Candidate" only | Candidate Delivery | Unless user already exists with a role without "Participate" permission, then an error! |
"Author" only | Author part | New user gets "Author" type role with the highest priority (lowest numerically). See also Candidate automatically updated to double role below. |
Mixed | Role Selection Screen | Mixed means both Candidate and Author like roles. |
If an "Author" launch happens for an existing "Candidate" user in Cirrus. Cirrus will automatically switch the user to that role if it has the "Participate" permission. If such role does not exist Cirrus will give an error.
(The error is to enable your organisation to stay in full control)
Role info is contained in the "https://purl.imsglobal.org/spec/lti/claim/roles" claim of the LTI Launch JSON.
See User Role - Hierarchy Permissions mapping how the hierarchy permissions will be automatically set.
On-the-Fly User / Hierarchy Creation
If very large groups of candidates have to be created at the start of an exam this will severly impact the Cirrus Performance!
For workflow reasons, e.g. to set up the marking workflow, it's strongly adviced to ensure (almost) all candidates are in the schedule ahead of the exam.
Cirrus offers two solutions (in addition to creating the users using the REST API, via manual import, or manually):
See Synchronize Schedule's Candidates (aka Roster) further down.
or
You can open a long schedule "Get Acquainted with Cirrus" Exam and monitor the majority of candidates have launched it before an actual Exam.
On-the-fly scheduling
If your users for some reason cannot organize to have the candidates scheduled in advance, Cirrus LTI offers on-the-fly scheduling but for above mentioned reasons we advice to avoid using this because of its negative implications on a.o. the marking workflow.
LTI User Field Mapping
Only used if a Cirrus user needs to be created on-the-fly.
Normally you want the candidates to be known by name in Cirrus and have their email, so do not forget to enabled "Send Names" and "Send Email" options in your LMS. (Or else you have to manually update this user information.)
LTI Field | Cirrus | Remarks |
---|---|---|
sub | username | Only field required by LTI. NOTE: If sub contains a '/' it and everything before it is removed so only the last part is kept of a sub in the form of a URI. |
sub | user_id | Cirrus External ID Primary Key, same as username |
given_name | firstname | Optional in LTI, if given_name is empty Cirrus will fill firstname with "["+sub+"]". Most LMS have a "Send Names" option that is best enabled. |
family_name | lastname | Optional in LTI, if family_name is empty Cirrus will fill lastname with "["+sub+"]". Most LMS have a "Send Names" option that is best enabled. |
name | full name from LTI is ignored as Cirrus does not have a full name field | |
Most LMS have a "Send Email" option that is best enabled. |
The on-the-fly creation does not updated existing user's name or email for performance reasons. So it's best to enable "Send Names" and "Send Email" LMS options from the start.
LTI Context - Hierarchy Field Mapping
Only used if a Cirrus Hierarchy needs to be created on-the-fly.
LTI Field | Cirrus | Remarks |
---|---|---|
context.id | Hierarchy “Organisation ID” | “Organisation ID” is the External ID of a Cirrus Hierarchy |
context.label | Hierarchy Name | |
context.name | See context.label | Ignored if context.label filled |
Synchronization key | GUID (so cannot be filled with context.id) | |
Root level | Always Enabled to limit the access of users | |
Allow relationship with Scheduled assessments | Always Enabled |
Context info is contained in the "https://purl.imsglobal.org/spec/lti/claim/context" claim of the LTI Launch JSON.
User Role - Hierarchy Permissions mapping
Besides creating the user and the hierarchy, Cirrus also sets the user's hierarchy permissions. Cirrus does this by taking the mapped Cirrus user role and context(s) from the launch:
If Cirrus Role has … permission | then … must be checked/enabled on Hierarchies (1) for this user |
---|---|
View Coordinator tab | Coordinator |
View Audit tab | Reports |
View Rescoring tab | Rescoring |
Manage users | Administration |
(1) NOTE: Only for the hierarchy (or hierarchies) from the context(s) of the current LTI launch being processed. |
Grades Service
Cirrus can send the published result back to the LMS that supports LTI Advantage - Assignment and Grade Services v2.0 ⧉.
Cirrus can only send back results if and only if in the LMS:
a) The Grade Service is enabled (in general)
and
b) Tool is allowed to create grade book columns (aka line items).
Of course the exact naming of these settings depends on your Platform/LMS.
The Create LineItem (Grade Book Column) Service allows Cirrus to create the right grade book columns for Exams with the correct name from Cirrus, and chose the correct grade book column dependent on the Exam taken in Cirrus.
When placing a link the LMS (Consumer) will provision a grade book column. During the launch the LMS (Consumer) will sent the "line_item_url" to this auto provisioned gradebook column.
In order for Cirrus to ensure results for the different Exams are send into the correct grade book column, Cirrus will ignore this "line_item_url", auto provisioned line item URL, and only use grade book columns (line items) provisioned by Cirrus. This may cause empty grade book columns (though most LMSes hide these) though tiny disadvantage does not outweight the huge benefits.
Create LineItem (Grade Book Column) Service
Cirrus will create a line item (= Grade Book column) for each schedule. This enables Cirrus to give the grade book column the correct name
In Cirrus the Schedule Name may be reused and is thus not unique. To prevent duplicate Grade Book Columns Cirrus will automatically fill the Schedule's External ID with a generated shortcode if it happens to be empty when sending the results.
LTI Line Item - Schedule Field Mapping
LTI Field | Cirrus | Remarks |
---|---|---|
resourceId (1) | External ID of Schedule | Primary Key for Cirrus Integrations. (1) Many LMSes require resourceId to be filled. NOTE: As it is not mandatory, if empty during sending grades Cirrus will create a short code and fill Schedule's External ID. |
context.id | Hierarchy “Organisation ID” | “Organisation ID” is the External ID of a Cirrus Hierarchy |
label | "Schedule Name (External ID)" | The Schedule's External ID is filled it is appended to prevent duplicate errors (as Schedule Name is not unique in Cirrus). NOTE: If the External ID is empty, Cirrus will automatically generate a short code and fill the Schedule's External ID. |
scoreMaximum | Maximum score | For Random forms Cirrus will update the scoreMaximum if a candidate obtained a higher score. See Maximum score with advanced usage below. |
startDateTime | Schedule start date/time | Only send if filled |
endDateTime | Schedule end date/time | Only send if filled |
Never send. Deprecated LTI field. Any resourceLinkId from the launch is currently ignored by Cirrus |
With Random forms on non-evenly scored question pools, Cirrus cannot know in advance the maximum score for a candidate. Creating a grade book column per maximum score could lead to as many columns as there are candidates, for this reason Cirrus will only use one column and automatically update its maximum score (as some LMS do not accept scores over the maximum).
Score Publish Service
Cirrus sends the published result to the Grade Service's Score Publish Service ⧉.
The LMS endpoint is the aforementioned "line_item_url". An example payload (taken from the standard) is:
{
"timestamp": "2017-04-16T18:54:36.736+00:00",
"scoreGiven" : 83,
"scoreMaximum" : 100,
"comment" : "This is exceptional work.",
"activityProgress" : "Completed",
"gradingProgress": "FullyGraded",
"userId" : "5323497"
}
How and where the LMS shows the score's published by Cirrus is beyond the control of the Cirrus Platform. Please contact your LMS/Platform provider for support.
Synchronize Schedule's Candidates (aka Roster)
Cirrus can synchronize the candidates of a schedule with the schedule's hierarchy roster from the LMS that supports LTI Advantage - Names and Role Provisioning Services v2.0 ⧉.
Cirrus can only retrieve the membership if and only if: in the LMS the Roster (Names and Role Provisioning Services) Service is a) enabled (in general) and b) enabled for the Instructor LTI launch (in particular) and the schedule's hierarchy has an External ID that matches a Context ID in the LMS.
This because the LMS will send to Cirrus the Membership Service URL, where to retrieve the roster information from, during the Instructor launch. Cirrus will store this URL in the hierarchy with matching External ID (LTI Context ID) so after one such LTI launch the hierarchy can also be syncronized by other users also without LTI launch.
For Sakai-Cirrus customers with large Sakai "sites", Cirrus supports "Groups" in order to synchronize with a selection of groups rather than all the candidates of the whole Sakai site.
NOTE: Uncheck Exclude ## candidates that are in multiple groups. to prevent adding a candidate multiple times in your different schedules, if unchecked candidates will only be added for the group with the highest priority (smallest size). Groups will be prioritized in order of increasing size (and if equal in size; alphabetically).
Setting up LTI in Cirrus
A Cirrus Administrator can configure the LTI1.3 integration through the Cirrus UI when LTI has been enabled.
- Go to Administration > INTEGRATIONS > IMS LTI.
Please contact our Service Desk⧉ if IMS LTI is missing in your Cirrus environment so they can enable it for you.
- Click Add item to create a new LTI 1.3 configuration
- Choose a title for your integration
- Select your Platform/LMS, use "Other" if not listed.
- Depending on your choice you need to provide different information, see:
- For all LMS's the settings in the table below are available.
- Click Save and Close
Cirrus LTI Settings
Setting | Chapter with more info | Description/Remarks |
---|---|---|
Enable Grade Services | Grades Service | Adviced to enable if your LMS supports LTI Advantage - Assignment and Grade Services v2.0. Do not forget to enable it for Cirrus in your Platform/LMS. |
Enable Candidate Synchronization for Schedules | Synchronize Schedule's Candidates (aka Roster) | Adviced to enable if your LMS supports LTI Names and Role Provisioning Services v2.0. Do not forget to enable it for Cirrus in your Platform/LMS. |
On-the-fly User Creation | On-the-fly User / Hierarchy Creation | Normally enabled but as described please do NOT rely on on-the-fly candidate creation at exam time for a large groups of candidates. |
On-the-fly Scheduling for Exam Launch | On-the-fly Scheduling under On-the-fly User / Hierarchy Creation | As described we advice you to leave this disabled. |
Blackboard
Thanks to the shared deployment model of Blackboard, Cirrus can fill in all the details of an integration for a Cirrus Region in the Blackboard market place so you merely have to:
- In Blackboard look up our application in the market place and add it to your Blackboard, see Blackboard Application Name in the table below.
- and then in Cirrus fill in the Client ID (provided by Cirrus, see the table below) and your own Deployment ID (provided by your Blackboard).
NOTE: If Blackboard has not been set up for your "region", please Contact our Service Desk⧉.
Cirrus Region | Cirrus Location | Blackboard Application Name | Client ID | Remarks |
---|---|---|---|---|
EU (Standard) | Dublin | Cirrus Assessment Europe - Standard | bf3e586a-3d53-47cc-9590-424c0c8ca508 | |
EU Premium | Dublin | Not set up yet | Not set up yet | Do NOT use "Cirrus Assessment Europe" but Contact our Service Desk⧉ |
AU | Sydney | Cirrus Assessment Australia | f3ee33f1-0b2c-4405-8229-fc9caa8381b6 | |
CA | Toronto | Not set up yet | Not set up yet | Contact our Service Desk⧉ |
SG | Singapore | Not set up yet | Not set up yet | Contact our Service Desk⧉ |
RC (Release Candidate) | Dublin | Cirrus Assessment Release Candidate | 0f73834d-f5f7-4a26-a33b-221e309b5afb | Only for testing!!! |
Internal Note: The Application ID in the Blackboard Developer portal is configured as Client ID in Cirrus shared cluster configuration.
Canvas Cloud
If you are a Canvas Cloud customer please contact our Service Desk⧉
If you are self-hosting Canvas, please select "Other" and use that to set up your integration. Please do contact Service Desk⧉ as there is one minor issue to be solved for Canvas [CR-16776].
Sakai
The Sakai configuration is like "Other". Please be aware that if you're running your Sakai in a cluster, you have to:
- Add an "Issuer" line for each Sakai node in your cluster.
- Fill the "Line Item Base URL" with the (one) line item url of your cluster.
As apart from this attention point the configuration is exactly like "Other" please follow those instructions.
Other (Any LTI 1.3 supporting Platform/LMS)
Platform ID
For the Platform ID please choose a short identifier that will be used in the Cirrus LTI URLs. Please note that it must be 5 to 15 characters and only a-z, A-Z, 0-9 and hyphen ‘-’ are allowed.
Provided by the Platform/LMS
In order to prevent a Catch-22 where your Platform/LMS requires the Cirrus LTI URLs while Cirrus requires the Platform/LMS info, Cirrus will generate the Cirrus LTI URLs, see Provide to the Platform/LMS, as soon as you have filled in your Platform ID.
The Customer LMS (aka "Platform") Administrator needs to provide you with the following information to configure in Cirrus:
Platform Config Item | Example | Description/Remarks |
---|---|---|
Client ID | 320398d5-fb7b-4936-abb6-74b5f9fc3cd3 | Should look like a GUID |
Issuer | https://lms.demo.edu or http://sakai-node2.demo.edu:80802 | In the form of a URL. If you're LMS is clustered and "leaks" multiple issuers, you can add a separate "Issuer" line for each node. |
OAuth2 Public KeySet URL | https://sakai.demo.edu/imsblis/lti13/keyset/102 | aka Well-Known KeySet URL |
OAuth2 Token Endpoint URL | https://sakai.demo.edu/imsblis/lti13/token/102 | aka Platform OAuth2 Bearer Token Retrieval URL |
OpenID Connect (OIDC) Authentication Endpoint URL | https://sakai.demo.edu/imsoidc/lti13/oidc_auth | |
Line Item Base URL | https://sakai.demo.edu | Needed only if your using Grades Service and your LMS is clustered and "leaks" multiple issuers, you can then specific the cluster's line item base URL. |
If you self-host your Platform/LMS you must ensure your above URLs are reachable from outside your network (firewall).
Provide to the Platform/LMS
This is the info your LMS Administrator need to fill in in your Platform or LMS. As soon as you have chosen and filled in your Platform ID, Cirrus will generate the URLs and fill these fields:
Cirrus Config Item | Example | Description/Remarks |
---|---|---|
LTI1.3 Launch URL | https://lti.cirrusplatform.com/launch/testcustomer | |
LTI1.3 Tool OpenID Connect/Initialization Endpoint. Example shown for Platform ID testcustomer . | https://lti.cirrusplatform.com/oidc | |
LTI1.3 Tool Redirect Endpoint | https://lti.cirrusplatform.com/launch/testcustomer | same as LTI 1.3 Launch URL |
LTI1.3 Tool JWKS URL | https://lti.cirrusplatform.com/jwks/testcustomer | Preferred way of supplying Cirrus' public key. Example shown for Platform ID testcustomer . |
Public Key | -----BEGIN RSA PUBLIC KEY----- ... | Only use this when needed because your Platform/LMS does not support above JWKS URL (e.g. older versions of Sakai). |
TROUBLESHOOTING
Platform not reachable from the Internet
If you self-host your Platform/LMS please first check the URLs under Provided by the Platform/LMS are reachable from outside your network (firewall). E.g. by testing them on your mobile phone without Wifi, or trying it from home.
LTI Launch issues
In order to troubleshoot LTI launch issues you need some minimal technical expertise as you, or your technician, need to be able to open the Developer Toolbar of your web browser (e.g. F12 in Chrome) and find the details of your LTI Launch request, and in particular the LTI 1.3 Launch JSON ⧉.
- Open Browser's Developer Toolbar
- (If you've configured to open Cirrus in a pop-up, use Chrome and enable "Auto-open DevTools for popups" in the "Developer Tools"⧉ settings)
- Find first POST request to
lti.cirrusplatform.com
(orlti-<envid>
if your Cirrus is not hosted on our standard EU, see Platform URLs) - In the Request data find the
id_token
parameter and copy its value - Decode the JWT token (e.g. via https://jwt.io/)
For an example LTI 1.3 Launch JSON, see the "Example LTI 1.3 Launch JSON" paragraph further below.
In case, you must contact our Service Desk for help, please ensure you provide the following:
- At least one "LTI 1.3 Launch JSON"
- A screenshot of your "IMS LIS Mappings" settings screen in Cirrus
Please note that Cirrus will ignore any LTI1p1
claims.
As per Canvas Cloud section above, it won't work until one minor issue is resolved for Canvas [CR-16776]. Not prioritized so far due to lack of demand
Example LTI 1.3 Launch JSON
Taken from the Learning Tools Interoperability Core Specification 1.3 ⧉ section "E. Full example resource link request".
Important fields and claims have been described on this page (e.g. "sub", "https://purl.imsglobal.org/spec/lti/claim/roles", and "https://purl.imsglobal.org/spec/lti/claim/context")
{
"iss": "https://platform.example.edu",
"sub": "a6d5c443-1f51-4783-ba1a-7686ffe3b54a",
"aud": ["962fa4d8-bcbf-49a0-94b2-2de05ad274af"],
"exp": 1510185728,
"iat": 1510185228,
"azp": "962fa4d8-bcbf-49a0-94b2-2de05ad274af",
"nonce": "fc5fdc6d-5dd6-47f4-b2c9-5d1216e9b771",
"name": "Ms Jane Marie Doe",
"given_name": "Jane",
"family_name": "Doe",
"middle_name": "Marie",
"picture": "https://platform.example.edu/jane.jpg",
"email": "jane@platform.example.edu",
"locale": "en-US",
"https://purl.imsglobal.org/spec/lti/claim/deployment_id":
"07940580-b309-415e-a37c-914d387c1150",
"https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiResourceLinkRequest",
"https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0",
"https://purl.imsglobal.org/spec/lti/claim/roles": [
"http://purl.imsglobal.org/vocab/lis/v2/institution/person#Student",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Learner",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Mentor"
],
"https://purl.imsglobal.org/spec/lti/claim/role_scope_mentor": [
"fad5fb29-a91c-770-3c110-1e687120efd9",
"5d7373de-c76c-e2b-01214-69e487e2bd33",
"d779cfd4-bc7b-019-9bf1a-04bf1915d4d0"
],
"https://purl.imsglobal.org/spec/lti/claim/context": {
"id": "c1d887f0-a1a3-4bca-ae25-c375edcc131a",
"label": "ECON 1010",
"title": "Economics as a Social Science",
"type": ["http://purl.imsglobal.org/vocab/lis/v2/course#CourseOffering"]
},
"https://purl.imsglobal.org/spec/lti/claim/resource_link": {
"id": "200d101f-2c14-434a-a0f3-57c2a42369fd",
"description": "Assignment to introduce who you are",
"title": "Introduction Assignment"
},
"https://purl.imsglobal.org/spec/lti/claim/tool_platform": {
"guid": "ex/48bbb541-ce55-456e-8b7d-ebc59a38d435",
"contact_email": "support@platform.example.edu",
"description": "An Example Tool Platform",
"name": "Example Tool Platform",
"url": "https://platform.example.edu",
"product_family_code": "ExamplePlatformVendor-Product",
"version": "1.0"
},
"https://purl.imsglobal.org/spec/lti/claim/target_link_uri":
"https://tool.example.com/lti/48320/ruix8782rs",
"https://purl.imsglobal.org/spec/lti/claim/launch_presentation": {
"document_target": "iframe",
"height": 320,
"width": 240,
"return_url": "https://platform.example.edu/terms/201601/courses/7/sections/1/resources/2"
},
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"xstart": "2017-04-21T01:00:00Z",
"request_url": "https://tool.com/link/123"
},
"https://purl.imsglobal.org/spec/lti/claim/lis": {
"person_sourcedid": "example.edu:71ee7e42-f6d2-414a-80db-b69ac2defd4",
"course_offering_sourcedid": "example.edu:SI182-F16",
"course_section_sourcedid": "example.edu:SI182-001-F16"
},
"http://www.ExamplePlatformVendor.com/session": {
"id": "89023sj890dju080"
}
}