@kth/canvas-api v5.0.0-beta.7
Canvas API (for TypeScript and JavaScript)
npm i @kth/canvas-api
Node.JS HTTP client (for both TypeScript and JavaScript) for the Canvas LMS API
Getting Started
First, generate a token by going to «YOUR CANVAS INSTANCE»/profile/settings
. For example https://canvas.kth.se/profile/settings. Then you can do something like:
import { CanvasApi } from "@kth/canvas-api";
console.log("Making a GET request to /accounts/1");
const canvas = new CanvasApi(
"<YOUR CANVAS INSTANCE>/api/v1",
"<YOUR CANVAS TOKEN>"
);
const { json } = await canvas.get("accounts/1");
console.log(json);
Features
SIS Imports
Use the method .sisImport()
import { CanvasApi } from "@kth/canvas-api";
const canvas = new CanvasApi(
"<YOUR CANVAS INSTANCE>/api/v1",
"<YOUR CANVAS TOKEN>"
);
const buffer = await readFile("<FILE PATH>");
// Note: you must give the file name with the correct extension
const file = new File([buffer], "test.csv");
const { json } = await canvas.sisImport(file);
console.log(json);
If you need to pass extra parameters to Canvas, create a FormData
object and pass it as body
to the request()
method:
import { CanvasApi } from "@kth/canvas-api";
const canvas = new CanvasApi(
"<YOUR CANVAS INSTANCE>/api/v1",
"<YOUR CANVAS TOKEN>"
);
const buffer = await readFile("<FILE PATH>");
const file = new File([buffer], "test.csv");
const formData = new FormData();
formData.set("attachment", file);
formData.set("key", "value");
const { json } = await canvas.request(
"accounts/1/sis_import",
"POST",
formData
);
console.log(json);
Pagination
Use the method .listPages
to automatically traverse pages.
import { CanvasApi } from "@kth/canvas-api";
const canvas = new CanvasApi(
"<YOUR CANVAS INSTANCE>/api/v1",
"<YOUR CANVAS TOKEN>"
);
const pages = canvas.listPages("accounts/1/courses");
for await (const { json } of pages) {
console.log(json);
}
If the page returns a list of items, you can use .listItems
to traverse through the items.
Note: the returned iterator does not include response headers
import { CanvasApi } from "@kth/canvas-api";
const canvas = new CanvasApi(
"<YOUR CANVAS INSTANCE>/api/v1",
"<YOUR CANVAS TOKEN>"
);
const courses = canvas.listItems("accounts/1/courses");
for await (const course of courses) {
console.log(course);
}
Type safety
This library parses JSON responses from Canvas and convert them as JavaScript object. If you want to check types in runtime, use a library like Zod:
import { CanvasApi } from "@kth/canvas-api";
import { z } from "zod";
const canvas = new CanvasApi(
"<YOUR CANVAS INSTANCE>/api/v1",
"<YOUR CANVAS TOKEN>"
);
const accountSchema = z.object({
id: z.number(),
name: z.string(),
workflow_state: z.string(),
});
const { json } = client.get("accounts/1");
const parsed = accountSchema.parse(json);
Error handling
This library returns instances of CanvasApiError
. Check the file src/canvasApiError.ts
to see all the error classes that this library throws
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
1 year ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago