APIs & Integration

UpsideLMS APIs

Catalog API (Generic/Learner specific)

Description: Fetches Catalog of Curriculums and its Content

URL: /rest/trainingcatalog

Parameters:

Input Parameters

Parameter Mandatory Description
Portal Key
[lmsportalid]
Yes
  1. The Client Key will be set by SM at LMS portal level.
  2. This is not in encrypted form.
  3. This will be a mandatory parameter for the LMS to identify the LMS portal for which the API is triggered.
Token ID
[lmstokenid]
Yes
  1. Client would generate and send the Token ID against the request for data.
  2. This will be in encrypted form.
  3. This Token ID will be used by Upside to identify the request and will be sent to client's system by UpsideLMS along with the required data.
Content
[contentlist]
No
  1. This parameter will have values like "On" or "Off".
  2. This will be in encrypted form.
  3. If Content = "On", then details of the Learning Content build within the Curriculums in the Catalog will be shared with client's system (as output parameters)
  4. If Content = "Off", then only Curriculum level details will be shared with client's system (as output parameters)
  5. If no data is received against this parameter, then only the Curriculum details (without learning content details) will be sent as part of the output parameters.
  6. e.g
    1) On -> VvBCHVQSd0dNrKy2mqfjjA==
    2) Off -> iGJtxeqAfNADutGTcjk7og==
Learner ID
[lmslearnerid]
No 1) Start Date [String] :
  1. This parameter will have Date in MM/DD/YYYY format.
  2. This will be in encrypted form.
  3. All the Curriculums starting from that particular date will be shared with client's system.
  4. If no data is received against this parameter, then all curriculums irrespective of start date will be shared with client's System.
  5. e.g
    Start_Date=01/01/2016
    Keyword (Start_Date) should be shared in same format.

2) End Date [String] :
  1. This parameter will have Date in MM/DD/YYYY format.
  2. This will be in encrypted form.
  3. All the Curriculums starting from that particular date will be shared with client's system.
  4. If no data is received against this parameter, then all curriculums irrespective of start date will be shared with client's System.
  5. e.g
    End_Date=01/01/2016
    Keyword (End_Date) should be shared in same format.

3) Certification [String] :
PARAMETERS : {Yes,No}
  1. This parameter can have values "Yes" or "No"
  2. This will be in encrypted form.
  3. If Certification = "Yes", then all the curriculums with Certificate attached will be shared with client's system (as output parameters)
  4. If Certification = "No", then all the curriculums without Certificate attached will be shared with client's system (as output parameters)
  5. If no data is received against this parameter, then all the curriculums irrespective of the certificate will be shared with client's system (as output parameters)
  6. Comma separated multiple values can be shared
  7. e.g
    Certification=Yes
    Certification=Yes,No
    - Keyword (Certification) should be shared in same format.

4) Access [String] :
PARAMETERS : {Private,Public,Paid}
  1. This parameter can have values "Private" or "Public" or "Paid"
  2. This will be in encrypted form.
  3. If Accessibility = "Private", then all the curriculums with Access type as Private will be shared with client's system (as output parameters)
  4. If Accessibility = "Public", then all the curriculums with Access type as Public will be shared with client's system (as output parameters)
  5. If Accessibility = "Paid", then all the curriculums with Access type as Paid will be shared with client's system (as output parameters)
  6. If no data is received against this parameter, then all the curriculums
  7. irrespective of access type will be shared with client's system (as output parameters)
  8. Comma separated multiple values can be shared
  9. e.g
    Accessibility=Public
    Accessibility=Public,Private,Paid
    - Keyword (Accessibility) should be shared in same format.

5) Rating :
PARAMETERS : {1,2,3,4,5}
  1. This parameter will have a positive integer value (1 to 5). Based on this value, the curriculums with rating greater than and equal to the specific rating will be shared with client's system (as output parameters)
  2. This will be in encrypted form.
  3. Comma separated multiple values can be shared
  4. e.g
    Rating=1
    Rating=1,2,3,4,5
    - Keyword (Rating) should be shared in same format.

6) Validity Days :
  1. This parameter will have positive integers (Curriculum Duration).
  2. This will be in encrypted form.
  3. All the Curriculums with specified Duration(s) will be shared with client's system (as output parameters)
  4. Comma separated multiple values can be shared
  5. e.g
    validity_days=1
    validity_days=1,2,3
    - Keyword (validity_days) should be shared in same format.

7) Order By :
PARAMETERS : { curriculum_name_asc, curriculum_name_desc, curriculum_name_default, accessibility, rating, assigned, nominated, Purchased }
  1. This parameter can have any one of the following values - Curriculum Name - Ascending
  2. Curriculum Name - Descending
  3. This will be in encrypted form.
  4. Purchased - Curriculums will be shared in sequence of most purchased curriculums
  5. Assigned - Curriculums will be shared in sequence of most assigned curriculums
  6. Nominated - Curriculums will be shared in sequence of most nominated curriculums
  7. Rating - Curriculums will be shared in sequence of most highly rated curriculums
  8. This will be in encrypted form.
  9. e.g
    Order_by= curriculum_name_asc
    - Keyword (Order_by) should be shared in same format.
  10. e.g - In case multiple parameter sharing separator '~' (tilde) will be used and whole string will be in encrypted form. Below Input should be in encrypted format : Accessibility=Public ~Status=Available ~Certification=Yes ~Rating=1~validity_days=1 ~Start_Date=01/01/2016 ~End_Date=01/01/2016 ~Order_by=curriculum_name_asc
Paremeter_List
[outputlist]
No The data against the specified field names (received against this input parameter) will only be sent as part of output parameters.
e.g.
Below input should be in encrypted format with key same as mentioned below.
Parameter_List=curriculum_id,curriculum_name, reference_title PARAMETER LIST TO BE SHARED:
{ curriculum_id, curriculum_name, reference_title, validity, start_date, end_date, cost_per_person, currency, certification, instructor, seat_hours, seat_mins, created_by, created_date, modified_by, modified_date, curriculum_status, access, cancellation_date, nomination_date, seat_limit, community, assignment_count, completion_count, avgratings, nomination_count, purchase_count }

Output Parameters

Parameter JSON
JSON Result For each curriculum: Copy Code
{
"curriculumCatalogDTO":[ {
"instructor":"NA",
"modified_date":"NA",
"currency":"USD",
"curriculum_name":"UL Curriculum",
"end_date":"NA",
"modified_by":"Upside Admin",
"completion_count":"0",
"seat_hours":"0",
"curriculum_id":"31",
"nomination_date":"NA",
"Content":[ {
"reference_title": "NA", "about_course": "NA", "instructor": "NA", "seat_hours": "NA", "created_on": "04\/05\/2016", "mandatory": "No", "course_name": "Course 001", "course_id": "2", "type": "SCORM 1.2", "content_type": "Course", "seat_mins": "NA", "uploaded_on": "04\/20\/2016"
}
,
{
"duration": "10", "title": "Test 001", "instructor": "NA", "navigation": "Practice Mode", "description": "Test 001", "mandatory": "No", "total_attempts": "5", "valid_from_date": "NA", "cutoff": "40", "test_id": "6", "content_type": "Assessment", "valid_till_date": "NA"
}
,
{
"instructor": "NA", "reference_material_id": "1", "reference_material_name": "Reference Material 001", "description": "NA", "mandatory": "No", "avain_to": "NA", "avail_from": "NA", "content_type": "Reference Material", "uploaded_on": "04\/05\/2016"
}
,
{
"assignment_name": "Assignment 001", "duration": "NA", "instructor": "NA", "objective": "NA", "mandatory": "No", "max_score": "100", "instruction": "NA", "assignment_id": "2", "content_type": "Assignment", "uploaded_on": "04\/20\/2016"
}
,
{
"instructor": "NA", "instructions": "NA", "description": "Survey 001", "avain_from": "NA", "mandatory": "No", "survey_name": "Survey 001", "avail_to": "NA", "survey_id": "2", "content_type": "Survey"
}
,
{
"instructor": "NA", "video_name": "Video 001", "description": "NA", "mandatory": "No", "video_id": "2", "type": "uploaded", "content_type": "Video", "uploaded_on": "04\/20\/2016"
}
],
"seat_mins":"NA",
"created_by":"Upside Admin",
"created_date":"05\/06\/2016",
"assignment_count":"0",
"nomination_count":"0",
"cost_per_person":"10.00",
"status":"available",
"community":"NA",
"cancellation_date":"NA",
"access":"private",
"reference_title":"UL Curriculum",
"certification":"no",
"duration":"5",
"avg_ratings":"NA",
"seat_limit":"NA",
"purchased_count":"0",
"start_date":"NA"
}
,
{
"Token": "Upside@2016"
}
]
}
Sample Output Result Curriculum with content: Copy Code
{
"curriculumCatalogDTO":[ {
"instructor": "NA", "modified_date": "NA", "currency": "USD", "curriculum_name": "UL Curriculum", "end_date": "NA", "modified_by": "Upside Admin", "completion_count": "0", "seat_hours": "0", "curriculum_id": "31", "nomination_date": "NA", "seat_mins": "NA", "created_by": "Upside Admin", "created_date": "05\/06\/2016", "assignment_count": "0", "nomination_count": "0", "cost_per_person": "10.00", "status": "available", "community": "NA", "cancellation_date": "NA", "access": "private", "reference_title": "UL Curriculum", "certification": "no", "duration": "5", "avg_ratings": "NA", "seat_limit": "NA", "purchased_count": "0", "start_date": "NA"
}
,
{
"Token": "Upside@2016"
}
]
}

Curriculum without content: Copy Code
{
"curriculumCatalogDTO":[ {
"instructor":"NA",
"modified_date":"NA",
"currency":"USD",
"curriculum_name":"UL Curriculum",
"end_date":"NA",
"modified_by":"Upside Admin",
"completion_count":"0",
"seat_hours":"0",
"curriculum_id":"31",
"nomination_date":"NA",
"Content":[ {
"reference_title": "NA", "about_course": "NA", "instructor": "NA", "seat_hours": "NA", "created_on": "04\/05\/2016", "mandatory": "No", "course_name": "Course 001", "course_id": "2", "type": "SCORM 1.2", "content_type": "Course", "seat_mins": "NA", "uploaded_on": "04\/20\/2016"
}
,
{
"duration": "10", "title": "Test 001", "instructor": "NA", "navigation": "Practice Mode", "description": "Test 001", "mandatory": "No", "total_attempts": "5", "valid_from_date": "NA", "cutoff": "40", "test_id": "6", "content_type": "Assessment", "valid_till_date": "NA"
}
,
{
"instructor": "NA", "reference_material_id": "1", "reference_material_name": "Reference Material 001", "description": "NA", "mandatory": "No", "avain_to": "NA", "avail_from": "NA", "content_type": "Reference Material", "uploaded_on": "04\/05\/2016"
}
,
{
"assignment_name": "Assignment 001", "duration": "NA", "instructor": "NA", "objective": "NA", "mandatory": "No", "max_score": "100", "instruction": "NA", "assignment_id": "2", "content_type": "Assignment", "uploaded_on": "04\/20\/2016"
}
,
{
"instructor": "NA", "instructions": "NA", "description": "Survey 001", "avain_from": "NA", "mandatory": "No", "survey_name": "Survey 001", "avail_to": "NA", "survey_id": "2", "content_type": "Survey"
}
,
{
"instructor": "NA", "video_name": "Video 001", "description": "NA", "mandatory": "No", "video_id": "2", "type": "uploaded", "content_type": "Video", "uploaded_on": "04\/20\/2016"
}
],
"seat_mins":"NA",
"created_by":"Upside Admin",
"created_date":"05\/06\/2016",
"assignment_count":"0",
"nomination_count":"0",
"cost_per_person":"10.00",
"status":"available",
"community":"NA",
"cancellation_date":"NA",
"access":"private",
"reference_title":"UL Curriculum",
"certification":"no",
"duration":"5",
"avg_ratings":"NA",
"seat_limit":"NA",
"purchased_count":"0",
"start_date":"NA"
}
,
{
"Token": "Upside@2016"
}
]
}

Curriculum Output Parameters

Sr.No. Parameter Keyword
1 Curriculum Id curriculum_id
2 Curriculum Name curriculum_name
3 Description reference_title
4 Duration duration
5 Start Date start_date
6 End Date end_date
7 Cost cost_per_person
8 Currency currency
9 Certification certification
10 Instructor instructor
11 Seat Hours seat_hours
12 Seat Minute seat_mins
13 Created by created_by
14 Creation on created_date
15 Modified by modified_by
16 Modified on modified_date
17 Status status
18 Access Type access
19 Last date of Cancellation cancellation_date
20 Last Date of Nomination nomination_date
21 Community Created community
22 Seat Limit seat_limit
23 Number of users to whom this curriculum is assigned assignment_count
24 Number of users who have completed this curriculum completion_count
25 Ratings avg_ratings
26 Number of users to whom this curriculum is nominated nomination_count
27 Number of users who have purchased this curriculum purchased_count

Content Output Parameters

Course Assignment Assessment Reference Material
Name Keyword Name Keyword Name Keyword Name Keyword

Course Id

course_id

Assignment Id

assignment_id

Assessment Id

test_id

Reference Material Id

reference_material_id

Course Name

course_name

Assignment Name

assignment_name

Assessment Name

title

Reference Material Name

reference_material_name

Description

reference_title

Description

objective

Description

description

Description

description

Content Type

content_type

Instruction

instruction

Mandatory / Optional

mandatory

Mandatory / Optional

mandatory

Mandatory / Optional

mandatory {Yes or No}

Mandatory / Optional

mandatory

Test Duration

duration

Uploaded On

uploaded_on

Compliance Type

type

Maximum Score

max_score

Minimum Passing Percentage (Cut Off)

cutoff

Instructor

instructor

Created On

created_on

Duration

duration

Number of Attempts

total_attempts

Content Type

content_type

Uploaded On

uploaded_on

Uploaded on

uploaded_on

Practice Test / Final Test

navigation

About Course

about_course

Instructor

instructor

Instructor

instructor

Instructor

instructor

Content Type

content_type

Content Type

content_type

Seat Hours

seat_hours

Seat Minutes

seat_mins


Video Survey Session Virtual Classroom
Name Keyword Name Keyword Name Keyword Name Keyword

Video ID

video_id

Survey ID

survey_id

Session ID

session_id

VC ID

training_id

Video Name

video_name

Survey Name

survey_name

Session Name

session_name

VC Name

training_name

Description

description

Description

description

Program

program_id

Description

description

Mandatory / Optional

mandatory

Instructions

instructions

Objective

session_objective

Mandatory / Optional

mandatory

Type

type

Mandatory / Optional

mandatory

Mandatory / Optional

mandatory

Start Date

start_date

Uploaded On

uploaded_on

Available From Date

avain_from

Start Date

start_date

Start Hours

start_hours

Instructor

instructor

Available To Date

avail_to

End Date

end_date

Start Minutes

start_mins

Content Type

content_type

Instructor

instructor

Start Hours

start_hours

Meeting Duration Hours

training_hours

Content Type

content_type

Start Minutes

start_mins

Meeting Duration Minutes

training_mins

End Hours

end_hours

Instructor

instructor

End Minutes

end_mins

Last Date of Nomination

last_date_of_nomination

Last Date of Cancellation

last_date_of_cancellation

Vendor

vendor

Speaker

speaker

Venue

venue

Vendor Cost

vendor_cost

Vendor Currency

currency

Instructor

instructor

Error Codes

Parameter Error Code Error Massage Scenarios

Portal Key

Err001

Invalid value received against parameter.(Portal Key)

- In case of Empty field or Invalid parameter received against portal key.

Token ID

Err001

Invalid value received against parameter.(Token ID)

- In case of Empty field or Invalid parameter received against token.

Learner ID

Err001

Invalid value received against parameter.(Learner ID)

- In case of Invalid parameter received against Learner Id.

Content Mode

Err001

Invalid value received against parameter.(Content Mode)

- In case of Invalid parameter received against content mode.

Output List

Err001

Invalid value received against parameter.(Output List)

- In case of Invalid parameter received against output list.

Access

Err001

Invalid value received against parameter.(Access)

- In case of Invalid parameter received against access.

Certification

Err001

Invalid value received against parameter.(Certification)

- In case of Empty field or Invalid parameter received against certification.

Rating

Err001

Invalid value received against parameter.(Rating)

- In case of Empty field or Invalid parameter received against rating.

- It should be integer value.

Validity

Err001

Invalid value received against parameter.(Validity)

In case of Empty field or Invalid parameter received against validity.

- It should be integer value.

Order By

Err001

Invalid value received against parameter.(Order By)

- In case of Invalid parameter received against order by.

- Parameter naming convention to be followed.

Start Date

Err004

Invalid Date format.(Start Date)

- In case of Invalid parameter received against start date as invalid date format.

- It should be in MM/DD/YYYY format

End Date

Err004

Invalid Date format.(End Date)

- In case of Invalid parameter received against end date as invalid date format.

- It should be in MM/DD/YYYY format

No Data

Msg001

No data found.

In case no data found.

Best Practices and Guidelines

  1. Pull the data from web-service once a day and use local storage to store/fetch the data for faster execution
  2. Use filters to get faster and appropriate/required data
  3. List required fields from curriculum data
  4. Do not expose curriculum and content IDs shared by web service
  5. Use recommended encryption
  6. Use proper order by clause to get ordered data
  7. Use valid data while calling web service
  8. Errors or exceptions returned in the response by the UpsideLMS should be handled by the API calling system in a required way to ensure API calling system and UpsideLMS are always in sync.
  9. The API link, public key and portal key should not be exposed with anyone other than the authorised person or team. This might lead to access of unauthorised person to the confidential data residing on UpsideLMS. UpsideLMS will not be able to control or will be responsible for any theft or loss of data due to this.

Learning/Training Plan API

Description: Fetches Learning Plan of a user with Curriculum(s) and its Content

URL: /rest/trainingplan

Parameters:

Input Parameters

Parameter Mandatory Description
Portal Key
[lmsportalid]
Yes
  1. The Client Key will be set by SM at LMS portal level.
  2. This is not in encrypted form.
  3. This will be a mandatory parameter for the LMS to identify the LMS portal for which the API is triggered.
Token ID
[lmstokenid]
Yes
  1. Client would generate and send the Token ID against the request for data.
  2. This will be in encrypted form.
  3. This Token ID will be used by Upside to identify the request and will be sent to client's system by UpsideLMS along with the required data.
Content
[contentlist]
No
  1. This parameter will have values like "On" or "Off".
  2. This will be in encrypted form.
  3. If Content = "On", then details of the Learning Content build within the Curriculum's in the Catalog will be shared with client's system (as output parameters)
  4. If Content = "Off", then only Curriculum level details will be shared with client's system (as output parameters)
  5. If no data is received against this parameter, then only the Curriculum details (without learning content details) will be sent as part of the output parameters.
  6. e.g
    1) On → VvBCHVQSd0dNrKy2mqfjjA==
    2) Off → iGJtxeqAfNADutGTcjk7og==
Learner ID
[lmslearnerid]
Yes
  1. This parameter will be send from client's system.
  2. This will be in encrypted form.
  3. Learner_ID will be the unique identifier for identification of Learner in LMS database. The unique can be one of Email ID, User name or Unique ID.
  4. Based on the Unique Identifier for that particular client, the value received against this parameter will be used to identify the learner in LMS database and the catalog for that learner will be shared.
  5. e.g
    Email=amrit.ansarwadkar@upsidelearning.com (7ckj8BeXjHxmMMl1p4hyylLq7MKY4EHithdDXxNbObsc/lWk4RbK800LjKTrgpx0)
  6. In case multiple parameter sharing separator '~' (tilde) will be used and whole string will be in encrypted form.
  7. e.g
    Email=amrit.ansarwadkar@upsidelearning.com~Login=amrita~Uniqueid=101
  8. Keys (Email,Login,Uniqueid) should be shared in same format.
Curriculum Parameters
[filterby]
No 1) Start Date [String] :
  1. This parameter will have Date in MM/DD/YYYY format.
  2. This will be in encrypted form.
  3. All the Curriculums starting from that particular date will be shared with client's system.
  4. If no data is received against this parameter, then all the curriculums irrespective of start date will be shared with client's System.
  5. Only single value can be shared
  6. e.g
    Start_Date=01/01/2016
  7. Keyword (Start_Date) should be shared in same format.

2) Certification [String] :
PARAMETERS : {Yes,No}
  1. This parameter can have values "Yes" or "No"
  2. This will be in encrypted form.
  3. If Certification = "Yes", then all the curriculums with Certificate attached will be shared with client's system (as output parameters)
  4. If Certification = "No", then all the curriculums without Certificate attached will be shared with client's system (as output parameters)
  5. If no data is received against this parameter, then all the curriculums irrespective of the certificate will be shared with client's system (as output parameters)
  6. Comma separated multiple values can be shared
  7. e.g
    Certification=Yes
    Certification=Yes,No
  8. Keyword (Certification) should be shared in same format.

3) Access [String] :
PARAMETERS : {Private,Public,Paid}
- This parameter can have values "Private" or "Public" or "Paid"
  1. This will be in encrypted form.
  2. If Accessibility = "Private", then all the curriculums with Access type as Private will be shared with client's system (as output parameters)
  3. If Accessibility = "Public", then all the curriculums with Access type as Public will be shared with client's system (as output parameters)
  4. If Accessibility = "Paid", then all the curriculums with Access type as Paid will be shared with client's system (as output parameters)
  5. If no data is received against this parameter, then all the curriculums irrespective of access type will be shared with client's system (as output parameters)
  6. Comma separated multiple values can be shared
  7. e.g
    Accessibility=Public
    Accessibility=Public,Private,Paid
  8. Keyword (Accessibility) should be shared in same format.

4) Rating :
PARAMETERS : {1,2,3,4,5}
  1. This parameter will have a positive integer value (1 to 5). Based on this value, the curriculums with rating greater than and equal to the specific rating will be shared with client's system (as output parameters)
  2. This will be in encrypted form.
  3. Comma separated multiple values can be shared
  4. e.g
    Rating=1
    Rating=1,2,3,4,5
  5. Keyword (Rating) should be shared in same format.

5) Validity Days :
  1. This parameter will have positive integers (Curriculum Duration).
  2. This will be in encrypted form.
  3. All the Curriculums with specified Duration(s) will be shared with client's system (as output parameters)
  4. Comma separated multiple values can be shared
  5. e.g
    validity_days=1
    validity_days=1,2
  6. Keyword (validity_days) should be shared in same format.

6) Order By :
PARAMETERS :{ curriculum_name_asc, curriculum_name_desc, curriculum_name_default, accessibility }
  1. This parameter can have any one of the following values -
    Curriculum Name - Ascending
    Curriculum Name - Descending
  2. This will be in encrypted form.
  3. Only single value can be shared.
  4. e.g
    Order_by= curriculum_name_asc

7) Expiry Date [String] :
  1. This parameter will have Date in MM/DD/YYYY format.
  2. This will be in encrypted form.
  3. If no data is received against this parameter, then all the curriculums irrespective of start date will be shared with client's System.
  4. Only single value can be shared.
  5. e.g Expiry_Date=01/01/2016
  6. Keyword (Expiry_Date) should be shared in same format.
  7. e.g
    In case multiple parameter sharing separator '~' (tilde) will be used and whole string will be in encrypted form.
  8. Only single value can be shared.
  9. Below Input should be in encrypted format :
    Accessibility = Public~Completion_Status = Completed~Certification = Yes~Rating = 1~validity_days = 1~Start_Date = 01 / 01 / 2016~Expiry_Date = 01 / 01 / 2016~Order_by = curriculum_name_asc

Paremeter_List
[outputlist]
No
  1. The data against the specified field names (received against this input parameter) will only be sent as part of output parameters.
  2. e.g.
    Below input should be in encrypted format with key same as mentioned below.
    Parameter_List = curriculum_id, curriculum_name, reference_title
  3. PARAMETER LIST TO BE SHARED:
    { curriculum_id, curriculum_name, reference_title, validity, start_date, end_date, cost_per_person, currency, certification, instructor, seat_hours, seat_mins, created_by, created_date, modified_by, modified_date, curriculum_status, access, cancellation_date, nomination_date, seat_limit, community, assignment_count, completion_count, avgratings, nomination_count, purchase_count, started_on, last_access_date, assigned_date, expired_date, completion_dateffeedback, learner_rating, curriculum_completion_status }

Output Parameters

Parameter JSON
JSON Result For each curriculum: Copy Code
{ "learningPlanDTO":[ {
"last_access_date":"NA",
"instructor":"NA",
"learner_rating":"NA",
"modified_date":"NA",
"currency":"USD",
"feedback":"NA",
"assigned_date":"05\/06\/2016",
"curriculum_name":"UL Curriculum",
"end_date":"NA",
"modified_by":"Upside Admin",
"completion_count":"0",
"seat_hours":"0",
"validity":"5",
"curriculum_id":"31",
"purchase_count":"0",
"nomination_date":"NA",
"Content":[ {
"about_course": "NA", "instructor": "NA", "created_on": "04\/05\/2016", "mandatory": "No", "course_name": "Course 001", "type": "SCORM 1.2", "timespent": "NA", "completion_status": "NA", "uploaded_on": "04\/20\/2016", "reference_title": "NA", "last_accessed_on": "NA", "completed_on": "NA", "seat_hours": "NA", "attempts": "NA", "course_id": "2", "content_type": "Course", "started_on": "NA", "seat_mins": "NA"
}
,
{
"instructor": "NA", "mandatory": "No", "remaining_attempt": "NA", "score": "NA", "valid_from_date": "NA", "total_attempts": "5", "test_id": "6", "cutoff": "40", "completion_status": "NA", "title": "Test 001", "duration": "10", "last_accessed_on": "NA", "completed_on": "NA", "navigation": "Practice Mode", "description": "Test 001", "best_score": "NA", "content_type": "Assessment", "started_on": "NA", "valid_till_date": "NA"
}
,
{
"last_accessed_on": "NA", "instructor": "NA", "reference_material_id": "1", "reference_material_name": "Reference Material 001", "description": "NA", "mandatory": "No", "avain_to": "NA", "avail_from": "NA", "content_type": "Reference Material", "completion_status": "NA", "uploaded_on": "04\/05\/2016"
}
,
{
"assignment_name": "Assignment 001", "ended_on": "NA", "objective": "NA", "instructor": "NA", "evaluated_date": "NA", "first_accessed_on": "NA", "mandatory": "No", "assignment_id": "2", "completion_status": "NA", "uploaded_on": "04\/20\/2016", "feedback": "NA", "duration": "NA", "last_accessed_on": "NA", "completed_on": "NA", "learner_score": "NA", "max_score": "100", "instruction": "NA", "content_type": "Assignment"
}
,
{
"last_accessed_on": "NA", "instructor": "NA", "instructions": "NA", "description": "Survey 001", "avain_from": "NA", "mandatory": "No", "survey_name": "Survey 001", "avail_to": "NA", "survey_id": "2", "content_type": "Survey", "completion_status": "NA"
}
,
{
"last_accessed_on": "NA", "instructor": "NA", "video_name": "Video 001", "description": "NA", "mandatory": "No", "video_id": "2", "type": "uploaded", "content_type": "Video", "timespent": "NA", "completion_status": "NA", "uploaded_on": "04\/20\/2016"
}
],
"expired_date":"NA",
"started_on":"NA",
"seat_mins":"NA",
"created_by":"Upside Admin",
"created_date":"05\/06\/2016",
"assignment_count":"1",
"nomination_count":"0",
"cost_per_person":"10.00",
"community":"NA",
"cancellation_date":"NA",
"completion_date":"NA",
"access":"private",
"reference_title":"UL Curriculum",
"certification":"no",
"seat_limit":"NA",
"avgratings":"NA",
"start_date":"NA",
"curriculum_completion_status":"not started",
"curriculum_status":"available"
}
,
{
"Token": "Upside@2016"
}
]
}
Sample Output Result Curriculum with content: Copy Code
{ "learningPlanDTO":[ {
"last_access_date":"NA",
"instructor":"NA",
"learner_rating":"NA",
"modified_date":"NA",
"currency":"USD",
"feedback":"NA",
"assigned_date":"05\/06\/2016",
"curriculum_name":"UL Curriculum",
"end_date":"NA",
"modified_by":"Upside Admin",
"completion_count":"0",
"seat_hours":"0",
"validity":"5",
"curriculum_id":"31",
"purchase_count":"0",
"nomination_date":"NA",
"Content":[ {
"about_course": "NA", "instructor": "NA", "created_on": "04\/05\/2016", "mandatory": "No", "course_name": "Course 001", "type": "SCORM 1.2", "timespent": "NA", "completion_status": "NA", "uploaded_on": "04\/20\/2016", "reference_title": "NA", "last_accessed_on": "NA", "completed_on": "NA", "seat_hours": "NA", "attempts": "NA", "course_id": "2", "content_type": "Course", "started_on": "NA", "seat_mins": "NA"
}
,
{
"instructor": "NA", "mandatory": "No", "remaining_attempt": "NA", "score": "NA", "valid_from_date": "NA", "total_attempts": "5", "test_id": "6", "cutoff": "40", "completion_status": "NA", "title": "Test 001", "duration": "10", "last_accessed_on": "NA", "completed_on": "NA", "navigation": "Practice Mode", "description": "Test 001", "best_score": "NA", "content_type": "Assessment", "started_on": "NA", "valid_till_date": "NA"
}
,
{
"last_accessed_on": "NA", "instructor": "NA", "reference_material_id": "1", "reference_material_name": "Reference Material 001", "description": "NA", "mandatory": "No", "avain_to": "NA", "avail_from": "NA", "content_type": "Reference Material", "completion_status": "NA", "uploaded_on": "04\/05\/2016"
}
,
{
"assignment_name": "Assignment 001", "ended_on": "NA", "objective": "NA", "instructor": "NA", "evaluated_date": "NA", "first_accessed_on": "NA", "mandatory": "No", "assignment_id": "2", "completion_status": "NA", "uploaded_on": "04\/20\/2016", "feedback": "NA", "duration": "NA", "last_accessed_on": "NA", "completed_on": "NA", "learner_score": "NA", "max_score": "100", "instruction": "NA", "content_type": "Assignment"
}
,
{
"last_accessed_on": "NA", "instructor": "NA", "instructions": "NA", "description": "Survey 001", "avain_from": "NA", "mandatory": "No", "survey_name": "Survey 001", "avail_to": "NA", "survey_id": "2", "content_type": "Survey", "completion_status": "NA"
}
,
{
"last_accessed_on": "NA", "instructor": "NA", "video_name": "Video 001", "description": "NA", "mandatory": "No", "video_id": "2", "type": "uploaded", "content_type": "Video", "timespent": "NA", "completion_status": "NA", "uploaded_on": "04\/20\/2016"
}
],
"expired_date":"NA",
"started_on":"NA",
"seat_mins":"NA",
"created_by":"Upside Admin",
"created_date":"05\/06\/2016",
"assignment_count":"1",
"nomination_count":"0",
"cost_per_person":"10.00",
"community":"NA",
"cancellation_date":"NA",
"completion_date":"NA",
"access":"private",
"reference_title":"UL Curriculum",
"certification":"no",
"seat_limit":"NA",
"avgratings":"NA",
"start_date":"NA",
"curriculum_completion_status":"not started",
"curriculum_status":"available"
}
,
{
"Token": "Upside@2016"
}
]
}

Curriculum without content: Copy Code
{ "learningPlanDTO":[ {
"last_access_date": "NA", "instructor": "NA", "learner_rating": "NA", "modified_date": "NA", "currency": "USD", "feedback": "NA", "assigned_date": "05\/06\/2016", "curriculum_name": "UL Curriculum", "end_date": "NA", "modified_by": "Upside Admin", "completion_count": "0", "seat_hours": "0", "validity": "5", "curriculum_id": "31", "purchase_count": "0", "nomination_date": "NA", "expired_date": "NA", "started_on": "NA", "seat_mins": "NA", "created_by": "Upside Admin", "created_date": "05\/06\/2016", "assignment_count": "1", "nomination_count": "0", "cost_per_person": "10.00", "community": "NA", "cancellation_date": "NA", "completion_date": "NA", "access": "private", "reference_title": "UL Curriculum", "certification": "no", "seat_limit": "NA", "avgratings": "NA", "start_date": "NA", "curriculum_completion_status": "not started", "curriculum_status": "available"
}
,
{
"Token": "Upside@2016"
}
]
}

Curriculum Output Parameters

Sr.No. Parameter Keyword
1 Curriculum Id curriculum_id
2 Curriculum Name curriculum_name
3 Description reference_title
4 Duration duration
5 Start Date start_date
6 End Date end_date
7 Cost cost_per_person
8 Currency currency
9 Certification certification
10 Instructor instructor
11 Seat Hours seat_hours
12 Seat Minute seat_mins
13 Created by created_by
14 Creation on created_date
15 Modified by modified_by
16 Modified on modified_date
17 Status status
18 Access Type access
19 Last date of Cancellation cancellation_date
20 Last Date of Nomination nomination_date
21 Community Created community
22 Seat Limit seat_limit
23 Number of users to whom this curriculum is assigned assignment_count
24 Number of users who have completed this curriculum completion_count
25 Ratings avg_ratings
26 Number of users to whom this curriculum is nominated nomination_count
27 Number of users who have purchased this curriculum purchased_count

28

Date when curriculum was assigned to learner

assigned_date

29

Date when learner first accessed the curriculum

last_access_date

30

Date when curriculum was completed by Learner

completion_date

31

Date when curriculum was expired for that Learner

expired_date

32

Feedback given by Learner

feedback

33

Rating given by Learner

learner_rating

34

Curriculum Completion Status

curriculum_completion_status

Content Output Parameters

Course Assignment Assessment Reference Material
Name Keyword Name Keyword Name Keyword Name Keyword

Course Id

course_id

Assignment Id

assignment_id

Assessment Id

test_id

Reference Material Id

reference_material_id

Course Name

course_name

Assignment Name

assignment_name

Assessment Name

title

Reference Material Name

reference_material_name

Description

reference_title

Description

objective

Description

description

Description

description

Content Type

content_type

Instruction

instruction

Mandatory / Optional

mandatory

Mandatory / Optional

mandatory

Mandatory / Optional

mandatory {Yes or No}

Mandatory / Optional

mandatory

Test Duration

duration

Uploaded On

uploaded_on

Compliance Type

type

Maximum Score

max_score

Minimum Passing Percentage (Cut Off)

cutoff

Instructor

instructor

Created On

created_on

Duration

duration

Number of Attempts

total_attempts

Content Type

content_type

Uploaded On

uploaded_on

Uploaded on

uploaded_on

Practice Test / Final Test

navigation

Date on which reference material was last viewed by learner

last_accessed_on

About Course

about_course

Instructor

instructor

Instructor

instructor

Status of the assessment

completion_status

Instructor

instructor

Content Type

content_type

Content Type

content_type

Seat Hours

seat_hours

Date on which the assignment was first accessed by learner.

first_accessed_on

Date on which assessment was first accessed by learner.

started_on

Seat Minutes

seat_mins

Date on which the assignment was last accessed by learner.

last_accessed_on

Date on which assessment was last accessed by learner.

completed_on

Date on which course was first accessed by learner

started_on

Date on which the assignment was completed by learner.

completed_on

Date on which assessment was completed by learner.

last_accessed_on

Date on which course was last accessed by learner

last_accessed_on

End date for the assignment for the learner.

ended_on

Score for that assessment

score

Date on which course was completed by learner

completed_on

Status of assignment for that learner

completion_status

Number of attempts remaining for that learner

remaining_attempt

Number of attempts

attempts

Score received by learner

learner_score

Best score for the assessment for that learner

best_score

Time spent by learner to view the course

timespent

Date on which assignment was evaluated by learner

evaluated_date

Completion Status

completion_status

Status of the course for that learner

completion_status

Feedback received for that learner

feedback


Video Survey Session Virtual Classroom
Name Keyword Name Keyword Name Keyword Name Keyword

Video ID

video_id

Survey ID

survey_id

Session ID

session_id

VC ID

training_id

Video Name

video_name

Survey Name

survey_name

Session Name

session_name

VC Name

training_name

Description

description

Description

description

Program

program_id

Description

description

Mandatory / Optional

mandatory

Instructions

instructions

Objective

session_objective

Mandatory / Optional

mandatory

Type

type

Mandatory / Optional

mandatory

Mandatory / Optional

mandatory

Start Date

start_date

Uploaded On

uploaded_on

Available From Date

avain_from

Start Date

start_date

Start Hours

start_hours

Instructor

instructor

Available To Date

avail_to

End Date

end_date

Start Minutes

start_mins

Content Type

content_type

Instructor

instructor

Start Hours

start_hours

Meeting Duration Hours

training_hours

Date on which video was viewed by learner

last_accessed_on

Content Type

content_type

Start Minutes

start_mins

Meeting Duration Minutes

training_mins

Time spent on video

timespent

Date on which survey was last attempted by learner

last_accessed_on

End Hours

end_hours

Instructor

instructor

Completion Status

completion_status

Status of survey

completion_status

End Minutes

end_mins

Status of VC for that learner

completion_status

Last Date of Nomination

last_date_of_nomination

Start date and time on which VC was started by learner

start_date_time

Last Date of Cancellation

last_date_of_cancellation

End date and time on which VC was started by learner

end_date_time

Vendor

vendor

Attendee ID

attendee_id

Speaker

speaker

Venue

venue

Vendor Cost

vendor_cost

Vendor Currency

currency

Instructor

instructor

Date on which session was completed by learner

completed_on

Date on which session was last attempted by learner

last_accessed_on

Status of session

completion_status

Error Codes

Parameter Error Code Error Massage Scenarios

Portal Key

Err001

Invalid value received against parameter.(Portal Key)

- In case of Empty field or Invalid parameter received against portal key.

Token ID

Err001

Invalid value received against parameter.(Token ID)

- In case of Empty field or Invalid parameter received against token.

Learner ID

Err001

Invalid value received against parameter.(Learner ID)

- In case of Invalid parameter received against Learner ID.

Content Mode

Err001

Invalid value received against parameter.(Content Mode)

- In case of Invalid parameter received against content mode.

Output List

Err001

Invalid value received against parameter.(Output List)

- In case of Invalid parameter received against output list.

Access

Err001

Invalid value received against parameter.(Access)

- In case of Invalid parameter received against access.

Certification

Err001

Invalid value received against parameter.(Certification)

- In case of Empty field or Invalid parameter received against certification.

Rating

Err001

Invalid value received against parameter.(Rating)

- In case of Empty field or Invalid parameter received against rating.

- it should be integer.

Validity

Err001

Invalid value received against parameter.(Validity)

In case of Empty field or Invalid parameter received against validity.

- It should be integer value.

Order By

Err001

Invalid value received against parameter.(Order By)

- In case of Invalid parameter received against order by.

- Parameter naming convention to be followed.

Start Date

Err004

Invalid Date format.(Start Date)

- In case of Invalid parameter received against start date as invalid date format.

- It should be in MM/DD/YYYY format

End Date

Err004

Invalid Date format.(End Date)

- In case of Invalid parameter received against end date as invalid date format.

- It should be in MM/DD/YYYY format

No Data

Msg001

No data found.

In case no data found.

Best Practices and Guidelines

  1. Pull the data from web-service once a day and use local storage to store/fetch the data for faster execution
  2. Use filters to get faster and appropriate/required data
  3. List required fields from curriculum data
  4. Do not expose curriculum and content IDs shared by web service
  5. Use recommended encryption
  6. Use proper order by clause to get ordered data
  7. Use valid data while calling web service
  8. Errors or exceptions returned in the response by the UpsideLMS should be handled by the API calling system in a required way to ensure API calling system and UpsideLMS are always in sync.
  9. The API link, public key and portal key should not be exposed with anyone other than the authorised person or team. This might lead to access of unauthorised person to the confidential data residing on UpsideLMS. UpsideLMS will not be able to control or will be responsible for any theft or loss of data due to this.

Create/Update user in LMS Database

Description: Creates and Updates your user accounts

URL: /rest/manageuser

Parameters:

Input Parameters

Parameter Mandatory Data Type Description
Portal Key
[lmsportalid]
Yes String
  1. The Client Key will be set by SM at LMS portal level.
  2. This will not be in encrypted form.
  3. This will be a mandatory parameter for the LMS to identify the LMS portal for which the API is triggered.
Token ID
[lmstokenid]
Yes String
  1. Client would generate and send the Token ID against the request for data.
  2. This will be in encrypted form.
  3. This Token ID will be used by Upside to identify the request and will be sent to client's system by UpsideLMS along with response data.
Data Language
[data_language]
Yes String
  1. This parameter is used to get the language in which masters data is going to be received from client's system.
  2. This will be in encrypted form.
  3. Values of this parameter could be {en/ar/fr/cn/sp}.
  4. e.g
    1) en → O+6XoofOQzGhdUk1zPoe1A==   
    2) ar → E1eCT0swv5Ft62wwoli73Q==
User Details
[json]
Yes JSON
  1. This parameter will be used to get user details.
  2. This will be in encrypted form.
  3. Unique ID will be the unique identifier for identification of Users in LMS database.
  4. Based on the Unique ID if it is found in LMS database and all the parameters received are valid then respective user details are updated in LMS database. If respective Unique ID not found in LMS database then after validating all the parameters a new user will be created in LMS database.
  5. List of parameters:
    1. unique_id [Unique ID] [Max Length - 10] - String
    2. firstname* [First Name] [Max Length - 30] - String
    3. lastname [Last Name] [Max Length - 30] - String
    4. birth_date [Date of Birth] - String
    5. joining_data [Date of Joining] - String
    6. termination_date [Date of Termination] - String
    7. gender [Gender] - String
    8. email* [Email] [Max Length - 255] - String
    9. username* [Username] [Max Length - 50] - String
    10. password* [Password] - String
    11. alternate_email [Alternate Email] [Max Length - 255] - String
    12. phone [Phone] [Max Length - 50] - String
    13. mobile [Mobile Number] [Max Length - 50] - String
    14. local_address [Address Location (Suburb, Locality or Town)] [Max Length - 450] - String
    15. local_pin_no [Local Postcode] [Max Length - 50] - String
    16. address_line1 [Address Line 1] [Max Length - 450] - String
    17. address_line2 [Address Line 2] [Max Length - 450] - String
    18. city [City] [Max Length - 80] - String
    19. state [State/Territory] [Max Length - 80] - String
    20. country [Country] [Max Length - 80] - String
    21. pin_no [Postcode] [Max Length - 50] - String
    22. grade [Grade] - String
    23. designation [Designation] - String
    24. role [Role] - String
    25. lmsrole [LMS Role] - String
    26. line_manager [Line Manager Email] - String
    27. indirect_line_manager [Indirect Line Manager Email] - String
    28. node_id [Node ID] - String
    29. user_language [Language Code] [Max Length - 10] - String
    30. status [Status] - String
    31. user_expiry_date [Date Of Expiry] - String
  6. Parameters marked with (*) are mandatory.
  7. All date parameters will be in MM/DD/YYYY format.
  8. For adding multiple values like multiple nodes, indirect line managers, etc. parameters will be comma separated.
  9. In case 'Admin Set Password' is set to 'ON' then password field is mandatory.
  10. Number of parameters may vary depending upon the user registration form set from Site Admin side for that client portal.

Output Parameters

Output JSON
JSON Result

If 'lmsportalid' received and is valid then output will be in encrypted format, otherwise it will be in simple json format.

Copy Code
{
"error_list":[ {
"Error Code": ""
}
,
{
"Error Code": ""
}
],
"status":"",
"lmstoken_id":""
}
Sample Output Result Copy Code
{
"status": "success", "lmstoken_id": "upsidelmstoken00009"
}

Copy Code
{
"error_list":[ {
"Err001": "Invalid value received against parameter. (Portal key)"
}
],
"status":"fail"
}

Copy Code
{
"error_list":[ {
"Err004": "Invalid  Date format. (Date of Birth)"
}
,
{
"Err004": "Invalid  Date format. (Date of Joining)"
}
,
{
"Err001": "Record does not exists in system. (LMS Role)"
}
],
"status":"fail",
"lmstoken_id":"upsidelmstoken00009"
}

Error Codes

Error Code Error Massage Example

Err001

Invalid value received against parameter.

{"Err001":"Invalid value received against parameter. (LMS Role)"}

Err002

Mandatory Field.

{"Err002":"Mandatory Field. (First Name)"}

Err003

Record does not exist in system.

{"Err003":"Record does not exist in system. (Node ID)"}

Err004

Invalid Date format.

{"Err004":"Invalid Date format. (Date of Joining)"}

Err005

Duplicate record.

{"Err005":"Duplicate record. (Email)"}

Err006

No Licenses Found.

{"Err006":"No Licenses Found."}

Err007

Access Disabled

{"Err007":"Access Disabled"}

Err500

Internal server error.

{"Err500":"Internal server error."}

Best Practices and Guidelines

  1. Strong data encryption algorithm like AES is recommended for sending sensitive data over the network.
  2. Use of POST method as against GET method in the form is recommended for submitting sensitive data over the network.
  3. Make sure to sync/update local data with UpsideLMS application, if any of the master records are updated in the API calling system.
  4. Add/update user API should be called, when any user in the client system is added or updated. This will ensure synchronization between API calling system and UpsideLMS.
  5. Valid data should be passed in the API call to UpsideLMS.
  6. Errors or exceptions returned in the response by the UpsideLMS should be handled by the API calling system in a required way to ensure API calling system and UpsideLMS are always in sync.
  7. The API link should not be exposed with anyone other than the authorised person or team. This might lead to access of unauthorised person to the confidential data residing on UpsideLMS. UpsideLMS will not be able to control or will be responsible for any theft or loss of data due to this.

Curriculum Assignment API

Description: Designed to assign one or multiple curriculums to one or multiple LMS users.

URL: /rest/assigncurriculum

Parameters:

Input Parameters:

Parameter Mandatory Data Type Description
Portal Key
[lmsportal_id]
Yes String
  1. This parameter value is the Client Key which is set by Site Manager for individual LMS portal.
  2. This parameter should not be in encrypted form.
  3. This will be a mandatory parameter for LMS to identify the specific LMS portal for which the API is triggered
  4. If 'lmsportal_id' received by LMS is invalid then the error response will be sent across to Client's system in non-encrypted format
Token ID
[lmstoken_id]
Yes String
  1. This will be a mandatory parameter.
  2. Client would be required to generate and send the Token ID to LMS, every time this API is triggered.
  3. This Token ID will be used to uniquely identify the particular request and will be shared across with Client's system along with response data.
Curriculum-learner Details
[json]
Yes JSON
  1. This will be a mandatory parameter.
  2. This parameter will be used by Client's system to share the User and Curriculum details.
  3. List of parameters within JSON:
    1. curr_learner_info* : It is an array of curriculum and learner details. This array will have specific parameters like – assignment_id , learner_info and curr_ids
  4. Please Note - These parameters will be case-sensitive
  5. Example :
    {
    "curr_learner_info":
    [{"assignment_id":"1","learner_info":"email_id=pallavi.mali@upsidelearning.com~unique_id=4861~username=pallavi","curr_ids":"1~2~3"},
    {"assignment_id":"2","learner_info":"unique_id=4201~username=pallavi","curr_ids":"113"},
    {"assignment_id":"3","learner_info":"username=pallavi","curr_ids":"113~125"}
    ]}
  6. Details of the parameters within an array :

  7. a) assignment_id * : The Assignment ID will be generated by Client's system and shared against each Learner and Curriculum record to uniquely identify the particular mapping.
    For example – Record 1 -
    {"assignment_id":"1", "learner_info":"unique_id=4861~username=Alex", "curr_ids":"1~2~3"}
    Record 2 –
     {"assignment_id":"2", "learner_info":"unique_id=4201~username=John", "curr_ids":"113"}

    b) learner_info * : This parameter will be used to uniquely identify the learner. This unique identifier can be – Unique ID (key : unique_id) or/and Login ID (key : username) or/and Email ID (key : email_id).
    The Key and the specific value should be separated by "=" sign (as displayed in the example above)
    If more than one of these unique parameters are shared then they need to be separated by "~" sign (as displayed in the example above)

    c) curr_ids* : This parameter will be used to share the Curriculum IDS (as stored in LMS database) which are to be assigned to the specified Learners.
    Multiple Curriculum IDs will be separated by "~" sign (as displayed in the example above)
    Please Note - Parameters marked with (*) are mandatory.

Output Parameters:

Output JSON
JSON Result
  1. The JSON result will be in encrypted format if the Public Key is set for the particular LMS portal else this will be in non-encrypted format.
  2. This will display the curriculum assignment status along with the error details (if any) for individual learners (as shared in input parameters). Also the status of the entire transaction will be shared.
Sample Output Result
  1. Response – Fail
    Transaction terminated - No Curriculums will be assigned to any Learner
    {"curr_learner_assignment_info":{
    "assignment_status_info":[{
    "learner_info":"email_id=pallavi.mali@upsidelearning.com~unique_id=4861~username=pallavi", "Err003":"Record does not exists in system.(Learner Unique Identifier)", "assignment_status":"fail", "assignment_id":"1"}, {"learner_info":"unique_id=4201~username=pallavi", "curriculum_assignment_status":[{"status":"fail","Err009":"Curriculum already assigned", "curr_id":"167"},
    {"status":"fail", "Err009":"Curriculum already assigned", "curr_id":"166"}],
    "assignment_status":"fail", "assignment_id":"2"}]}, "final_status":"fail", "lmstoken_id":"token 1"}
    
  2. 2. Response – Partially Success
    Error in specific Learner or Curriculum record – Particular Curriculum will not be assigned to the particular Learner
    {"curr_learner_assignment_info":{
    "assignment_status_info":[{"learner_info":"email_id=pallavi.mali@upsidelearning.com~unique_id=4861~username=pallavi", "Err003":"Record does not exists in system.(Learner Unique Identifier)", "assignment_status":"fail", "assignment_id":"1"}, {"learner_info":"unique_id=4201~username=pallavi", "curriculum_assignment_status":[{"status":"success","curr_id":"167"}, {"status":"success","curr_id":"166"}], "assignment_status":"success","assignment_id":"2"}]}, "final_status":"partially_success", "lmstoken_id":"token 1"}
    
  3. 3. Response – Success
    Transaction Successful - Curriculums will be successfully assigned to learners
    {"curr_learner_assignment_info": {"assignment_status_info": [{ "learner_info":"unique_id=4202", "curriculum_assignment_status":[{"status":"success","curr_id":"167"}, {"status":"success","curr_id":"166"}], "assignment_status":"success","assignment_id":"1"}, {"learner_info":"unique_id=4201~username=pallavi", "curriculum_assignment_status":[{"status":"success","curr_id":"167"}, {"status":"success","curr_id":"166"}], "assignment_status":"success","assignment_id":"2"}]}, "final_status":"success", "lmstoken_id":"token 1"}
    
  4. 4. Response – Fail
    Transaction terminated - No Curriculums will be assigned to any Learner
    {"curr_learner_assignment_info":{ "error_list":[{ "Err001":"Invalid value received against parameter.(Portal Key)"}]}, "final_status":"fail", "lmstoken_id":"token 1"}
  5. 5. Response – Fail
    Transaction terminated - No Curriculums will be assigned to any Learner
    {"curr_learner_assignment_info":{ "error_list":[{ "Err002":"Mandatory Field. (Token id)"}]}, "final_status":"fail", "lmstoken_id":""}

Error Codes:

Error Code Error Massage Example
Err001 Invalid value received against parameter. {"Err001":"Invalid value received against parameter. (Learner Unique Identifier)"}
Err002 Mandatory Field. {"Err002":"Mandatory Field. (Portal Key)"}
Err003 Record does not exist in system. {"Err003":"Record does not exist in system. (Curriculum ID)"}
Err500 Internal server error. {"Err500":"Internal server error."}
Err007 Access Disabled. {"Err007":"Access Disabled."}
Err008 Session within this curriculum conflicts with a session in another Curriculum already assigned to the learner {"Err008":"Session within this curriculum conflicts with a session in another Curriculum already assigned to the learner"}
Err009 Curriculum is expired {"Err009":"Curriculum is expired"}
Err010 Curriculum already assigned {"Err010":"Curriculum already assigned"}
Err011 Session seat limit exceeds {"Err011":"Session seat limit exceeds"}
Err012 Capacity of VCS exceeds {"Err012":"Capacity of VCS exceeds"}
Err013 Curriculum Unavailable {"Err013":"Curriculum Unavailable"}
Err014 Curriculum does not have any Contents {"Err014":"Curriculum does not have any Contents"}
Err015 Curriculum can only be assigned to a user with 'Learner' access. {"Err015":"Curriculum can only be assigned to a user with 'Learner' access."}

Best Practices and Guidelines:

  1. This API supports the AES (AES/CBC/PKCS5Padding (key-size : 128)) encryption/decryption Algorithm for sharing user and curriculum data. We strongly recommend usage of this feature for sharing the data across the applications securely.
  2. Use of POST method as against GET method in the form is recommended for submitting sensitive data over the network.
  3. We recommend that only valid data should be shared as part of the triggered API, to prevent the failure of transactions.
  4. Errors or exceptions sent in the response by the UpsideLMS should be handled by the Client's system which triggered the particular API, to ensure that the Client's system and UpsideLMS are always in sync.
  5. The API URL should not be exposed with any individual other than the authorised personnel or team to avoid security breach of confidential data residing in UpsideLMS. UpsideLMS will not be able to control or will be responsible for any theft or loss of data due to this.
  6. Using this API, multiple curriculums can be directly assigned to users. It will have all the same impacts as of curriculum assignment through delivery management, like mail notifications sent on curriculum assignment.
  7. For Paid Curriculums purchased by Users, Client's system is expected to share the data after successful payment, as UpsideLMS will be responsible only for Curriculum Assignment to Users and will not validate if the payment was successful.
  8. This API does not support un-assignment of Curriculums to Learners. Client Administrator is expected to un-assign curriculums using standard UpsideLMS Delivery Management feature.

UpsideLMS Integrations

UpsideLMS Redirection with SSO

UpsideLMS API and Integration
  1. Configure UpsideLMS SSO
  2. It has two mandatory text fields:
    1. LMS Redirection URL (Non editable)
    2. LMS Logout Redirection URL
  3. Parameter Details link would display list of parameters required by LMS to authenticate user.
  4. LMS will accept all the parameters in encrypted format except Client key.
  5. All encrypted fields must be encrypted using AES 128 algorithm with password.
  6. Form method to be used is POST.

Parameters

Parameter Parameter Id Mandatory/Optional Data Type AES Encrypted

Client Key [*]

clientKey

Mandatory

String

No

Curriculum Id

curriculumId

Optional

String

Yes

User Id

uniqueIdentifier1

Optional

String

Yes

User Name

uniqueIdentifier2

Optional

String

Yes

Email Id

uniqueIdentifier3

Optional

String

Yes

User Validation and Navigation

Based on parameters provided here is the list scenarios:

  1. If 'clientKey', 'curriculumId' and any of the 'uniqueidentifiers' are provided then the controller will validate the user with combinations of 'uniqueidentifiers' and checks whether provided curriculum is present in user's plan then redirect to Learning Plan page, if not then controller check whether user has Catalog access to that curriculum then redirect to Catalog, and if not then redirect to default landing page.
  2. If 'clientKey' and any of the 'uniqueidentifiers' are provided then after validation, controller just redirects user to default landing page.
  3. If controller finds any of the parameter invalid then it redirects to 'common_errorPage.jsp' with error message.

UpsideLMS Redirection without SSO

  1. LMS will accept all the parameters in encrypted format except Client key.
  2. All encrypted fields must be encrypted using AES 128 algorithm with password.
  3. Form method to be used is POST.

Parameters

Parameter Parameter Id Mandatory/Optional Data Type AES Encrypted
Client Key [*] clientKey Mandatory String No
Curriculum Id curriculumId Optional String Yes

User Validation and Navigation

Based on parameters provided here is the list scenarios:

  1. If only 'clientKey' provided then controllers validates the client key and redirects user to respective client login page.
  2. If 'clientKey' and 'curriculumId' are provided then controller decrypts the curriculum id and stores it in session and redirects user to client login page.
  3. If controller finds any of the parameter invalid then it redirects to 'common_errorPage.jsp' with error message.

Sample Code

<form name="navigationForm" id="navigationForm" method="POST" action="{Context_path}/navigationcontroller" target="_blank">
<label>Client Key: </label>
<input type="text" name="clientKey" id="clientKey"><br> 
<label>Curriculum Id: </label>
<input type="text" name="curriculumId" id="curriculumId"> <br>
<label>User Id: </label>
<input type="text" name="uniqueIdentifier1"> <br> 
<label>User Name: </label> 
<input type="text" name="uniqueIdentifier2"> <br> 
<label>Email: </label> 
<input type="text" name="uniqueIdentifier3">
<input type="submit" name="submit" value="Go">
</form>

  1. Use AES algorithm to encrypt values to be sent via form
  2. Sample Data:
    1. action: http://localhost:8080/lmsv7.1/navigationcontroller
    2. clientKey: upsidelearning71
    3. curriculumId
      1. Actual value: 1  Encrypted: MexmjtH8sbAbHCIFr/Y9/w==
      2. Actual value: 1  Encrypted: MexmjtH8sbAbHCIFr/Y9/w==
      3. Actual value: 2  Encrypted: EgmNBXILCppdFtCqcdg36Q==
      4. Actual value: 3  Encrypted: HtaSvQ4p+Bb5m+V/oR0dgg==
    4. uniqueIdentifier1
      1. Actual value: 404  Encrypted: Cn+dHbpVHr7U+IQG7brCIQ==
    5. uniqueIdentifier2
      1. Actual value: aasif  Encrypted: SD8/6XxGX0xGdz3VANhjlA==
    6. uniqueIdentifier3
      1. Actual value: aasif.iqbal@upsidelearning.com   Encrypted: eOexakogmIho1ax30vnilRSPs3XJvBnUSEt3+aoHsgQ=

Note : All these values are encrypted using AES password 'Upside@2016'.

UpsideLMS Scheduled Data Synchronisation

Scheduled User Update

Highlights
  1. Schedule an update process daily, weekly or monthly as per your requirement.
  2. Easily map user profile data (exported in MS excel or CSV format) from your SAP or any other system in UpsideLMS.
  3. Easily to map users within an organisation hierarchy.
  4. Receive an email with details of user records that were updated successfully or failed, with details of failure.
Note:
  1. Does not require any modifications or API integrations on client system, other than ensuring updated user record file is placed on the agreed location at scheduled intervals.
Get a Personalised, Live UpsideLMS Demo
Request A Demo