Rokwire Gateway Building Block
Gateway Building Block of the Rokwire platform, providing access to external university systems and data streams for the Illinois mobile app ecosystem.
Gateway Building Block of the Rokwire platform, providing access to external university systems and data streams for the Illinois mobile app ecosystem.
openapi: 3.0.3
info:
title: Rokwire Gateway Building Block API
description: Gateway Building Block API Documentation
version: 2.21.1
servers:
- url: https://api.rokwire.illinois.edu/gateway
tags:
- name: Client
description: Client applications APIs.
- name: Admin
description: Clients administration applications APIs.
- name: BBs
description: Building Block APIs.
- name: TPS
description: Third-Party Service APIs.
- name: System
description: Third-Party Service APIs.
- name: Default
description: Default APIs.
paths:
/version:
get:
tags:
- Default
summary: Get version
description: |
Gets current version of this service
responses:
"200":
description: Success
content:
text/plain:
schema:
type: string
example: v1.0.0
"500":
description: Internal error
/api/examples/{id}:
get:
tags:
- Client
summary: Gets example
description: |
Gets example record
**Auth:** Requires valid user token with `get_examples` permission
security:
- bearerAuth: []
parameters:
- name: id
in: path
description: ID of example to retrieve
required: true
style: simple
explode: false
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Example'
"400":
description: Bad request
"401":
description: Unauthorized
"500":
description: Internal error
/api/wayfinidng/buildng:
get:
tags:
- Client
summary: Gets building information
description: |
Gets building information by id
**Auth:** Requires valid first-party service account token with `get_building` permission
security:
- bearerAuth: []
parameters:
- name: id
in: query
description: Building id
required: true
style: form
explode: false
schema:
type: string
- name: adaOnly
in: query
description: Prioritize ADA accessible entrances in the response
required: false
style: form
explode: false
schema:
type: boolean
- name: lat
in: query
description: lattidue of the user's location
required: false
style: form
explode: false
schema:
type: number
- name: long
in: query
description: longitude of the user's location
required: false
style: form
explode: false
schema:
type: number
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Building'
"400":
description: Bad request
"401":
description: Unauthorized
"500":
description: Internal error
/api/wayfinding/buildings:
get:
tags:
- Client
summary: Gets all campus buildings
description: |
Gets all campus buildings with coordinates, entrances, floors and features
**Auth:** Requires valid first-party service account token with `get_building` permission
security:
- bearerAuth: []
responses:
"200":
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Building'
"400":
description: Bad request
"401":
description: Unauthorized
"500":
description: Internal error
/api/wayfinding/floorplan:
get:
tags:
- Client
summary: Returns the markup required to display the requested floor plan.
description: |
Returns the markup and data structures needed to display an svg of the request floor plan.
**Auth:** Requires valid first-party service account token with `get_building` permission
security:
- bearerAuth: []
parameters:
- name: bldgid
in: query
description: The building id for the selected building
required: true
style: form
explode: false
schema:
type: string
- name: floor
in: query
description: Identifier of the floor to retrieve.
required: true
style: form
explode: false
schema:
type: string
- name: markers
in: query
description: If omitted, the value is set to "on". Indicates the initial state
of all the marker on the floor plan. Values are "on" or "off".
required: false
style: form
explode: false
schema:
type: number
- name: highlites
in: query
description: If omitted, the values is set to "on". Indicates the initial
state of all the highlites on the flloor plan. Values are "on" or "off".
required: false
style: form
explode: false
schema:
type: number
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FloorPlan'
"400":
description: Bad request
"401":
description: Unauthorized
"500":
description: Internal error
/api/wayfinding/searchbuildings:
get:
tags:
- Client
summary: Returns a list of buildings matching the requested name
description: "Returns every building in the campus buildings list that contains
the name parameter in the building name property. \nThe response is a map
where keys are building names and values are building objects.\n\n**Verbosity
Levels:**\n- **v=1 or omitted**: Returns CompactBuilding objects (default)\n-
**v=2**: Returns full Building objects with complete details\n\n**Auth:**
Requires valid first-party service account token with `get_building` permission\n"
security:
- bearerAuth: []
parameters:
- name: name
in: query
description: String to search for in the building name (case-insensitive)
required: true
style: form
explode: false
schema:
type: string
example: Illini
- name: v
in: query
description: Verbosity level. Set to 1 or omit for compact buildings, set
to 2 for full building details
required: false
style: form
explode: false
schema:
type: string
enum:
- "1"
- "2"
default: "1"
example: "1"
responses:
"200":
description: Success - Returns a map of building names to building objects
content:
application/json:
schema:
$ref: '#/components/schemas/SearchBuildingsResponse'
example:
Illini Union:
ID: illini_union
Name: Illini Union
Number: "1401"
FullAddress: 1401 W Green St, Urbana, IL 61801
ImageURL: https://example.com/illini_union.jpg
ShortName: Union
Latitude: 40.1095
Longitude: -88.2272
"400":
description: Bad request - Missing or invalid name parameter
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: invalid
type:
type: string
example: query_param
args:
type: array
items:
type: string
example:
- name
"401":
description: Unauthorized - Invalid or missing authentication token
"404":
description: Not found - No buildings match the search criteria
"500":
description: Internal server error
/api/termsessions/listcurrent:
get:
tags:
- Client
summary: Returns a list of current term sessions
description: |
Based on the current date, returns 4 term sessions for campus. If the current month is between 6 and 12, the current fall term is assumed and returned with the upcomign spring semester, the last summer semster and the previous spring semester. If the current month is less than 6, returns the current spring semester, the upcoming summer and fall semesters and the previous fall semester.
**Auth:** Requires valid first-party service account token with `get_building` permission
security:
- bearerAuth: []
responses:
"200":
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TermSession'
"400":
description: Bad request
"401":
description: Unauthorized
"500":
description: Internal error
/api/laundry/rooms:
get:
tags:
- Client
summary: Get list of all campus laundry rooms
description: |
Returns a list of all laundry rooms available on campus with their basic information including ID, name, status, and location details.
**Auth:** Requires valid first-party service account token with appropriate permissions
security:
- bearerAuth: []
responses:
"200":
description: Success - Returns organization with list of laundry rooms
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
example:
SchoolName: University of Illinois at Urbana-Champaign
LaundryRooms:
- ID: 1
Name: Illini Tower Laundry
Status: active
Location:
Latitude: 40.1095
Longitude: -88.2272
Floor: 1
- ID: 2
Name: Bromley Hall Laundry
Status: active
Location:
Latitude: 40.11
Longitude: -88.228
Floor: 2
"401":
description: Unauthorized - Invalid or missing authentication token
"404":
description: Not found - No laundry rooms available
"500":
description: Internal server error
/api/laundry/room:
get:
tags:
- Client
summary: Get detailed information about a specific laundry room
description: "Returns detailed information about a specific laundry room including
the number of washers and dryers, \na list of all appliances (machines) in
the room with their current status, and location details.\n\n**Auth:** Requires
valid first-party service account token with appropriate permissions\n"
security:
- bearerAuth: []
parameters:
- name: id
in: query
description: The unique identifier of the laundry room
required: true
style: form
explode: false
schema:
type: string
example: "1"
responses:
"200":
description: Success - Returns detailed laundry room information
content:
application/json:
schema:
$ref: '#/components/schemas/RoomDetail'
example:
NumWashers: 8
NumDryers: 6
RoomName: Illini Tower Laundry
CampusName: University of Illinois at Urbana-Champaign
Location:
Latitude: 40.1095
Longitude: -88.2272
Floor: 1
Appliances:
- ID: washer_001
Status: available
ApplianceType: washer
AverageCycleTime: 45
TimeRemaining: null
Label: Washer 1
- ID: dryer_001
Status: in_use
ApplianceType: dryer
AverageCycleTime: 60
TimeRemaining: 15
Label: Dryer 1
- ID: washer_002
Status: maintenance
ApplianceType: washer
AverageCycleTime: 45
TimeRemaining: null
Label: Washer 2
"400":
description: Bad request - Missing or invalid room ID parameter
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: missing
type:
type: string
example: query_param
args:
type: array
items:
type: string
example:
- id
"401":
description: Unauthorized - Invalid or missing authentication token
"404":
description: Not found - Laundry room with specified ID not found
"500":
description: Internal server error
/api/laundry/initrequest:
get:
tags:
- Client
summary: Initialize a service request for a laundry machine
description: "Returns the problem codes and pending service request status for
a specific laundry machine. \nThis endpoint is used to initialize a service
request by providing the available problem codes \nand checking if there's
already an open issue for the machine.\n\n**Auth:** Requires valid first-party
service account token with appropriate permissions\n"
security:
- bearerAuth: []
parameters:
- name: machineid
in: query
description: The unique service tag ID of the laundry machine
required: true
style: form
explode: false
schema:
type: string
example: washer_001
responses:
"200":
description: Success - Returns machine request details and available problem
codes
content:
application/json:
schema:
$ref: '#/components/schemas/MachineRequestDetail'
example:
MachineID: washer_001
Message: Machine is available for service requests
OpenIssue: false
ProblemCodes:
- not_spinning
- not_draining
- leaking
- not_starting
- error_code
- other
MachineType: washer
"400":
description: Bad request - Missing or invalid machine ID parameter
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: missing
type:
type: string
example: query_param
args:
type: array
items:
type: string
example:
- machineid
"401":
description: Unauthorized - Invalid or missing authentication token
"404":
description: Not found - Machine with specified ID not found
"500":
description: Internal server error
/api/laundry/requestservice:
post:
tags:
- Client
summary: Submit a service request for a laundry machine
description: "Submits a service request for a specific laundry machine. This
endpoint requires detailed information \nabout the problem and contact information
for the person submitting the request.\n\n**Required Fields:** machineid,
problemcode, firstname, lastname, email\n**Optional Fields:** comments, phone\n\n**Auth:**
Requires valid first-party service account token with appropriate permissions\n"
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceSubmission'
example:
machineid: washer_001
problemcode: not_spinning
comments: Machine makes noise but doesn't spin
firstname: John
lastname: Doe
phone: 555-123-4567
email: [email protected]
responses:
"200":
description: Success - Service request submitted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceRequestResult'
example:
Message: Service request submitted successfully
RequestNumber: SR-2024-001234
Status: submitted
"400":
description: Bad request - Missing required fields or invalid data
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: missing
type:
type: string
example: request_body
args:
type: array
items:
type: string
example:
- machineid
- problemcode
"401":
description: Unauthorized - Invalid or missing authentication token
"404":
description: Not found - Machine with specified ID not found
"500":
description: Internal server error
/api/person/contactinfo:
get:
tags:
- Client
summary: Get contact information for a person
description: "Returns comprehensive contact information for a person including
name, permanent and mailing addresses, \nphone numbers, and emergency contact
information.\n\n**Authentication:** Requires both RokwireAuth and ExternalAuth
tokens\n**Mode Parameter:** \n- \"0\" (default): Standard contact information\n-
\"1\": Enhanced contact information (for specific UINs)\n\n**Auth:** Requires
valid first-party service account token and external authorization token\n"
security:
- bearerAuth: []
parameters:
- name: id
in: query
description: User ID (UIN) of the person
required: true
style: form
explode: false
schema:
type: string
example: "123456789"
- name: mode
in: query
description: Mode for contact information retrieval (0=standard, 1=enhanced)
required: false
style: form
explode: false
schema:
type: string
enum:
- "0"
- "1"
default: "0"
example: "0"
responses:
"200":
description: Success - Returns person's contact information
content:
application/json:
schema:
$ref: '#/components/schemas/Person'
example:
uin: "123456789"
FirstName: John
LastName: Doe
PreferredName: Johnny
MailingAddress:
Type: MA
Street1: 123 Main St
City: Urbana
StateAbbr: IL
StateName: Illinois
ZipCode: "61801"
County: Champaign
Phone:
AreaCode: "217"
Number: 333-1234
PermAddress:
Type: PR
Street1: 456 Oak Ave
City: Chicago
StateAbbr: IL
StateName: Illinois
ZipCode: "60601"
County: Cook
Phone:
AreaCode: "312"
Number: 555-6789
EmergencyContacts:
- Priority: "1"
RelationShip:
Code: PAR
Name: Parent
FirstName: Jane
LastName: Doe
Address:
Type: PR
Street1: 456 Oak Ave
City: Chicago
StateAbbr: IL
StateName: Illinois
ZipCode: "60601"
County: Cook
Phone:
AreaCode: "312"
Number: 555-6789
"400":
description: Bad request - Missing required parameters or invalid external
token
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: missing
type:
type: string
example: header
args:
type: array
items:
type: string
example:
- external auth token
"401":
description: Unauthorized - Invalid or missing authentication token
"403":
description: Forbidden - Insufficient permissions or invalid external token
"404":
description: Not found - Person with specified UIN not found
"500":
description: Internal server error
/api/person/giescourses:
get:
tags:
- Client
summary: Get registered courses for GIES students
description: "Returns a list of registered courses for GIES (Gies College of
Business) students. \nThis endpoint provides course information including
term, subject, number, section, \ntitle, and instructor details.\n\n**Authentication:**
Requires both RokwireAuth and ExternalAuth tokens\n**Note:** This endpoint
is specifically for GIES students and may return different \ncourse information
compared to the general student courses endpoint.\n\n**Auth:** Requires valid
first-party service account token and external authorization token\n"
security:
- bearerAuth: []
parameters:
- name: id
in: query
description: User ID (UIN) of the GIES student
required: true
style: form
explode: false
schema:
type: string
example: "123456789"
responses:
"200":
description: Success - Returns list of GIES courses
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GiesCourse'
example:
- term: 2024-FA
subject: BADM
number: "310"
section: A
title: Principles of Marketing
instructor: Dr. Smith
- term: 2024-FA
subject: BADM
number: "320"
section: B
title: Business Statistics
instructor: Dr. Johnson
- term: 2024-FA
subject: FIN
number: "300"
section: C
title: Financial Management
instructor: Dr. Williams
"400":
description: Bad request - Missing required parameters or invalid external
token
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: invalid
type:
type: string
example: query_param
args:
type: array
items:
type: string
example:
- id
"401":
description: Unauthorized - Invalid or missing authentication token
"403":
description: Forbidden - Insufficient permissions or invalid external token
"404":
description: Not found - Student with specified UIN not found or no courses
available
"500":
description: Internal server error
/api/person/studentcourses:
get:
tags:
- Client
summary: Get registered courses for a student
description: "Returns a comprehensive list of registered courses for a student
including detailed course information, \nsection details, meeting times, locations,
and building information. This endpoint provides the most \ncomplete course
data compared to other course endpoints.\n\n**Authentication:** Requires both
RokwireAuth and ExternalAuth tokens\n**Location Enhancement:** Automatically
enriches course data with building location information\n**ADA Support:**
Optional ADA-only building filtering for accessibility considerations\n\n**Auth:**
Requires valid first-party service account token and external authorization
token\n"
security:
- bearerAuth: []
parameters:
- name: id
in: query
description: User ID (UIN) of the student
required: true
style: form
explode: false
schema:
type: string
example: "123456789"
- name: termid
in: query
description: Term ID for the academic term (e.g., "120258" for Fall 2025).
If not provided, defaults to the current term.
required: false
style: form
explode: false
schema:
type: string
example: "120258"
- name: lat
in: query
description: Latitude coordinate for location-based building information (optional)
required: false
style: form
explode: false
schema:
type: number
format: float
example: 40.1095
- name: long
in: query
description: Longitude coordinate for location-based building information
(optional)
required: false
style: form
explode: false
schema:
type: number
format: float
example: -88.2272
- name: adaOnly
in: query
description: Filter buildings to show only ADA-compliant entrances (optional)
required: false
style: form
explode: false
schema:
type: boolean
default: false
example: false
responses:
"200":
description: Success - Returns list of student courses with building information
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Course'
example:
- coursetitle: Introduction to Computer Science
courseshortname: CS 101
coursenumber: CS 101
instructionmethod: In Person
coursesection:
days: MWF
meeting_dates_or_range: Aug 26 - Dec 13
room: "1001"
buildingname: Siebel Center for Computer Science
buildingid: siebel
instructiontype: Lecture
instructor: Dr. Smith
start_time: "09:00"
endtime: "09:50"
building:
ID: siebel
Name: Siebel Center for Computer Science
Number: "201"
FullAddress: 201 N Goodwin Ave, Urbana, IL 61801
Address1: 201 N Goodwin Ave
Address2: ""
City: Urbana
State: IL
ZipCode: "61801"
ImageURL: https://example.com/siebel.jpg
MailCode: MC-258
Latitude: 40.1135
Longitude: -88.2244
Floors:
- "1"
- "2"
- "3"
- "4"
Entrances:
- ID: 9bd26229-f95e-4b83-bcd3-34ee91f75b5b
Name: Main Entrance
ADACompliant: true
Available: true
ImageURL: https://example.com/entrance1.jpg
Latitude: 40.1135
Longitude: -88.2244
- ID: entrance2
Name: Side Entrance
ADACompliant: false
Available: true
ImageURL: https://example.com/entrance2.jpg
Latitude: 40.1136
Longitude: -88.2245
Features:
- Key: ADA_ENTRANCE
Value:
Name: ADA Entrance
Floors:
- "01"
- Key: RR-ALLGENDER
Value:
Name: All Gender Restroom
Floors:
- "02"
courseReferenceNumber: "12345"
course_section: A
- coursetitle: Calculus I
courseshortname: MATH 221
coursenumber: MATH 221
instructionmethod: In Person
coursesection:
days: TR
meeting_dates_or_range: Aug 26 - Dec 13
room: "314"
buildingname: Altgeld Hall
buildingid: altgeld
instructiontype: Lecture
instructor: Dr. Johnson
start_time: "14:00"
endtime: "15:20"
building:
ID: altgeld
Name: Altgeld Hall
Number: "1409"
FullAddress: 1409 W Green St, Urbana, IL 61801
Address1: 1409 W Green St
Address2: ""
City: Urbana
State: IL
ZipCode: "61801"
ImageURL: https://example.com/altgeld.jpg
MailCode: MC-382
Latitude: 40.1095
Longitude: -88.2272
Floors:
- "1"
- "2"
- "3"
Entrances:
- ID: 9bd26229-f95e-4b83-bcd3-34ee91f75b5b
Name: Main Entrance
ADACompliant: true
Available: true
ImageURL: https://example.com/entrance1.jpg
Latitude: 40.1135
Longitude: -88.2244
- ID: entrance2
Name: Side Entrance
ADACompliant: false
Available: true
ImageURL: https://example.com/entrance2.jpg
Latitude: 40.1136
Longitude: -88.2245
Features:
- Key: ADA_ENTRANCE
Value:
Name: ADA Entrance
Floors:
- "01"
- Key: RR-ALLGENDER
Value:
Name: All Gender Restroom
Floors:
- "02"
courseReferenceNumber: "67890"
course_section: B
# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-illinois-urbana-champaign/refs/heads/main/openapi/university-of-illinois-urbana-champaign-rokwire-gateway.yaml