Prepared October 4, 2024
LionSpaceFIS is the facility database for Penn State University, maintained by the Office of Physical Plant. It replaced the FIS, Facilities Information System.
What’s new, Octorber 2024
In version 1.14.0, we add businessAreaKey to buildings.
What’s new, September 2024
In version 1.13.1-2, we add ability to search for buildings and rooms by campus via campus.lionPathCampusCode, not just campus.id
What’s new, April 2024
In version 1.13.0, we add capacity and occupancy to Buildings and Rooms. We also add isWorkspace to Buildings, which is true if either capacity or occupancy or both is greater than zero. This is a searchable field. We add type.id and dateInactivated as searchable fields for Rooms.
What’s new, February 2024
In version 1.12.0, we add maximoCampusCode to the campus structures in buildings and rooms. We also fixed a couple of minor typos in this document.
What’s new, February 2023
In version 1.11.1-2 the field maximoLocation was added to rooms. Use this field if you need to get additional location information from Maximo.
What’s new, November 2022
In version 1.11, we introduce new fields to Buildings (dateInactivated, facilityCoordinators) and Rooms (dateInactivated, facilityCoordinators, principalInvestigators, floorVerticalOrder, occupants). This document has been updated.
What’s New, July 2022
In this version, we introduce a new searchable field in buildings
: buildingFunctionCat
.
This field is important because Lionspace began storing Items Other Than Buildings and Outdoor Locations as Buildings and designating them by populating the buildingFunctionCat
field as IOB
and SLO
respectively.
Related to this, four API endpoints have been deprecated (see Entity below). These endpoints will still provide valid responses, but will be removed in a future version. Consumers of this API should begin to move away from those endpoints. Add buildingFunctionCat='IOB'
or 'SLO'
to a buildings query to find items other than buildings and outdoor locations.
Get Requests
Clients request data from FIS via HTTP requests formatted like this:
{server}/fis-api/v1/{entity}?{search property}{:operation}{=value}
Server
The server is the base URL of the FIS application server: http://apps.opp.psu.edu, or similar.
Entity
This is the entity of data the client is requesting.
-
buildings
-
campuses
-
rooms
-
buildingEvents
-
roomEvents
-
itemsOtherThanBuildings
-
outdoorSpaces
-
itemsOtherThanBuildingsEvents
-
outdoorSpacesEvents
Endpoints for deprecated entities will still respond, but will be removed in a future release. Search instead on the building endpoint while adding buildingFunctionCat='IOB'
or buildingFunctionCat='SLO'
to your query.
Search Property and Value
Callers may narrow their results by specifying search properties with corresponding values. Each entity has a list of allowable properties. Search property is optional; if omitted, do not include the question mark (?
) in the request.
Value is specified by following the search value with an equals sign (=
) and text specifying the value of your search. Date values should be specified in yyyy-MM-dd
format.
Mulitple search properties (and associated values) can be specified by separating the property-value pairs with an ampersand (&
)
Entity | Max _limit | Allowable Properties | Example |
---|---|---|---|
|
250 |
|
|
|
1000 |
|
|
|
500 |
|
|
|
500 |
|
|
|
250 |
n/a (search not supported, all 31 campuses are returned) |
|
Special Search Properties: Three special search properties are also supported, for all entities.
Property | Description | Example |
---|---|---|
|
Sort the results. The corresponding value specifies the property to govern the sort; optionally suffix the value with |
|
|
Pagination control. The value is the maximum number of results returned. Each entity has a default value that is used if the limit is unspecified or exceeded. |
|
|
Pagination control. The value is the number of results skipped before returning a number of results equal to |
|
Default Limits
Each entity has a default maximum limit to the number of records returned with each request. Users may specify a smaller limit, but limits larger than these values will be ignored and the default maximum used.
-
buildings
: 250 -
rooms
: 1000 -
buildingEvents
: 500 -
roomEvents
: 500 -
campuses
: 250
Operation
Provide an operator to govern how the value will be matched to the search property. The operator should be separated from the search property by a colon (:).
Operator | Description |
---|---|
|
Equals: an exact case sensitive match |
|
Greater than or equal to |
|
Greater than |
|
Less than or equal to |
|
Less than |
|
Case sensitive match of the value using |
|
Case insensitive match of the value using |
|
Value is a comma-delimited set of values the property may exactly match |
|
Search property is null (omit =value) |
|
Inverts the specified operator |
(none) |
If no operator is specified, |
Get Response
Responses are returned as json data.
buildings Response
query: v1/buildings?id=0001000
[{
"function": "40200",
"status": "ACTV",
"county": "Centre",
"address": "Pollock Road",
"city": "University Park",
"state": "PA",
"zipCode": "16802",
"abbreviation": "Old Main",
"maximoName": "OLD MAIN",
"id": "0001000",
"name": "Old Main",
"buildingFunctionCat": "EG",
"businessAreaKey": "1234",
"facilityCoordinators": '1840 - Able, Amy - 60.00%,2940 - Baker, Bob - 40.00%',
"capacity": 10,
"occupancy": 11,
"isWorkspace": true,
"campus": {
"id": "UP",
"maximoCampusCode": "UP",
"lionPathCampusCode": "UP",
"name": "University Park"
},
"lastUpdateDate": "2020-11-04",
"dateInactivated": null,
"latLong": {
"latitude": 40.79647,
"longitude": -77.86283
}
}]
buildingEvents Response
Important
|
A single location might be updated multiple times per day in Lionspace. However the data sourced by LionspaceFIS-API is updated once daily, and only the last daily event for each particular location is delivered here; this guarantees that the location data is up-to-date without recording a large number of irrelevant events. If you see any event for a location you’re interested in, regardless of type or field updated, it’s advisable that you get the full data for that location. This is true for all location types. |
query: v1/buildingEvents?buildingId=0001000
[{
"event": "U",
"oldValue": "Bounded by Stuckeman Building to the West",
"newValue": "Shortlidge Road",
"changeDate": "2021-04-08",
"fieldName": "address",
"buildingId": "0001000"
}]
Event | Description |
---|---|
|
Record updated |
|
Record added |
|
Record deleted |
rooms Response
query: v1/rooms?building.id=0119000&floor=2
[
{
"number": "207",
"floor": "2",
"floorVerticalOrder": 20,
"netArea": 103.46,
"fireCodeCapacity": null,
"photoUrl": null,
"collegeNetKey": null,
"businessAreaKey": "2120",
"principalInvestigators": "gsk125",
"id": "0119000-2-207",
"name": null,
"facilityCoordinators": "2120 - Hoffman, Michael James",
"principalInvestigators": "lastName, firstName",
"capacity": 5,
"occupancy": null,
"occupants": "lastName, firstName",
"campus": {
"id": "UP",
"maximoCampusCode": "UP",
"lionPathCampusCode": "UP",
"name": "University Park"
},
"maximoLocation": "0119000-207",
"lastUpdateDate": "2022-08-19",
"dateInactivated": null,
"latLong": {
"latitude": null,
"longitude": null
},
"building": {
"id": "0119000"
},
"type": {
"id": "310",
"description": "Faculty Office"
}
},
...
]
roomEvents Response
query: v1/roomEvents?roomId:like=0001000-4*
[
{
"event": "A",
"oldValue": "null",
"newValue": "null",
"changeDate": "2021-04-27",
"fieldName": null,
"roomId": "0001000-4-417C"
},
{
"event": "A",
"oldValue": "null",
"newValue": "null",
"changeDate": "2021-04-27",
"fieldName": null,
"roomId": "0001000-4-417D"
},
...
]
campuses Response
query: v1/campuses
[
{
"maximoCode": "AA",
"lionPathCode": "AL",
"name": "Penn State Altoona"
},
{
"maximoCode": "AN",
"lionPathCode": "LV",
"name": "Penn State Lehigh Valley"
},
{
"maximoCode": "BD",
"lionPathCode": "ER",
"name": "Penn State Erie"
},
{
"maximoCode": "BK",
"lionPathCode": "BK",
"name": "Penn State Berks"
},
{
"maximoCode": "BR",
"lionPathCode": "BR",
"name": "Penn State Beaver"
},
...
]
Count, Limit, and Offset
The HTTP response headers contain metainformation about the pagination of the data.
To get the subsequent pages, the caller should set _limit=(X-Result-Offset+X-Result-Limit)
for the next call.
HTTP Response Header | Description |
---|---|
|
The total number of matching records, regardless of how many were returned for this particular request. |
|
The maximum number of items returned for any page. |
|
The number of items skipped from the start of the result set to form this page |
Example Get Requests
Returns all buildings with "Hammond" in its name on the UP campus:
{server}/fis-api/v1/buildings?campus.id=UP&name:ilike=*hammond*
Returns all rooms on the second floor in Old Main:
{server}/fis-api/v1/rooms?building.id=0001000&floor=2
Series of requests to get a number of buildings at University Park in alphabetical order by name, 100 records at a time:
{server}/fis-api/v1/buildings?campus.id=UP&_sort=name&_limit=100&_offset=0 {server}/fis-api/v1/buildings?campus.id=UP&_sort=name&_limit=100&_offset=100 {server}/fis-api/v1/buildings?campus.id=UP&_sort=name&_limit=100&_offset=200 {server}/fis-api/v1/buildings?campus.id=UP&_sort=name&_limit=100&_offset=300
Health Endpoint
Users can quickly check the version and health of the service by visiting {server}/fis-api/health
.
Time is in milliseconds.
{
"appVersion": "1.11.0",
"appStatus": "UP",
"totalTime": 179,
"details": [
{
"name": "databaseConnectivity",
"result": "OK",
"time": 53
}
]
}
appStatus | Description |
---|---|
|
Service is working |
|
Service is not working |
Contact Info
Please contact OPP ITS (abacus@PennStateOffice365.onmicrosoft.com) with questions or to report problems about this API.
Change Log
1.14.0
-
October 2024
-
Added businessAreaKey to buildings
1.13.2
-
September 2024
-
Fixed typos in documentation
1.13.1
-
September 2024
-
campus.lionPathCampusCode is now a searchable param for both buildings and rooms
1.13.0
-
April 2024
-
isWorkspace, capacity, occupancy added to Buildings. isWorkspace is a searchable param.
-
type.id and dateInactivated added as searchable params for Rooms
1.12.0
-
February 2024
-
maximoCampusCode added to campus structures in buildings and rooms responses
-
Minor typos fixed in documentation
1.11.1-2
-
February 2023
-
maximoLocation added to room output
1.11.0
-
November 2022
-
Application version number now part of in health endpoint response
-
Fields facilityCoordinators, buildingFunctionCat added to buildings
-
Fields facilityCoordinators, principalInvestigators, floorVerticalOrder, occupants added to rooms
1.10.1
-
September 2022
-
Fixed bug searching rooms and buildings by lastUpdateDate
1.10.0
-
July 2022
-
Building response provides buildingFunctionCat ('IOB' and 'SLO' indicate Item Other Than Building and Schedulable Location Outdoors)
-
Building search accepts buildingFunctionCat values
-
Endpoints for IOBs, SLOs, and related events are deprecated
-
Documentation updated
1.9.0
-
Room response provides netArea, fireCodeCapacity, photoUrl, collegeNetKey, businessAreaKey
1.8.0
-
Building response provides city, state, zipCode
-
Documentation updated
1.7.0 through 1.7.4
-
Various bug fixes
-
maximoName added to Building
-
Documentation updated
What’s new in Version 1.7.0
-
Improved speed from local data cache
-
Lat-Lon to 5 decimal places (within 1 meter)
-
Outdoor Spaces no longer support Lat-Lon
-
Invalid search terms ignored
-
Health check return data updated
Previous Versions
-
1.6.1: Improved documentation
-
1.6.0: Additional fields were added to building (status) and buildingEvents(fieldName, oldValue, newValue)
-
1.5.1: The health check endpoint was moved to /fis-api/health .
-
1.5.0: A health check endpoint has been added, at /fis-api/v1/health .
-
1.4.1: In the Rooms response, the building field no longer returns the building name.
-
1.4.0 and earlier:
The transition to LionSpaceFIS has introduced numerous changes from version 1.2 of this API. Every effort was made to maintain the same interface, but some data that was in the old system is not in the new and therefore can’t be delivered. However, several new entities of data have been added.
New Data Entities Added
Several new data entities were added.
-
Outdoor Spaces (
outdoorSpaces
): Scheduleable locations outdoors (known as SLO in the LionSpaceFIS application): athletic fields, pavilion spaces, etc. -
Items Other than Buildings (
itemsOtherThanBuildings
): Outdoor objects such as bus stop shelters, sculptures, etc. -
Events - updates, inserts, deletes - for both
Old Data Entities Removed
As of version 1.3.0, LionSpaceFIS no longer tracks these data entities:
-
roomFeatures
-
features
-
campuses
Data Changes
Some changes have been made to fields.
Buildings
-
Added:
address
(now contains entire address) -
Removed:
city
,state
,zipcode
,college
-
Changed:
campus
now includes fieldsid
(Maximo code),lionPathCode
, andname
Rooms
-
Added:
type
,latLong
-
Removed:
ref
RoomEvents
-
Added:
roomId
,fieldName
,oldValue
,newValue
-
Removed:
roomRef
,buildingId
,roomNumber