Canvas LTI 1.3 Tool Installation & API Set Up

LTI 1.3 Tool Installation

The VitalSource LTI Tool is a seamless integration for the Canvas Learning Management System (LMS), designed to support institutions participating in Course access and Total access bookstore programs. These programs aim to ensure all students have affordable, day-one access to the course materials they need to succeed.

Video

 

🎓 For Students

  • Review and manage their participation in bookstore access programs.
  • Make informed decisions about whether to opt in or opt out of course material programs offered through the campus bookstore.
  • Shop for course materials not included in bookstore access programs
  • Access digital course materials

👩‍🏫 For Faculty

  • Access their own copies of digital course materials, ensuring they’re prepared and aligned with student resources.
  • Create direct links to specific content—like chapters or pages—within their Canvas courses.

🛡️ For Admins

We recommend installing the VitalSource LTI 1.3 tool with the Paste JSON method. Our JSON file include the following settings. These settings are aligned with our best practices for bookstore access programs.

  • Privacy settings to public
  • Support for the following LTI-A services:
    • Assignments & Grades
    • Names & Roles Provisioning
    • Deeplinking
  • Link placements in the following areas:
    • Course Navigation
    • Link Selection
    • Assignment Selection
    • Editor Button

🛠️ How to Install the VitalSource LTI 1.3 Tool

🧭 Step 1: Navigate to Developer Keys

  1. In the left navigation, click Developer Keys.
  2. Click the + Developer Key button.
  3. Choose LTI Key from the dropdown menu.

📄 Step 2: Paste the JSON Configuration

  1. Under Method, select Paste JSON.
  2. In the large text box, paste the full LTI 1.3 configuration JSON (example below).
  3. Ensure the title is clear (e.g., Course Materials).
  4. Click Save at the bottom of the form.

🔑 Step 3: Get the Client ID

  1. After saving, you’ll return to the list of Developer Keys.
  2. Find the entry you just created (look for the title, e.g., Course Materials).
  3. Make sure the State is toggled to off. You’ll want to leave the VitalSource LTI tool off until you are ready to deactivate the Redshelf LTI tool.
  4. Copy the Client ID listed in the table (you’ll need this in the next step).

⚙️ Step 4: Add the App to Canvas

  1. Go to Settings in the same account or sub-account.
  2. Click the Apps tab.
  3. Click + App (top-right corner).
  4. For Configuration Type, select By Client ID.
  5. Paste the Client ID you copied earlier.
  6. Click Submit.
  7. Copy the Deployment ID that is generated (you’ll need this in the next step).

📬 Step 5: Notify VitalSource Implementation Team

To finalize the configuration, enter the LTI registration details here for the VitalSource team.


Step 6: Switching tools

  1. In the left navigation, click Developer Keys.
  2. Find the Redshelf LTI developer key and toggle the State to off.
  3. Find the VitalSource LTI developer key and toggle the State to on.

Canvas API Set-up

VitalSource utilizes Canvas API services to complement our LTI tool. We use services for two purposes:

  1. Course ingestion aimed to streamline pairing course adoptions submitted with SIS-based course data to Canvas courses, including the dynamic handling of crosslisted and reset courses
  2. Enrollment ingestion for pre-provisioning digital course materials to enrolled students at the start of their course

We recommend creating an admin role and user specifically for the VitalSource integration, as this will allow you to limit the permissions given to the VitalSource application to only what is needed to support your integration.

Note: These instructions include the permissions required for course and enrollment ingestion. If your campus utilized the RedShelf Automated Tool Link Placement service, we can continue to support that. We’ll need more additional scopes and permissions than what are listed here, as detailed here.

🛠️ How to set up Canvas APIs

🗂️ Step 1: Create an admin role

  1. Navigate to the Admin tab.
  2. Select the Root Account option.
    • Click Permissions → Account Roles → Add Role
    • Role Name: VitalSource API Role, and click Save\
    • Assign the following permissions to the role:
      • Courses - view list
      • Course content – view
      • Manage Course content - add/edit/delete
      • Manage LTI - add/edit/delete
      • SIS Data – read
      • Users - view list
      • Users - view login IDs
      • Users - view primary email address

👩‍🔧 Step 2: Create a user

  1. Create a new User in Canvas.
  2. Click Admin → People → + People
    • Full Name: VitalSource API Integration
    • Email: integrations@vitalsource.com
    • SIS ID: vst_integration
    • Do not check Email the user about this account creation
    • Click Add User
  3. On the People page, locate this new user and click on their name
    • Under Login Information, click the Edit (pencil) button, leave all fields as is, and click Update Login
    • Click Edit again and set up a password for this user.
      • This username and password will be used to authenticate the integration. Be sure to hold on to the credentials.
  4. Add the Account Role to the new user
    • Admin → Settings → Admins
    • Scroll down to the bottom of the page and click + Account Admins
    • Select the VitalSource API Role from the drop-down and enter vst_integration in the blank box
      • NOTE: Do not enter any other information, such as an email address, in this field. Entering anything other than "vst_integration" will cause the API to malfunction.
    • Click Continue
    • Click OK

🛡️ Step 3: Developer Key Setup for VitalSource API Integration

  1. Log in to Canvas, navigate to the Admin tab, and select the account under which the VitalSource-enabled courses are set up.
  2. Click Developer Keys from the left navigation menu.
  3. Click + Developer Key and select + API Key.
  4. Complete the Key Settings with the following information:
  5. Enforce Scopes
    • Disabled: If you choose to leave this disabled, VitalSource will have permission to call all available Canvas API endpoints.
    • Enabled (recommended): If you would like to enforce scopes, please select the "Allow Include Parameters" option and enable the following required endpoints:
      • Accounts
        • url:GET|/api/v1/accounts/:account_id/courses
        • url:GET|/api/v1/accounts
      • Courses
        • url:GET|/api/v1/courses
        • url:GET|/api/v1/courses/:id
      • Enrollment Terms
        • url:GET|/api/v1/accounts/:account_id/terms
        • url:GET|/api/v1/accounts/:account_id/terms/:id
      • Enrollments
        • url:GET|/api/v1/courses/:course_id/enrollments
      • Sections
        • url:GET|/api/v1/courses/:course_id/sections
        • url:GET|/api/v1/courses/:course_id/sections/:id
        • url:GET|/api/v1/sections/:id
      • Users
        • url:GET|/api/v1/accounts/:account_id/users
        • url:GET|/api/v1/users/:id
  6. Click Save Key
  7. On the Developer Keys page, locate the Key you just created and toggle the State to ON
  8. Click Show Key in the Details column, and locate the Client ID.
  9. Enter your credentials here for the VitalSource team.

Authenticate the API integration

  1. Your VitalSource contact will reply back with an API authentication URL
    • Log out of your personal Canvas admin account
    • Click on the authentication URL
    • Sign in with the system user and password created in step 2
  2. Click Authenticate. You should receive a Success! message.
    • If you receive an error, report this to your VitalSource implementation contact.
    • If you receive the Success! message, locate the Course Material link within the course in your upcoming term and click the link (this will initiate the API sync).
      • If there are no courses with the Course Material link currently installed for the upcoming term, please add to either a real or test course and click.
        • This will initiate the API sync and allow us to begin pulling course and roster information for the term.

Data Storage & Usage

This section describes what data VitalSource receives about Canvas users and courses through the LTI tool and how that data is stored & used.

Field

 

Description

 

Storage & Usage

 
context_id unique LTI course identifier stored & used for identifying unique courses, communication of student opt-out decisions to publisher courseware providers when applicable
context_title course name stored & used for display in VitalSource Launch & Analytics and matching LMS course data to SIS course data for Course Access programs
context_label course code stored & used for display in VitalSource Launch & Analytics and matching LMS course data to SIS course data for Course Access programs
custom_canvas_course_id unique Canvas course identifier stored & used for identifying unique courses
custom_canvas_section_id

unique Canvas course section identifiers for the sections in which the user is enrolled in

optional field, only receive if configured as a custom field

stored & used for handling cross-listed courses
lis_course_offering_sourcedid course SIS identifier stored & used for display in VitalSource Launch & Analytics and matching LMS course data to SIS course data for Course Access programs
custom_course_start_date

course start date

optional field, only receive if configured as a custom field

stored & used for determining when courses should be considered active in application displays and when to issue add/drop content access to students
custom_term_name

the name of the term to which the course belongs

optional field, only receive if configured as a custom field

stored & used for determining when courses should be considered active in application displays
custom_term_start_date

term start date

optional field, only receive if configured as a custom field

stored & used for determining when courses should be considered active in application displays and when to issue add/drop content access to students
custom_pervious_context_ids

context ids of courses from which content has been copied

optional field, only receive if configured as a custom field

stored & used to identify course resources from the courses from which they were copied
custom_pervious_canvas_course_ids

Canvas course ids of courses from which content has been copied

optional field, only receive if configured as a custom field

stored & used to identify course resources from the courses from which they were copied
custom_canvas_user_id

unique Canvas user identifier

optional field, only received if tool privacy is set to public

stored & used to identify unique user accounts
custom_canvas_user_login_id

Canvas username

optional field, only received if tool privacy is set to public

stored & used for matching LMS student accounts to SIS student enrollment for Course Access program, communication of student opt-out decisions to publisher courseware providers when applicable
user_id unique LTI user identifier stored & used for creating and identifying VitalSource user accounts, communication of student opt-out decisions to publisher courseware providers when applicable
lis_person_contact_email_primary

user email address

optional field, only received if tool privacy is set to public

stored & used for matching LMS student accounts to SIS student enrollment for Course Access programs
lis_person_name_given

user first name

optional field, only received if tool privacy is set to name only or public

stored & used for matching LMS student accounts to SIS student enrollment for Course Access programs
lis_person_name_family

user last name

optional field, only received if tool privacy is set to name only or public

stored & used for matching LMS student accounts to SIS student enrollment for Course Access programs
lis_person_name_full

user full name

optional field, only received if tool privacy is set to name only or public

not stored or used
lis_person_sourcedid

user SIS identifier

optional field, only received if tool privacy is set to public

stored & used for matching LMS student accounts to SIS student enrollment for Course Access programs
Was this article helpful?