npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@kyancey-va/n8n-nodes-canvas

v0.1.0

Published

n8n community nodes for Canvas LMS - full API coverage with 92 resources

Readme

n8n-nodes-canvas

Custom n8n community nodes for Canvas LMS by Instructure. Provides comprehensive coverage of the Canvas REST API with 92 resources and 466+ actions.

Features

  • Comprehensive API Coverage: Access 92 Canvas API resources with 466+ actions
  • Dual Authentication: API Access Token and OAuth2 support
  • Smart Rate Limiting: Automatic quota checking with configurable thresholds
  • Pagination Handling: Automatic pagination with configurable limits
  • Error Handling: Multiple error modes with dedicated error output branch
  • Batch Processing: Process multiple items efficiently
  • Webhook Trigger: Listen for 22 Canvas Live Events

Installation

Choose the installation method that matches your n8n setup:

Option 1: n8n Community Nodes (Recommended)

Available once published to npm.

  1. Open your n8n instance
  2. Go to Settings → Community Nodes
  3. Click Install
  4. Enter n8n-nodes-canvas
  5. Click Install

Option 2: npm Install

For self-hosted n8n installed via npm:

# In your n8n installation directory
npm install n8n-nodes-canvas

Then restart n8n.

Option 3: Docker with Volume Mount

For Docker-based n8n installations where you want to install the package manually.

Step 1: Download and Extract

# On your server, create the custom nodes directory
mkdir -p /path/to/n8n/custom-nodes/n8n-nodes-canvas
cd /path/to/n8n/custom-nodes/n8n-nodes-canvas

# Option A: Clone from GitHub and build
git clone https://github.com/virtualarkansas/n8n-nodes-canvas.git .
npm install
npm run build

# Option B: Download a release (when available)
# wget https://github.com/virtualarkansas/n8n-nodes-canvas/releases/download/v0.1.0/n8n-nodes-canvas.tar.gz
# tar -xzvf n8n-nodes-canvas.tar.gz

Step 2: Update Docker Compose

Add the environment variable and volume mount to your docker-compose.yml:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    environment:
      - N8N_CUSTOM_EXTENSIONS=/custom-nodes
    volumes:
      - ./custom-nodes:/custom-nodes
      # ... your other volumes

If you're using n8n workers, add the same to your worker service:

  n8n-worker:
    image: docker.n8n.io/n8nio/n8n
    command: worker
    environment:
      - N8N_CUSTOM_EXTENSIONS=/custom-nodes
    volumes:
      - ./custom-nodes:/custom-nodes
      # ... your other volumes

Step 3: Restart

docker compose down && docker compose up -d

Option 4: Docker with npm Install

For Docker setups, you can also install via npm inside the container:

# Enable community packages in your docker-compose.yml
environment:
  - N8N_COMMUNITY_PACKAGES_ENABLED=true

# Then restart and install via n8n UI, or:
docker exec -it <n8n-container> npm install n8n-nodes-canvas
docker compose restart

Option 5: Building from Source

For development or customization:

git clone https://github.com/virtualarkansas/n8n-nodes-canvas.git
cd n8n-nodes-canvas
npm install
npm run build

# For development with hot-reload
npm run dev

# To create a distributable package
npm pack

Option 6: Git Clone (Updatable)

For Docker setups where you want easy updates via git pull:

Step 1: Clone and Build

# On your server
cd /path/to/n8n
git clone https://github.com/virtualarkansas/n8n-nodes-canvas.git custom-nodes/n8n-nodes-canvas
cd custom-nodes/n8n-nodes-canvas
npm install
npm run build

Step 2: Volume Mount

Add to your docker-compose.yml:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    environment:
      - N8N_CUSTOM_EXTENSIONS=/custom-nodes
    volumes:
      - ./custom-nodes:/custom-nodes

Step 3: Restart

docker compose down && docker compose up -d

Updating

cd /path/to/n8n/custom-nodes/n8n-nodes-canvas
git pull
npm install
npm run build
docker compose down && docker compose up -d

Verifying Installation

After installation, verify the nodes are loaded:

  1. Open n8n
  2. Create a new workflow
  3. Click + to add a node
  4. Search for "Canvas"

You should see:

  • Canvas LMS - Main node with 92 resources
  • Canvas Trigger - Webhook trigger for live events

Nodes

Canvas LMS

The main node for interacting with the Canvas API. Supports operations across 92 resources including:

Core Resources:

  • Courses, Sections, Enrollments, Users
  • Assignments, Submissions, Grades
  • Modules, Pages, Files, Folders
  • Quizzes (Classic and New Quizzes)
  • Discussions, Announcements, Conversations

Administrative Resources:

  • Accounts, Roles, Admins
  • SIS Imports, Authentication Providers
  • Developer Keys, Access Tokens

And many more...

Canvas Trigger

Webhook trigger for Canvas Live Events. Configure the webhook URL in Canvas Admin → Data Services.

Supported events:

  • Course: created, updated, concluded
  • Enrollment: created, updated, concluded
  • Assignment: created, updated
  • Submission: created, updated, graded
  • Discussion: topic created, entry created
  • User: created, updated, login
  • Quiz: submitted
  • Module: created, updated
  • Wiki Page: created, updated
  • Attachment: created

Configuration

API Access Token

  1. In Canvas, go to Account → Settings
  2. Scroll to Approved Integrations
  3. Click + New Access Token
  4. Enter a purpose and expiration (optional)
  5. Copy the generated token immediately (it won't be shown again)

OAuth2

  1. In Canvas Admin, go to Developer Keys
  2. Click + Developer Key → API Key
  3. Configure:
    • Key Name: Your app name
    • Redirect URIs: https://your-n8n-instance.com/rest/oauth2-credential/callback
    • Scopes: Select required scopes or leave blank for full access
  4. Save and copy the Client ID (shown as ID number)
  5. Click Show Key to get the Client Secret
  6. In n8n credentials, enter:
    • Canvas URL: Your Canvas instance URL
    • Client ID: The ID number from Developer Keys
    • Client Secret: The key you revealed

Options

Rate Limiting

Canvas uses a quota-based rate limiting system. The node automatically checks remaining quota before each request.

  • Enable Rate Limit Check: Pre-flight check before requests (default: enabled)
  • Threshold: Minimum remaining quota before proceeding (default: 300)
  • Max Retries: Retry attempts when rate limited (default: 5)

Pagination

  • Items Per Page: Results per page, 1-100 (default: 10)
  • Max Pages: Maximum pages to fetch (default: 5, set to 0 for unlimited)
  • Return All: Fetch all available pages regardless of max pages setting

Error Handling

The node has two outputs: Success and Error.

  • Stop Workflow: Halt on first error (default)
  • Continue & Output Error: Route errors to Error output, continue processing remaining items
  • Ignore & Continue: Skip failed items silently
  • Retry Then Error: Retry with exponential backoff, then route to Error output

Batch Processing

  • Batch Mode (default): Group API calls for efficiency
  • Individual Mode: One API call per item
  • Batch Size: Items per batch (default: 10)
  • Batch Delay: Pause between batches in milliseconds (default: 1000)

Troubleshooting

Node not appearing after installation

  1. Ensure you've restarted n8n after installation
  2. For Docker, verify the volume mount path is correct
  3. Check n8n logs for any loading errors:
    docker compose logs n8n | grep -i canvas

Authentication errors

  1. Verify your Canvas URL doesn't have a trailing slash
  2. Ensure your access token hasn't expired
  3. Check that the token has appropriate permissions

Rate limit errors

  1. Increase the Threshold setting (default 300 may be too low for large requests)
  2. Reduce Batch Size to spread out requests
  3. Increase Batch Delay between batches

"Resource not implemented" errors

Some resources have UI definitions but may not have full endpoint implementations yet. Please open an issue for specific resources you need.

Resources

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

License

MIT