# canvas-lms-api
A Rust client for the [Instructure Canvas LMS REST API](https://canvas.instructure.com/doc/api/).
[](https://crates.io/crates/canvas-lms-api)
[](https://docs.rs/canvas-lms-api)
[](https://github.com/RobertConde/canvas-lms-api/actions/workflows/ci.yml)
## Quickstart
```toml
[dependencies]
canvas-lms-api = "0.3"
tokio = { version = "1", features = ["full"] }
futures = "0.3"
```
```rust
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
| `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.3)
**Core:** Course, User, Assignment, Submission, Enrollment, Section, Module, Quiz,
Group, Account, File, Folder, Page, DiscussionTopic, Progress, Tab
**Extended:** AccountCalendar, AppointmentGroup, Blueprint, CalendarEvent,
CommunicationChannel, ContentExport, ContentMigration, Conversation,
EnrollmentTerm, EPortfolio, ExternalTool, Feature / FeatureFlag,
GradeChangeLog, GradebookHistory, GradingPeriod, GradingStandard,
JWT, Outcome / OutcomeGroup, Planner (Note + Override), Role, Rubric,
SisImport
**Feature-gated:** NewQuiz (`new-quizzes`), GraphQL queries (`graphql`)
## Access tokens
Generate a token in Canvas: **Account → Settings → Approved Integrations → New Access Token**.
## License
Licensed under the [MIT License](LICENSE).
## Acknowledgements
Inspired by [canvasapi](https://github.com/ucfopen/canvasapi), the Python Canvas API library
maintained by the University of Central Florida.