Redis-backed caching server for the Open Data APIs.
Intended for internal use at Penn Labs to speed up queries to Open Data.
Install redis
Install mysql
Mac OS X: brew install mysql
and these instructions
If you have trouble installing mysqlclient, follow the accepted answer here , except replace the pip
with pipenv
Debian/Ubuntu: apt-get install libmysqlclient-dev
Install pipenv: pip install --user --upgrade pipenv
Install requirements using pipenv install -d
If on macOS and mysql is throwing errors, try this
Add environment secrets to .env
in the root directory
Enter the virtual environment using pipenv shell
Run mobile API server with./runserver.py
Use a word or phrase to search for a Penn building
URL
https://api.pennlabs.org/buildings/search
HTTP Methods
GET
Response Formats
JSON
Parameters
Name
Default
Description
Example Values
q
Required
The building search query
Harrison , Levine Hall
Return the building corresponding to the given code
URL
https://api.pennlabs.org/buildings/{building_code}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Return a list of all dining venues
URL
https://api.pennlabs.org/dining/venues
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Return the week's hours for the venue with venue_id
URL
https://api.pennlabs.org/dining/hours/{venue_id}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Weekly Menu
Return the week's menus for the venue with venue_id
URL
https://api.pennlabs.org/dining/weekly_menu/{venue_id}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Daily Menu
Return the daily menu for the venue with venue_id
URL
https://api.pennlabs.org/dining/daily_menu/{venue_id}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Search by name in the Penn Directory
URL
https://api.pennlabs.org/directory/search
HTTP Methods
GET
Response Formats
JSON
Parameters
Name
Default
Description
Example Values
name
Required
The name to be searched for in the directory. This value is parsed into compontent parts and searched in different reasonable configurations.
Alex , John Doe
GET: https://api.pennlabs.org/directory/search?name=Alex%20Wissmann
Return the person with person_id
URL
https://api.pennlabs.org/directory/person/{person_id}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Search for courses by Department, Course Number, and Section
URL
https://api.pennlabs.org/registrar/search
HTTP Methods
GET
Response Formats
JSON
Parameters
Name
Default
Description
Example Values
q
Required
The search query for the course.
cis , cis-110
GET: https://api.pennlabs.org/registrar/search?q=cis-110
Return information on all laundry rooms
URL
https://api.pennlabs.org/laundry/halls
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Hall id name location mapping
Return a list of hall names, and their corresponding ids and locations.
URL
https://api.pennlabs.org/laundry/halls/ids
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Get information for a specific room by the hall_no. hall_no is given in the All Halls response.
URL
https://api.pennlabs.org/laundry/hall/{hall_no}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Get information for two rooms by the hall_nos. hall_no is given in the All Halls response.
URL
https://api.pennlabs.org/laundry/hall/{hall_no}/{hall_no_2}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Multiple halls by hall_no
Get information for multiple rooms by the hall_nos. hall_no is given in the All Halls response.
URL
https://api.pennlabs.org/laundry/rooms/{hall_no},{hall_no_2},{hall_no_3}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Get information about the usage of laundry machines in a certain hall. If no date is specified, the current date is used.
URL
https://api.pennlabs.org/laundry/usage/{hall_no}/{year}-{month}-{day}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Lists all the buildings with study rooms along with their corresponding IDs and services.
URL
https://api.pennlabs.org/studyspaces/locations
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Available Rooms in One Building
Returns all the available rooms on a given date range given a building id. Dates are in the format 2018-01-28T14:00:00-0500
.
URL
https://api.pennlabs.org/studyspaces/availability/{building}
HTTP Methods
GET
Response Formats
JSON
Parameters
Name
Default
Description
start
The current day.
Range Start (YYYY-MM-DD)
end
The current day.
Range End (YYYY-MM-DD)
Books a room given the room information and the user's contact information.
URL
https://api.pennlabs.org/studyspaces/book
HTTP Methods
POST
Response Formats
JSON
Headers
Name
Default
Description
X-Device-ID
Optional
The UUID of the user booking the room.
Parameters
Name
Default
Description
room
Required
The room id.
start
Required
Range Start
end
Required
Range End
firstname
Required
The user's first name.
lastname
Required
The user's last name.
email
Required
The user's email.
groupname
Required
The purpose of the group meeting.
phone
Optional
The user's phone number.
size
Optional
The size of the meeting (ex: 2-3).
Returns all the reservations for a given email and/or Wharton Session ID.
URL
https://api.pennlabs.org/studyspaces/reservations
HTTP Methods
GET
Response Formats
JSON
Parameters
Name
Default
Description
Example Values
email
Optional
The email associated with the libcal reservation(s)
johndoe@seas.upenn.edu
sessionid
Optional
A valid sessionid for the Wharton student
abcdefghijklimnopqrstuvwxyz12345
Cancels a room given a booking id or a list of booking ids.
URL
https://api.pennlabs.org/studyspaces/cancel
HTTP Methods
POST
Response Formats
JSON
Headers
Name
Default
Description
X-Device-ID
Required
A valid UUID on the server. If room booked with API, must match the UUID that was used.
Parameters
Name
Default
Description
booking_id
Required
The booking id of the reservation to cancel.
Retrieves the current weather in Philly via the Open Weather Map API .
URL
https://api.pennlabs.org/weather
HTTP Methods
GET
Response Formats
JSON
Parameters
None
2-Week Calendar from Current Date
Returns all events occurring 2 weeks from the current date.
URL
https://api.pennlabs.org/calendar/
HTTP Methods
GET
Response Formats
JSON
Parameters
None
2-Week Calendar from Given Date
Given a date in YYYY-MM-DD
format, returns all events occurring 2 weeks from that date.
URL
https://api.pennlabs.org/calendar/{date}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Finds a route, from all Penn Transit routes, which provides the shortest total walking distance to get from (latFrom, lonFrom) to (latTo, lonTo). If there is no path which shortens the travelers walking distance, an error is returned.
URL
https://api.pennlabs.org/transit/routing
HTTP Methods
GET
Response Formats
JSON
Parameters
Name
Default
Description
latFrom
Required
Starting Latitude
lonFrom
Required
Starting Longitude
latTo
Required
Ending Latitude
lonTo
Required
Ending Longitude
GET: https://api.pennlabs.org/transit/routing?latFrom=39.9533568&lonFrom=-75.2161194&latTo=39.9495731&lonTo=-75.12924031
Get information on all stops
URL
https://api.pennlabs.org/transit/stops
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Get information on all routes. This has the same information as the stops endpoint, but is indexed by route.
URL
https://api.pennlabs.org/transit/routes
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Get approximate usage data for locations in various fitness centers.
URL
https://api.pennlabs.org/fitness/usage
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Get the schedule for the open hours of various fitness centers.
URL
https://api.pennlabs.org/fitness/schedule
HTTP Methods
GET
Response Formats
JSON
Parameters
None
Documentation for the athletics endpoints is located at the Labs pennathletics
library SDK repository README
Register a UUID on the server and create a user account
URL
https://api.pennlabs.org/device/register
HTTP Methods
POST
Response Formats
JSON
Parameters
Name
Default
Description
auth_secret
Required
The secret key to register a user
device_id
Required
The UUID associated with the user's device
Validate whether token is valid. Note : You must access this endpoint over TLS/SSL (https).
URL
https://api.pennlabs.org/validate/{token}
HTTP Methods
GET
Response Formats
JSON
Parameters
None