Using LTI to provide deep integration of YouSeeU Video Assessment in MindTap.

  • What worked
  • What was missed

Claude Vervoort - Architect, MindTap team - Jeff Lewis PhD, CLO, YouSeeU

synchronous (live capture) and asynchronous speech video delivery, recording and grading

Courseware platform assembling rich content and activities in a customizable environment.

MindApps are used to actually deliver Content and Activities.


Standards at Play

Rating on how LTI played out for main integration points:

  • Launching an Assessment
  • Adding/Editing an Activity
  • Submission and Grading
  • Master and Courses
  • Roster

Launching an Assessment

When clicking on the Learning Path, the right assessment opens in the right state for current user.

Down arrow

Basic LTI Launch

lti_message_type: basic-lti-launch-request
context_id: 46
context_title: 'Course Name'
user_id: 1234455
roles: 'Instructor'
lis_person_name_family: 'Smith'
lis_person_name_given: 'Samantha'
custom_ref_id: 'asst-345'
custom_activity_enddate: 1399519279
custom_course_enddate: 1399892453
oauth_consumer_key: 'mindtap'
oauth_sign: '6mzAT1/8K9y3Bu2co417WT2g0Dc='


take 🕐 peer review


That is what Basic Launch is for, however too much reliance on custom params

Adding an Activity

As an editor or an Instructor, I want an integrated authoring environment to add or edit YouSeeU activities in MindTap.

Down arrow

Content Item Request Launch

1: Content Item Request

lti_message_type: ContentItemSelectionRequest
#add flow continutation
data: mindtap-continutation-data
context_id: 46
context_title: 'Course Name'
user_id: 1234455
roles: 'Instructor'
oauth_consumer_key: 'mindtap'
oauth_sign: '6mzAT1/8K9y3Bu2co417WT2g0Dc='

2: YouSeeU responds

content-items: {
     "@context": ["", 
     "@graph": [{
         "@type": "ContentItemPlacement",
         "placementOf": {
             "@type": "LtiLink",
             "mediaType": "application/vnd.ims.lti.v1.launch+json",
             "title": "Subjective Assessment",
             "activityRefId": "12ad5g",
             "mtScorable": {
                 "pointsPossible": 34.53
data: mindtap-continutation-data

3: Back in Mindtap,

Instructor submits

...or cancel


  • No confirmation when truly added
  • No grading information
  • No Edit flow
  • No Delete notification

Content Item: more than LTI Links


Fills a key gap. Will evolve!

Submission and Grading

As an Student, I need to know in MindTap the status of my activity, in progress, submitted, graded.

Down arrow

Basic Outcome Service (the POXes)

lti_message_type: basic-lti-launch-request
#who, where, what, trust as before
lis_outcome_service_url: http://local.mindtap/nb/service/ltiOutcome/saveAttempt/
lis_result_sourcedid: '3e39d9bd-77df-4cb4-8070-07ca76c75c52'

POX example


States Mapping

  • In Progress: on 1st launch (attempt created)
  • Submitted: POX ReplaceResult, empty Result
  • Graded: POX ReplaceResult, 0-1 grade rescaled
  • Reset (YSU initiated): POX DeleteResult
  • Reset (MindTap initiated): Callback Proprietary

Graded by System

No information about the actor :(


Too limited and clunky to grow into, but worked! Looking forward to Rich Outcomes.

Masters and Courses

As an Instructor, I want a course with great content and activities that I can then customize

=> Each course is a modifiable copy of a Master

Source Context

lti_message_type: basic-lti-launch-request
context_id: 46
#on every launch, used to do Lazy copy of YouSeeU context
source_context_id: 34


Proprietary semantics using LTI plumbing


As an Instructor, I need to setup group activities in advance. Late enrollment on 1st student launch is not enough.

MindTap ROSTER Service

# All Course enrollment
GET http://{mindtap}/roster/{contextId}

# Feed like Pull api for update
GET http://{mindtap}/roster/{contextId}?since={unix_timestamp}

#secured with simple HTTP Header signature using LTI Shared Secret


But bot for long! Membership Service cooking...

so, final Verdict?

Awesome :)

  • Bootstrap integration (basic integration quickly up and running)
  • Lingua Franca
  • A model to grow into
  • Experience can be shared for next integrations and the community

Q & A

images from: