Courses
Overview
Vendors
The Courses product integration is currently supported by the Ellucian Banner (XE) and RESTful API.
User Experience
User Activities
- Students select the Courses tile to display a list of terms.
- Student select a term to display the courses associated with that term.
Authentication
The Courses product integration requires the student's identifier from the vendor's system. This is obtained with token based authentication attributes.
The connection to the vendor is handled as part of the generic API Configuration under the Vendor section. The first part of the API Configuration details the URL to which to connect and any parameters that are required. The second part relates to the API Authentication for the URL, which is vendor-specific, and could also be specific to the vendor instance the client is running.
Offline Support
Screenshots
The following is an overview of the Courses product integration user interface for a reference when configuring it:
![]() |
![]() |
Technical Overview
Prerequisites
The following prerequisites are required to configure the Courses product integration:
- User identifier mapping
- If you have CMAuth configured, map the relevant vendor ID in the integration profile (Additional Mapping), for example: bannerId=employeeID, where employeeID is the relevant user attribute on the vendor’s backend system.
- If you have LDAP configured, verify that the relevant attribute is returned as an attribute from the LDAP response.
- The campusM native app (Android/iOS) must be updated with the June 2020 release or later.
Required Format
Ellucian Banner 9 (Also Referred to as XE) Vendor
- campusM uses two API calls to fetch courses data:
- The first call is to retrieve all of the available terms of the student:
https:// {HOST}/StudentApi/api/terms
- The second call is to retrieve the courses data for the selected term:
• https://{HOST}/StudentApi/api/students/{userId}/class-schedules?term={termId}
- The first call is to retrieve all of the available terms of the student:
- Banner 9 is the latest release of Banner.
- XE is an add-on to Banner that allows customers to extend it.
- For all integrations done prior to this PI, Banner 9 and XE have been interchangeable.
- The following is an example of a JSON response for the terms API:
[
{
"version": 0,
"id": 1,
"acyr_code": {
"version": 0,
"id": 16,
"code": "2010",
"description": "2019-2020"
},
"code": "202040",
"description": "Summer 2020",
"endDate": "2020-07-23",
"financialAidPeriod": 1,
"financialAidProcessingYear": "9293",
"financialAidTerm": "1",
"financialEndPeriod": 12,
"housingEndDate": "2020-07-23",
"housingStartDate": "2020-06-03",
"startDate": "2020-06-03",
"trmt_code": {
"version": 0,
"id": 2,
"code": "M",
"description": "Summer Semester"
}
}
]
- The following is an example of Courses JSON response:
[
{
"studentCourseRegistrations": [
{
"academicYear": "2019",
"academicYearDescription": "2018-2019",
"completionDate": "2019-05-03",
"courseNumber": "434",
"courseReferenceNumber": "10040",
"courseRegistrationStatus": {
"code": "RW",
"description": "**Web Registered**"
},
"courseTitle": "Principles of Physiology",
"creditHour": 3.0,
"faculty": [
{
"bannerId": "A00120999",
"displayName": "Vanterpool, Conwin",
"primaryIndicator": true
}
],
"gradingMode": "S",
"gradingModeDescription": "Standard Letter Grade",
"instructionalMethod": "TR",
"instructionalMethodDescription": "Traditional",
"level": {
"ceuInd": false
},
"meetingTimes": [
{
"beginTime": "1300",
"building": "CH",
"buildingDescription": "Carter Hall",
"campus": "M",
"campusDescription": "Main AAMU Campus",
"creditHourSession": 3.0,
"endDate": "2019-05-03",
"endTime": "1350",
"friday": true,
"hoursWeek": 2.5,
"meetingScheduleType": "L",
"meetingType": "CLAS",
"meetingTypeDescription": "Class",
"monday": true,
"room": "216-AUD",
"saturday": false,
"startDate": "2019-01-07",
"sunday": false,
"thursday": false,
"tuesday": false,
"wednesday": true
}
],
"partOfTerm": "1",
"partOfTermDescription": "Full Term",
"scheduleDescription": "Lecture",
"scheduleType": "L",
"sequenceNumber": "01",
"startDate": "2019-01-07",
"subject": "BIO",
"subjectDescription": "Biology",
"term": "201910",
"termDescription": "Spring 2019"
}
],
"totalBill": 8.0,
"totalCeu": 0.0,
"totalCredit": 5.0
}
]
RESTful API
- campusM uses two API calls to fetch the courses data:
- The first call is to retrieve all of the available terms for the student:
https://{HOST}/getTerms?userId={userId}
- The second call is to retrieve the courses data for the selected term:
https://{HOST}/getCourses?termId={termId}&userId={userId}
- The first call is to retrieve all of the available terms for the student:
- The terms API returns a JSON response with the following structure:
[
{
"termId": 1,
"description": "Fall 2020",
"termCode": "202010"
},
{
"termId": 2,
"description": "Spring 2020",
"termCode": "202020"
}
]
- The courses per term API returns a JSON response with the following structure:
[
{
"termCode": "2006",
"courseNumber":"120",
"subject":"ENG",
"courseTitle":"Drama",
"courseRegistrationStatusDescription":"Registered In-Office",
"creditHour":"3.0",
"scheduleDescription":"Lecture",
"courseReferenceNumber":"11238",
"meetingTimes":[
{
"beginTime":"1600",
"endTime":"1850",
"location":"TGP 008",
"days":[
"Sunday",
"Tuesday"
]
},
{
"beginTime":"1300",
"endTime":"1450",
"location":"TAP 008",
"days":[
"Monday",
"Tuesday"
]
}
],
"lecturer":[
{
"name":"Adams, Clark",
"emailAddress":"Clark.Adams@university.edu"
},
{
"name":"Lopez, Smith",
"emailAddress":"Smith.Lopez@university.edu"
}
]
},
{
"termCode": "2006",
"courseNumber":"322",
"subject":"FCS",
"courseTitle":"Trends and Issues",
"courseRegistrationStatusDescription":"Web Registered",
"creditHour":"3.5",
"scheduleDescription":"Lecture",
"courseReferenceNumber":"11653",
"meetingTimes":[
{
"beginTime":"1730",
"endTime":"2030",
"location":"CS 250",
"days":[
"Wednesday"
]
}
],
"lecturer":[
{
"name":"Lopez, Smith",
"emailAddress":"Smith.Lopez@university.edu"
}
]
}
]
Technical Flow Diagram
Both Banner and RESTful API currently require Basic Authentication API Authentication for all implementations that are currently available. "No Auth" can sometimes be used in testing.
Configuration
Configuration Option | Description | Mandatory | Data Type | Default | Example |
---|---|---|---|---|---|
Enable Product Integration | Select to enable the product integration on the user's campusM app. | No | |||
Product Integration Description | A description of the product integration for internal use | Yes | |||
Screen Title | Appears in the top header (of the integration, in the app). | No | String | Courses | |
Primary Theme Color | Used for the Screen Title header and other header elements. | No | Hex code | #444444 | |
Secondary Theme Color | Used for the Grade block headers. | No | Hex code | #6f8ea4 | |
Display Registration Status | Enables or disables the registration status on the course detail page | No | Checkbox | Yes | |
Display Credit Hours | Enables or disables the credit hours on the course detail page | No | Checkbox | Yes | |
Display Type | Enables or disables the type on the course detail page | No | Checkbox | Yes | |
Display Meeting Times | Enables or disables the meeting times on the course detail page | No | Checkbox | Yes | |
Display Course Reference Number | Enables or disables the course reference number on the course detail page | No | Checkbox | Yes | |
Display Instructor | Enables or disables the instructor on the course detail page | No | Checkbox | Yes | |
Past Terms (in days) | Display past terms for the last number of days Relevant only for Banner | No | String | 0 | |
Next Terms (in days) | Display future terms for the next number of days Relevant only for Banner | No | String | 0 | |
Input Date Format | The format of the dates coming back from the API | No | Date format | hmm | |
Display Date Format | The format to display time throughout the integration | No | Time format |
hh:mm |
|
Terms Page Header | Used for the Terms page header. | No | String | Select a term | |
Registration Status Label | Used for the Registration Status block header | No | String | Registration Status | |
Type Label | Used for the Type block header | No | String | Type | |
Meeting Times Label | Used for the Meeting Times block header | No | String | Meeting Times | |
Credit Hours Label | Used for the Credit Hours block header | No | String | Credit Hours | |
Course Reference Number Label | Used for the Course Reference Number block header | No | String | Course Reference Number | |
Instructor Label | Used for the Instructor block header | No | String | Instructor | |
Unknown Terms Text | Displayed any time a term is to be displayed, but there is no valid description for that term. | No | String | Unknown Term | |
No data Message | This message will appear when there is no data | No | String | No Courses found | |
Terms Service Failure Message | This message will appear when the integration is unable to reach or process the terms API correctly. | No | String | The page is having trouble fetching academic terms - please try again shortly. | |
No Terms Message | This message will appear when there are no terms | No | String | ||
Service Failure Message | This message will appear when the integration is unable to reach or process the service call correctly. | No | String | The page is having trouble fetching your courses - please try again shortly. | |
Vendor Name | Defines to which vendor the integration connects | Yes | Object | n/a | BannerXE |
API Configuration This section contains the API details to define the API structure. You can test the API configuration. See Testing API Product Integration Configuration. |
|||||
Base URL to retrieve the information | The URL for the API | Yes | URL | https://{HOST} |
|
Parameter Input Option | The parameter input option for User ID (for Banner – Banner ID, for RESTful API – any user identifier used in the other system). Possible values: Username, Token Property, and Constant. It is sent as the path parameter. | Yes | Drop-Down list | Token Property | |
Authentication Type | Select one of the following options:
|
Yes | Drop-down list | ||
Import/ Export Configuration You can configure product integration and then export it to another campusM environment, for example, from sandbox to production or from preview to production. |
|||||
Export | Create a JSON file with all product integration configuration. | No | |||
Import | Use this option in order to load configuration from JSON of an exported product integration. | No |