Distinguish between Instructor and TeachingAssistant in LTI 1.3

Jump to solution
chmaurer
Community Explorer

We have a bunch of locally developed LTI tools and we are in the process of switching them from 1.1 to 1.3.  We have a few tools where we want to differentiate between an Instructor and a TeachingAssistant, but that is not easily done since the one is a sub-role of the other.  Our use case is to grant the highest level of access that the user could have, so we start with admin and work our way down.

So, for example when an instructor launches, the role data has 

 

http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor

 

 and our tool can assume that the user is an instructor.

But, when a TA launches, we see 

 

http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor,http://purl.imsglobal.org/vocab/lis/v2/membership/Instructor#TeachingAssistant

 

...if I check to see if the user is an instructor before I check to see if they are a TA, it will come back as instructor (which is bad).

Well, maybe I should check to see if a user is a TA first then?  Well, no, that doesn't work either.  If a user is a TA in one section but an Instructor in another section, we want them to come across as an instructor.

So, what are my options here?  Is there some other magical piece of data I should be looking at?  Can I set a flag in my tool json that tells it to only send the sub-role?  Hoping someone has some advice/guidance!

Chris

Labels (3)
0 Likes
5 Solutions
ColinMurtaugh
Community Champion

Canvas is actually following the LTI 1.3 spec here; the spec even gives the TA example explicitly: 

LTI does not classify any of the sub-roles as a core role. Whenever a platform specifies a sub-role, by best practice it should also include the associated principal role; for example, by best practice, a platform specifying the http://purl.imsglobal.org/vocab/lis/v2/membership/Instructor#TeachingAssistant role should always also specify the http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor role.

Is it very common to have a person with an instructor role in one section and a TA role in another section, in the same course? 

--Colin

View solution in original post

Well, that's interesting.  What is also interesting is that for other subroles, I'm not seeing the same behavior.  Not sure if there are implementation specific settings, or if Canvas chose to not follow the spec for other roles?  But Observer, Librarian, and Grader for example, don't send along the primary and sub roles.  Also, that documentation seems like it's incorrect?  It has Instructor as a subrole of Learner?  That sure doesn't sound right.

From a technical standpoint, that spec (and implementation) doesn't make it easy for tool developers to do what I'm trying to do (i.e. figure out what role a user is in).  But it probably doesn't do us any good to debate the spec here!

As to your question about it being common to have a user with a TA role in one section and an Instructor role in another section of the same course...I have no idea!  I'm looking at it with my developer blinders on.  Technically it is possible, so I'm trying to account for that case in my role resolving code.  Does it actually happen in real life?  Not sure.

Chris

View solution in original post

0 Likes

Yeah, some of the role/sub-role combos in the spec seem odd, but I do think Canvas is following the spec. Grader and librarian are not standard roles in Canvas, so the LTI launch will just contain the standard role that they are based on. 

For the Observer role Canvas sends "Mentor" which seems reasonable and closer to the actual purpose of the role than "Manager#Observer". 

--Colin

View solution in original post

0 Likes
leward
Community Contributor

@chmaurer , I know that we've tested behavior with users having multiple roles in the same section and/or different sections, but in terms of the practice in real courses, my gut tells me it's an edge case.  We could probably determine the extent to which this scenario exists with some Canvas data analysis.  

I have a question though since I don't have visibility into what is being sent by Canvas.  You posted examples of the role data sent when the user is an instructor and when the user is a TA, but I'm wondering what the data looks like when the user is both an instructor and a TA.  Is it identical to the data sent for the TA subrole, or are there strings for each role, and if so, how are they delimited?  Can you post an example?

 

View solution in original post

0 Likes
JamesSekcienski
Community Contributor

I haven't built an LTI yet, so I'm not sure if this is possible, but could you use an API call to determine their course role(s) rather than relying on the value passed by the LTI?  Would this require creating a Developer API Key for this aspect?

View solution in original post

0 Likes