LTI Resource Handler Endpoints (Follow-Up)

LTI Resource Handler Endpoints (Follow-Up)

Thank you Stephen for your answer. I just had a few follow-up questions and I apparently can't reply to my own post, so I copied/pasted the last post and your response here.

So I assume they would then author a link with TC-wide credentials instead of authoring a link using a predefined resource type. In that case, it seems like I wouldn't want to define a Rsource Type in the Tool Proxy for assignments, which might be confusing for the teacher. Does that sound right or is there some requirement for me to define a Resource Type for assignments even though I expect the teacher to create a link independently of the Resource Types defined in the Tool Proxy?

If I go this route, is there any reason I should prefer a custom parameter over a route parameter since the teacher will create a link for each assignment anyways? Also, I don't see any mention of a "Content-Item Selection Request", what is that and where would I be able to read more about it? Is it similar to the "basic_lti_link descriptor" described in section 7.1 of the specs?


How can a user access a particular resource with LTI v2.0? With Resource Handlers, we have to define a static endpoint for accessing a resource type when creating the Tool Proxy. For example, let's say my platform has a resource for assignments and that I define a Resource Handler for assignments with the "path" lti/resources/assignments. How would the user then create a link to a particular assignment?

Using my platform's style, I would probably create a link like /lti/resources/assignments/:assignmentCode, where :assignmentCode would be replaced with a unique ID for the assignment the user wants to use. This doesn't appear to be possible, though. I also cannot specify a custom parameter to be used with the Route Handler because the TC wouldn't understand what an "assignment code" is or what assignment code to use? I can't use a constant value, either, because that would lead to the same problem.

Furthermore, if I just link to a list of assignments and I'm using the Results service, a single Result object will be created, but the student could take multiple assignments. From my understanding, I cannot tell the TC to create more Result objects.

Figure 10.9 in Section 10.2 of the LTI v2.0 Implementation Guide provides an interesting start of an example of how this might be accomplished by defining a custom parameter, but it doesn't define the value to use with the custom variable. The relevant code is duplicated below:

"parameter": [
    "name": "assessment_id"


My normal expectation would be to use a custom parameter to indicate the assignment code in a specific resource link. Such custom parameters would not be part of the message declaration in the Tool Proxy, but be added for individual resource links when they are created. Using the Content-Item Selection Request message makes this a seamless process for the instructor as the custom parameter can be passed back to the Tool Consumer when the link is created.

StephenVickers's picture

Re: LTI Resource Handler Endpoints (Follow-Up)

When using LTI 2, you should define a resource in the Tool Proxy because this is how the tool becomes registered in the Tool Consumer and can be made visible to the instructors.  An instructor would then select this tool from the appropriate menu to create an instance of it in their course.  The best workflow would be for the resource to support the Content-Item message so that as part of the process for creating the instance the tool provider can create the assignment to be used (or associate an existing assignment) and return the ID for this assignment back to the tool consumer as a custom parameter to be passed on each launch.  Otherwise, the instructor would add this custom parameter manually to the instance they create.  Custom parameters are the supported mechanism for passing additional data to a tool provider; query parameters may work but this, in my view, goes beyond the spec because it is altering the launch URL specified in the tool proxy.

You can find details of all the specs on the IMS website - see - select the "view all..." option from the Specifications "portlet".  The Content-Item message specification was released in May 2016.

This is c1moore again. I am

This is c1moore again. I am now using the account my company recently set up.

I think I understand now that I found the Content-Item specification. So you are suggesting that if the TC supports Content-Item Selection Request, then I can have my system specify a constant custom parameter to be associated with a specific link being created. Otherwise, the teacher will have to specify a constant custom parameter when creating the link. I ask because it's not necessarily clear from the specs that custom parameters can be specified when authoring a link with a Resource Type and I don't have much experience interacting with a TC implementation of the LTI specs.

If the teacher has to enter the custom parameter, I assume we have to provide the teacher with the parameters they need to enter. How should our system provide them with the custom parameter? For example, should we specify the custom parameters like a query string (e.g. "assignmentCode=XXX&additionalParam=YYY"), using JSON, or some other format?

Thank you again.

StephenVickers's picture

Re: This is c1moore again. I am

The spec does not mandate when/where custom parameters should be defined, but Appendix B.7.1 of the LTI 1.1.1 Implementation Guide ( does cover the use case of when an "Instructor Creates New Tools".  In the implementations I am aware of, cjustom parameters are entered as name and value pairs one per line; e.g.


Do not include the custom_ prefix which will be added automatically by the tool consumer.