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
- In the left navigation, click Developer Keys.
- Click the + Developer Key button.
- Choose LTI Key from the dropdown menu.
📄 Step 2: Paste the JSON Configuration
- Under Method, select Paste JSON.
- In the large text box, paste the full LTI 1.3 configuration JSON (example below).
- Ensure the title is clear (e.g., Course Materials).
- Click Save at the bottom of the form.
🔑 Step 3: Get the Client ID
- After saving, you’ll return to the list of Developer Keys.
- Find the entry you just created (look for the title, e.g., Course Materials).
- 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.
- Copy the Client ID listed in the table (you’ll need this in the next step).
⚙️ Step 4: Add the App to Canvas
- Go to Settings in the same account or sub-account.
- Click the Apps tab.
- Click + App (top-right corner).
- For Configuration Type, select By Client ID.
- Paste the Client ID you copied earlier.
- Click Submit.
- 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
- In the left navigation, click Developer Keys.
- Find the Redshelf LTI developer key and toggle the State to off.
- 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:
- 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
- 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
- Navigate to the Admin tab.
- 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
- Create a new User in Canvas.
- 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
- 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.
- 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
- Log in to Canvas, navigate to the Admin tab, and select the account under which the VitalSource-enabled courses are set up.
- Click Developer Keys from the left navigation menu.
- Click + Developer Key and select + API Key.
- Complete the Key Settings with the following information:
- Key Name: VitalSource
- Owner Email: Your email
- Redirect URLs: https://bc.vitalsource.com/oauth2callback
- 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
- Accounts
- Click Save Key
- On the Developer Keys page, locate the Key you just created and toggle the State to ON
- Click Show Key in the Details column, and locate the Client ID.
- Enter your credentials here for the VitalSource team.
Authenticate the API integration
- 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
- 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.
- 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.
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 |