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.

Currently Supported Entities
  • buildings

  • campuses

  • rooms

  • buildingEvents

  • roomEvents

Deprecated Entities
  • 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

buildings

250

  • id

  • name

  • campus.id

  • campus .lionPathCampusCode

  • abbreviation

  • function

  • county

  • status

  • lastUpdateDate

  • buildingFunctionCat

  • isWorkspace (Boolean value, specify search value of true or false)

/v1/buildings?campus.id=UP

rooms

1000

  • id

  • building.id

  • number

  • floor

  • campus.id

  • campus .lionPathCampusCode

  • capacity

  • lastUpdateDate

  • dateInactivated

  • type.id

/v1/rooms?building .id=0001000&floor=2

buildingEvents

500

  • buildingId

  • changeDate

  • event

  • fieldName (U events only)

  • oldValue (U events only)

  • newValue (U events only)

/v1/buildingEvents? changeDate:ge=2015-01-01

roomEvents

500

  • roomId

  • changeDate

  • event

  • fieldName (U events only)

  • oldValue (U events only)

  • newValue (U events only)

/v1/roomEvents?changeDate:ge=2015-03-01 &changeDate:lt=2015-04-01

campuses

250

n/a (search not supported, all 31 campuses are returned)

v1/campuses

Special Search Properties: Three special search properties are also supported, for all entities.

Property Description Example

_sort

Sort the results. The corresponding value specifies the property to govern the sort; optionally suffix the value with :desc or :asc to indicate descending or ascending order (defaults to ascending if omitted).

/v1/buildings?_sort=name:desc

_limit

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.

/v1/buildings?_limit=100

_offset

Pagination control. The value is the number of results skipped before returning a number of results equal to _limit, if available.

/v1/buildings?_limit=100&_offset=300

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.

Default limits
  • 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

:eq

Equals: an exact case sensitive match

:ge

Greater than or equal to

:gt

Greater than

:le

Less than or equal to

:lt

Less than

:like

Case sensitive match of the value using * wildcards

:ilike

Case insensitive match of the value using * wildcards

:in

Value is a comma-delimited set of values the property may exactly match

:null

Search property is null (omit =value)

:![some other operator]

Inverts the specified operator

(none)

If no operator is specified, eq is assumed

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

U

Record updated

A

Record added

D

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

X-Result-Count

The total number of matching records, regardless of how many were returned for this particular request.

X-Result-Limit

The maximum number of items returned for any page.

X-Result-Offset

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

UP

Service is working

DOWN

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 fields id (Maximo code), lionPathCode, and name

Rooms
  • Added: type, latLong

  • Removed: ref

RoomEvents
  • Added: roomId, fieldName, oldValue, newValue

  • Removed: roomRef, buildingId, roomNumber