Behind this screen sits a world of possibilities:

Assignments specific to your classes from moodle

Assignments specific to your classes from compass

Personal information from SelfService

Automating Tuition Payments

Scraping information from your own DARS reports

Scraping data (and automating tasks) from the Wiki

… many more

Few have been able to get around this wall before and access all that information and automate tasks. I recently came across a rather simple way to do the same involving the magic of WrapAPI.

Fortunately, I’m aware of my lack of creativity with this newfound information, so I want to know what you would want to do with such data.

I’m actively developing a set of APIs to let you login to Compass, Moodle and SelfService with a simple POST request. Simultaneously, I’m also building an isomorphic (fancy word for “works on the browser and in Node”) JS wrapper for the same API. Here’s a little demo of how easy it is to use:

Demo

Say I want to a list of all my Homework assignments from a class I’m in from Moodle. This is what the page looks like if I visit the page in Chrome

Some links on Moodle from a class

Notice the “Homework 1” and “Homework 2” links on the page (this continues down the page for a few more homework links).

Now, here’s the code someone would have to write to get the same information in code (in Javascript)

Pretty simple, right?

You’re just dealing with plugging in your netid and password (or those of someone using an app you build), and it’ll authenticate.

Here’s the output for the above code, if you were wondering

Output for homework scraper

Help?

Though my demo reveals a rather unimpressive use case of such APIs, I’ve come to realize the number of things that such APIs can accomplish.

After reading this post, I hope you’ve come to realize the same. Let me know what data you’d like to have access to with a suite of APIs this simple.

On the other hand, if you think another language can benefit from a wrapper for these APIs (besides the official JS wrapper I’m building), let me know. I’d love to collaborate on something like this.

Why?

Why work towards building and maintaining these public APIs instead of keeping them to myself?

I’ve always been amazed by the possibilities of automating tasks by simply grabbing it from an API or scraping a webpage. However, rarely do I follow through towards building a tool that leverages these techniques here at UIUC. There are some amazing people out there who’ve built some amazing things that leverage web scraping and APIs, and these APIs I plan to release will be yet another tool available to those awesome folks.

To whomsoever it may concern (The University)

I’ve heard of multiple requests/discussions/talks about making more UIUC information accessible through official APIs, and I’m glad to hear that. I strive for an open world where people have access to all the information they need and can easily build on top of that. Exposing an API gives students the ability to create, and that’s not something anyone should ever restrict.

I understand that you may have some security concerns about this, and in response, I’d love to work with you to control this API. If we can work together to make things like DARS report data and class assignments accessible, without sacrificing on any concerns you may have, we can make the university (and by extension, the world) a better place. Let’s do this.