The more I test the LTI LineItem service in Canvas, the more confused I seem to become. I have already reported in a separate post about line items I create not being visible within the Canvas Gradebook. Now I am finding that, if I create a line item without associating it with a resource link ID, as well as creating the line item, an assignment is also created (and automatically published). Although the LineItem service does not show that the line item is associated with a resource link, I have found that deleting the line item via the LineItem service also deletes the assignment. Likewise, deleting the assignment via the Canvas UI also deletes the line item. So there is clearly a linkage being maintained between the two, it is just that the LineItem service is not revealing this. My expectation with the LTI LineItem service was that, if a line item is not associated with a resource link ID, it would remain until deleted by the LTI tool or until the course is deleted. I have also found that if I use the Canvas UI to duplicate the assignment, a new line item appears in the gradebook but it is not associated with the LTI tool (not included in calls to the lineitems endpoint) and its endpoint is not passed to the LTI tool in a launch message.
Is anyone else able to replicate this behaviour and/or comment on whether it is behaving as designed, or if there is a bug here?
So, after an exchange with Canvas support, the answer to my confusion is that Canvas does not allow a line item to exist without being associated with an assignment. So when a line item request is received without a resourceLinkId parameter it creates and publishes an assignment to associate with the new line item. This means, for example, if an LTI link connects to a set of 5 activities and the outcome for each is returned to Canvas, it will create 5 assignments as well. And these assignments cannot be deleted (otherwise the line item will be deleted) and if they are not to be used (which is more than likely as they are associated with a resource link ID which is not known to the tool) they need to be hidden from students. It is a debatable point as to whether Canvas is right to hide the association with an assignment by omitting the resourceLinkId element from the description of the line item, even though it has clearly been associated with one.
To me this is not in the spirit of the LTI spec, or how I have found other LMSs to behave. I believe that the intention of the LTI Line Item service is to allow a tool to manage line items in the gradebook and not have additional elements created as by-products. If Canvas needs to create an assignment in order to achieve this, I feel it should be hidden from view.