Skip to content

SchoolUtils/WebUntis

Repository files navigation

WebUntis API

This is a NodeJS Wrapper for the JSON RPC WebUntis API.

The Documentation is available at https://webuntis.noim.me/

In case you need the Untis API Spec (pdf), you need to email Untis directly and ask. I am (legally) not allowed to publish it.

Note:

As I have not been a student for a long time, I currently have no access to any Untis services. If you want to share your login details with me for testing purposes, contact me via Telegram or other means (Homepage).

Examples

User/Password Login

import { WebUntis } from 'webuntis';

const untis = new WebUntis('school', 'username', 'password', 'xyz.webuntis.com');

await untis.login();
const timetable = await untis.getOwnTimetableForToday();

// profit

QR Code Login

import { WebUntisQR } from 'webuntis';
import { URL } from 'url';
import { authenticator as Authenticator } from 'otplib';

// The result of the scanned QR Code
const QRCodeData = 'untis://setschool?url=[...]&school=[...]&user=[...]&key=[...]&schoolNumber=[...]';

const untis = new WebUntisQR(QRCodeData, 'custom-identity', Authenticator, URL);

await untis.login();
const timetable = await untis.getOwnTimetableForToday();

// profit

User/Secret Login

import { WebUntisSecretAuth } from 'webuntis';
import { authenticator as Authenticator } from 'otplib';

const secret = 'NL04FGY4FSY5';

const untis = new WebUntisSecretAuth('school', 'username', secret, 'xyz.webuntis.com', 'custom-identity', Authenticator);

await untis.login();
const timetable = await untis.getOwnTimetableForToday();

// profit

Anonymous Login

Only if your school supports public access.

import { WebUntisAnonymousAuth, WebUntisElementType } from 'webuntis';

const untis = new WebUntisAnonymousAuth('school', 'xyz.webuntis.com');

await untis.login();
const classes = await untis.getClasses();
const timetable = await untis.getTimetableForToday(classes[0].id, WebUntisElementType.CLASS);

// profit

Installation

This package is compatible with CJS and ESM. Note: This package primary target is nodejs. It may also work with runtimes like react-native, but it will probably not work in the browser.

yarn add webuntis
# Or
npm i webuntis --save
# Or
pnpm i webuntis

ESM note:

If you use the esm version of this package, you need to provide Authenticator and URL if necessary. For more information, look at the User/Secret Login or QR Code Login example. This is not needed for username/password or anonymous login.

Notice

I am not affiliated with Untis GmbH. Use this at your own risk.