This NodeJS library provides a simple API to retrieve information from Ellucian Banner. BannerJS comes with various configurations for different universities (see the full list of supported universities here). Submissions for new university configurations are always welcome. Please read the config guidelines and submit a pull request.
When createing a new Banner instance, pass the name of one of the supported universites.
var Banner = require('banner');
var banner = new Banner('temple');
Note: all methods are async and return a Promise unless stated otherwise.
Banner paginates results, so there are a number of ways fo obtaining some or all results for a given category. There are a few arguments that control this:
offset refers to the page number of the results (i.e. the 3rd set of 10 results).
pageSize/max refer to the number of results per page.
For example, to get 100 entries, you can make:
- 1 request with
offsetof0andpageSize/maxof100 - 10 requests with
offsetfrom[0-9]andpageSize/maxof10
Returns an array of terms.
const terms = await banner.getTerms();
[
{
code: <String>,
description: <String>
}
]
Returns an array of subjects.
const args = {term: 202036}
const subjects = await banner.getSubjects(args);
[
{
code: <String>,
description: <String>
}
]
Returns an array of instructors.
const args = {term: 202036}
const instructors = await banner.getInstructors(args);
[
{
code: <String>,
description: <String>
}
]
Returns an array of campuses.
const campuses = await banner.getCampuses();
[
{
code: <Number>,
description: <String>
}
]
Returns an array of schools and colleges.
const colleges = await banner.getColleges();
[
{
code: <Number>,
description: <String>
}
]
Returns an array of course attributes.
const attributes = await banner.getAttributes();
[
{
code: <Number>,
description: <String>
}
]
Returns an array of sessions.
const sessions = await banner.getSessions();
[
{
code: <Number>,
description: <String>
}
]
Returns an array of campuses.
const partsOfTerm = await banner.getPartsOfTerm();
[
{
code: <Number>,
description: <String>
}
]
Returns an array of instructional methods.
const instructionalMethods = await banner.getInstructionalMethods();
[
{
code: <Number>,
description: <String>
}
]
Returns an array of course sections, along with the total number of sections found for the given request.
const args = {
term: 202036,
subject: 'CIS'
};
const sections = await banner.classSearch(args);
{
totalCount: <Number>,
data: [
{
"id": <Number>,
"term": <String>,
"termDesc": <String>,
"courseReferenceNumber": <String>,
"partOfTerm": <String>,
"courseNumber": <String>,
"subject": <String>,
"subjectDescription": <String>,
"sequenceNumber": <String>,
"campusDescription": <String>,
"scheduleTypeDescription": <String>,
"courseTitle": <String>,
"creditHours": null,
"maximumEnrollment": <Number>,
"enrollment": <Number>,
"seatsAvailable": <Number>,
"waitCapacity": <Number>,
"waitCount": <Number>,
"waitAvailable": <Number>,
"crossList": null,
"crossListCapacity": null,
"crossListCount": null,
"crossListAvailable": null,
"creditHourHigh": <Number> | null,
"creditHourLow": <Number | null>,
"openSection": <Boolean>,
"isSectionLinked": <Boolean>,
"subjectCourse": <String>,
"faculty": [
{
"bannerId": <String>,
"displayName": <String>,
"emailAddress": <String>,
"primaryIndicator": <Boolean>,
...
}
],
"meetingsFaculty": [
{
"category": <String>,
"meetingTime": {
"beginTime": <String>,
"building": <String>,
"buildingDescription": <String>,
"campus": <String>,
"campusDescription": <String>,
"category": <String>,
"creditHourSession": <Number>,
"endDate": <String>,
"endTime": <String>,
"friday": <Boolean>,
"hoursWeek": <Number>,
"meetingScheduleType": <String>,
"meetingType": <String>,
"meetingTypeDescription": <String>,
"monday": <Boolean>,
"room": <String>,
"saturday": <Boolean>,
"startDate": <String>,
"sunday": <Boolean>,
"term": <String>,
"thursday": <Boolean>,
"tuesday": <Boolean>,
"wednesday": <Boolean>,
...
},
"term": <String>,
...
}
],
"reservedSeatSummary": <Number | null>,
"sectionAttributes": [
{
"code": <String>,
"description": <String>,
"isZTCAttribute": <Boolean>,
...
}
],
"bookstores": [
{
"url": <String>,
...
}
],
"feeAmount": <String | null>
},
...
]
...
}
Returns an array of course catalog entries, along with the total number of entries found for the given request.
Note: Banner will return entries for courses not being offered in the given term, so this is not a reliable way to determine courses being offered.
const args = {
term: 202036,
subject: 'CIS'
};
const entries = await banner.catalogSearch(args);
{
totalCount: <Number>,
data: [
{
"id": <Number>,
"termEffective": <String>,
"courseNumber": <String>,
"subject": <String>,
"subjectCode": <String>,
"college": <String>,
"collegeCode": <String>,
"department": <String>,
"departmentCode": <String>,
"courseTitle": <String>,
"durationUnit": null,
"numberOfUnits": null,
"attributes": <String[] | null>,
"gradeModes": null,
"ceu": null,
"courseScheduleTypes": null,
"courseLevels": null,
"creditHourHigh": null,
"creditHourLow": <Number>,
"creditHourIndicator": null,
"lectureHourLow": null,
"lectureHourHigh": null,
"lectureHourIndicator": null,
"billHourLow": <Number>,
"billHourHigh": null,
"billHourIndicator": null,
"labHourLow": null,
"labHourHigh": null,
"labHourIndicator": null,
"otherHourLow": null,
"otherHourHigh": null,
"otherHourIndicator": null,
"description": null,
"subjectDescription": <String>,
"courseDescription": <String>,
"division": <String>,
"termStart": <String>,
"termEnd": <String>,
"preRequisiteCheckMethodCde": <String>,
"anySections": null,
...
},
...
]
...
}
This repo contains a Mocha test suite which can be run with npm test.
The library can be deployed to AWS as a Lambda Layer. Use the provided deploy.sh script.
#16 - getCourseDescription currently throws an exception due to trying to JSON.parse the returned HTML string. At this time please do not use the getCourseDescription method.