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. Depending on the specific configuration of the school's integration, these courses may not be included in the default sync scope. If you require access to Blueprint courses for your integration but do not see them in the API, please reach out to Edlink support so we can adjust the configuration to include them.

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.