npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

untis-api-client

v1.1.0

Published

WebUntis API client

Downloads

3

Readme

Untis API Client

About

A client for accessing the WebUntis API as documented here.

As described in the implementation details, this client only uses the public API. If you need to use the internal API, check out this library instead.

Usage

Installation

$ npm install untis-api-client

Example

import { LoginStatus, searchSchoolsByName } from "untis-api-client";

let [school] = await searchSchoolsByName("my school name");
if (!school) {
  throw new Error("school not found");
}

let client = school.getClient();

let status = await client.login("username", "password");

if (!status.Ok) {
  throw new Error(`Login failed: ${LoginStatus[status.value]}`);
}

let timetable = await client.getOwnTimetable("2022-01-01", "2022-12-31");
client.logout();

console.log(timetable);

More examples

Implementation details

The client uses the "public" API. The official mobile WebUntis mobile apps and 3rd-party apps such as BetterUntis use the internal API, which allows you to log in anonymously or with an OTP.
Because I couldn't find any official documentation for it and the official API seemed more user-friendly, I didn't implement the internal API, so I don't know if either API has more or less features than the other one.
Also, not all documented methods are currently implemented in this client because I don't have the necessary permissions to access them, they are unavailable, or I don't need them in a backend environment. They are:

  • requesting departments (getDepartments)
  • requesting the time grid (getTImegridUnits)
  • requesting status data (getStatusData)
  • searching a person's id (getPersonId)
  • requesting substitutions (getSubstitutions)
  • getting exams or exam types (getExams, getExamTypes)
  • requesting a timetable with absences (getTimetableWithAbsences)
  • requesting class-reg events or remark categories (getClassregEvents, getClassregCategories, getClassregCategoryGroups)

Contributing

I am unable to test a lot of the WebUntis API features myself because they are undocumented, or I don't have permission to use them. Therefore, feel free to contribute to this API client!
Here are a few things you should keep in mind:

  • add tests wherever possible
  • test your additions thoroughly before committing
  • format your code using npm run format:apply

Project structure

If you contribute, please follow the code structure.

src/
  webuntis/
    requests/: method names and their parameter and return types.
    resources/: resources returned by WebUntis
  wrappers/: wrapper classes around resources

Notice

I am not affiliated with WebUntis in any way. Use at your own risk.