Skip to main content

Canvas Data Source

The Canvas connector enables you to ingest learning management data from the Canvas LMS REST API, including accounts, courses, users, enrollments, sections, groups, assignments, submissions, gradebook history, modules, quizzes, and SIS import status. Follow the instructions below to create a new data flow that ingests data from a Canvas source in Nexla.
canvas_lms_api.png

Canvas

Create a New Data Flow

  1. To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Then, select the desired flow type from the list, and click the Create button.

  2. Select the Canvas connector tile from the list of available connectors. Then, select the credential that will be used to connect to the Canvas instance, and click Next; or, create a new Canvas credential for use in this flow.

  3. In Nexla, Canvas data sources can be created using pre-built endpoint templates, which expedite source setup for common Canvas endpoints. Each template is designed specifically for the corresponding Canvas endpoint, making source configuration easy and efficient.
    • To configure this source using a template, follow the instructions in Configure Using a Template.

    Canvas sources can also be configured manually, allowing you to ingest data from Canvas endpoints not included in the pre-built templates or apply further customizations to exactly suit your needs.
    • To configure this source manually, follow the instructions in Configure Manually.

Configure Using a Template

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Canvas endpoints. Each template is designed specifically for the corresponding Canvas endpoint, making data source setup easy and efficient.

Most Canvas list endpoints return paginated results, and Nexla automatically follows the Link response header to retrieve every page of data. Many endpoints require a Canvas resource ID (such as an account, course, user, or term ID). These IDs can be obtained from the corresponding list endpoints (for example, use List Accounts to find an account ID, or List Your Courses to find a course ID).

Endpoint Settings

  • Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.

    List Accounts

    Retrieves a paginated list of all accounts accessible to the authenticated user. Use this endpoint to discover the account IDs needed to configure many of the other Canvas endpoints.

    • No required parameters are needed beyond selecting this endpoint template.
    • Optionally, set the Include field to request additional fields on each account (for example, lti_guid). The default value is lti_guid.

    Results are paginated, and Nexla automatically follows the Link header to fetch all pages. The account whose ID is self represents the root account of your Canvas instance.

    Get a Single Account

    Retrieves details for a specific account by ID. Use this endpoint when you need the full record for one known account.

    • Enter the ID of the account to retrieve in the Account ID field. Account IDs can be obtained from the List Accounts endpoint.

    Get Sub-accounts of an Account

    Lists all sub-accounts under a given account. Use this endpoint to map the account hierarchy of your institution.

    • Enter the ID of the parent account in the Account ID field.
    • Set the Recursive field to true to include all descendant sub-accounts, or false to return only direct children. The default value is true.

    List Active Courses in an Account

    Retrieves a filtered, paginated list of courses within an account. Use this endpoint for account-level course reporting and to obtain course IDs.

    • Enter the ID of the account in the Account ID field.
    • Optionally, apply the following filters to narrow the results:

      • With Enrollments: Set to true to include only courses that have active enrollments.
      • Published: Set to true to include only published courses.
      • State: Filter by course state, such as created, available, or completed. The default value is available.
      • Search Term: Search for courses by name or course code.
      • Sort: Field to sort courses by, such as course_name.
      • Order: Sort direction, either asc or desc.

    List Users in Account

    Retrieves a paginated list of users in a Canvas account, with optional filtering. Use this endpoint to obtain user IDs and account-level user rosters.

    • Enter the ID of the account in the Account ID field.
    • Optionally, apply the following filters:

      • Search Term: Filter users by name or login.
      • Enrollment Type: Filter by enrollment type, such as student or teacher.
      • Sort By: Field to sort results by, such as name, email, or created_at. The default value is username.
      • Sort Order: Sort direction, either asc or desc.

    Show User Details

    Retrieves detailed information for a specific Canvas user by ID.

    • Enter the ID of the user to retrieve in the User ID field. User IDs can be obtained from the List Users in Account endpoint.

    Get User Profile

    Retrieves the profile information for a specific Canvas user, including avatar, bio, and contact details.

    • Enter the ID of the user in the User ID field.

    Get Current User (Self)

    Retrieves the profile information of the currently authenticated user (the user whose access token is configured in the credential). Use this endpoint to verify credential connectivity.

    • No parameters are required. This endpoint resolves the user from the configured access token.

    List User Page Views

    Retrieves paginated page view activity for a user within a specified time range. Use this endpoint for activity and engagement analysis.

    • Enter the ID of the user in the User ID field.
    • Optionally, set the Start Time and End Time fields to bound the page view range. Both values use ISO 8601 datetime format (for example, 2020-01-01T00:00:00.000Z).

    The Start Time and End Time fields support Nexla date/time macros such as {now} and {now-1}, allowing the source to fetch a rolling time window that advances automatically with each ingestion run.

    List Enrollment Terms

    Retrieves all enrollment terms for an account, with optional state filtering. Enrollment terms define the academic periods (such as semesters) used across courses.

    • Enter the ID of the account in the Account ID field.
    • Optionally, set the Workflow State field to filter terms by state, such as active, deleted, or inactive. The default value is active.
    • Optionally, set the Include field to request additional data such as overrides.

    The relevant records for this endpoint are returned under the enrollment_terms array in the response, which Nexla extracts automatically.

    Retrieve Enrollment Term

    Retrieves details for a specific enrollment term by ID.

    • Enter the ID of the account in the Account ID field.
    • Enter the ID of the enrollment term in the Term ID field. Term IDs can be obtained from the List Enrollment Terms endpoint.

    List Course Enrollments

    Lists all enrollments for a course, with optional filtering by type and state. Use this endpoint to retrieve the roster of users enrolled in a course and their roles.

    • Enter the ID of the course in the Course ID field.
    • Optionally, set the Type field to filter by enrollment type, such as StudentEnrollment or TeacherEnrollment.
    • Optionally, set the State field to filter by enrollment state, such as active, invited, or completed. The default value is active.

    Get User Enrollment

    Retrieves a specific user enrollment by ID at the account level.

    • Enter the ID of the account in the Account ID field.
    • Enter the ID of the enrollment in the Enrollment ID field. Enrollment IDs can be obtained from the List Course Enrollments endpoint.

    List Your Courses

    Lists all courses for the currently authenticated user, with optional filters. Use this endpoint to retrieve the courses associated with the access token's user.

    • Optionally, set the Enrollment Type field to filter by enrollment type, such as student or teacher.
    • Optionally, set the Enrollment State field to filter by enrollment state, such as active or invited. The default value is active.
    • Optionally, set the Course State field to filter by course state, such as available or deleted. The default value is available.

    List Courses for a User

    Retrieves all courses for a specific user, with optional enrollment state filtering. Use this endpoint when you need the course list for a user other than the authenticated account.

    • Enter the ID of the user in the User ID field.
    • Optionally, set the State field to filter by course state, such as available or completed.
    • Optionally, set the Enrollment State field to filter by enrollment state, such as active or invited.

    Get a Single Course

    Retrieves details for a specific course by ID.

    • Enter the ID of the course in the Course ID field.
    • Optionally, set the Include field to request additional associated data, such as term, teachers, or total_students.

    List Users in Course

    Retrieves a paginated list of users enrolled in a course. Use this endpoint to build a course roster.

    • Enter the ID of the course in the Course ID field.
    • Optionally, set the Enrollment Type field to filter by role, such as student or teacher.
    • Optionally, set the Enrollment State field to filter by enrollment state, such as active or invited.
    • Optionally, set the Search Term field to filter users by name or login.

    Get Single User in a Course

    Retrieves details for a single user within the context of a specific course.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the user in the User ID field.

    List Course Sections

    Lists all sections within a course. Sections are subdivisions of a course used to organize students.

    • Enter the ID of the course in the Course ID field.
    • Optionally, set the Include field to request additional data, such as students or total_students.

    Get Course Section

    Retrieves details for a specific course section by ID.

    • Enter the ID of the section in the Section ID field. Section IDs can be obtained from the List Course Sections endpoint.
    • Optionally, set the Include field to request additional associated data.

    List Groups in Context

    Lists all groups within an account context. Groups are used to organize users for collaboration within Canvas.

    • Enter the ID of the account in the Account ID field.

    Get Group

    Retrieves details for a specific group by ID.

    • Enter the ID of the group in the Group ID field. Group IDs can be obtained from the List Groups in Context endpoint.

    List Group Users

    Lists the users that belong to a specific group.

    • Enter the ID of the group in the Group ID field.

    List Group Memberships

    Lists the memberships for a specific group, including each member's role and workflow state.

    • Enter the ID of the group in the Group ID field.

    Get SIS Import List

    Retrieves the list of SIS (Student Information System) imports for an account. Use this endpoint to audit historical SIS import jobs.

    • Enter the ID of the account in the Account ID field.

    Get Current Importing SIS Import

    Retrieves the SIS imports for an account that are currently in progress. Use this endpoint to monitor active import jobs.

    • Enter the ID of the account in the Account ID field.

    Get SIS Import Status

    Retrieves the status of a specific SIS import by ID, including progress and any processing warnings or errors.

    • Enter the ID of the account in the Account ID field.
    • Enter the ID of the SIS import in the SIS Import ID field.

    List Assignments

    Retrieves a paginated list of assignments in a course, with optional filtering and ordering. Use this endpoint to obtain assignment IDs and assignment metadata.

    • Enter the ID of the course in the Course ID field.
    • Optionally, apply the following filters:

      • Include: Request additional associated data, such as submission or all_dates.
      • Search Term: Filter assignments by name.
      • Order By: Field used to order the results, such as position, name, or due_at.
      • Bucket: Filter by assignment bucket, such as upcoming, past, or overdue.

    Get a Single Assignment

    Retrieves details for a specific assignment within a course by ID.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the assignment in the Assignment ID field.

    List Assignment Submissions

    Retrieves the submissions for a specific assignment in a course. Use this endpoint to gather student submission data for grading and analytics.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the assignment in the Assignment ID field.
    • Optionally, set the Include field to request additional data, such as submission_comments or rubric_assessment.
    • Optionally, set the Grouped field to control whether submissions are grouped by student.

    List Submissions for Multiple Assignments

    Retrieves submissions across multiple assignments and students in a course. Use this endpoint for bulk gradebook extraction.

    • Enter the ID of the course in the Course ID field.
    • Optionally, apply the following filters:

      • Student IDs: Restrict results to specific student IDs.
      • Assignment IDs: Restrict results to specific assignment IDs.
      • Include: Request additional associated data.
      • Grading Period ID: Restrict results to a specific grading period.

    Get a Single Submission

    Retrieves the submission of a specific user for a specific assignment.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the assignment in the Assignment ID field.
    • Enter the ID of the user in the User ID field.
    • Optionally, set the Include field to request additional data, such as submission_comments or rubric_assessment.

    List Gradebook History Days

    Lists the days on which gradebook changes occurred for a course. Use this endpoint to identify dates with grading activity before drilling into details.

    • Enter the ID of the course in the Course ID field.

    List Gradebook History for a Day

    Lists the gradebook changes for a course on a specific day, grouped by grader and assignment.

    • Enter the ID of the course in the Course ID field.
    • Enter the target date in the Date field.

    List Uncollated Submissions (Gradebook Feed)

    Retrieves the uncollated gradebook history feed for a course, returning individual submission version records. Use this endpoint to capture a granular audit trail of grade changes.

    • Enter the ID of the course in the Course ID field.

    List Course Modules

    Lists the modules in a course. Modules organize course content into sequential units.

    • Enter the ID of the course in the Course ID field.

    Get a Single Module

    Retrieves details for a specific module within a course by ID.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the module in the Module ID field.

    List Module Items

    Lists the items contained in a specific module, such as pages, assignments, and files.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the module in the Module ID field.

    Get a Single Module Item

    Retrieves details for a specific item within a module by ID.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the module in the Module ID field.
    • Enter the ID of the module item in the Module Item ID field.

    List Quizzes in a Course

    Lists the quizzes available in a course.

    • Enter the ID of the course in the Course ID field.

    Get a Single Quiz

    Retrieves details for a specific quiz within a course by ID.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the quiz in the Quiz ID field.

    List Quiz Questions

    Lists the questions belonging to a specific quiz.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the quiz in the Quiz ID field.

    Get a Single Quiz Question

    Retrieves details for a specific question within a quiz by ID.

    • Enter the ID of the course in the Course ID field.
    • Enter the ID of the quiz in the Quiz ID field.
    • Enter the ID of the quiz question in the Question ID field.

Endpoint Testing

Once the selected endpoint template has been configured, Nexla can retrieve a sample of the data that will be fetched according to the current settings. This allows users to verify that the source is configured correctly before saving.

  • To test the current endpoint configuration, click the Test button to the right of the endpoint selection menu. Sample data will be fetched & displayed in the Endpoint Test Result panel on the right.

  • If the sample data is not as expected, review the selected endpoint and associated settings, and make any necessary adjustments. Then, click the Test button again, and check the sample data to ensure that the correct information is displayed.

Configure Manually

Canvas data sources can be manually configured to ingest data from any valid Canvas LMS REST API endpoint. Manual configuration provides maximum flexibility for accessing endpoints not covered by pre-built templates or when you need custom API configurations.

With manual configuration, you can also create more complex Canvas sources, such as sources that use chained API calls to fetch data from multiple endpoints or sources that require custom request parameters.

API Method

  1. To manually configure this source, select the Advanced tab at the top of the configuration screen.

  2. Select the API method that will be used for calls to the Canvas API from the Method pulldown menu. The most common methods are:

    • GET: For retrieving data from the API
    • POST: For sending data to the API or triggering actions
    • PUT: For updating existing data
    • PATCH: For partial updates to existing data
    • DELETE: For removing data

API Endpoint URL

  1. Enter the URL of the Canvas API endpoint from which this source will fetch data in the Set API URL field. This should be the complete URL including the protocol (https://), your institution's Canvas domain, and the API path (for example, https://yourinstitution.instructure.com/api/v1/courses). Canvas API paths are versioned and prefixed with /api/v1/.

Ensure the API endpoint URL is correct and accessible with your current credentials. You can test the endpoint using the Test button after configuring the URL.

Date/Time Macros (API URL)

Optional

Optionally, the API URL can be customized using macros—all macros added to the API URL will be converted into values when Nexla executes the API call. Macros are dynamic placeholders that allow you to create flexible API endpoints that can adapt to different time periods or data requirements. For Canvas, these are particularly useful for endpoints that accept time-range parameters, such as user page views.

Macros are particularly useful for APIs that require date ranges, pagination parameters, or other dynamic values that change between data ingestion runs.

  1. To add a macro, type { at the appropriate position in the API URL (within the Set API URL field), and select the desired macro from the dropdown list.

    • {now} – The current datetime
    • {now-1} – The datetime one time unit before the current datetime
    • {now+1} – The datetime one time unit after the current datetime
    • custom – Datetime macros can reference any number of time units before or after the current datetime—for example, enter (now-4) to indicate the datetime four time units before the current datetime
  2. Select the format that will be applied to datetime macros from the Date Format for Date/Time Macro pulldown menu. This format will be applied to the base datetime value of the macro—i.e., the value of {now} in {now-1}.

  3. Select the datetime unit that will be used to perform mathematical operations in the included macro(s) from the Time Unit for Operations pulldown menu—for example, for the macro {now-1}, when Day is selected, {now-1} will be converted to the datetime one day before the current datetime.

Lookup-Based Macros (API URL)

Optional

Column values from existing lookups can also be included as macros in the API URL. Lookup-based macros allow you to reference data from previously configured data sources or lookups, enabling dynamic API endpoints that can adapt based on existing data. For Canvas, this is useful for iterating over a set of known account, course, or user IDs.

Lookup-based macros are useful when you need to create API endpoints that reference specific IDs, values, or parameters from other data sources in your Nexla environment.

  1. To include a lookup column value macro, select the relevant lookup from the Add Lookups to Supported Macros pulldown menu.

  2. Type { at the appropriate position in the API URL, and select the lookup column-based macro from the dropdown list. Lookup-based macros are automatically populated into the macro list when a lookup is selected in the Add Lookups to Supported Macros pulldown menu.

Path to Data

Optional

If only a subset of the data that will be returned by API endpoint is needed, you can designate the part(s) of the response that should be included in the Nexset(s) produced from this source by specifying the path to the relevant data within the response. This is particularly useful when API responses contain metadata, pagination information, or other data that you don't need for your analysis.

For example, most Canvas list endpoints return a top-level JSON array of records, in which case the path $[*] treats each element of the array as a record. Some endpoints, such as List Enrollment Terms, nest the records under a named property (for example, $.enrollment_terms[*]).

Path to Data is essential when API responses have nested structures. Without specifying the correct path, Nexla might not be able to properly parse and organize your data into usable records.

  • To specify which data should be treated as relevant in responses from this source, enter the path to the relevant data in the Set Path to Data in Response field.

    • For responses in JSON format enter the JSON path that points to the object or array that should be treated as relevant data. JSON paths use dot notation (e.g., $.data.items[*] to access an array of items within a data object).

    • For responses in XML format, enter the XPath that points to the object/array containing relevant data. XPath uses slash notation (e.g., /response/data/item to access item elements within a data element).

    Path to Data Example:

    If the API response is in JSON format and includes a top-level array that contains the relevant data, the path to the response would be entered as $[*].

Autogenerate Path Suggestions

Nexla can also autogenerate data path suggestions based on the response from the API endpoint. These suggested paths can be used as-is or modified to exactly suit your needs.

  • To use this feature, click the Test button next to the Set API URL field to fetch a sample response from the API endpoint. Suggested data paths generated based on the content & format of the response will be displayed in the Suggestions box below the Set Path to Data in Response field.

  • Click on a suggestion to automatically populate the Set Path to Data in Response field with the corresponding path. The populated path can be modified directly within the field if further customization is needed.

    PathSuggestions.png

Metadata

If metadata is included in the response but is located outside of the defined path to relevant data, you can configure Nexla to include this data as common metadata in each record. This is useful when you want to preserve important contextual information that applies to all records but isn't part of the main data array.

For example, when a request call is used to fetch a list of items, the API response will typically include an array of records along with metadata such as total count, pagination information, or request timestamps. In this case, if you have specified the path to the relevant data but metadata of interest is located in a different part of the response, you can specify a path to this metadata to include it with each record in the generated Nexset(s).

Metadata paths are particularly useful for preserving API response context like request IDs, timestamps, or summary statistics that apply to all records in the response.

  • To specify the location of metadata that should be included with each record, enter the path to the relevant metadata in the Path to Metadata in Response field.

    • For responses in JSON format, enter the JSON path to the object or array that contains the metadata, and for responses in XML format, enter the XPath.

Pagination

Optional

The Canvas LMS REST API paginates list responses using the Link response header, which contains URLs for the current, next, prev, first, and last pages of results (links are included only when relevant). The pre-built endpoint templates already use link-header pagination, so all available pages are fetched automatically. When configuring a list endpoint manually, set the pagination method to use the Link header so that Nexla follows the rel="next" link until all records have been retrieved.

Because HTTP header names are case-insensitive, Canvas does not guarantee the capitalization of the Link header. Nexla handles this automatically. For complete details, see the Canvas API pagination documentation.

Request Headers

Optional
  • If Nexla should include any additional request headers in API calls to this source, enter the headers & corresponding values as comma-separated pairs in the Request Headers field (e.g., header1:value1,header2:value2). Additional headers are often required for API versioning, content type specifications, or custom authentication requirements.

    You do not need to include any headers already present in the credentials. Common headers like Authorization, Content-Type, and Accept are typically handled automatically by Nexla based on your credential configuration.

Endpoint Testing

After configuring all settings for the selected endpoint, Nexla can retrieve a sample of the data that will be fetched according to the current configuration. This allows users to verify that the source is configured correctly before saving.

  • To test the current endpoint configuration, click the Test button to the right of the endpoint selection menu. Sample data will be fetched & displayed in the Endpoint Test Result panel on the right.

  • If the sample data is not as expected, review the selected endpoint and associated settings, and make any necessary adjustments. Then, click the Test button again, and check the sample data to ensure that the correct information is displayed.

Save & Activate the Source

  1. Once all of the relevant steps in the above sections have been completed, click the Create button in the upper right corner of the screen to save and create the new Canvas data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.