canvas-lms-api 0.4.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.4"
tokio = { version = "1", features = ["full"] }
use canvas_lms_api::Canvas;

#[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());

    // Collect all assignments for the course
    let assignments = course.get_assignments().collect_all().await?;
    for a in assignments {
        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.4)

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

Extended: AccountCalendar, AppointmentGroup, Blueprint, CalendarEvent, Collaboration, CommunicationChannel, ContentExport, ContentMigration, Conversation, EnrollmentTerm, EPortfolio, ExternalTool, Feature / FeatureFlag, GradeChangeLog, GradebookHistory, GradingPeriod, GradingStandard, JWT, LtiResourceLink, Outcome / OutcomeGroup, Planner (Note + Override), Poll / PollChoice / PollSession / PollSubmission, Role, Rubric, SisImport

Feature-gated: NewQuiz (new-quizzes), GraphQL queries (graphql)

Examples

Runnable example programs live in examples/. Each is a standalone Cargo project.

Example Description
list-courses-and-assignments List all your courses and their assignments

More examples to come.

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.