The LTI Deep Linking 2.0 specification allows the Deep Linking Response message to contain any number of selected or created resources from a tool. The Platform is then responsible for adding all of these resources into the current context (a module, for Canvas I suspect).
Canvas REST API documentation seems to suggest that Canvas only supports DL response messages that contain one resource. The docs I saw this at is: https://canvas.instructure.com/doc/api/file.link_selection_placement.html (under the section "Limitations / Challenges").
Is there a plan to support multiple items in a Deep Linking Response message?
If not, what is the suggested alternative to a Deep Linking launch that can result in multiple items being created in a Canvas course? It seems that perhaps an "on the fly Common Cartridge" can be generated in a tool and used to target a "migration_placement".
Ultimately my use case is that I have a curriculum building tool that needs to replicate a course structure in the LMS by creating some number of modules, each of which would contain resources (primarily LTI external tool launches back to specific resources in the tool).
I am noticing that there are some implementations out there like the one shown in this video where they are able to select multiple resources. I am not quite sure how they accomplished this. It doesn't look like LTI standard deeplinking process though.
I don't have an answer to this question, but I'm working on product design for a tool with a similar use case. Darren, if you've learned anything since you posted this question in August I'd be curious about it. We'd backburnered this feature in our own product but we're starting to come around to it again. We (understandably) haven't been able to get a hold of Canvas support during the past couple weeks, but maybe this context is helpful, even if it's a bit dated.
About a year ago (late 2019) we'd talked a bit with our Canvas partner support contact about 1.3 deep linking. The word then was, there's no support for multi-item deep linking, but possibly they would look into a solution in the longer term. I don't know if that's happened but I wouldn't assume so.
My understanding is that other (larger) product integrations are mostly handling this with non-LTI customization. I know Canvas also extended the LTI 1.3 Assignment & Grade Service (I believe to support one particular product) -- allowing a line-item POST to create an external tool assignment linked to the grade item. That's documented briefly here: https://canvas.instructure.com/doc/api/file.assignment_tools.html We didn't see that as too attractive an option since it didn't meet our own use case completely, and we don't trust it'll be extended any further in the future. But if you're dealing with graded deep links, that might be worth exploring.
To add multiple resource links at once, you cannot currently use deep linking in Canvas because Canvans does not accept multiple new deep link resources.
However, you can use the assignment and grade services with an extension (2.1.4 Extensions). In particular, the Canvas documentation says "The Line Item service has been extended to allow an external tool to not only create gradebook columns (i.e. assignments) in Canvas, but also connect the column/assignment to a specific LTI resource on the external tool. This means that when the student accesses the assignment from Canvas, they are able to see the external tool content directly in the page, complete their assessment on the tool side, and have grades returned without the instructor having to manually create assignments in Canvas."
When creating a new line item with the AGS, include the parameter "https://canvas.instructure.com/lti/submission_type" (docs), which is an object with two properties, one of which is the url of the launch target.