How to Use REST API to Add and Track Users in a Classroom
ProProfs Training Maker allows you to use REST API to register, authenticate, and track learners for your courses and quizzes. This API application enables the utilization of three distinct processes:
1. Register New Users in a Classroom
2. Track User Progress For Each Assignment
3. Classroom User Authentication
Register New Users In a Classroom
Add new users to your classroom using their Email or ID with the help of this API method.
NEW VERSION
Endpoint URL
POST- https://api.proprofs.com/classroom/v3/create/register
Note: Endpoint URL is
Case-sensitive and without forward-slash ( / ) at the end.
Request Method
POST
Request Format
JSON
Request Parameters
Name | Required | Type | Description |
---|---|---|---|
token | Yes | String | Your private API key for the FAQ. The API key is available at: Settings > In-App Help > API key |
username | Yes | String | ProProfs username |
Yes (Either Email or ID is required) | String | User's unique Email | |
id | Yes (Either Email or ID is required | String | User's unique ID |
fname | No | String | First name of the user |
lname | No | String | Last name of the user |
password | No | String | Password for the user to log in under a classroom. If missing, an auto-generated password will be assigned. |
phone | No | String | Phone No. of user |
address | No | String | User's address |
city | No | String | City |
state | No | String | State |
country | No | String | Country |
zip | No | String | Zip |
status | No | String | Status ("active" / "inactive" / "delete") |
expire | No | String | Date when the user's access will expire. The date format should be mm/dd/yyyy |
assignments | No | Object |
URL encoded link of the assignment.
Sample quiz assignment link: https://www.proprofs.com/quiz-school/ugc/story.php?title=customer-service-training-quiz-template-3334wt
URL encoded version: https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt
Sample course assignment link: https://www.proprofs.com/training/course/?title=business-training
URL encoded version: https%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dbusiness-training
Sample Learning Path Private Code: 162XX9XX |
group | No | Object | You can include up to 5 groups while registering the user. |
Sample Code | JSON
Accept: application/json
Content-Type: application/json
{
"token":"*****7edf67d0a*****aca630b0*****",
"username":"YourProProfsUserName",
"email":"john@proprofs.com",
"id":"johndlabs100",
"password":"YourPassword",
"fname":"John",
"lname":"Smith",
"phone":"1111111111",
"address":"32E, John Corps, Main ST",
"city":"Phoenix",
"State":"Arizona",
"country":"USA",
"zip":"85705",
"expire":"12/31/2025",
"status":"active",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"group":{
"group1":{
"group_name":"gr-dlabs001",
"group_status":"active",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":1,
"can_add_new_user":1,
"can_assign_user_to_group":1,
"can_assign_assignments":1,
"can_grade_reports":1,
"can_remove_user_from_group":1,
"can_delete_user":1,
"is_part_of":1,
"subgroup":{
"subgroup1":{
"subgroup_name":"subgr-dlabs001",
"subgroup_status":"active",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":1,
"can_add_new_user":1,
"can_assign_user_to_group":1,
"can_assign_assignments":1,
"can_grade_reports":1,
"can_remove_user_from_group":1,
"can_delete_user":1,
"is_part_of":1
},
"subgroup2":{
"subgroup_name":"subgr-dlabs002",
"subgroup_status":"inactive",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":1,
"can_add_new_user":1,
"can_assign_user_to_group":1,
"can_assign_assignments":1,
"can_grade_reports":0,
"can_remove_user_from_group":1,
"can_delete_user":0,
"is_part_of":1
}
}
},
"group2":{
"group_name":"gr-dlabs002",
"group_status":"inactive",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":0,
"can_add_new_user":0,
"can_assign_user_to_group":0,
"can_assign_assignments":0,
"can_grade_reports":0,
"can_remove_user_from_group":0,
"can_delete_user":0,
"is_part_of":0
}
}
}
The request JSON object contains information about the user, group, subgroup, and the courses that are to be assigned. Since a JSON string is significant, we should divide it into different chunks for better understanding.
Request Parameters for user information
Request Parameters for the group information
Name | Required | Type | Description |
---|---|---|---|
group_name | No | String | The name of the group. The user will get assigned to the group if the group already exists. Otherwise, a new group will be created, and the user will assign it. |
group_status | No (default: active) | Boolean | The value should be active or inactive. The group with inactive status will not allow classroom access to their members (users). |
assignments | No | Object |
The list of quizzes and course links that you want to assign to the group. The link should be URL encoded, and the total number of assignments shouldn't exceed more than 50. The assignment limit of 50 is applicable globally on the request. So, no matter whether we have consumed all 50 assignments to a group or divided them among multiple groups/subgroups/users. |
is_group_admin | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a group administrator for the group. |
can_add_new_user | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) will have permission to add a new user from the web portal and assign that user to the group. |
can_assign_user_to_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can see the list of users available in the classroom and assign them to the group. |
can_assign_assignments | No (default: 0) | Boolean | The value should be 0 or 1. With status 1, the user (group administrator) can add assignments to the group. |
can_grade_reports | No (default: 0) | Boolean | The value should be 0 or 1. With status 1, the user (group administrator) can grade reports. |
can_remove_user_from_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can remove members from the group. |
can_delete_user | No (default: 0) | Boolean |
The value should be 0 or 1. The user (group administrator) with status 1 will have permission to delete the user from the classroom. Note: Delete is permanent, and you'll not be able to get it back once deleted. |
is_part_of | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a member of the group. |
subgroup | No (default: 0) | Object | You can include up to 25 subgroups while registering the user. The subgroup limit of 25 is applicable globally on the request. So, no matter whether you have consumed all subgroups within a group or divided among the multiple groups. |
Request Parameters for the subgroup information
Name | Required | Type | Description |
---|---|---|---|
subgroup_name | No (default: 0) | String | The name of the subgroup. If the subgroup exists, the user will be assigned to the subgroup. Otherwise, a new subgroup will be created, and then the user will get assigned to it. |
subgroup_status | No (default: active) | String | The value should be active or inactive. The subgroup with inactive status will not allow classroom access to their members (users). |
assignments | No | Object |
The list of quizzes and course links that you want to assign to the subgroup. The link should be URL encoded, and the total number of assignments shouldn't exceed more than 50. The assignment limit of 50 is applicable globally on the request. So, no matter whether we have consumed all 50 assignments to a group or divided them among multiple groups/subgroups/users. |
is_group_admin | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a group administrator for the subgroup. |
can_add_new_user | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) will have permission to add a new user from the web portal and assign that user to the subgroup. |
can_grade_reports | No (default: 0) | Boolean | The value should be 0 or 1. With status 1, the user (group administrator) can grade reports. |
can_remove_user_from_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can remove members from the subgroup. |
can_delete_user | No (default: 0) | Boolean |
The value should be 0 or 1. The user (group administrator) with status 1 will have permission to delete the user from the classroom. Note: Delete is permanent, and you'll not be able to get it back once deleted. |
can_assign_user_to_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can see the list of users available in the classroom and assign them to the subgroup. |
can_assign_assignments | No (default: 0) | Boolean |
The value should be 0 or 1. With status 1, the user (group administrator) can add assignments to the subgroup. |
is_part_of | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a member of the group. |
Response Format
JSON
Example Response [Success]
Content-Type: application/json
{
"status":"success",
"uid":"20114120",
"email":"john@proprofs.com",
"id":"johndlabs100",
"action":"created"
}
Response Fields | Description |
---|---|
status | success when the user added or updated successfully. |
uid | The unique reference ID of the user post-registration. |
The user email who just added/updated. |
|
id | The user ID who just added/updated. |
action | created or updated based on the action performed. |
Example Response [Failed]
Content-Type: application/json
{
"status":"error",
"description":"Maximum 5 groups are allowed"
}
Response Fields | Description |
---|---|
status | error when the operation failed. |
description |
The error text describes the error. |
OLD VERSION
Endpoint URL
https://www.proprofs.com/api/classroom/v1/user/register/
Request Method
POST
Request Format
JSON
URL Parameters
Name | Required | Type | Description |
token | Yes | String | Unique ProProfs API key |
username | Yes | String | ProProfs username |
Yes (Either Email or ID is required) | String | User's unique Email | |
id | Yes (Either Email or ID is required) | String | User's unique ID |
fname | No | String | First name of the user |
lname | No | String | Last name of the user |
password | No | String | Password for the user to log in under a classroom. If missing, an auto-generated password will be assigned. |
phone | No | String | Phone No. of user |
address | No | String | User's address |
city | No | String | City |
state | No | String | State |
country | No | String | Country |
zip | No | String | Zip |
status | No | String | Status ("active" / "inactive" / "delete") |
expire | No | String | Date when the user's access will expire. The date format should be mm/dd/yyyy |
group | No | String | Name the group in which you want to register the user. A maximum number of 5 groups are permitted. If no group name is mentioned, the user will still be registered but won't belong to any group. |
group_status | No | String | Status ("active" / "inactive"). Default is "Active" if group_status is not specified. |
sub_group | No | String | If a subgroup is specified, the corresponding parent group must be there. |
sub_group_status | No | String | Status ("active" / "inactive"). Default is "Active" if sub_group_status is not specified. |
is_group_admin | No | String | Is this user going to act as group admin? 0 = No (Default), 1 = Yes. |
can_add_new_user | No | String | Does this user have permission to add a new user in the classroom? 0 = No (Default), 1 = Yes. |
can_assign_user_to_group | No | String | Does this user have permission to add a user to the group? 0 = No (Default), 1 = Yes. |
can_unassign_user_from_group | No | String | Does this user have permission to remove a user from the group? 1 = No (Default), 0 = Yes. |
can_delete_user | No | String |
Is this user allowed to delete their group members? 0 = No (Default), one = Yes. |
can_assign_assignments | No | String | Can this user assign quizzes and courses to both users and groups? 0 = No (Default), 1 = Yes. |
quiz_assignment | No | String |
Assign quizzes directly to users or groups. A full URL encoded link of the quiz is required.
E.g., http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quiz.
Note: If the group name is missing, the quiz will be directly assigned to the user. |
course_assignment | No | String |
Assign courses directly to users or groups. A full URL encoded link of the course is required.
E.g. http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dfederal-sexual-harassment.
Note: If the group name is missing, the course will be directly assigned to the user. |
Example Request
POST https://www.proprofs.com/api/classroom/v1/user/register/
Accept: application/json
Content-Type: application/json
{
"token": "3f39bfe3d52efe4a975ce19eb1e9db4e",
"username": "johnsmith",
"email": "johnsmith@example.com",
"id": 1024,
"fname": "John",
"lname": "Smith",
"password": "rdsxc234edsx",
"phone": "555-555-5555",
"address": "100 MAIN ST",
"city": "PHOENIX",
"state": "AZ",
"country": "USA",
"zip": "85123",
"status": "active",
"expire": "12/31/2015",
"group": ["sales","finance","marketing"],
"group_status": ["active","active","inactive"],
"sub_group": ["inbound","credit","digital"],
"quiz_assignment: ["http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quizz", "http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quizz", "http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quizz"]
}
Response Format
JSON
Response on Success
Response Fields | Description |
status | Will return either "SUCCESS" or "ERROR." |
Email of user | |
id | ID of user |
Example Response
Content-Type: application/json
{
"status": "SUCCESS",
"email": "johnsmith@example.com",
"id": "1024"
}
Responses on Error
Error Fields | Description |
status | In case of an error, this field will always contain the string "ERROR." |
code | Unique error code |
error | Descriptive error message |
Error Codes and Descriptions
Error Code | Description |
ERR1001 | The request method must be POST. |
ERR1002 | The request is empty. |
ERR1003 | Request parameter shouldn't be more than one. |
ERR1004 | Something wrong with the JSON request. |
ERR1005 | The token is missing. |
ERR1006 | ProProfs username is missing. |
ERR1007 | Incorrect token or username. The input token is not associated with the username. |
ERR1050 | Either Email or ID is required, and it should be unique. |
ERR1051 | Email shouldn't be empty. |
ERR1052 | ID shouldn't be empty. |
ERR1053 | The email pattern is incorrect. |
ERR1054 | The country name seems to be not supported. Use the "Supported Country Names" section to pick the correct country name. |
ERR1055 | A maximum of 5 groups are permitted. |
ERR1056 | ID seems duplicate. Please use a unique ID. |
ERR1059 |
(1) Parent group can't be added as a subgroup. (2) The subgroup you have defined is already a parent of another group. |
Example Error Response
Content-Type: application/json
{
"status": "ERROR",
"code": "ERR1001",
"error": "API key is invalid"
}
Live example in PHP
This example will help you register the user in the classroom using ProProfs API.
function sendRequest($json)
{
$curl_obj = curl_init();
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_obj, CURLOPT_URL, "https://www.proprofs.com/api/classroom/v1/user/register/");
curl_setopt($curl_obj, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_obj, CURLOPT_POST, 1);
curl_setopt($curl_obj, CURLOPT_HEADER, 0);
return curl_exec($curl_obj);
}
$request_array = array();
$request_array["token"] = "Your API Key";
$request_array["username"] = "Your ProProfs Username";
$request_array["email"] = "john@proprofs.com";
$request_array["id"] = "12345";
$request_array["fname"] = "John";
$request_array["lname"] = "Smith";
$request_array["password"] = "john101";
$request_array["phone"] = "555-555-5555";
$request_array["address"] = "151 Street Suit";
$request_array["city"] = "Santa Monica";
$request_array["state"] = "CA";
$request_array["country"] = "United States";
$request_array["zip"] = "90401";
$request_array["status"] = "active";
$request_array["expire"] = "12/31/2015";
// User will be member of three groups Marketing, Sales and Support.
$group_array = array("Marketing", "Sales", "Support");
$request_array["group"] = $group_array;
// User will be group admin for Sales and Support groups only.
$group_admin_array = array("0", "1", "1");
$request_array["is_group_admin"] = $group_admin_array;
// User can add new users under classroom only when acting as group admin for Sales and Support groups.
$add_user_permission = array("0", "1", "1");
$request_array["can_add_new_user"] = $add_user_permission;
$json_request_string = json_encode( $request_array);
echo sendRequest($json_request_string);
?>
Track User Progress For Each Assignment
Track each user's progress against assignments with the help of this API method.
Endpoint URL
https://www.proprofs.com/api/classroom/v1/reports/users/
Request Method
POST
Request Format
JSON
URL Parameters
Name | Required | Type | Description |
token | Yes | String | Unique ProProfs API key |
username | Yes | String | ProProfs username |
start | No | Integer | The starting index for the results. Default 1. |
num | No | Integer | The requested number of results. Default 100. The maximum limit is 100 per API call. |
email_or_id | No | String | This is used to filter records. If mentioned, API will return records for the specified Email or ID. |
group_name
|
No | String | This can be used to fetch the data of group members, such as the status of pending and completed assignments. |
Example Request
POST https://www.proprofs.com/api/classroom/v1/reports/users/
Accept: application/json
Content-Type: application/json
{
"token": "3f39cfe3d52efe4a275be19eb1e9db4e",
"username": "johnsmith",
"start": 1,
"num": 100
}
Response Format
JSON
Response on Success
Response Fields | Description |
status | Will return either "SUCCESS" or "ERROR." |
userCount | The total number of users that exist in the classroom. This value will help you decide the number of API calls required to check each user's progress in the classroom. A single API call can return a maximum of 100 user records. |
The Email of the individual user exists in the classroom. | |
id | The ID of the individual user that exists in the classroom. |
name | Name of the user in the classroom. |
type | Will either return "Quiz" or "Course." |
title | Title of the quiz or course. |
status | Status of assigned quiz and course. It may be either "Pending" or "Completed." |
progress | Progress level of the individual course or quiz. If it is pending, progress will return 0—otherwise, actual completion progress in a course such as 65%, 50%, etc. |
assignedOnDate | The date on which quiz/course was assigned to the user. |
percentCompleted | Exact progress status of the course. In the case of a quiz, the most recent quiz score will return. |
group | Name of groups the user is associated with. |
Example Response
Content-Type: application/json
{
"status":"SUCCESS",
"userCount":1500,
"result":[
{
"email":"john@example.net",
"id":"RE101",
"name":"JOHN SMITH",
"group":[
"Media",
"Advertising",
"Marketing"
],
"assignment":[
{
"type":"course",
"title":"Comparative Media Studies",
"status":"Completed",
"progress":"100",
"assignedOnDate":"02/15/2016",
"percentCompleted":"90"
},
{
"type":"quiz",
"title":"Unit quizzes on comparative media",
"status":"Pending",
"progress":"0",
"assignedOnDate":"02/15/2016",
"percentCompleted":"90"
}
]
}
]
}
Responses on Error
Error Fields | Description |
status | In case of an error, this field will always contain the string "ERROR." |
code | Unique error code |
error | Descriptive error message |
Error Codes and Descriptions
Error Code | Description |
ERR1001 | The request method must be POST. |
ERR1002 | The request is empty. |
ERR1003 | Request parameter shouldn't be more than one. |
ERR1004 | Something wrong with the JSON request. |
ERR1005 | The token is missing. |
ERR1006 | ProProfs username is missing. |
ERR1007 | Incorrect token or username. The input token is not associated with the username. |
ERR1008 | No record was found. |
ERR1009 | The start offset shouldn't be greater than the total no. of users in the classroom. |
ERR1010 | The assignment hasn't been assigned to anyone yet. |
Example Error Response
Content-Type: application/json
{
"status": "ERROR",
"code": "ERR1001",
"error": "API key is invalid"
}
Supported Country Names
Afghanistan, Albania, Algeria, Andorra, Angola, Antigua & Deps, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, Bosnia Herzegovina, Botswana, Brazil","Brunei, Bulgaria, Burkina, Burundi, Cambodia, Cameroon, Canada, Cape Verdi, Central African Rep, Chad, Chile, China, Colombia, Comoros, Congo, Congo {Democratic Rep}, Costa Rica, Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, East Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Fiji, Finland, France, Gabon, Gambia, Georgia, German, Ghana, Greece, Grenada, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland {Republic}, Israel, Italy, Ivory Coast, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, Korea North, Korea South, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Mauritania, Mauritius, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar {Burma}, Namibia, Nauru, Nepal, Netherlands, New Zealand, Nicaragua, Niger, Nigeria, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, Romania, Russian Federation, Rwanda, St Kitts & Nevis, St Lucia, St Vincent & Gr/dines, Samoa, San Marino, Sao Tome & Principe, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia, Slovenia, Solomon Islands, Somalia, South Africa, Spain, Sri Lanka, Sudan, Suriname, Swaziland, Sweden, Switzerland, Syria, Taiwan, Tajikistan ,Tanzania, Thailand, Togo, Tonga, Trinidad & Tobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Uzbekistan, Vanuatu, Vatican City, Venezuela, Vietnam, Yemen, Zambia, Zimbabwe
Classroom User Authentication
Authenticate users in the classroom using this API. It supports two modes of authentication.
-
Authentication using Email/Username only.
If the request contains only an email or a username, we'll detect the learner's availability in the classroom.
-
Authentication using both Email and Password
If email, username, and password are present in API, we'll detect learners' availability in the classroom and authenticate it using their password.
Endpoint URL
https://www.proprofs.com/api/classroom/v1/user/auth/
Request Method
POST
Request Format
JSON
URL Parameters
Name |
Required |
Type |
Description |
token |
Yes |
String |
Unique ProProfs API key |
username |
Yes |
String |
ProProfs username |
email_or_ID |
Yes (Either Email or ID is required) |
String |
Learner's unique Email or Username |
password |
No |
String |
MD5 encrypted password (optional). |
Example Request
POST-https://www.proprofs.com/api/classroom/v1/user/auth/
Accept: application/json
Content-Type: application/json
{
"token": "3f39bfe3d52efe4a975ce19eb1e9db4e",
"username": "johnsmith",
"email_or_ID": "johnsmith@example.com",
"password": "rdsxc234edsx"
}
Response Format
JSON
Response on Success
Response Fields |
Description |
status |
Will return either "SUCCESS" or "ERROR." |
result |
These contain the Email, username, and group name of the user. |
assignment |
Courses and quizzes assigned to the user and the status of the assignment |
user_status |
The user's status can be "active," "inactive," or "expired." |
expiry_date |
Expiration date in mm/dd/yyyy format if available. |
Example Response
Content-Type: application/json
{
"status":"SUCCESS",
"result":[
{
"email":"john@example.net",
"ID":"RE101",
"name":"JOHN SMITH",
"user_status":"active",
"expiry_date":"05/22/2015",
"group":[
"Media",
"Advertising",
"Marketing"
],
"assignment":[
{
"type":"course",
"title":"Comparative Media Studies",
"unique_title":"comparative_media_studies",
"progress":"Completed"
},
{
"type":"quiz",
"title":"Unit quizzes on comparative media",
"unique_title":"unit_quizzes_on_comparative_media",
"progress":"Pending"
}
]
}
]
}
Responses on Error
Error Fields |
Description |
status |
In case of error, this field will always contain the string "ERROR." |
code |
Unique error code |
error |
Descriptive error message |
Error Codes and Descriptions
Error Code |
Description |
ERR2001 |
Request method must be POST |
ERR2002 |
Request is empty |
ERR2002 |
Request parameter shouldn't be more than one |
ERR2004 |
Something wrong with the JSON request |
ERR2005 |
Token is missing |
ERR2006 |
ProProfs username is missing. |
ERR2007 |
Incorrect token or username. The input token is not associated with the username. |
ERR2050 |
Either Email or ID is required |
ERR2051 |
The email pattern is incorrect |
ERR2052 |
User not authorized |
Example Error Response
Content-Type: application/json
{
"status": "ERROR",
"code": "ERR2001",
"error": "Request method must be POST"
}
Live example in PHP
This example will help you authenticate users in the classroom using ProProfs REST API.
<?php
function sendRequest($json)
{
$curl_obj = curl_init();
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_obj, CURLOPT_URL, "https://www.proprofs.com/api/classroom/v1/user/auth/");
curl_setopt($curl_obj, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_obj, CURLOPT_POST, 1);
curl_setopt($curl_obj, CURLOPT_HEADER, 0);
return curl_exec($curl_obj);
}
$request_array = array();
$request_array["token"] = "Your API Key";
$request_array["username"] = "Your ProProfs Username";
$request_array["email_or_ID"] = "john@proprofs.com";
$request_array["password"] = "3aa801d5d85e77ce9f2e431d8bf5fd73";
$json_request_string = json_encode( $request_array);
echo sendRequest($json_request_string);
?>