canvas-lms-api 0.2.0

Rust client for the Instructure Canvas LMS REST API
Documentation

canvas-lms-api

A Rust client for the Instructure Canvas LMS REST API.

Crates.io docs.rs CI

Quickstart

[dependencies]
canvas-lms-api = "0.1"
tokio = { version = "1", features = ["full"] }
futures = "0.3"
use canvas_lms_api::Canvas;
use futures::StreamExt;

#[tokio::main]
async fn main() -> canvas_lms_api::Result<()> {
    let canvas = Canvas::new("https://canvas.example.edu", "your-access-token")?;

    // Fetch a single course
    let course = canvas.get_course(123).await?;
    println!("Course: {}", course.name.unwrap_or_default());

    // Stream all assignments (lazy, page by page)
    let mut assignments = course.get_assignments();
    while let Some(result) = assignments.next().await {
        let a = result?;
        println!("  Assignment: {}", a.name.unwrap_or_default());
    }

    Ok(())
}

Features

Feature Default Description
async yes Async API via tokio + reqwest
blocking no Synchronous wrapper (CanvasBlocking)
new-quizzes no New Quizzes endpoint (/api/quiz/v1/)
graphql no GraphQL endpoint support
full no All optional features

Resources covered (v0.1)

Course, User, Assignment, Submission, Enrollment, Section, Module, Quiz, Group, Account, File, Folder, Page, DiscussionTopic, Progress, Tab

Access tokens

Generate a token in Canvas: Account → Settings → Approved Integrations → New Access Token.

License

Licensed under the MIT License.

Acknowledgements

Inspired by canvasapi, the Python Canvas API library maintained by the University of Central Florida.