@kyancey-va/n8n-nodes-canvas
v0.1.0
Published
n8n community nodes for Canvas LMS - full API coverage with 92 resources
Maintainers
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.
- Open your n8n instance
- Go to Settings → Community Nodes
- Click Install
- Enter
n8n-nodes-canvas - Click Install
Option 2: npm Install
For self-hosted n8n installed via npm:
# In your n8n installation directory
npm install n8n-nodes-canvasThen 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.gzStep 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 volumesIf 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 volumesStep 3: Restart
docker compose down && docker compose up -dOption 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 restartOption 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 packOption 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 buildStep 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-nodesStep 3: Restart
docker compose down && docker compose up -dUpdating
cd /path/to/n8n/custom-nodes/n8n-nodes-canvas
git pull
npm install
npm run build
docker compose down && docker compose up -dVerifying Installation
After installation, verify the nodes are loaded:
- Open n8n
- Create a new workflow
- Click + to add a node
- 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
- In Canvas, go to Account → Settings
- Scroll to Approved Integrations
- Click + New Access Token
- Enter a purpose and expiration (optional)
- Copy the generated token immediately (it won't be shown again)
OAuth2
- In Canvas Admin, go to Developer Keys
- Click + Developer Key → API Key
- 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
- Save and copy the Client ID (shown as ID number)
- Click Show Key to get the Client Secret
- 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
- Ensure you've restarted n8n after installation
- For Docker, verify the volume mount path is correct
- Check n8n logs for any loading errors:
docker compose logs n8n | grep -i canvas
Authentication errors
- Verify your Canvas URL doesn't have a trailing slash
- Ensure your access token hasn't expired
- Check that the token has appropriate permissions
Rate limit errors
- Increase the Threshold setting (default 300 may be too low for large requests)
- Reduce Batch Size to spread out requests
- 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
