Skip to main content
ExLibris
  • Subscribe by RSS
  • Ex Libris Knowledge Center

    Courses

    campusM + cmLibrary Logo wh bkg sm1.png

    Overview

    The Courses product integration allows students to view their courses per term.

    Vendors

    The Courses product integration is currently supported by the:

    • Ellucian Banner (XE)
    • Ellucian Colleague (custom) ERP systems
    • RESTful API

    User Experience

    The following section describes information relating to the user experience for the Courses product integration.

    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

    None. Students must be online to retrieve their course data.

    Screenshots

    The following is an overview of the Courses product integration user interface for a reference when configuring it:

    select_a_term.png spring_2020.png

    Technical Overview

    The following section describes technical information for the Courses product integration.

    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

    Select one of the following links for the required format for that vendor:

    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}

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

    The following table describes the configuration options available for the Courses product integration.
    Note that while most of these fields are not mandatory, they are displayed with their default values unless otherwise stated.
    Field Name Description Mandatory Data Type Default Example
    Enable Product Integration Check this box to enable Courses for use in the app. No Checkbox Unchecked  
    Product Integration Description Description for this Courses instance. Yes String   Courses
    Screen Title Appears in the top header (of the product integration). No String Courses  
    Vendor
    Vendor Name Defines to which vendor the integration connects. Yes Drop-down list 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 endpoint or vendor server. Yes URL https://myDomain.com  
    Parameter Input Option
    The parameter input option for the relevant vendor's user identifier. Possible values:
    • Username
    • Token Property
    • Constant
    Yes
    Drop-down list
     
    Username
    Authentication Type Select one of the following options:
    • No Auth (all vendors)
    • Basic Auth (all vendors)
    • Bearer Token (RESTful API only)
    • API Key (RESTful API only)
    • OAuth using User App Authentication (RESTful API only)
    • OAuth using Client Credentials (RESTful API only)
    Yes Drop-down list    

    Terms Configuration

    For Banner XE only

    Exclude By Term Code
    Enter one or more term codes, or partial codes, to exclude.
    Including '%' in the code for a wildcard sequence, e.g. '%5' excludes any term code ending in 5. Entering just '5' excludes any term code that includes a 5 anywhere in it.
    No
    List
     
    %5
    Exclude By Term Description
    Enter one or more term descriptions, or partial descriptions, to exclude.
    Use '%' for a wildcard sequence, e.g. '%Test' excludes any term description ending with Test. Entering just 'Test' by itself excludes any term description that includes Term anywhere in it.
    No
    List
     
    Non-Academic
    General
    Display Registration Status Enables or disables the registration status on the course detail page. No Checkbox Checked  
    Display Credit Hours Enables or disables the credit hours on the course detail page. No Checkbox Checked  
    Display Type Enables or disables the type on the course detail page. No Checkbox Checked  
    Display Meeting Times Enables or disables the meeting times on the course detail page. No Checkbox Checked  
    Display Course Reference Number Enables or disables the course reference number on the course detail page. No Checkbox Checked  
    Display Instructor Enables or disables the instructor on the course detail page. No Checkbox Checked  
    Past Terms (in days) Display past terms for the last number of days (Banner XE only). No String 0  
    Next Terms (in days) Display future terms for the next number of days (Banner XE only). No String 0  
    Input Time Format The format of the times coming back from the API No Date format hmm  
    Display Time Format The format to display any time in, throughout the integration No Time format

    HH:mm

     
    Look and Feel
    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  

    Text/Labels

    Text/Labels for the Courses product integration

    Courses Page Title Uses for the Courses page header. No String Courses  
    Terms Page Header Used for the Terms page header. No String Select a Term  
    No Data Message Displayed if no courses are found for a term. No String No courses found.  
    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  
    Terms Service Failure Message This message appears 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 appears when there are no terms. No String No terms found.  
    Service Failure Message This message appears 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.  

    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.  

    Import Configuration Use this option to load configuration from JSON of an exported product integration.
    Export Configuration Create a JSON file with all product integration configurations.
    • Was this article helpful?