For Developers

Canvas Blueprint Courses

Canvas Blueprint Courses serve as master templates that allow administrators or instructional designers to define content once and push it out to associated child courses. While this feature is powerful for content management, it introduces specific behaviors regarding data synchronization and assignment propagation that developers must account for.

Visibility and Syncing

Blueprint courses are often treated differently than standard instructional classes within Canvas. By default, Edlink does not sync Blueprint courses because they typically do not have active enrollments or traditional academic sessions.

This default behavior has a critical implication for LTI integrations: LTI launches originating from a Blueprint course (specifically Deep Linking launches) will fail with authentication errors. Because Edlink is unaware of the course context (since it hasn't been synced), it cannot validate the launch or associate it with a known entity in your integration.

To support LTI launches from within Blueprint courses, you must ensure that Blueprint/Template courses are enabled for syncing. This is a source-level configuration within Edlink that instructs the pipeline to ingest these courses despite their lack of active enrollments. Without this setting enabled, Edlink cannot resolve the launch context. Please reach out to Edlink support to enable template course syncing for the specific integration.

Content Propagation and Assignments

When content is pushed from a Blueprint course to a child course, the behavior differs depending on how the assignment was created:

  • API-Created Assignments: Assignments created directly via the Edlink Graph API in a Blueprint course may not function as you're expecting when copied to child courses. You may find that links that you've attached to the assignment remain the same when copied to other courses. If this is expected, then great, everything will be fine, but if you need to have a unique link or resource for each child course, you will need to implement additional logic in your integration to handle this case.
  • LTI Assignments: LTI 1.3 assignments are designed to handle this propagation and will function correctly in child courses. However, it is important to note that when Canvas copies the assignment, it creates a new entity. Consequently, the Edlink assignment_id will change. To maintain a reliable link to your internal content, you should rely on LTI Custom Parameters (custom properties). These values persist across copies, so we recommend storing your internal resource ID in a custom parameter. This allows you to identify the correct resource regardless of the new assignment ID generated in the child course.