Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pennlabs/labs-api-server
server for search for registrar, etc
https://github.com/pennlabs/labs-api-server
Last synced: about 6 hours ago
JSON representation
server for search for registrar, etc
- Host: GitHub
- URL: https://github.com/pennlabs/labs-api-server
- Owner: pennlabs
- License: mit
- Created: 2014-08-22T05:25:24.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-04-15T21:55:45.000Z (over 1 year ago)
- Last Synced: 2024-04-08T16:04:42.522Z (7 months ago)
- Language: HTML
- Size: 795 KB
- Stars: 11
- Watchers: 24
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Labs API Server
===============[![CircleCI](https://circleci.com/gh/pennlabs/labs-api-server.svg?style=shield)](https://circleci.com/gh/pennlabs/labs-api-server)
[![Coverage Status](https://coveralls.io/repos/github/pennlabs/labs-api-server/badge.svg?branch=master)](https://coveralls.io/github/pennlabs/labs-api-server?branch=master)Redis-backed caching server for the Open Data APIs.
Intended for internal use at Penn Labs to speed up queries to Open Data.Setup
-----
* Install [redis](https://redis.io/)
* Install mysql
* Mac OS X: `brew install mysql` and [these instructions](https://solitum.net/openssl-os-x-el-capitan-and-brew/)
* If you have trouble installing mysqlclient, follow the accepted answer [here](https://stackoverflow.com/questions/56133947/install-mysqlclient-via-pipenv-throw-errors), 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](https://stackoverflow.com/questions/53111111/cant-install-mysqlclient-on-mac-os-x-mojave)
* Add environment secrets to `.env` in the root directory
* Enter the virtual environment using `pipenv shell`
* Run mobile API server with`./runserver.py`## Buildings
### Search
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
### By Building Code
Return the building corresponding to the given code
URL
https://api.pennlabs.org/buildings/{building_code}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
## Dining
### Venues
Return a list of all dining venues
URL
https://api.pennlabs.org/dining/venues
HTTP Methods
GET
Response Formats
JSON
Parameters
None
### Hours
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
## Directory
### Search
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
#### Example
GET: `https://api.pennlabs.org/directory/search?name=Alex%20Wissmann`
### Person By ID
Return the person with `person_id`
URL
https://api.pennlabs.org/directory/person/{person_id}
HTTP Methods
GET
Response Formats
JSON
Parameters
None
## Registrar
### Search
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
#### Example
GET: `https://api.pennlabs.org/registrar/search?q=cis-110`
## Laundry
### All Halls
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
### Hall by hall_no
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
### Two halls by hall_no
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
### Laundry Usage
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
## Study Spaces
### All Buildings
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 format2018-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)
### Book Room
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.
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).
### Get Reservations
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
Optional
The email associated with the libcal reservation(s)
[email protected]
sessionid
Optional
A valid sessionid for the Wharton student
abcdefghijklimnopqrstuvwxyz12345
### Cancel Room
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.
## Weather
### Current Weather
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
#### Example
## Calendar
### 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 inYYYY-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
## Transit
### Routing
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
#### Example
GET: `https://api.pennlabs.org/transit/routing?latFrom=39.9533568&lonFrom=-75.2161194&latTo=39.9495731&lonTo=-75.12924031`
### Stops
Get information on all stops
URL
https://api.pennlabs.org/transit/stops
HTTP Methods
GET
Response Formats
JSON
Parameters
None
### Routes
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
## Fitness
### Get Usage
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 Schedule
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
## Athletics
Documentation for the athletics endpoints is located at the Labs pennathletics
library SDK repository [README](https://github.com/pennlabs/pennathletics/blob/master/README.md#sports)## Authentication
### Register a user
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 token
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