From 8842134252e4a3e4bd497fe5de743d2151dc6bbb Mon Sep 17 00:00:00 2001
From: Vyacheslav V Sokolov <deathless@t-sk.ru>
Date: Fri, 16 Jun 2017 06:05:09 +0700
Subject: [PATCH 1/4] IMPROVE CHALLENGE VISIBILITY CONTROL
 (https://www.topcoder.com/challenge-details/30057891/?type=develop)

Verification guide: docs/Verification_Guide-Improve Challenge Visibility Control.doc
---
 actions/challenges.js                         |   59 +-
 db_scripts/test_eligibility.delete.sql        |   22 +
 db_scripts/test_eligibility.insert.sql        |  133 ++
 ...e-Improve Challenge Visibility Control.doc |  Bin 0 -> 49664 bytes
 initializers/middleware.js                    |    7 +-
 initializers/v3client.js                      |  143 ++
 package.json                                  |    2 +
 .../get_challenge_accessibility_and_groups    |   21 +
 ...et_challenge_accessibility_and_groups.json |    5 +
 ...Visibility_Control.postman_collection.json |  226 ++
 ...isibility_Control.postman_environment.json |   34 +
 test/postman/Reviewer_Management_API.json     | 1892 +++++++++--------
 test/scripts/mock_v3.js                       |   73 +
 13 files changed, 1726 insertions(+), 891 deletions(-)
 create mode 100644 db_scripts/test_eligibility.delete.sql
 create mode 100644 db_scripts/test_eligibility.insert.sql
 create mode 100644 docs/Verification_Guide-Improve Challenge Visibility Control.doc
 create mode 100644 initializers/v3client.js
 create mode 100644 queries/get_challenge_accessibility_and_groups
 create mode 100644 queries/get_challenge_accessibility_and_groups.json
 create mode 100644 test/postman/New_Challenge_Visibility_Control.postman_collection.json
 create mode 100644 test/postman/New_Challenge_Visibility_Control.postman_environment.json
 create mode 100644 test/scripts/mock_v3.js

diff --git a/actions/challenges.js b/actions/challenges.js
index 0c40bbf2b..f47bbe7a6 100755
--- a/actions/challenges.js
+++ b/actions/challenges.js
@@ -1,9 +1,9 @@
 /*
  * Copyright (C) 2013 - 2014 TopCoder Inc., All Rights Reserved.
  *
- * @version 1.31
+ * @version 1.32
  * @author Sky_, mekanizumu, TCSASSEMBLER, freegod, Ghost_141, kurtrips, xjtufreeman, ecnu_haozi, hesibo, LazyChild,
- * @author isv, muzehyun, bugbuka
+ * @author isv, muzehyun, bugbuka, GFalcon
  * @changes from 1.0
  * merged with Member Registration API
  * changes in 1.1:
@@ -79,9 +79,12 @@
  * - Update challenge type filter.
  * Changes in 1.31:
  * - Remove screeningScorecardId and reviewScorecardId from search challenges api.
+ * Changes in 1.32:
+ * - validateChallenge function now checks if an user belongs to a group via
+ *   user_group_xref for old challenges and by calling V3 API for new ones.
  */
 "use strict";
-/*jslint stupid: true, unparam: true, continue: true */
+/*jslint stupid: true, unparam: true, continue: true, nomen: true */
 
 require('datejs');
 var fs = require('fs');
@@ -851,7 +854,7 @@ var addFilter = function (sql, filter, isMyChallenges, helper, caller) {
  * @since 1.10
  */
 function validateChallenge(api, connection, dbConnectionMap, challengeId, isStudio, callback) {
-    var error, sqlParams, helper = api.helper;
+    var error, sqlParams, helper = api.helper, userId = (connection.caller.userId || 0);
     async.waterfall([
         function (cb) {
             error = helper.checkPositiveInteger(challengeId, 'challengeId') ||
@@ -862,31 +865,47 @@ function validateChallenge(api, connection, dbConnectionMap, challengeId, isStud
             }
             sqlParams = {
                 challengeId: challengeId,
-                user_id: connection.caller.userId || 0
+                user_id: userId
             };
-            async.parallel({
-                accessibility: function (cbx) {
-                    api.dataAccess.executeQuery('check_user_challenge_accessibility', sqlParams, dbConnectionMap, cbx);
-                },
-                exists:  function (cbx) {
-                    api.dataAccess.executeQuery('check_challenge_exists', sqlParams, dbConnectionMap, cbx);
-                }
-            }, cb);
+            api.dataAccess.executeQuery('get_challenge_accessibility_and_groups', sqlParams, dbConnectionMap, cb);
         }, function (res, cb) {
-            if (res.exists.length === 0 || Boolean(res.exists[0].is_studio) !== isStudio) {
+            // If the record with this callengeId doesn't exist in contest_eligibility table
+            // or there's a studio/software mismatch
+            if (res.length === 0 || Boolean(res[0].is_studio) !== isStudio) {
                 cb(new NotFoundError("Challenge not found."));
                 return;
             }
-            var access = res.accessibility[0];
-            if (access.is_private && !access.has_access && connection.caller.accessLevel !== "admin") {
-                if (connection.caller.accessLevel === "anon") {
+            // If there's no corresponding record in group_contest_eligibility
+            // or the user is an admin
+            if (_.isNull(res[0].challenge_group_ind) || _.isUndefined(res[0].challenge_group_ind) || connection.caller.accessLevel === 'admin') {
+                cb();
+                return;
+            }
+            error = false;
+            async.some(res, function (record, cbx) {
+                if (record.challenge_group_ind === 0) {
+                    cbx(!(_.isNull(record.user_group_xref_found) || _.isUndefined(record.user_group_xref_found)));
+                } else {
+                    api.v3client.isUserInGroup(connection, userId, record.group_id, function (err, result) {
+                        if (err) {
+                            error = err;
+                            cbx(true);
+                        } else {
+                            cbx(result);
+                        }
+                    });
+                }
+            }, function (eligible) {
+                if (error) {
+                    cb(error);
+                } else if (eligible) {
+                    cb();
+                } else if (connection.caller.accessLevel === "anon") {
                     cb(new UnauthorizedError());
                 } else {
                     cb(new ForbiddenError());
                 }
-                return;
-            }
-            cb();
+            });
         }
     ], callback);
 }
diff --git a/db_scripts/test_eligibility.delete.sql b/db_scripts/test_eligibility.delete.sql
new file mode 100644
index 000000000..c6a88def0
--- /dev/null
+++ b/db_scripts/test_eligibility.delete.sql
@@ -0,0 +1,22 @@
+DATABASE common_oltp;
+
+DELETE FROM user_group_xref WHERE group_id > 3330000 AND group_id < 3330100;
+DELETE FROM security_groups WHERE group_id > 3330000 AND group_id < 3330100;
+DELETE FROM group_contest_eligibility WHERE contest_eligibility_id > 1110000 AND contest_eligibility_id < 1110100;
+DELETE FROM contest_eligibility WHERE contest_eligibility_id > 1110000 AND contest_eligibility_id < 1110100;
+
+DATABASE tcs_catalog;
+
+DELETE FROM review_item_comment WHERE review_item_comment_id > 7770000 AND review_item_id < 7770100;
+DELETE FROM review_item WHERE review_item_id > 5550000 AND review_item_id < 5550100;
+DELETE FROM review WHERE review_id > 4440000 AND review_id < 4440100;
+DELETE FROM scorecard_question WHERE scorecard_question_id = 3330333;
+DELETE FROM scorecard_section WHERE scorecard_section_id = 3330333;
+DELETE FROM scorecard_group WHERE scorecard_group_id = 3330333;
+DELETE FROM scorecard WHERE scorecard_id = 3330333;
+DELETE FROM submission WHERE submission_id > 2220000 AND submission_id < 2220100;
+DELETE FROM prize WHERE project_id > 2220000 AND project_id < 2220100;
+DELETE FROM upload WHERE project_id > 2220000 AND project_id < 2220100;
+DELETE FROM resource WHERE project_id > 2220000 AND project_id < 2220100;
+DELETE FROM project_phase WHERE project_id > 2220000 AND project_id < 2220100;
+DELETE FROM project WHERE project_id > 2220000 AND project_id < 2220100;
diff --git a/db_scripts/test_eligibility.insert.sql b/db_scripts/test_eligibility.insert.sql
new file mode 100644
index 000000000..05d827c15
--- /dev/null
+++ b/db_scripts/test_eligibility.insert.sql
@@ -0,0 +1,133 @@
+DATABASE tcs_catalog;
+
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (2220001, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (2220002, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (2220003, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (2220004, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (2220005, 1, 14, "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (7770001, 2220001, 17, 3, CURRENT, CURRENT, 0, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (7770002, 2220002, 17, 3, CURRENT, CURRENT, 0, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (7770003, 2220003, 17, 3, CURRENT, CURRENT, 0, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (7770004, 2220004, 17, 3, CURRENT, CURRENT, 0, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (7770005, 2220005, 17, 3, CURRENT, CURRENT, 0, "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO resource (resource_id, resource_role_id, project_id, project_phase_id, user_id, create_user, create_date, modify_user, modify_date)
+	VALUES (8880001, 20, 2220001, 7770001, 132456, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO resource (resource_id, resource_role_id, project_id, project_phase_id, user_id, create_user, create_date, modify_user, modify_date)
+	VALUES (8880002, 20, 2220002, 7770002, 132456, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO resource (resource_id, resource_role_id, project_id, project_phase_id, user_id, create_user, create_date, modify_user, modify_date)
+	VALUES (8880003, 20, 2220003, 7770003, 132456, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO resource (resource_id, resource_role_id, project_id, project_phase_id, user_id, create_user, create_date, modify_user, modify_date)
+	VALUES (8880004, 20, 2220004, 7770004, 132456, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO resource (resource_id, resource_role_id, project_id, project_phase_id, user_id, create_user, create_date, modify_user, modify_date)
+	VALUES (8880005, 20, 2220005, 7770005, 132456, "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO upload (upload_id, project_id, resource_id, upload_type_id, upload_status_id, parameter, create_user, create_date, modify_user, modify_date)
+	VALUES (9990001, 2220001, 8880001, 1, 1, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO upload (upload_id, project_id, resource_id, upload_type_id, upload_status_id, parameter, create_user, create_date, modify_user, modify_date)
+	VALUES (9990002, 2220002, 8880002, 1, 1, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO upload (upload_id, project_id, resource_id, upload_type_id, upload_status_id, parameter, create_user, create_date, modify_user, modify_date)
+	VALUES (9990003, 2220003, 8880003, 1, 1, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO upload (upload_id, project_id, resource_id, upload_type_id, upload_status_id, parameter, create_user, create_date, modify_user, modify_date)
+	VALUES (9990004, 2220004, 8880004, 1, 1, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO upload (upload_id, project_id, resource_id, upload_type_id, upload_status_id, parameter, create_user, create_date, modify_user, modify_date)
+	VALUES (9990005, 2220005, 8880005, 1, 1, "---", "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO prize (prize_id, project_id, place, prize_amount, prize_type_id, number_of_submissions, create_user, create_date, modify_user, modify_date)
+	VALUES (1110001, 2220001, 1, 1000, 14, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO prize (prize_id, project_id, place, prize_amount, prize_type_id, number_of_submissions, create_user, create_date, modify_user, modify_date)
+	VALUES (1110002, 2220002, 1, 1000, 14, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO prize (prize_id, project_id, place, prize_amount, prize_type_id, number_of_submissions, create_user, create_date, modify_user, modify_date)
+	VALUES (1110003, 2220003, 1, 1000, 14, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO prize (prize_id, project_id, place, prize_amount, prize_type_id, number_of_submissions, create_user, create_date, modify_user, modify_date)
+	VALUES (1110004, 2220004, 1, 1000, 14, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO prize (prize_id, project_id, place, prize_amount, prize_type_id, number_of_submissions, create_user, create_date, modify_user, modify_date)
+	VALUES (1110005, 2220005, 1, 1000, 14, 1, "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO submission (submission_id, upload_id, submission_status_id, submission_type_id, create_user, create_date, modify_user, modify_date, prize_id)
+	VALUES (2220001, 9990001, 1, 3, "132456", CURRENT, "132456", CURRENT, 1110001);
+INSERT INTO submission (submission_id, upload_id, submission_status_id, submission_type_id, create_user, create_date, modify_user, modify_date, prize_id)
+	VALUES (2220002, 9990002, 1, 3, "132456", CURRENT, "132456", CURRENT, 1110002);
+INSERT INTO submission (submission_id, upload_id, submission_status_id, submission_type_id, create_user, create_date, modify_user, modify_date, prize_id)
+	VALUES (2220003, 9990003, 1, 3, "132456", CURRENT, "132456", CURRENT, 1110003);
+INSERT INTO submission (submission_id, upload_id, submission_status_id, submission_type_id, create_user, create_date, modify_user, modify_date, prize_id)
+	VALUES (2220004, 9990004, 1, 3, "132456", CURRENT, "132456", CURRENT, 1110004);
+INSERT INTO submission (submission_id, upload_id, submission_status_id, submission_type_id, create_user, create_date, modify_user, modify_date, prize_id)
+	VALUES (2220005, 9990005, 1, 3, "132456", CURRENT, "132456", CURRENT, 1110005);
+
+INSERT INTO scorecard (scorecard_id, scorecard_status_id, scorecard_type_id, project_category_id, name, version, min_score, max_score, create_user, create_date, modify_user, modify_date, version_number)
+	VALUES (3330333, 1, 7, 14, "---", "---", 0, 100, "132456", CURRENT, "132456", CURRENT, 1);
+
+INSERT INTO scorecard_group	(scorecard_group_id, scorecard_id, name, weight, sort, create_user, create_date, modify_user, modify_date, version)
+	VALUES (3330333, 3330333, "---", 100, 1, "132456", CURRENT, "132456", CURRENT, 1);
+	
+INSERT INTO scorecard_section (scorecard_section_id, scorecard_group_id, name, weight, sort, create_user, create_date, modify_user, modify_date, version)
+	VALUES (3330333, 3330333, "---", 100, 1, "132456", CURRENT, "132456", CURRENT, 1);
+
+INSERT INTO scorecard_question (scorecard_question_id, scorecard_question_type_id, scorecard_section_id, description, weight, sort, upload_document, upload_document_required, create_user, create_date, modify_user, modify_date, version)
+	VALUES (3330333, 1, 3330333, '---', 100, 1, 0, 0, "132456", CURRENT, "132456", CURRENT, 1);
+
+INSERT INTO review (review_id, resource_id, submission_id, project_phase_id, scorecard_id, committed, create_user, create_date, modify_user, modify_date)
+	VALUES (4440001, 8880001, 2220001, 7770001, 3330333, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review (review_id, resource_id, submission_id, project_phase_id, scorecard_id, committed, create_user, create_date, modify_user, modify_date)
+	VALUES (4440002, 8880002, 2220002, 7770002, 3330333, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review (review_id, resource_id, submission_id, project_phase_id, scorecard_id, committed, create_user, create_date, modify_user, modify_date)
+	VALUES (4440003, 8880003, 2220003, 7770003, 3330333, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review (review_id, resource_id, submission_id, project_phase_id, scorecard_id, committed, create_user, create_date, modify_user, modify_date)
+	VALUES (4440004, 8880004, 2220004, 7770004, 3330333, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review (review_id, resource_id, submission_id, project_phase_id, scorecard_id, committed, create_user, create_date, modify_user, modify_date)
+	VALUES (4440005, 8880005, 2220005, 7770005, 3330333, 1, "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO review_item	(review_item_id, review_id, scorecard_question_id, upload_id, answer, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (5550001, 4440001, 3330333, 9990001, "---", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item	(review_item_id, review_id, scorecard_question_id, upload_id, answer, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (5550002, 4440002, 3330333, 9990002, "---", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item	(review_item_id, review_id, scorecard_question_id, upload_id, answer, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (5550003, 4440003, 3330333, 9990003, "---", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item	(review_item_id, review_id, scorecard_question_id, upload_id, answer, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (5550004, 4440004, 3330333, 9990004, "---", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item	(review_item_id, review_id, scorecard_question_id, upload_id, answer, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (5550005, 4440005, 3330333, 9990005, "---", 1, "132456", CURRENT, "132456", CURRENT);
+	
+
+INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (7770001, 8880001, 5550001, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (7770002, 8880002, 5550002, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (7770003, 8880003, 5550003, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (7770004, 8880004, 5550004, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date)
+	VALUES (7770005, 8880005, 5550005, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
+
+DATABASE common_oltp;
+
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110001, 2220001, 0);
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110002, 2220002, 0);
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110003, 2220003, 0);
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110004, 2220004, 0);
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110005, 2220005, 0);
+
+INSERT INTO security_groups (group_id, description, challenge_group_ind) VALUES (3330001, "Eligibility - Old logic - with user", 0);
+INSERT INTO security_groups (group_id, description, challenge_group_ind) VALUES (3330002, "Eligibility - Old logic - no users", 0);
+INSERT INTO security_groups (group_id, description, challenge_group_ind) VALUES (3330003, "Eligibility - New logic - with user", 1);
+INSERT INTO security_groups (group_id, description, challenge_group_ind) VALUES (3330004, "Eligibility - New logic - no users", 1);
+
+INSERT INTO user_group_xref (user_group_id, login_id, group_id) VALUES (5550001, 132458, 3330001);
+
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110002, 3330001);
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110003, 3330002);
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110004, 3330003);
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110005, 3330004);
diff --git a/docs/Verification_Guide-Improve Challenge Visibility Control.doc b/docs/Verification_Guide-Improve Challenge Visibility Control.doc
new file mode 100644
index 0000000000000000000000000000000000000000..5385983df3f5a6c74c77c93f4fa89de8b359be7d
GIT binary patch
literal 49664
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
Sn)bt#zl=$g8tnga`u`8QtllXA

literal 0
HcmV?d00001

diff --git a/initializers/middleware.js b/initializers/middleware.js
index cf370e589..98fb669ce 100644
--- a/initializers/middleware.js
+++ b/initializers/middleware.js
@@ -2,8 +2,8 @@
 /*
  * Copyright (C) 2013 - 2014 TopCoder Inc., All Rights Reserved.
  *
- * @version 1.3
- * @author vangavroche, TCSASSEMBLER
+ * @version 1.4
+ * @author vangavroche, TCSASSEMBLER, GFalcon
  * changes in 1.1:
  * - add cache support (add preCacheProcessor and postCacheProcessor)
  * changes in 1.2:
@@ -12,6 +12,8 @@
  * - add authorizationPreProcessor
  * changes in 1.3:
  * - add force refresh check for preCacheProcessor
+ * changes in 1.4:
+ * - store the authorization token in connection.authToken
  */
 "use strict";
 
@@ -105,6 +107,7 @@ exports.middleware = function (api, next) {
                     cb(null, reg.exec(authHeader)[1]);
                 }
             }, function (token, cb) {
+            	connection.authToken = token;
                 jwt.verify(token,
                     api.config.tcConfig.oauthClientSecret,
                     { audience: api.config.tcConfig.oauthClientId },
diff --git a/initializers/v3client.js b/initializers/v3client.js
new file mode 100644
index 000000000..dabb7759d
--- /dev/null
+++ b/initializers/v3client.js
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2017 TopCoder Inc., All Rights Reserved.
+ *
+ * V3 API client
+ *
+ * @version 1.0
+ * @author GFalcon
+ */
+"use strict";
+/*jslint nomen: true*/
+
+var request = require('request');
+var _ = require('underscore');
+var async = require('async');
+
+/**
+ * The URL of the V3 API
+ */
+var v3url = process.env.TC_API_V3_URL || 'http://localhost:8084/v3/';
+
+/**
+ * Cached V3 API tokens.
+ * 
+ * This object stores V2 tokens as keys and V3 tokens as values
+ */
+var tokens = {};
+
+/**
+ * Call the service. It handles both errors and bad response status codes.
+ *
+ * @param {Object} params - parameters for a request
+ * @param {Function<err, body>} callback - the callback function. 
+ *      It will get either an Error object or a response body.
+ */
+function callService(params, callback) {
+    params.json = true;
+    request(params, function (err, response, body) {
+        if (err) {
+            callback(err);
+            return;
+        }
+        /*jslint eqeq: true*/
+        if (response.statusCode != 200) {
+            /*jslint eqeq: false*/
+            callback(new Error('API V3 returned ' + response.statusCode + ' ' + (response.statusMessage || '')));
+            return;
+        }
+        callback(null, body);
+    });
+}
+
+/**
+ * Get the V3 API authorization token to use in subsequent calls
+ *
+ * @param {Object} connection - the connection object provided by ActionHero
+ * @param {Function<err, token>} callback - this function receives either an error,
+ *        a V3 token or nothing at all (if the current connection's user is anonymous)
+ */
+function getToken(connection, callback) {
+    // Anonymous
+    if (_.isUndefined(connection.authToken)) {
+        callback();
+        return;
+    }
+    // Cached token
+    if (!_.isUndefined(tokens[connection.authToken])) {
+        callback(null, tokens[connection.authToken]);
+        return;
+    }
+    // Get the token by calling the API
+    callService({
+        url: v3url + 'authorizations',
+        method: 'POST',
+        body: {
+            param: {
+                token: connection.authToken
+            }
+        }
+    }, function (err, body) {
+        if (err) {
+            callback(err);
+        } else {
+            tokens[connection.authToken] = body.result.content.token;
+            callback(null, body.result.content.token);
+        }
+    });
+}
+
+/**
+ * Get IDs of users in the specified group
+ *
+ * @param {Object} connection - the connection object provided by ActionHero
+ * @param {Number} groupId - the group ID
+ * @param {Function<err, members>} callback - the callback. Receives either an error
+ *        or the list of group's users an array of numeric IDs
+ */
+function getGroupMembers(connection, groupId, callback) {
+    getToken(connection, function (err, token) {
+        if (err) {
+            callback(err);
+            return;
+        }
+        callService({
+            url: v3url + 'groups/' + groupId + '/members',
+            method: 'GET',
+            headers: {
+                'Authorization': 'Bearer ' + token
+            }
+        }, function (err, body) {
+            if (err) {
+                callback(err);
+            } else {
+                callback(null, body.result.content.map(function (item) {
+                    return item.memberId;
+                }));
+            }
+        });
+    });
+}
+
+exports.v3client = function (api, next) {
+    api.v3client = {
+        /**
+         * Check if the user belongs to the group
+         *
+         * @param {Object} connection - the connection object provided by ActionHero
+         * @param {Number} userId - the user ID
+         * @param {Number} groupId - the group ID
+         * @param {Function<err, isIn>} callback - the callback. The second parameter
+         *        is boolean vwhich is true if the user is found in the group.
+         */
+        isUserInGroup: function (connection, userId, groupId, callback) {
+            getGroupMembers(connection, groupId, function (err, members) {
+                if (err) {
+                    callback(err);
+                } else {
+                    callback(null, members.indexOf(userId) >= 0);
+                }
+            });
+        }
+    };
+    next();
+};
diff --git a/package.json b/package.json
index b9daa5614..c3e6dfc2a 100644
--- a/package.json
+++ b/package.json
@@ -21,9 +21,11 @@
     "bcrypt": "0.7.x",
     "bigdecimal": "0.6.x",
     "bignum": "0.6.x",
+    "body-parser": "^1.17.2",
     "crypto": "0.0.x",
     "datejs": "0.0.x",
     "email-templates": "0.1.x",
+    "express": "^4.15.3",
     "forums-wrapper": "git://github.com/cloudspokes/forums-wrapper.git#12b57be495c2e10431173522bc9eff60e0575959",
     "heapdump": "^0.3.6",
     "highlight.js": ">= 8.3.0",
diff --git a/queries/get_challenge_accessibility_and_groups b/queries/get_challenge_accessibility_and_groups
new file mode 100644
index 000000000..6ca557db3
--- /dev/null
+++ b/queries/get_challenge_accessibility_and_groups
@@ -0,0 +1,21 @@
+SELECT  
+  ce.is_studio,
+  sg.challenge_group_ind,
+  ugx.group_id AS user_group_xref_found,
+  sg.group_id AS group_id
+FROM 
+  (
+    (
+      contest_eligibility ce 
+      LEFT JOIN group_contest_eligibility gce
+      ON ce.contest_eligibility_id = gce.contest_eligibility_id
+    ) 
+    LEFT JOIN security_groups sg 
+    ON gce.group_id = sg.group_id
+  ) 
+  LEFT JOIN (
+    SELECT group_id FROM user_group_xref WHERE login_id=@user_id@
+  ) ugx
+  ON ugx.group_id = gce.group_id
+WHERE ce.contest_id = @challengeId@
+
diff --git a/queries/get_challenge_accessibility_and_groups.json b/queries/get_challenge_accessibility_and_groups.json
new file mode 100644
index 000000000..218f37428
--- /dev/null
+++ b/queries/get_challenge_accessibility_and_groups.json
@@ -0,0 +1,5 @@
+{
+  "name"    : "get_challenge_accessibility_and_groups",
+  "db"      : "tcs_catalog",
+  "sqlfile" : "get_challenge_accessibility_and_groups"
+}
\ No newline at end of file
diff --git a/test/postman/New_Challenge_Visibility_Control.postman_collection.json b/test/postman/New_Challenge_Visibility_Control.postman_collection.json
new file mode 100644
index 000000000..521f5e6a2
--- /dev/null
+++ b/test/postman/New_Challenge_Visibility_Control.postman_collection.json
@@ -0,0 +1,226 @@
+{
+	"id": "ba962be9-0d58-f187-8809-008a39bc2240",
+	"name": "New Challenge Visibility Control",
+	"description": "",
+	"order": [],
+	"folders": [
+		{
+			"id": "712ffa63-a959-e4a3-6af9-84d4f236b2f3",
+			"name": "Get checkpoints",
+			"description": "",
+			"order": [
+				"7c7643c6-89ab-641e-b67a-32b3ac91e09e",
+				"d830ec36-eb8e-9586-c546-14af77cec152",
+				"2af8f0d9-f3e8-c58a-ca3d-1130e4b07371",
+				"f545bbfc-36d7-6567-25a8-b4d6634575e7",
+				"a3ae5124-2077-4ff2-4e02-afae7670bbe5"
+			],
+			"owner": "316251"
+		},
+		{
+			"id": "0eeb693c-c6b6-e23b-156d-cff5f21dbb27",
+			"name": "login",
+			"description": "",
+			"order": [
+				"6bed8920-6800-0ae0-e63d-b39b05c7f50c",
+				"fd4cd936-2d4d-a272-f402-d0f7b6cab82f"
+			],
+			"owner": "316251",
+			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
+		}
+	],
+	"timestamp": 1474156790593,
+	"owner": "316251",
+	"public": false,
+	"requests": [
+		{
+			"id": "2af8f0d9-f3e8-c58a-ca3d-1130e4b07371",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220003",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497550652259,
+			"name": "Old logic, access denied",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": [],
+			"folder": "712ffa63-a959-e4a3-6af9-84d4f236b2f3"
+		},
+		{
+			"id": "6bed8920-6800-0ae0-e63d-b39b05c7f50c",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/auth",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
+			"version": 2,
+			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474159263289,
+			"name": "Login as admin user",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"heffan\", \n    \"password\": \"password\"\n}",
+			"folder": "0eeb693c-c6b6-e23b-156d-cff5f21dbb27"
+		},
+		{
+			"id": "7c7643c6-89ab-641e-b67a-32b3ac91e09e",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220001",
+			"queryParams": [],
+			"pathVariables": {},
+			"pathVariableData": [],
+			"preRequestScript": null,
+			"method": "GET",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"data": null,
+			"dataMode": "params",
+			"name": "No groups (challenge is not private)",
+			"description": "",
+			"descriptionFormat": "html",
+			"time": 1497550504090,
+			"version": 2,
+			"responses": [],
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"folder": "712ffa63-a959-e4a3-6af9-84d4f236b2f3"
+		},
+		{
+			"id": "a3ae5124-2077-4ff2-4e02-afae7670bbe5",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220005",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497550755372,
+			"name": "New logic, access denied",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": [],
+			"folder": "712ffa63-a959-e4a3-6af9-84d4f236b2f3"
+		},
+		{
+			"id": "d830ec36-eb8e-9586-c546-14af77cec152",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220002",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497550612717,
+			"name": "Old logic, access allowed",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": [],
+			"folder": "712ffa63-a959-e4a3-6af9-84d4f236b2f3"
+		},
+		{
+			"id": "f545bbfc-36d7-6567-25a8-b4d6634575e7",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220004",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497550705028,
+			"name": "New logic, access allowed",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": [],
+			"folder": "712ffa63-a959-e4a3-6af9-84d4f236b2f3"
+		},
+		{
+			"id": "fd4cd936-2d4d-a272-f402-d0f7b6cab82f",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/auth",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
+			"version": 2,
+			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474159245944,
+			"name": "Log in as ordinary user",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"user\", \n    \"password\": \"password\"\n}",
+			"folder": "0eeb693c-c6b6-e23b-156d-cff5f21dbb27"
+		}
+	]
+}
\ No newline at end of file
diff --git a/test/postman/New_Challenge_Visibility_Control.postman_environment.json b/test/postman/New_Challenge_Visibility_Control.postman_environment.json
new file mode 100644
index 000000000..143271c12
--- /dev/null
+++ b/test/postman/New_Challenge_Visibility_Control.postman_environment.json
@@ -0,0 +1,34 @@
+{
+  "id": "d761e292-418f-09b5-8b27-9d93eae42f1e",
+  "name": "New Challenge Visibility Control",
+  "values": [
+    {
+      "enabled": true,
+      "key": "url",
+      "value": "http://localhost:8080/api/v2",
+      "type": "text"
+    },
+    {
+      "enabled": true,
+      "key": "adminToken",
+      "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NtYS5hdXRoMC5jb20vIiwic3ViIjoiYWR8MTMyNDU2IiwiYXVkIjoiQ01hQnV3U25ZMFZ1NjhQTHJXYXR2dnUzaUlpR1BoN3QiLCJleHAiOjE1MTAxNTkyNjgsImlhdCI6MTQ3NDE1OTI2OH0.KRgW9TxNOEiEu5YdQnXQO1nKFULIuy7JlzDZdq9QFQY",
+      "type": "text"
+    },
+    {
+      "enabled": true,
+      "key": "userToken",
+      "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NtYS5hdXRoMC5jb20vIiwic3ViIjoiYWR8MTMyNDU4IiwiYXVkIjoiQ01hQnV3U25ZMFZ1NjhQTHJXYXR2dnUzaUlpR1BoN3QiLCJleHAiOjE1MTAxNzI0MDgsImlhdCI6MTQ3NDE3MjQwOH0.sIG2FoNiCldizzcTMQ9iAFh-PCigNGBAlicxms6uTkk",
+      "type": "text"
+    },
+    {
+      "enabled": true,
+      "key": "authToken",
+      "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NtYS5hdXRoMC5jb20vIiwic3ViIjoiYWR8MTMyNDU4IiwiYXVkIjoiQ01hQnV3U25ZMFZ1NjhQTHJXYXR2dnUzaUlpR1BoN3QiLCJleHAiOjE1MTAyODI4MDMsImlhdCI6MTQ3NDI4MjgwM30.s6q_FRFryMslkWCkR0wPSWwTopkZhHH8g9R_4GPf9m4",
+      "type": "text"
+    }
+  ],
+  "timestamp": 1497565761064,
+  "_postman_variable_scope": "environment",
+  "_postman_exported_at": "2017-06-15T22:29:38.942Z",
+  "_postman_exported_using": "Postman/5.0.1"
+}
\ No newline at end of file
diff --git a/test/postman/Reviewer_Management_API.json b/test/postman/Reviewer_Management_API.json
index cd7d0837e..b58200657 100755
--- a/test/postman/Reviewer_Management_API.json
+++ b/test/postman/Reviewer_Management_API.json
@@ -1,203 +1,214 @@
 {
-	"id": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+	"id": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 	"name": "Admin App - TC API Reviewer Management API",
 	"description": "",
 	"order": [],
 	"folders": [
 		{
-			"id": "142d5b1b-b304-bced-c1f3-b59e8187d2aa",
+			"id": "498ee2d2-174c-7049-3cc4-43b4e330083b",
+			"name": "Get checkpoints",
+			"description": "",
+			"order": [
+				"8db48405-6ba0-f116-06c6-cc34cffd77c1",
+				"03badc56-40a6-750a-a0fa-937d6af188b8",
+				"76441abd-9a70-5fe9-93e1-59dd0318384f",
+				"60330c29-7ed3-b453-8d01-652084ca19b1",
+				"46fea4dc-9708-763b-c0cc-713ac9c1a9eb"
+			],
+			"owner": "316251"
+		},
+		{
+			"id": "305f84dd-24a3-cbe7-97f1-7063b14a5f42",
 			"name": "create admin",
 			"description": "",
 			"order": [
-				"17cd6d9b-17b2-1f5c-a0d8-e0948c718d26",
-				"fc7d7ac4-d1e1-a441-6717-ecb50b9ad7f6",
-				"9bccd2a2-8aac-1931-b78e-8b61a99415a4",
-				"8b843cb6-1fc6-8c0b-1d6d-f54d9470cf76",
-				"88ae8323-4232-1675-8796-e06c6997f3f9",
-				"2297e0e7-4871-b68e-6258-b59a1da3acd4",
-				"59d2ab3f-1ef2-3925-42c4-754eced98658",
-				"43dbe6f5-32e5-f0f0-5735-42a3a9f08120"
+				"2dc63d17-e288-5432-1e70-ea3b38dbd939",
+				"13cfe266-39c7-4139-4526-0f45743c1ec1",
+				"9ddc746e-591c-69e7-2326-a05aa52f7109",
+				"e498adc6-5df6-ea02-491f-de46950eff67",
+				"0dc9a5b6-60b7-0006-30f3-a93f6a23efee",
+				"b762147c-aae5-9630-dfe7-d6468a8a3843",
+				"e5179ef5-cef4-a08b-9fbf-cd63b4a4066d",
+				"4b62272c-8167-0310-930a-d5f0526c52a8"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "8052cbf5-e206-af03-0392-e853f3f06bf4",
+			"id": "1438537c-a455-8206-0b64-bcb6e98cb447",
 			"name": "create copilot",
 			"description": "",
 			"order": [
-				"3a87b2a7-3761-5089-38d9-6c7d3796e984",
-				"2cb65342-ba7f-b473-6afc-8a729da04563",
-				"e058d344-3c5d-951a-c86e-ebfeba41bab8",
-				"42fc7559-c2a2-8b85-67e3-3812ae0d5998",
-				"518db876-c166-6aa7-d484-b8b778297b4e",
-				"9fb05ea1-f85e-209e-7619-e40450acd7f3",
-				"79444594-2c40-1e6e-9f71-f22d57828026",
-				"26e53a5b-bef9-17f2-fb02-34595bf8a8c4",
-				"9ff114f0-56ca-f56c-08e4-3bb4dcaac10f",
-				"6727946e-aa76-0996-e734-800bb07cf5c6",
-				"49c5d6f4-5b86-3e9f-8c82-ef7430411264",
-				"858050d9-d3f2-900f-79a8-4a56c7ca586b",
-				"68d189c2-eb05-ded4-1e97-414ebde03ab8",
-				"34ac4817-1082-2274-ed98-f17b63e62786",
-				"477195d0-14ca-6a6e-274f-513e7d50a45c"
+				"597e4417-c496-e48d-801c-5504e9201d18",
+				"16572157-2b12-830a-35df-e87fee271e02",
+				"121ce835-ccff-770b-cf19-d4c8715734ee",
+				"e3c87489-0dac-48e0-869b-117743e7fb01",
+				"7667b82b-d891-3959-4469-2b6e3673ed03",
+				"1a4b8b23-8b80-aaf8-5350-63d6e573ef85",
+				"6fc730e8-851c-c0c0-4dbf-79a9fc7c67e1",
+				"4c54c5ab-5d8b-a873-49b0-0f3d63d6b42f",
+				"497b04d4-c729-3008-107e-b69aead7e3db",
+				"676c46be-e1bf-ba14-d357-1ca01119054b",
+				"d7913d8d-6c66-b1cd-62d5-c40393c22661",
+				"0303a184-79f4-7216-4ecc-797f324d6f3e",
+				"dcf543f4-41e0-0506-52a1-d9abc07132e2",
+				"216bd35b-31af-ba0a-497d-9b93576104b7",
+				"f6e293f3-5650-d73b-36e8-97d587604a4b"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "7544e9b2-c615-4376-7145-511bb968c906",
+			"id": "ff6b7b38-7532-5c03-26db-c68f88696eb9",
 			"name": "create reviewer",
 			"description": "",
 			"order": [
-				"ebcf31ae-035b-49ac-41d4-fa4484eff6a1",
-				"b84bd2e1-cd0b-3489-3c11-917a1624249e",
-				"4a6e3f4b-cb9e-978d-281f-81a57545b0ac",
-				"ac18e672-1e47-37fa-1ae8-85eed1beab2d",
-				"202e4545-829b-f158-372f-206e632d609f",
-				"8679c69e-e94d-7188-60fd-bbe506b851d1",
-				"2f652b9b-7dc4-8140-9ac5-e6995f1a3fba",
-				"a8e7c6c2-1cfb-e3ad-af5c-9c27bd71924b",
-				"d0a6e94f-3c59-2398-f0f5-a1d54a6f4e15",
-				"03ce940d-9b2d-b46b-0f84-48da5529615c",
-				"24bc8058-d1ef-1f33-eb64-ede9b9663f49",
-				"84cd43c0-c407-365b-f1f4-07929e2876cc",
-				"8a43eff3-3f9a-83a2-6734-a683e29252c8",
-				"790064a6-e429-1f9c-24b5-7112ce1fb8b2",
-				"0865091c-8f04-f18c-f9e5-e5c182bc8ab3",
-				"9e458d5b-5aa5-05ec-6240-7d171c75cf5e",
-				"0e55b155-b8b7-ae58-5505-f1ff9ba0eb36",
-				"a466f2b7-2f9c-4a14-fc0e-eee7981cdb42",
-				"16044f47-5b3d-2ba2-1787-8e6f7e78af97"
+				"0b12cd19-4eda-4c11-e926-7f8c8920d2ab",
+				"1b4714ed-d2cb-cd10-98c3-4965448e6b17",
+				"617c7aa5-6a13-7f08-3621-050d7bb9fb42",
+				"32fd36b2-7397-5e93-8b6c-755557c77586",
+				"b557e83b-d42a-a7b8-8a9c-8fa2270188b1",
+				"39116742-fb19-f8ba-f177-1e1910b0dd50",
+				"f8efe766-a322-ee21-b4f5-78d78642af19",
+				"789c4564-2cb5-a4da-04f4-0d3a432950dd",
+				"38247541-c9f7-206a-f77a-2cdbd47c3968",
+				"5eee889a-83e0-96da-a476-ffd50ad66960",
+				"c3dcb7b2-c57c-398e-62d8-170db419f168",
+				"a407a482-48ea-5561-9158-71259c3e8a3b",
+				"c42386fb-4880-273c-5f56-514a24108ffc",
+				"7b7bc600-f9a9-e566-ccd3-4bff678d50da",
+				"37345c71-a682-1d40-ff87-7739450f0904",
+				"8b52ad5d-31a4-8a84-4d24-ceb91021a467",
+				"61f8c960-54fd-f1b3-0cc3-8ac89de6361a",
+				"0baebd12-e9e9-b75f-5409-4bdd22db26e1",
+				"12863b80-7674-2de7-7371-1921c77e6ad1"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "2964b89d-893b-aada-2e0e-c4136b920508",
+			"id": "43eec092-7864-262f-fe9d-a2a416e1a2d8",
 			"name": "get all admins",
 			"description": "",
 			"order": [
-				"b0bfa529-5f58-d5a6-e1bc-2099abfa253f",
-				"b83cdcb1-5abe-0f73-1c9c-b558c0634baf",
-				"144d7cd5-cedb-1e15-fec5-27c5e56863df",
-				"e10c59ae-1669-54bd-03bb-4de19d51fb5e",
-				"828d7e47-ee45-5ed2-fe37-2114815e84f1"
+				"6ab91574-6c11-9d54-a6a3-a87304bec08b",
+				"c21ce35d-8558-ca77-c6af-8a6d930564b9",
+				"1739bc1d-f48e-2f66-c423-d56a7dd6925f",
+				"b5f484a7-b5e9-e763-97fb-5d750d08cd6d",
+				"1c6e9cc9-1d15-c2cb-0b7d-7b552558f26c"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "1a80812c-dfa2-5dc4-aca7-299502bbc807",
+			"id": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9",
 			"name": "get all copilots",
 			"description": "",
 			"order": [
-				"67db2b5a-4b85-4e18-2709-5c475849329f",
-				"2d18170b-9631-3c97-fc68-51d0ed76766c",
-				"a47c9a54-d12a-6801-02a1-c57c420237cf",
-				"21bdc1e1-c5b2-d063-fd54-386ab396b224",
-				"897d4baa-72d5-1eca-ff61-51db0d14408c"
+				"0554d512-8935-33a8-6447-85eba32b8873",
+				"2e452537-8224-19aa-e79d-3bdd2d3d6092",
+				"62a5e348-741b-fd42-ed58-839def26d4bf",
+				"05f2c4f0-2f80-95ed-54f6-2b731960bdac",
+				"e1dd94fd-2dea-4082-61f8-a551fcf1d55f"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "81516934-d74e-f97d-262f-21d87d5961d1",
+			"id": "790ca3b9-d88f-04e9-b65d-fd59442f3394",
 			"name": "get all reviewers",
 			"description": "",
 			"order": [
-				"08364378-8daf-8159-547e-fac22ca27847",
-				"c28b4a81-8ee7-24ba-fc8b-54b1b3642fab",
-				"8bd1727c-34f8-ced7-eb92-d50cc6e56772",
-				"fe0a03f9-4969-651a-5eed-01de9398498e",
-				"ddf839fa-733a-056a-8a2c-a1e56d0e9072",
-				"ef7fd1f5-a302-b7b6-a772-a43eb3b82062",
-				"c0db4362-622a-b556-1991-80df568707b7",
-				"f784d0d8-8645-7633-91c6-54ec81aa95ff",
-				"c1d0d1a9-a8b9-8ee7-c6e6-e539a52fbf35"
+				"f88f1d64-7461-652d-f3fb-6c48fa553e61",
+				"e61162b5-ccbd-79fc-7daa-ad1e9e71f8db",
+				"d0457f1e-5957-b83c-f603-aaf45690e622",
+				"fbdd77d2-d138-3a05-a543-d5302daeca50",
+				"c15dff6e-1a55-a875-3460-2d2097b2f960",
+				"4f247a99-8f61-47ea-3323-68ec5a7e7000",
+				"9308798f-cbfd-b44c-1d47-6ef6650424f0",
+				"4547a259-b0cf-c5e6-8d04-035b9ae443ce",
+				"52edc048-18d6-ce4d-5312-69286ce2e2f9"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "fedff379-68f7-3322-d2e9-29471d82cc60",
+			"id": "14f4dd06-76e0-ca22-602f-0ad3974aa4fa",
 			"name": "login",
 			"description": "",
 			"order": [
-				"f6c44b3f-570d-e48f-3b7e-8419a9ebe9b6",
-				"a495567b-a450-037f-ca8e-c9da52116890"
+				"1b96aaf0-f11e-a4c3-4217-c0833e6c75ee",
+				"f901106d-47f8-080c-d56b-7badc5774481"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea",
+			"id": "4ff79efc-3da3-8c10-cbf9-8a883260cc55",
 			"name": "remove admin",
 			"description": "",
 			"order": [
-				"d2bf20ce-e0ed-a347-69dc-577e34dbefd0",
-				"07358622-f7d4-9233-8dc1-204acb7b1ccf",
-				"3f0e98fb-e97a-e6ed-8dc7-e864b1447e03",
-				"c8075e84-bb8d-7596-ba92-5990705f93bc",
-				"b8d3fef6-214c-5032-3002-f6c16f3288e2",
-				"2f633003-2ac7-99ec-e52a-8b1f2e0534d4",
-				"600d723c-706d-42ca-9ecc-94a32e280063",
-				"1e4fffd8-a809-e9dc-0659-0df467954407"
+				"2c17ef61-6067-4da2-6125-3bf54a8d7526",
+				"972a47ef-1768-7d9b-f12c-df8c57cb5bf5",
+				"2f8eda4d-c65c-ba89-a38c-4f197342b382",
+				"e8a850e5-31bf-6c13-0e44-bc4583bca2cb",
+				"e766e9a8-dd56-26b0-5fa7-2e7e876001d7",
+				"35dea5ec-b89c-fe4f-9a74-4ed2637c3501",
+				"983e7dd1-673c-a1a9-81e9-4e81ff0ec74b",
+				"eb8f368e-9c8e-47b7-c70d-1cf7ac89c02c"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "2afb4105-1932-6ef0-866c-43ecb13c0048",
+			"id": "dcec6b34-9127-b6df-bbd9-da6c35c739f8",
 			"name": "remove copilot",
 			"description": "",
 			"order": [
-				"ccc25e86-5365-aaf6-8ce8-9838898142eb",
-				"85022108-999a-7200-89cd-e6b11f66bcb8",
-				"357caf52-98e8-90a9-8d13-1bf8d330915e",
-				"34b27e13-3b96-0a9e-25e6-8a339c517518",
-				"49952d3d-864a-25ff-3648-abbb79550dc2",
-				"ad152575-1e23-f242-96d2-f4b49a616c56",
-				"538a99a4-4701-1ee0-527c-6d2db316dae6",
-				"19a2adaa-d44b-5fd7-9ee7-a6d3452e4492"
+				"4063d0fe-dc7b-03fd-1958-219c5d10b788",
+				"3347ecb1-015e-bd23-20ea-1e5c1bacf1ec",
+				"c2e943b2-f53d-6788-26e6-ca35b5a5fec7",
+				"eeabcbce-4ca9-88ce-ec1a-93e0729bad11",
+				"6a8ef947-840a-bf33-c225-be351341f914",
+				"ff7618ed-fc54-1b81-6129-8df5ac4e67a9",
+				"73994f91-2d50-2d6b-f808-5c8b5063d046",
+				"d0e8a5bc-f7c7-268b-5a66-37e90947dabc"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "f11d599f-4472-bcef-b9e3-7c86ac139e35",
+			"id": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5",
 			"name": "remove reviewer",
 			"description": "",
 			"order": [
-				"49557532-d98e-55e3-5cc4-4c702b62e3ed",
-				"3453a16f-6a34-c92c-91ed-d2107b505e7a",
-				"c3383672-4018-ec1b-2688-515b73987d36",
-				"636f8c2c-7cc2-4d90-179e-7808ae8bbba1",
-				"a887c7eb-8b15-90aa-07ef-6d998297bcee",
-				"e6b6464b-da41-67ee-c2ca-53b1d5ba417d",
-				"4b8d4933-247c-d204-23c6-3acd8ec2e66a",
-				"da88d593-5117-3c1f-f56c-47ac74724c79",
-				"13c71689-cfe5-512d-f5b6-d971fa88129a",
-				"6fd784f5-bda9-b183-1d85-c30879a47427",
-				"37b02c2b-7018-6af5-4e3c-57b2abde2b0e",
-				"05ed43fe-61be-43b3-36c7-0c4a12f98efd",
-				"12d79b9a-e008-ea3d-6fa4-21c7e72e4e94",
-				"6fcaeb1e-8611-9adf-319f-92f61ac2d62d"
+				"a183318a-b246-f372-1b0e-2ff1ad2395c0",
+				"f9a913ac-f3b4-3cba-ad0d-41265aa5904b",
+				"5ebd6774-7f4f-df1a-86e7-f81966773ba8",
+				"5fcaab29-db1b-2b79-e6a0-ee0f19f60f58",
+				"7d7675c4-0334-9a22-beab-485f817fbbce",
+				"6116bd27-1dd4-0d0e-938b-26e50c622b75",
+				"2208a6ea-3cce-8bae-eb41-a7bc31f99e79",
+				"a6001143-99ca-b1ab-a1c9-58c3dc8b6fe0",
+				"5cf9ac97-40c2-128f-a531-982ec0dc1247",
+				"2fde5963-bef1-afc8-52ff-1b494e2dff11",
+				"30c5af89-92ae-3cb7-92dc-9c29a41d468a",
+				"d01d666a-59bc-e7e9-2fc1-435a1b4cee89",
+				"8bb4421e-098b-3ae7-59b7-869927cf659e",
+				"261b410d-a3bb-054a-de84-03487ed7b549"
 			],
-			"owner": 0,
+			"owner": "316251",
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		}
 	],
 	"timestamp": 1474156790593,
-	"owner": 0,
+	"owner": "316251",
 	"public": false,
-	"published": false,
-	"hasRequests": true,
 	"requests": [
 		{
-			"id": "03ce940d-9b2d-b46b-0f84-48da5529615c",
+			"id": "0303a184-79f4-7216-4ecc-797f324d6f3e",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -206,58 +217,65 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188017748,
-			"name": "create reviewer with invalid categoryId",
+			"time": 1474179176872,
+			"name": "create copilot with not exist username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
-		},
-		{
-			"id": "05ed43fe-61be-43b3-36c7-0c4a12f98efd",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+		},
+		{
+			"id": "03badc56-40a6-750a-a0fa-937d6af188b8",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220002",
+			"queryParams": [],
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189158880,
-			"name": "remove reviewer with non-integer categoryId",
+			"time": 1497550612717,
+			"name": "Old logic, access allowed",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
-			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": []
 		},
 		{
-			"id": "07358622-f7d4-9233-8dc1-204acb7b1ccf",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "0554d512-8935-33a8-6447-85eba32b8873",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173280471,
-			"name": "remove admin with user token",
+			"time": 1474176736874,
+			"name": "get all copilots with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
 		},
 		{
-			"id": "08364378-8daf-8159-547e-fac22ca27847",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=7",
+			"id": "05f2c4f0-2f80-95ed-54f6-2b731960bdac",
+			"headers": "Authorization: wrong\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -266,15 +284,15 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474268286128,
-			"name": "get all reviewers with admin token",
+			"time": 1474176769090,
+			"name": "get all copilots without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
 		},
 		{
-			"id": "0865091c-8f04-f18c-f9e5-e5c182bc8ab3",
+			"id": "0b12cd19-4eda-4c11-e926-7f8c8920d2ab",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -285,16 +303,16 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474268192451,
-			"name": "create reviewer with invalid  immune",
+			"time": 1474187872946,
+			"name": "create reviewer with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"Yoshi\",\n     \"categoryId\": 14,\n     \"immune\": \"invalid boolean\"\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "0e55b155-b8b7-ae58-5505-f1ff9ba0eb36",
+			"id": "0baebd12-e9e9-b75f-5409-4bdd22db26e1",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -305,77 +323,78 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282763352,
-			"name": "create reviewer with code category id",
+			"time": 1474282767080,
+			"name": "create reviewer with f2f category id",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"Hung\",\n     \"categoryId\": 39\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"liquid_user\",\n     \"categoryId\": 38\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "12d79b9a-e008-ea3d-6fa4-21c7e72e4e94",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "0dc9a5b6-60b7-0006-30f3-a93f6a23efee",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189177783,
-			"name": "remove reviewer without categoryId",
+			"time": 1474168987848,
+			"name": "create admin with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "13c71689-cfe5-512d-f5b6-d971fa88129a",
+			"id": "121ce835-ccff-770b-cf19-d4c8715734ee",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282495801,
-			"name": "remove reviewer with not exist username",
+			"time": 1474179507223,
+			"name": "create copilot with isStudioCopilot false",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 1,\n    \"isStudioCopilot\":0\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "144d7cd5-cedb-1e15-fec5-27c5e56863df",
-			"headers": "",
-			"url": "{{url}}/admin/admins",
+			"id": "12863b80-7674-2de7-7371-1921c77e6ad1",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474174192935,
-			"name": "get all admins without Authorization header",
+			"time": 1474284611393,
+			"name": "create reviewer with categoryId in query and body at same time",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"categoryId\":7\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "16044f47-5b3d-2ba2-1787-8e6f7e78af97",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"id": "13cfe266-39c7-4139-4526-0f45743c1ec1",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -384,18 +403,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474284611393,
-			"name": "create reviewer with categoryId in query and body at same time",
+			"time": 1474172375481,
+			"name": "create admin with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"categoryId\":7\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "17cd6d9b-17b2-1f5c-a0d8-e0948c718d26",
+			"id": "16572157-2b12-830a-35df-e87fee271e02",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -404,78 +423,98 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168970336,
-			"name": "create admin with admin token",
+			"time": 1474179347234,
+			"name": "create copilot with isSoftwareCopilot false",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 0,\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "19a2adaa-d44b-5fd7-9ee7-a6d3452e4492",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "1739bc1d-f48e-2f66-c423-d56a7dd6925f",
+			"headers": "",
+			"url": "{{url}}/admin/admins",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474174192935,
+			"name": "get all admins without Authorization header",
+			"description": "",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": [],
+			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
+		},
+		{
+			"id": "1a4b8b23-8b80-aaf8-5350-63d6e573ef85",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177129491,
-			"name": "remove copilot with not exist username",
+			"time": 1474178858906,
+			"name": "create copilot without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "1e4fffd8-a809-e9dc-0659-0df467954407",
+			"id": "1b4714ed-d2cb-cd10-98c3-4965448e6b17",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173533574,
-			"name": "remove admin with notexist  username",
+			"time": 1474282455411,
+			"name": "create reviewer with categoryId in query",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "202e4545-829b-f158-372f-206e632d609f",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "1b96aaf0-f11e-a4c3-4217-c0833e6c75ee",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/auth",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
-			"tests": null,
+			"version": 2,
+			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187893955,
-			"name": "create reviewer without Bearer header",
+			"time": 1474159263289,
+			"name": "Login as admin user",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"heffan\", \n    \"password\": \"password\"\n}",
+			"folder": "14f4dd06-76e0-ca22-602f-0ad3974aa4fa"
 		},
 		{
-			"id": "21bdc1e1-c5b2-d063-fd54-386ab396b224",
-			"headers": "Authorization: wrong\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "1c6e9cc9-1d15-c2cb-0b7d-7b552558f26c",
+			"headers": "Authorization: Bearer wrong\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -484,17 +523,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474176769090,
-			"name": "get all copilots without Bearer header",
+			"time": 1474174234342,
+			"name": "get all admins with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
+			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
 		},
 		{
-			"id": "2297e0e7-4871-b68e-6258-b59a1da3acd4",
+			"id": "216bd35b-31af-ba0a-497d-9b93576104b7",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -503,58 +542,78 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474169000065,
-			"name": "create admin without username",
+			"time": 1474179249694,
+			"name": "create copilot with invalid isStudioCopilot",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isStudioCopilot\": \"invalid boolean\",\n    \"isSoftwareCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "24bc8058-d1ef-1f33-eb64-ede9b9663f49",
+			"id": "2208a6ea-3cce-8bae-eb41-a7bc31f99e79",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188046380,
-			"name": "create reviewer with nagative categoryId",
+			"time": 1474189091821,
+			"name": "remove reviewer without username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "26e53a5b-bef9-17f2-fb02-34595bf8a8c4",
+			"id": "261b410d-a3bb-054a-de84-03487ed7b549",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178883094,
-			"name": "create copilot without username",
+			"time": 1474284520276,
+			"name": "remove reviewer with categoryId in query and body at same time",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\":7\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "2cb65342-ba7f-b473-6afc-8a729da04563",
+			"id": "2c17ef61-6067-4da2-6125-3bf54a8d7526",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/admins",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474173258538,
+			"name": "remove admin with admin token",
+			"description": "",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+		},
+		{
+			"id": "2dc63d17-e288-5432-1e70-ea3b38dbd939",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -563,16 +622,16 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179347234,
-			"name": "create copilot with isSoftwareCopilot false",
+			"time": 1474168970336,
+			"name": "create admin with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 0,\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "2d18170b-9631-3c97-fc68-51d0ed76766c",
+			"id": "2e452537-8224-19aa-e79d-3bdd2d3d6092",
 			"headers": "Authorization: Bearer {{userToken}}\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
@@ -586,13 +645,13 @@
 			"time": 1474176739711,
 			"name": "get all copilots with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
+			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
 		},
 		{
-			"id": "2f633003-2ac7-99ec-e52a-8b1f2e0534d4",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "2f8eda4d-c65c-ba89-a38c-4f197342b382",
+			"headers": "Content-Type: application/json\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -602,37 +661,37 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173290943,
-			"name": "remove admin without username",
+			"time": 1474173276705,
+			"name": "remove  admin without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
 		},
 		{
-			"id": "2f652b9b-7dc4-8140-9ac5-e6995f1a3fba",
+			"id": "2fde5963-bef1-afc8-52ff-1b494e2dff11",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187901930,
-			"name": "create reviewer without username",
+			"time": 1474189135829,
+			"name": "remove reviewer with invalid categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "3453a16f-6a34-c92c-91ed-d2107b505e7a",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"id": "30c5af89-92ae-3cb7-92dc-9c29a41d468a",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -642,18 +701,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189053598,
-			"name": "remove reviewer with user token",
+			"time": 1474189145913,
+			"name": "remove reviewer with negative categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "34ac4817-1082-2274-ed98-f17b63e62786",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "32fd36b2-7397-5e93-8b6c-755557c77586",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -662,17 +721,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179249694,
-			"name": "create copilot with invalid isStudioCopilot",
+			"time": 1474187888883,
+			"name": "create reviewer without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isStudioCopilot\": \"invalid boolean\",\n    \"isSoftwareCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "34b27e13-3b96-0a9e-25e6-8a339c517518",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"id": "3347ecb1-015e-bd23-20ea-1e5c1bacf1ec",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -682,18 +741,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177113168,
-			"name": "remove copilot without Bearer header",
+			"time": 1474177106806,
+			"name": "remove copilot with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
 		},
 		{
-			"id": "357caf52-98e8-90a9-8d13-1bf8d330915e",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "35dea5ec-b89c-fe4f-9a74-4ed2637c3501",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -702,38 +761,38 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177110084,
-			"name": "remove copilot without Authorization header",
+			"time": 1474173290943,
+			"name": "remove admin without username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"rawModeData": "{}",
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
 		},
 		{
-			"id": "37b02c2b-7018-6af5-4e3c-57b2abde2b0e",
+			"id": "37345c71-a682-1d40-ff87-7739450f0904",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189145913,
-			"name": "remove reviewer with negative categoryId",
+			"time": 1474268192451,
+			"name": "create reviewer with invalid  immune",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"Yoshi\",\n     \"categoryId\": 14,\n     \"immune\": \"invalid boolean\"\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "3a87b2a7-3761-5089-38d9-6c7d3796e984",
+			"id": "38247541-c9f7-206a-f77a-2cdbd47c3968",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -742,136 +801,143 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474272371352,
-			"name": "create copilot with admin token",
+			"time": 1474282659872,
+			"name": "create reviewer with not exist username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "3f0e98fb-e97a-e6ed-8dc7-e864b1447e03",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "39116742-fb19-f8ba-f177-1e1910b0dd50",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173276705,
-			"name": "remove  admin without Authorization header",
+			"time": 1474187897602,
+			"name": "create reviewer with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "42fc7559-c2a2-8b85-67e3-3812ae0d5998",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"id": "4063d0fe-dc7b-03fd-1958-219c5d10b788",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177780363,
-			"name": "create copilot with user token",
+			"time": 1474177185914,
+			"name": "remove copilot with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
 		},
 		{
-			"id": "43dbe6f5-32e5-f0f0-5735-42a3a9f08120",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "4547a259-b0cf-c5e6-8d04-035b9ae443ce",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/reviewers?categoryId=1.1",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173399023,
-			"name": "create admin with not exist username",
+			"time": 1474188155542,
+			"name": "get all reviewers with non-integer categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "477195d0-14ca-6a6e-274f-513e7d50a45c",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "46fea4dc-9708-763b-c0cc-713ac9c1a9eb",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220005",
+			"queryParams": [],
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179290066,
-			"name": "create copilot with isStudioCopilot/isSoftwareCopilot false",
+			"time": 1497550755372,
+			"name": "New logic, access denied",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
-			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"isStudioCopilot\": false,\n    \"isSoftwareCopilot\":false\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": []
 		},
 		{
-			"id": "49557532-d98e-55e3-5cc4-4c702b62e3ed",
+			"id": "497b04d4-c729-3008-107e-b69aead7e3db",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474266891365,
-			"name": "remove reviewer with admin token",
+			"time": 1474189226479,
+			"name": "create copilot without isSoftwareCopilot",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "49952d3d-864a-25ff-3648-abbb79550dc2",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "4b62272c-8167-0310-930a-d5f0526c52a8",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177116518,
-			"name": "remove copilot with wrong Bearer header",
+			"time": 1474173399023,
+			"name": "create admin with not exist username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "49c5d6f4-5b86-3e9f-8c82-ef7430411264",
+			"id": "4c54c5ab-5d8b-a873-49b0-0f3d63d6b42f",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
@@ -882,57 +948,55 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179169639,
-			"name": "create copilot with empty username",
+			"time": 1474178883094,
+			"name": "create copilot without username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \",\n     \"isSoftwareCopilot\": true,\n     \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "4a6e3f4b-cb9e-978d-281f-81a57545b0ac",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "4f247a99-8f61-47ea-3323-68ec5a7e7000",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/reviewers?categoryId=wrong",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187884890,
-			"name": "create reviewer with user token",
+			"time": 1474184004438,
+			"name": "get all reviewers with invalid categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "4b8d4933-247c-d204-23c6-3acd8ec2e66a",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "52edc048-18d6-ce4d-5312-69286ce2e2f9",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189091821,
-			"name": "remove reviewer without username",
+			"time": 1474189283486,
+			"name": "get all reviewers without categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "518db876-c166-6aa7-d484-b8b778297b4e",
-			"headers": "Content-Type: application/json\n",
+			"id": "597e4417-c496-e48d-801c-5504e9201d18",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -942,18 +1006,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178853689,
-			"name": "create copilot without Authorization header",
+			"time": 1474272371352,
+			"name": "create copilot with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "538a99a4-4701-1ee0-527c-6d2db316dae6",
+			"id": "5cf9ac97-40c2-128f-a531-982ec0dc1247",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -962,56 +1026,56 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177126290,
-			"name": "remove copilot with empty username",
+			"time": 1474282495801,
+			"name": "remove reviewer with not exist username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \"\n}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "59d2ab3f-1ef2-3925-42c4-754eced98658",
+			"id": "5ebd6774-7f4f-df1a-86e7-f81966773ba8",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474169674465,
-			"name": "create admin with empty username",
+			"time": 1474273020582,
+			"name": "remove reviewer with categoryId in query",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \"\n}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "600d723c-706d-42ca-9ecc-94a32e280063",
+			"id": "5eee889a-83e0-96da-a476-ffd50ad66960",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173326368,
-			"name": "remove admin without empty username",
+			"time": 1474188017748,
+			"name": "create reviewer with invalid categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \"\n}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "636f8c2c-7cc2-4d90-179e-7808ae8bbba1",
+			"id": "5fcaab29-db1b-2b79-e6a0-ee0f19f60f58",
 			"headers": "Content-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -1025,54 +1089,63 @@
 			"time": 1474189062608,
 			"name": "remove reviewer without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
-		},
-		{
-			"id": "6727946e-aa76-0996-e734-800bb07cf5c6",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+		},
+		{
+			"id": "60330c29-7ed3-b453-8d01-652084ca19b1",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220004",
+			"queryParams": [],
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189246551,
-			"name": "create copilot without isStudioCopilot",
+			"time": 1497550705028,
+			"name": "New logic, access allowed",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
-			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": []
 		},
 		{
-			"id": "67db2b5a-4b85-4e18-2709-5c475849329f",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "6116bd27-1dd4-0d0e-938b-26e50c622b75",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474176736874,
-			"name": "get all copilots with admin token",
+			"time": 1474189083334,
+			"name": "remove reviewer with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "68d189c2-eb05-ded4-1e97-414ebde03ab8",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "617c7aa5-6a13-7f08-3621-050d7bb9fb42",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1081,58 +1154,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179220315,
-			"name": "create copilot with invalid isSoftwareCopilot",
+			"time": 1474187884890,
+			"name": "create reviewer with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": \"invalid boolean\",\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "6fcaeb1e-8611-9adf-319f-92f61ac2d62d",
+			"id": "61f8c960-54fd-f1b3-0cc3-8ac89de6361a",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474284520276,
-			"name": "remove reviewer with categoryId in query and body at same time",
+			"time": 1474282763352,
+			"name": "create reviewer with code category id",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\":7\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"Hung\",\n     \"categoryId\": 39\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "6fd784f5-bda9-b183-1d85-c30879a47427",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "62a5e348-741b-fd42-ed58-839def26d4bf",
+			"headers": "",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189135829,
-			"name": "remove reviewer with invalid categoryId",
+			"time": 1474176772030,
+			"name": "get all copilots without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
 		},
 		{
-			"id": "790064a6-e429-1f9c-24b5-7112ce1fb8b2",
+			"id": "676c46be-e1bf-ba14-d357-1ca01119054b",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1141,37 +1213,37 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474283473763,
-			"name": "create reviewer with immune",
+			"time": 1474189246551,
+			"name": "create copilot without isStudioCopilot",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"Yoshi\",\n    \"categoryId\": 14,\n    \"immune\":1\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "79444594-2c40-1e6e-9f71-f22d57828026",
+			"id": "6a8ef947-840a-bf33-c225-be351341f914",
 			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178865110,
-			"name": "create copilot with wrong Bearer header",
+			"time": 1474177116518,
+			"name": "remove copilot with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
 		},
 		{
-			"id": "828d7e47-ee45-5ed2-fe37-2114815e84f1",
-			"headers": "Authorization: Bearer wrong\n",
+			"id": "6ab91574-6c11-9d54-a6a3-a87304bec08b",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1181,17 +1253,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474174234342,
-			"name": "get all admins with wrong Bearer header",
+			"time": 1474173887249,
+			"name": "get all admins with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
+			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
 		},
 		{
-			"id": "84cd43c0-c407-365b-f1f4-07929e2876cc",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "6fc730e8-851c-c0c0-4dbf-79a9fc7c67e1",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1200,17 +1272,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188081763,
-			"name": "create reviewer with non-integer categoryId",
+			"time": 1474178865110,
+			"name": "create copilot with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "85022108-999a-7200-89cd-e6b11f66bcb8",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"id": "73994f91-2d50-2d6b-f808-5c8b5063d046",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1220,17 +1292,45 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177106806,
-			"name": "remove copilot with user token",
+			"time": 1474177126290,
+			"name": "remove copilot with empty username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"rawModeData": "{\n    \"username\": \"     \"\n}",
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+		},
+		{
+			"id": "76441abd-9a70-5fe9-93e1-59dd0318384f",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220003",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497550652259,
+			"name": "Old logic, access denied",
+			"description": "",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": []
 		},
 		{
-			"id": "858050d9-d3f2-900f-79a8-4a56c7ca586b",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "7667b82b-d891-3959-4469-2b6e3673ed03",
+			"headers": "Content-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1240,17 +1340,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179176872,
-			"name": "create copilot with not exist username",
+			"time": 1474178853689,
+			"name": "create copilot without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "8679c69e-e94d-7188-60fd-bbe506b851d1",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"id": "789c4564-2cb5-a4da-04f4-0d3a432950dd",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1260,18 +1360,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187897602,
-			"name": "create reviewer with wrong Bearer header",
+			"time": 1474282655617,
+			"name": "create reviewer with empty username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "88ae8323-4232-1675-8796-e06c6997f3f9",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "7b7bc600-f9a9-e566-ccd3-4bff678d50da",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1280,35 +1380,36 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168987848,
-			"name": "create admin with wrong Bearer header",
+			"time": 1474283473763,
+			"name": "create reviewer with immune",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"rawModeData": "{\n    \"username\": \"Yoshi\",\n    \"categoryId\": 14,\n    \"immune\":1\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "897d4baa-72d5-1eca-ff61-51db0d14408c",
-			"headers": "Authorization: Bearer wrong\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "7d7675c4-0334-9a22-beab-485f817fbbce",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474176766163,
-			"name": "get all copilots with wrong Bearer header",
+			"time": 1474189071606,
+			"name": "remove reviewer without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "8a43eff3-3f9a-83a2-6734-a683e29252c8",
+			"id": "8b52ad5d-31a4-8a84-4d24-ceb91021a467",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -1319,38 +1420,69 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189200056,
-			"name": "create reviewer without categoryId",
+			"time": 1474282760160,
+			"name": "create reviewer with studio type",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"cartajs\",\n     \"categoryId\": 17\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "8b843cb6-1fc6-8c0b-1d6d-f54d9470cf76",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "8bb4421e-098b-3ae7-59b7-869927cf659e",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168982704,
-			"name": "create admin without Bearer header",
+			"time": 1474189177783,
+			"name": "remove reviewer without categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+		},
+		{
+			"id": "8db48405-6ba0-f116-06c6-cc34cffd77c1",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/develop/challenges/checkpoint/2220001",
+			"queryParams": [],
+			"pathVariables": {},
+			"pathVariableData": [],
+			"preRequestScript": null,
+			"method": "GET",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"data": null,
+			"dataMode": "params",
+			"name": "No groups (challenge is not private)",
+			"description": "",
+			"descriptionFormat": "html",
+			"time": 1497550504090,
+			"version": 2,
+			"responses": [],
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"folder": "498ee2d2-174c-7049-3cc4-43b4e330083b"
 		},
 		{
-			"id": "8bd1727c-34f8-ced7-eb92-d50cc6e56772",
-			"headers": "",
-			"url": "{{url}}/admin/reviewers?categoryId=7",
+			"id": "9308798f-cbfd-b44c-1d47-6ef6650424f0",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/reviewers?categoryId=-4",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -1359,57 +1491,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282217351,
-			"name": "get all reviewers without Authorization header",
+			"time": 1474184022183,
+			"name": "get all reviewers with negative categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "9bccd2a2-8aac-1931-b78e-8b61a99415a4",
-			"headers": "Content-Type: application/json\n",
+			"id": "972a47ef-1768-7d9b-f12c-df8c57cb5bf5",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168977872,
-			"name": "create admin without Authorization header",
+			"time": 1474173280471,
+			"name": "remove admin with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
 		},
 		{
-			"id": "9e458d5b-5aa5-05ec-6240-7d171c75cf5e",
+			"id": "983e7dd1-673c-a1a9-81e9-4e81ff0ec74b",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282760160,
-			"name": "create reviewer with studio type",
+			"time": 1474173326368,
+			"name": "remove admin without empty username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"cartajs\",\n     \"categoryId\": 17\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"     \"\n}",
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
 		},
 		{
-			"id": "9fb05ea1-f85e-209e-7619-e40450acd7f3",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "9ddc746e-591c-69e7-2326-a05aa52f7109",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1418,36 +1550,36 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178858906,
-			"name": "create copilot without Bearer header",
+			"time": 1474168977872,
+			"name": "create admin without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "9ff114f0-56ca-f56c-08e4-3bb4dcaac10f",
+			"id": "a183318a-b246-f372-1b0e-2ff1ad2395c0",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189226479,
-			"name": "create copilot without isSoftwareCopilot",
+			"time": 1474266891365,
+			"name": "remove reviewer with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isStudioCopilot\":true\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "a466f2b7-2f9c-4a14-fc0e-eee7981cdb42",
+			"id": "a407a482-48ea-5561-9158-71259c3e8a3b",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -1458,57 +1590,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282767080,
-			"name": "create reviewer with f2f category id",
-			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
-			"responses": [],
-			"rawModeData": "{\n    \"username\": \"liquid_user\",\n     \"categoryId\": 38\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
-		},
-		{
-			"id": "a47c9a54-d12a-6801-02a1-c57c420237cf",
-			"headers": "",
-			"url": "{{url}}/admin/copilots",
-			"preRequestScript": null,
-			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1474176772030,
-			"name": "get all copilots without Authorization header",
-			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
-			"responses": [],
-			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
-		},
-		{
-			"id": "a495567b-a450-037f-ca8e-c9da52116890",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/auth",
-			"preRequestScript": null,
-			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
-			"version": 2,
-			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1474159245944,
-			"name": "Log in as ordinary user",
+			"time": 1474188081763,
+			"name": "create reviewer with non-integer categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"user\", \n    \"password\": \"password\"\n}",
-			"folder": "fedff379-68f7-3322-d2e9-29471d82cc60"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "a887c7eb-8b15-90aa-07ef-6d998297bcee",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"id": "a6001143-99ca-b1ab-a1c9-58c3dc8b6fe0",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1518,17 +1610,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189071606,
-			"name": "remove reviewer without Bearer header",
+			"time": 1474282491538,
+			"name": "remove reviewer with empty username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "a8e7c6c2-1cfb-e3ad-af5c-9c27bd71924b",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "b557e83b-d42a-a7b8-8a9c-8fa2270188b1",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1538,58 +1630,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282655617,
-			"name": "create reviewer with empty username",
+			"time": 1474187893955,
+			"name": "create reviewer without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "ac18e672-1e47-37fa-1ae8-85eed1beab2d",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "b5f484a7-b5e9-e763-97fb-5d750d08cd6d",
+			"headers": "Authorization: wrong\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187888883,
-			"name": "create reviewer without Authorization header",
+			"time": 1474174209799,
+			"name": "get all admins without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
 		},
 		{
-			"id": "ad152575-1e23-f242-96d2-f4b49a616c56",
+			"id": "b762147c-aae5-9630-dfe7-d6468a8a3843",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177119734,
-			"name": "remove copilot without username",
+			"time": 1474169000065,
+			"name": "create admin without username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "b0bfa529-5f58-d5a6-e1bc-2099abfa253f",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/admins",
+			"id": "c15dff6e-1a55-a875-3460-2d2097b2f960",
+			"headers": "Authorization: Bearer wrong\n",
+			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -1598,15 +1689,15 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173887249,
-			"name": "get all admins with admin token",
+			"time": 1474282226901,
+			"name": "get all reviewers with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "b83cdcb1-5abe-0f73-1c9c-b558c0634baf",
+			"id": "c21ce35d-8558-ca77-c6af-8a6d930564b9",
 			"headers": "Authorization: Bearer {{userToken}}\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
@@ -1620,91 +1711,93 @@
 			"time": 1474174015997,
 			"name": "get all admins with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
+			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
 		},
 		{
-			"id": "b84bd2e1-cd0b-3489-3c11-917a1624249e",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"id": "c2e943b2-f53d-6788-26e6-ca35b5a5fec7",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282455411,
-			"name": "create reviewer with categoryId in query",
+			"time": 1474177110084,
+			"name": "remove copilot without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
 		},
 		{
-			"id": "b8d3fef6-214c-5032-3002-f6c16f3288e2",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "c3dcb7b2-c57c-398e-62d8-170db419f168",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173287352,
-			"name": "remove admin with wrong Bearer header",
+			"time": 1474188046380,
+			"name": "create reviewer with nagative categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "c0db4362-622a-b556-1991-80df568707b7",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=-4",
+			"id": "c42386fb-4880-273c-5f56-514a24108ffc",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474184022183,
-			"name": "get all reviewers with negative categoryId",
+			"time": 1474189200056,
+			"name": "create reviewer without categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "c1d0d1a9-a8b9-8ee7-c6e6-e539a52fbf35",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"id": "d01d666a-59bc-e7e9-2fc1-435a1b4cee89",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189283486,
-			"name": "get all reviewers without categoryId",
+			"time": 1474189158880,
+			"name": "remove reviewer with non-integer categoryId",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "c28b4a81-8ee7-24ba-fc8b-54b1b3642fab",
-			"headers": "Authorization: Bearer {{userToken}}\n",
+			"id": "d0457f1e-5957-b83c-f603-aaf45690e622",
+			"headers": "",
 			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1714,17 +1807,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282212758,
-			"name": "get all reviewers with user token",
+			"time": 1474282217351,
+			"name": "get all reviewers without Authorization header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "c3383672-4018-ec1b-2688-515b73987d36",
+			"id": "d0e8a5bc-f7c7-268b-5a66-37e90947dabc",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -1733,58 +1826,77 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474273020582,
-			"name": "remove reviewer with categoryId in query",
+			"time": 1474177129491,
+			"name": "remove copilot with not exist username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
 		},
 		{
-			"id": "c8075e84-bb8d-7596-ba92-5990705f93bc",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "d7913d8d-6c66-b1cd-62d5-c40393c22661",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173283865,
-			"name": "remove admin without Bearer header",
+			"time": 1474179169639,
+			"name": "create copilot with empty username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"rawModeData": "{\n    \"username\": \"     \",\n     \"isSoftwareCopilot\": true,\n     \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "ccc25e86-5365-aaf6-8ce8-9838898142eb",
+			"id": "dcf543f4-41e0-0506-52a1-d9abc07132e2",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177185914,
-			"name": "remove copilot with admin token",
+			"time": 1474179220315,
+			"name": "create copilot with invalid isSoftwareCopilot",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": \"invalid boolean\",\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "d0a6e94f-3c59-2398-f0f5-a1d54a6f4e15",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "e1dd94fd-2dea-4082-61f8-a551fcf1d55f",
+			"headers": "Authorization: Bearer wrong\n",
+			"url": "{{url}}/admin/copilots",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474176766163,
+			"name": "get all copilots with wrong Bearer header",
+			"description": "",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": [],
+			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
+		},
+		{
+			"id": "e3c87489-0dac-48e0-869b-117743e7fb01",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1793,57 +1905,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282659872,
-			"name": "create reviewer with not exist username",
+			"time": 1474177780363,
+			"name": "create copilot with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "d2bf20ce-e0ed-a347-69dc-577e34dbefd0",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "e498adc6-5df6-ea02-491f-de46950eff67",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173258538,
-			"name": "remove admin with admin token",
+			"time": 1474168982704,
+			"name": "create admin without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "da88d593-5117-3c1f-f56c-47ac74724c79",
+			"id": "e5179ef5-cef4-a08b-9fbf-cd63b4a4066d",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282491538,
-			"name": "remove reviewer with empty username",
+			"time": 1474169674465,
+			"name": "create admin with empty username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"     \"\n}",
+			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
 		},
 		{
-			"id": "ddf839fa-733a-056a-8a2c-a1e56d0e9072",
-			"headers": "Authorization: Bearer wrong\n",
+			"id": "e61162b5-ccbd-79fc-7daa-ad1e9e71f8db",
+			"headers": "Authorization: Bearer {{userToken}}\n",
 			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1853,56 +1965,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282226901,
-			"name": "get all reviewers with wrong Bearer header",
+			"time": 1474282212758,
+			"name": "get all reviewers with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "e058d344-3c5d-951a-c86e-ebfeba41bab8",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "e766e9a8-dd56-26b0-5fa7-2e7e876001d7",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179507223,
-			"name": "create copilot with isStudioCopilot false",
+			"time": 1474173287352,
+			"name": "remove admin with wrong Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 1,\n    \"isStudioCopilot\":0\n}",
-			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
 		},
 		{
-			"id": "e10c59ae-1669-54bd-03bb-4de19d51fb5e",
-			"headers": "Authorization: wrong\n",
+			"id": "e8a850e5-31bf-6c13-0e44-bc4583bca2cb",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474174209799,
-			"name": "get all admins without Bearer header",
+			"time": 1474173283865,
+			"name": "remove admin without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
 		},
 		{
-			"id": "e6b6464b-da41-67ee-c2ca-53b1d5ba417d",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "eb8f368e-9c8e-47b7-c70d-1cf7ac89c02c",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -1911,18 +2024,38 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189083334,
-			"name": "remove reviewer with wrong Bearer header",
+			"time": 1474173533574,
+			"name": "remove admin with notexist  username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
+			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
 		},
 		{
-			"id": "ebcf31ae-035b-49ac-41d4-fa4484eff6a1",
+			"id": "eeabcbce-4ca9-88ce-ec1a-93e0729bad11",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474177113168,
+			"name": "remove copilot without Bearer header",
+			"description": "",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+		},
+		{
+			"id": "f6e293f3-5650-d73b-36e8-97d587604a4b",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1931,18 +2064,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187872946,
-			"name": "create reviewer with admin token",
+			"time": 1474179290066,
+			"name": "create copilot with isStudioCopilot/isSoftwareCopilot false",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"isStudioCopilot\": false,\n    \"isSoftwareCopilot\":false\n}",
+			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
 		},
 		{
-			"id": "ef7fd1f5-a302-b7b6-a772-a43eb3b82062",
+			"id": "f88f1d64-7461-652d-f3fb-6c48fa553e61",
 			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=wrong",
+			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -1951,75 +2084,76 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474184004438,
-			"name": "get all reviewers with invalid categoryId",
+			"time": 1474268286128,
+			"name": "get all reviewers with admin token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
 		},
 		{
-			"id": "f6c44b3f-570d-e48f-3b7e-8419a9ebe9b6",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/auth",
+			"id": "f8efe766-a322-ee21-b4f5-78d78642af19",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
-			"version": 2,
-			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
+			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474159263289,
-			"name": "Login as admin user",
+			"time": 1474187901930,
+			"name": "create reviewer without username",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"heffan\", \n    \"password\": \"password\"\n}",
-			"folder": "fedff379-68f7-3322-d2e9-29471d82cc60"
+			"rawModeData": "{}",
+			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
 		},
 		{
-			"id": "f784d0d8-8645-7633-91c6-54ec81aa95ff",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=1.1",
+			"id": "f901106d-47f8-080c-d56b-7badc5774481",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/auth",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
-			"tests": null,
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
+			"version": 2,
+			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188155542,
-			"name": "get all reviewers with non-integer categoryId",
+			"time": 1474159245944,
+			"name": "Log in as ordinary user",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"rawModeData": "{\n    \"username\": \"user\", \n    \"password\": \"password\"\n}",
+			"folder": "14f4dd06-76e0-ca22-602f-0ad3974aa4fa"
 		},
 		{
-			"id": "fc7d7ac4-d1e1-a441-6717-ecb50b9ad7f6",
+			"id": "f9a913ac-f3b4-3cba-ad0d-41265aa5904b",
 			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474172375481,
-			"name": "create admin with user token",
+			"time": 1474189053598,
+			"name": "remove reviewer with user token",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
 		},
 		{
-			"id": "fe0a03f9-4969-651a-5eed-01de9398498e",
+			"id": "fbdd77d2-d138-3a05-a543-d5302daeca50",
 			"headers": "Authorization: wrong\n",
 			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
@@ -2033,9 +2167,29 @@
 			"time": 1474282221279,
 			"name": "get all reviewers without Bearer header",
 			"description": "",
-			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"responses": [],
+			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+		},
+		{
+			"id": "ff7618ed-fc54-1b81-6129-8df5ac4e67a9",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474177119734,
+			"name": "remove copilot without username",
+			"description": "",
+			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
 			"responses": [],
-			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
+			"rawModeData": "{}",
+			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
 		}
 	]
 }
\ No newline at end of file
diff --git a/test/scripts/mock_v3.js b/test/scripts/mock_v3.js
new file mode 100644
index 000000000..8df5e8c02
--- /dev/null
+++ b/test/scripts/mock_v3.js
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2017 TopCoder Inc., All Rights Reserved.
+ * 
+ * This is the REST server that mocks some services from the V3 API
+ * 
+ * @author GFalcon
+ * @version 1.0
+ */
+"use strict";
+
+var express = require('express');
+var bodyParser = require('body-parser');
+
+var app = express();
+
+app.use(bodyParser.json());
+
+/*
+ * Log all incoming requests
+ */
+/*jslint unparam: true*/
+app.use(function (req, res, next) {
+    console.info('V3 Request: ' + JSON.stringify({
+        path: req.path,
+        method: req.method,
+        headers: req.headers,
+        body: req.body
+    }, null, '    '));
+    next();
+});
+/*jslint unparam: false*/
+
+/*
+ * Return a fake 'authorization token'
+ */
+/*jslint unparam: true*/
+app.post('/v3/authorizations', function (req, res) {
+    res.json({
+        result: {
+            content: {
+                token: 'FAKE-TOKEN'
+            }
+        }
+    });
+});
+/*jslint unparam: false*/
+
+/*
+ * Get group members. Makes each group consist of one user 
+ * (the user from the sample database whose handle is 'user')
+ * except one group (id 3330004) that doesn't have any users at all
+ */
+app.get('/v3/groups/:groupId/members', function (req, res) {
+    /*jslint eqeq: true*/
+    if (req.params.groupId != 3330004) {
+        /*jslint eqeq: false*/
+        res.json({
+            result: {
+                content: [{
+                    memberId: 132458
+                }]
+            }
+        });
+    } else {
+        res.json({
+            result: {
+                content: []
+            }
+        });
+    }
+});
+
+app.listen(8084);

From b4a5dc9fbb1ba0812ea92ef41b52820990164133 Mon Sep 17 00:00:00 2001
From: Vyacheslav V Sokolov <deathless@t-sk.ru>
Date: Fri, 16 Jun 2017 06:23:53 +0700
Subject: [PATCH 2/4] Restoring an accidentially modified file

---
 test/postman/Reviewer_Management_API.json | 1892 ++++++++++-----------
 1 file changed, 869 insertions(+), 1023 deletions(-)

diff --git a/test/postman/Reviewer_Management_API.json b/test/postman/Reviewer_Management_API.json
index b58200657..cd7d0837e 100755
--- a/test/postman/Reviewer_Management_API.json
+++ b/test/postman/Reviewer_Management_API.json
@@ -1,214 +1,203 @@
 {
-	"id": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+	"id": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 	"name": "Admin App - TC API Reviewer Management API",
 	"description": "",
 	"order": [],
 	"folders": [
 		{
-			"id": "498ee2d2-174c-7049-3cc4-43b4e330083b",
-			"name": "Get checkpoints",
-			"description": "",
-			"order": [
-				"8db48405-6ba0-f116-06c6-cc34cffd77c1",
-				"03badc56-40a6-750a-a0fa-937d6af188b8",
-				"76441abd-9a70-5fe9-93e1-59dd0318384f",
-				"60330c29-7ed3-b453-8d01-652084ca19b1",
-				"46fea4dc-9708-763b-c0cc-713ac9c1a9eb"
-			],
-			"owner": "316251"
-		},
-		{
-			"id": "305f84dd-24a3-cbe7-97f1-7063b14a5f42",
+			"id": "142d5b1b-b304-bced-c1f3-b59e8187d2aa",
 			"name": "create admin",
 			"description": "",
 			"order": [
-				"2dc63d17-e288-5432-1e70-ea3b38dbd939",
-				"13cfe266-39c7-4139-4526-0f45743c1ec1",
-				"9ddc746e-591c-69e7-2326-a05aa52f7109",
-				"e498adc6-5df6-ea02-491f-de46950eff67",
-				"0dc9a5b6-60b7-0006-30f3-a93f6a23efee",
-				"b762147c-aae5-9630-dfe7-d6468a8a3843",
-				"e5179ef5-cef4-a08b-9fbf-cd63b4a4066d",
-				"4b62272c-8167-0310-930a-d5f0526c52a8"
+				"17cd6d9b-17b2-1f5c-a0d8-e0948c718d26",
+				"fc7d7ac4-d1e1-a441-6717-ecb50b9ad7f6",
+				"9bccd2a2-8aac-1931-b78e-8b61a99415a4",
+				"8b843cb6-1fc6-8c0b-1d6d-f54d9470cf76",
+				"88ae8323-4232-1675-8796-e06c6997f3f9",
+				"2297e0e7-4871-b68e-6258-b59a1da3acd4",
+				"59d2ab3f-1ef2-3925-42c4-754eced98658",
+				"43dbe6f5-32e5-f0f0-5735-42a3a9f08120"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "1438537c-a455-8206-0b64-bcb6e98cb447",
+			"id": "8052cbf5-e206-af03-0392-e853f3f06bf4",
 			"name": "create copilot",
 			"description": "",
 			"order": [
-				"597e4417-c496-e48d-801c-5504e9201d18",
-				"16572157-2b12-830a-35df-e87fee271e02",
-				"121ce835-ccff-770b-cf19-d4c8715734ee",
-				"e3c87489-0dac-48e0-869b-117743e7fb01",
-				"7667b82b-d891-3959-4469-2b6e3673ed03",
-				"1a4b8b23-8b80-aaf8-5350-63d6e573ef85",
-				"6fc730e8-851c-c0c0-4dbf-79a9fc7c67e1",
-				"4c54c5ab-5d8b-a873-49b0-0f3d63d6b42f",
-				"497b04d4-c729-3008-107e-b69aead7e3db",
-				"676c46be-e1bf-ba14-d357-1ca01119054b",
-				"d7913d8d-6c66-b1cd-62d5-c40393c22661",
-				"0303a184-79f4-7216-4ecc-797f324d6f3e",
-				"dcf543f4-41e0-0506-52a1-d9abc07132e2",
-				"216bd35b-31af-ba0a-497d-9b93576104b7",
-				"f6e293f3-5650-d73b-36e8-97d587604a4b"
+				"3a87b2a7-3761-5089-38d9-6c7d3796e984",
+				"2cb65342-ba7f-b473-6afc-8a729da04563",
+				"e058d344-3c5d-951a-c86e-ebfeba41bab8",
+				"42fc7559-c2a2-8b85-67e3-3812ae0d5998",
+				"518db876-c166-6aa7-d484-b8b778297b4e",
+				"9fb05ea1-f85e-209e-7619-e40450acd7f3",
+				"79444594-2c40-1e6e-9f71-f22d57828026",
+				"26e53a5b-bef9-17f2-fb02-34595bf8a8c4",
+				"9ff114f0-56ca-f56c-08e4-3bb4dcaac10f",
+				"6727946e-aa76-0996-e734-800bb07cf5c6",
+				"49c5d6f4-5b86-3e9f-8c82-ef7430411264",
+				"858050d9-d3f2-900f-79a8-4a56c7ca586b",
+				"68d189c2-eb05-ded4-1e97-414ebde03ab8",
+				"34ac4817-1082-2274-ed98-f17b63e62786",
+				"477195d0-14ca-6a6e-274f-513e7d50a45c"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "ff6b7b38-7532-5c03-26db-c68f88696eb9",
+			"id": "7544e9b2-c615-4376-7145-511bb968c906",
 			"name": "create reviewer",
 			"description": "",
 			"order": [
-				"0b12cd19-4eda-4c11-e926-7f8c8920d2ab",
-				"1b4714ed-d2cb-cd10-98c3-4965448e6b17",
-				"617c7aa5-6a13-7f08-3621-050d7bb9fb42",
-				"32fd36b2-7397-5e93-8b6c-755557c77586",
-				"b557e83b-d42a-a7b8-8a9c-8fa2270188b1",
-				"39116742-fb19-f8ba-f177-1e1910b0dd50",
-				"f8efe766-a322-ee21-b4f5-78d78642af19",
-				"789c4564-2cb5-a4da-04f4-0d3a432950dd",
-				"38247541-c9f7-206a-f77a-2cdbd47c3968",
-				"5eee889a-83e0-96da-a476-ffd50ad66960",
-				"c3dcb7b2-c57c-398e-62d8-170db419f168",
-				"a407a482-48ea-5561-9158-71259c3e8a3b",
-				"c42386fb-4880-273c-5f56-514a24108ffc",
-				"7b7bc600-f9a9-e566-ccd3-4bff678d50da",
-				"37345c71-a682-1d40-ff87-7739450f0904",
-				"8b52ad5d-31a4-8a84-4d24-ceb91021a467",
-				"61f8c960-54fd-f1b3-0cc3-8ac89de6361a",
-				"0baebd12-e9e9-b75f-5409-4bdd22db26e1",
-				"12863b80-7674-2de7-7371-1921c77e6ad1"
+				"ebcf31ae-035b-49ac-41d4-fa4484eff6a1",
+				"b84bd2e1-cd0b-3489-3c11-917a1624249e",
+				"4a6e3f4b-cb9e-978d-281f-81a57545b0ac",
+				"ac18e672-1e47-37fa-1ae8-85eed1beab2d",
+				"202e4545-829b-f158-372f-206e632d609f",
+				"8679c69e-e94d-7188-60fd-bbe506b851d1",
+				"2f652b9b-7dc4-8140-9ac5-e6995f1a3fba",
+				"a8e7c6c2-1cfb-e3ad-af5c-9c27bd71924b",
+				"d0a6e94f-3c59-2398-f0f5-a1d54a6f4e15",
+				"03ce940d-9b2d-b46b-0f84-48da5529615c",
+				"24bc8058-d1ef-1f33-eb64-ede9b9663f49",
+				"84cd43c0-c407-365b-f1f4-07929e2876cc",
+				"8a43eff3-3f9a-83a2-6734-a683e29252c8",
+				"790064a6-e429-1f9c-24b5-7112ce1fb8b2",
+				"0865091c-8f04-f18c-f9e5-e5c182bc8ab3",
+				"9e458d5b-5aa5-05ec-6240-7d171c75cf5e",
+				"0e55b155-b8b7-ae58-5505-f1ff9ba0eb36",
+				"a466f2b7-2f9c-4a14-fc0e-eee7981cdb42",
+				"16044f47-5b3d-2ba2-1787-8e6f7e78af97"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "43eec092-7864-262f-fe9d-a2a416e1a2d8",
+			"id": "2964b89d-893b-aada-2e0e-c4136b920508",
 			"name": "get all admins",
 			"description": "",
 			"order": [
-				"6ab91574-6c11-9d54-a6a3-a87304bec08b",
-				"c21ce35d-8558-ca77-c6af-8a6d930564b9",
-				"1739bc1d-f48e-2f66-c423-d56a7dd6925f",
-				"b5f484a7-b5e9-e763-97fb-5d750d08cd6d",
-				"1c6e9cc9-1d15-c2cb-0b7d-7b552558f26c"
+				"b0bfa529-5f58-d5a6-e1bc-2099abfa253f",
+				"b83cdcb1-5abe-0f73-1c9c-b558c0634baf",
+				"144d7cd5-cedb-1e15-fec5-27c5e56863df",
+				"e10c59ae-1669-54bd-03bb-4de19d51fb5e",
+				"828d7e47-ee45-5ed2-fe37-2114815e84f1"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9",
+			"id": "1a80812c-dfa2-5dc4-aca7-299502bbc807",
 			"name": "get all copilots",
 			"description": "",
 			"order": [
-				"0554d512-8935-33a8-6447-85eba32b8873",
-				"2e452537-8224-19aa-e79d-3bdd2d3d6092",
-				"62a5e348-741b-fd42-ed58-839def26d4bf",
-				"05f2c4f0-2f80-95ed-54f6-2b731960bdac",
-				"e1dd94fd-2dea-4082-61f8-a551fcf1d55f"
+				"67db2b5a-4b85-4e18-2709-5c475849329f",
+				"2d18170b-9631-3c97-fc68-51d0ed76766c",
+				"a47c9a54-d12a-6801-02a1-c57c420237cf",
+				"21bdc1e1-c5b2-d063-fd54-386ab396b224",
+				"897d4baa-72d5-1eca-ff61-51db0d14408c"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "790ca3b9-d88f-04e9-b65d-fd59442f3394",
+			"id": "81516934-d74e-f97d-262f-21d87d5961d1",
 			"name": "get all reviewers",
 			"description": "",
 			"order": [
-				"f88f1d64-7461-652d-f3fb-6c48fa553e61",
-				"e61162b5-ccbd-79fc-7daa-ad1e9e71f8db",
-				"d0457f1e-5957-b83c-f603-aaf45690e622",
-				"fbdd77d2-d138-3a05-a543-d5302daeca50",
-				"c15dff6e-1a55-a875-3460-2d2097b2f960",
-				"4f247a99-8f61-47ea-3323-68ec5a7e7000",
-				"9308798f-cbfd-b44c-1d47-6ef6650424f0",
-				"4547a259-b0cf-c5e6-8d04-035b9ae443ce",
-				"52edc048-18d6-ce4d-5312-69286ce2e2f9"
+				"08364378-8daf-8159-547e-fac22ca27847",
+				"c28b4a81-8ee7-24ba-fc8b-54b1b3642fab",
+				"8bd1727c-34f8-ced7-eb92-d50cc6e56772",
+				"fe0a03f9-4969-651a-5eed-01de9398498e",
+				"ddf839fa-733a-056a-8a2c-a1e56d0e9072",
+				"ef7fd1f5-a302-b7b6-a772-a43eb3b82062",
+				"c0db4362-622a-b556-1991-80df568707b7",
+				"f784d0d8-8645-7633-91c6-54ec81aa95ff",
+				"c1d0d1a9-a8b9-8ee7-c6e6-e539a52fbf35"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "14f4dd06-76e0-ca22-602f-0ad3974aa4fa",
+			"id": "fedff379-68f7-3322-d2e9-29471d82cc60",
 			"name": "login",
 			"description": "",
 			"order": [
-				"1b96aaf0-f11e-a4c3-4217-c0833e6c75ee",
-				"f901106d-47f8-080c-d56b-7badc5774481"
+				"f6c44b3f-570d-e48f-3b7e-8419a9ebe9b6",
+				"a495567b-a450-037f-ca8e-c9da52116890"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "4ff79efc-3da3-8c10-cbf9-8a883260cc55",
+			"id": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea",
 			"name": "remove admin",
 			"description": "",
 			"order": [
-				"2c17ef61-6067-4da2-6125-3bf54a8d7526",
-				"972a47ef-1768-7d9b-f12c-df8c57cb5bf5",
-				"2f8eda4d-c65c-ba89-a38c-4f197342b382",
-				"e8a850e5-31bf-6c13-0e44-bc4583bca2cb",
-				"e766e9a8-dd56-26b0-5fa7-2e7e876001d7",
-				"35dea5ec-b89c-fe4f-9a74-4ed2637c3501",
-				"983e7dd1-673c-a1a9-81e9-4e81ff0ec74b",
-				"eb8f368e-9c8e-47b7-c70d-1cf7ac89c02c"
+				"d2bf20ce-e0ed-a347-69dc-577e34dbefd0",
+				"07358622-f7d4-9233-8dc1-204acb7b1ccf",
+				"3f0e98fb-e97a-e6ed-8dc7-e864b1447e03",
+				"c8075e84-bb8d-7596-ba92-5990705f93bc",
+				"b8d3fef6-214c-5032-3002-f6c16f3288e2",
+				"2f633003-2ac7-99ec-e52a-8b1f2e0534d4",
+				"600d723c-706d-42ca-9ecc-94a32e280063",
+				"1e4fffd8-a809-e9dc-0659-0df467954407"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "dcec6b34-9127-b6df-bbd9-da6c35c739f8",
+			"id": "2afb4105-1932-6ef0-866c-43ecb13c0048",
 			"name": "remove copilot",
 			"description": "",
 			"order": [
-				"4063d0fe-dc7b-03fd-1958-219c5d10b788",
-				"3347ecb1-015e-bd23-20ea-1e5c1bacf1ec",
-				"c2e943b2-f53d-6788-26e6-ca35b5a5fec7",
-				"eeabcbce-4ca9-88ce-ec1a-93e0729bad11",
-				"6a8ef947-840a-bf33-c225-be351341f914",
-				"ff7618ed-fc54-1b81-6129-8df5ac4e67a9",
-				"73994f91-2d50-2d6b-f808-5c8b5063d046",
-				"d0e8a5bc-f7c7-268b-5a66-37e90947dabc"
+				"ccc25e86-5365-aaf6-8ce8-9838898142eb",
+				"85022108-999a-7200-89cd-e6b11f66bcb8",
+				"357caf52-98e8-90a9-8d13-1bf8d330915e",
+				"34b27e13-3b96-0a9e-25e6-8a339c517518",
+				"49952d3d-864a-25ff-3648-abbb79550dc2",
+				"ad152575-1e23-f242-96d2-f4b49a616c56",
+				"538a99a4-4701-1ee0-527c-6d2db316dae6",
+				"19a2adaa-d44b-5fd7-9ee7-a6d3452e4492"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		},
 		{
-			"id": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5",
+			"id": "f11d599f-4472-bcef-b9e3-7c86ac139e35",
 			"name": "remove reviewer",
 			"description": "",
 			"order": [
-				"a183318a-b246-f372-1b0e-2ff1ad2395c0",
-				"f9a913ac-f3b4-3cba-ad0d-41265aa5904b",
-				"5ebd6774-7f4f-df1a-86e7-f81966773ba8",
-				"5fcaab29-db1b-2b79-e6a0-ee0f19f60f58",
-				"7d7675c4-0334-9a22-beab-485f817fbbce",
-				"6116bd27-1dd4-0d0e-938b-26e50c622b75",
-				"2208a6ea-3cce-8bae-eb41-a7bc31f99e79",
-				"a6001143-99ca-b1ab-a1c9-58c3dc8b6fe0",
-				"5cf9ac97-40c2-128f-a531-982ec0dc1247",
-				"2fde5963-bef1-afc8-52ff-1b494e2dff11",
-				"30c5af89-92ae-3cb7-92dc-9c29a41d468a",
-				"d01d666a-59bc-e7e9-2fc1-435a1b4cee89",
-				"8bb4421e-098b-3ae7-59b7-869927cf659e",
-				"261b410d-a3bb-054a-de84-03487ed7b549"
+				"49557532-d98e-55e3-5cc4-4c702b62e3ed",
+				"3453a16f-6a34-c92c-91ed-d2107b505e7a",
+				"c3383672-4018-ec1b-2688-515b73987d36",
+				"636f8c2c-7cc2-4d90-179e-7808ae8bbba1",
+				"a887c7eb-8b15-90aa-07ef-6d998297bcee",
+				"e6b6464b-da41-67ee-c2ca-53b1d5ba417d",
+				"4b8d4933-247c-d204-23c6-3acd8ec2e66a",
+				"da88d593-5117-3c1f-f56c-47ac74724c79",
+				"13c71689-cfe5-512d-f5b6-d971fa88129a",
+				"6fd784f5-bda9-b183-1d85-c30879a47427",
+				"37b02c2b-7018-6af5-4e3c-57b2abde2b0e",
+				"05ed43fe-61be-43b3-36c7-0c4a12f98efd",
+				"12d79b9a-e008-ea3d-6fa4-21c7e72e4e94",
+				"6fcaeb1e-8611-9adf-319f-92f61ac2d62d"
 			],
-			"owner": "316251",
+			"owner": 0,
 			"collectionId": "6369974d-65cc-d819-459b-0026549ddb47"
 		}
 	],
 	"timestamp": 1474156790593,
-	"owner": "316251",
+	"owner": 0,
 	"public": false,
+	"published": false,
+	"hasRequests": true,
 	"requests": [
 		{
-			"id": "0303a184-79f4-7216-4ecc-797f324d6f3e",
+			"id": "03ce940d-9b2d-b46b-0f84-48da5529615c",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -217,65 +206,58 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179176872,
-			"name": "create copilot with not exist username",
+			"time": 1474188017748,
+			"name": "create reviewer with invalid categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
-		},
-		{
-			"id": "03badc56-40a6-750a-a0fa-937d6af188b8",
-			"headers": "Authorization: Bearer {{authToken}}\n",
-			"headerData": [
-				{
-					"key": "Authorization",
-					"value": "Bearer {{authToken}}",
-					"description": "",
-					"enabled": true
-				}
-			],
-			"url": "{{url}}/develop/challenges/checkpoint/2220002",
-			"queryParams": [],
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
+		},
+		{
+			"id": "05ed43fe-61be-43b3-36c7-0c4a12f98efd",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"pathVariableData": [],
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1497550612717,
-			"name": "Old logic, access allowed",
+			"time": 1474189158880,
+			"name": "remove reviewer with non-integer categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": []
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "0554d512-8935-33a8-6447-85eba32b8873",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "07358622-f7d4-9233-8dc1-204acb7b1ccf",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474176736874,
-			"name": "get all copilots with admin token",
+			"time": 1474173280471,
+			"name": "remove admin with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "05f2c4f0-2f80-95ed-54f6-2b731960bdac",
-			"headers": "Authorization: wrong\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "08364378-8daf-8159-547e-fac22ca27847",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -284,15 +266,15 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474176769090,
-			"name": "get all copilots without Bearer header",
+			"time": 1474268286128,
+			"name": "get all reviewers with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "0b12cd19-4eda-4c11-e926-7f8c8920d2ab",
+			"id": "0865091c-8f04-f18c-f9e5-e5c182bc8ab3",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -303,16 +285,16 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187872946,
-			"name": "create reviewer with admin token",
+			"time": 1474268192451,
+			"name": "create reviewer with invalid  immune",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"Yoshi\",\n     \"categoryId\": 14,\n     \"immune\": \"invalid boolean\"\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "0baebd12-e9e9-b75f-5409-4bdd22db26e1",
+			"id": "0e55b155-b8b7-ae58-5505-f1ff9ba0eb36",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -323,78 +305,77 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282767080,
-			"name": "create reviewer with f2f category id",
+			"time": 1474282763352,
+			"name": "create reviewer with code category id",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"liquid_user\",\n     \"categoryId\": 38\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"Hung\",\n     \"categoryId\": 39\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "0dc9a5b6-60b7-0006-30f3-a93f6a23efee",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "12d79b9a-e008-ea3d-6fa4-21c7e72e4e94",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168987848,
-			"name": "create admin with wrong Bearer header",
+			"time": 1474189177783,
+			"name": "remove reviewer without categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "121ce835-ccff-770b-cf19-d4c8715734ee",
+			"id": "13c71689-cfe5-512d-f5b6-d971fa88129a",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179507223,
-			"name": "create copilot with isStudioCopilot false",
+			"time": 1474282495801,
+			"name": "remove reviewer with not exist username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 1,\n    \"isStudioCopilot\":0\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "12863b80-7674-2de7-7371-1921c77e6ad1",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"id": "144d7cd5-cedb-1e15-fec5-27c5e56863df",
+			"headers": "",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474284611393,
-			"name": "create reviewer with categoryId in query and body at same time",
+			"time": 1474174192935,
+			"name": "get all admins without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"categoryId\":7\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
 		},
 		{
-			"id": "13cfe266-39c7-4139-4526-0f45743c1ec1",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "16044f47-5b3d-2ba2-1787-8e6f7e78af97",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -403,18 +384,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474172375481,
-			"name": "create admin with user token",
+			"time": 1474284611393,
+			"name": "create reviewer with categoryId in query and body at same time",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"categoryId\":7\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "16572157-2b12-830a-35df-e87fee271e02",
+			"id": "17cd6d9b-17b2-1f5c-a0d8-e0948c718d26",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -423,98 +404,78 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179347234,
-			"name": "create copilot with isSoftwareCopilot false",
-			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 0,\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
-		},
-		{
-			"id": "1739bc1d-f48e-2f66-c423-d56a7dd6925f",
-			"headers": "",
-			"url": "{{url}}/admin/admins",
-			"preRequestScript": null,
-			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1474174192935,
-			"name": "get all admins without Authorization header",
+			"time": 1474168970336,
+			"name": "create admin with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "1a4b8b23-8b80-aaf8-5350-63d6e573ef85",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"id": "19a2adaa-d44b-5fd7-9ee7-a6d3452e4492",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178858906,
-			"name": "create copilot without Bearer header",
+			"time": 1474177129491,
+			"name": "remove copilot with not exist username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "1b4714ed-d2cb-cd10-98c3-4965448e6b17",
+			"id": "1e4fffd8-a809-e9dc-0659-0df467954407",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282455411,
-			"name": "create reviewer with categoryId in query",
+			"time": 1474173533574,
+			"name": "remove admin with notexist  username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "1b96aaf0-f11e-a4c3-4217-c0833e6c75ee",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/auth",
+			"id": "202e4545-829b-f158-372f-206e632d609f",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
-			"version": 2,
-			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
+			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474159263289,
-			"name": "Login as admin user",
+			"time": 1474187893955,
+			"name": "create reviewer without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"heffan\", \n    \"password\": \"password\"\n}",
-			"folder": "14f4dd06-76e0-ca22-602f-0ad3974aa4fa"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "1c6e9cc9-1d15-c2cb-0b7d-7b552558f26c",
-			"headers": "Authorization: Bearer wrong\n",
-			"url": "{{url}}/admin/admins",
+			"id": "21bdc1e1-c5b2-d063-fd54-386ab396b224",
+			"headers": "Authorization: wrong\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -523,17 +484,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474174234342,
-			"name": "get all admins with wrong Bearer header",
+			"time": 1474176769090,
+			"name": "get all copilots without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
+			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
 		},
 		{
-			"id": "216bd35b-31af-ba0a-497d-9b93576104b7",
+			"id": "2297e0e7-4871-b68e-6258-b59a1da3acd4",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -542,78 +503,58 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179249694,
-			"name": "create copilot with invalid isStudioCopilot",
-			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isStudioCopilot\": \"invalid boolean\",\n    \"isSoftwareCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
-		},
-		{
-			"id": "2208a6ea-3cce-8bae-eb41-a7bc31f99e79",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
-			"preRequestScript": null,
-			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1474189091821,
-			"name": "remove reviewer without username",
+			"time": 1474169000065,
+			"name": "create admin without username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "261b410d-a3bb-054a-de84-03487ed7b549",
+			"id": "24bc8058-d1ef-1f33-eb64-ede9b9663f49",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474284520276,
-			"name": "remove reviewer with categoryId in query and body at same time",
+			"time": 1474188046380,
+			"name": "create reviewer with nagative categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\":7\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "2c17ef61-6067-4da2-6125-3bf54a8d7526",
+			"id": "26e53a5b-bef9-17f2-fb02-34595bf8a8c4",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173258538,
-			"name": "remove admin with admin token",
+			"time": 1474178883094,
+			"name": "create copilot without username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"rawModeData": "{}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "2dc63d17-e288-5432-1e70-ea3b38dbd939",
+			"id": "2cb65342-ba7f-b473-6afc-8a729da04563",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -622,16 +563,16 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168970336,
-			"name": "create admin with admin token",
+			"time": 1474179347234,
+			"name": "create copilot with isSoftwareCopilot false",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 0,\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "2e452537-8224-19aa-e79d-3bdd2d3d6092",
+			"id": "2d18170b-9631-3c97-fc68-51d0ed76766c",
 			"headers": "Authorization: Bearer {{userToken}}\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
@@ -645,13 +586,13 @@
 			"time": 1474176739711,
 			"name": "get all copilots with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
+			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
 		},
 		{
-			"id": "2f8eda4d-c65c-ba89-a38c-4f197342b382",
-			"headers": "Content-Type: application/json\n",
+			"id": "2f633003-2ac7-99ec-e52a-8b1f2e0534d4",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -661,37 +602,37 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173276705,
-			"name": "remove  admin without Authorization header",
+			"time": 1474173290943,
+			"name": "remove admin without username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"rawModeData": "{}",
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "2fde5963-bef1-afc8-52ff-1b494e2dff11",
+			"id": "2f652b9b-7dc4-8140-9ac5-e6995f1a3fba",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189135829,
-			"name": "remove reviewer with invalid categoryId",
+			"time": 1474187901930,
+			"name": "create reviewer without username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "30c5af89-92ae-3cb7-92dc-9c29a41d468a",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "3453a16f-6a34-c92c-91ed-d2107b505e7a",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -701,18 +642,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189145913,
-			"name": "remove reviewer with negative categoryId",
+			"time": 1474189053598,
+			"name": "remove reviewer with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "32fd36b2-7397-5e93-8b6c-755557c77586",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "34ac4817-1082-2274-ed98-f17b63e62786",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -721,17 +662,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187888883,
-			"name": "create reviewer without Authorization header",
+			"time": 1474179249694,
+			"name": "create copilot with invalid isStudioCopilot",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isStudioCopilot\": \"invalid boolean\",\n    \"isSoftwareCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "3347ecb1-015e-bd23-20ea-1e5c1bacf1ec",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"id": "34b27e13-3b96-0a9e-25e6-8a339c517518",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -741,18 +682,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177106806,
-			"name": "remove copilot with user token",
+			"time": 1474177113168,
+			"name": "remove copilot without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "35dea5ec-b89c-fe4f-9a74-4ed2637c3501",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "357caf52-98e8-90a9-8d13-1bf8d330915e",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -761,38 +702,38 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173290943,
-			"name": "remove admin without username",
+			"time": 1474177110084,
+			"name": "remove copilot without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "37345c71-a682-1d40-ff87-7739450f0904",
+			"id": "37b02c2b-7018-6af5-4e3c-57b2abde2b0e",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474268192451,
-			"name": "create reviewer with invalid  immune",
+			"time": 1474189145913,
+			"name": "remove reviewer with negative categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"Yoshi\",\n     \"categoryId\": 14,\n     \"immune\": \"invalid boolean\"\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "38247541-c9f7-206a-f77a-2cdbd47c3968",
+			"id": "3a87b2a7-3761-5089-38d9-6c7d3796e984",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -801,143 +742,136 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282659872,
-			"name": "create reviewer with not exist username",
+			"time": 1474272371352,
+			"name": "create copilot with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "39116742-fb19-f8ba-f177-1e1910b0dd50",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "3f0e98fb-e97a-e6ed-8dc7-e864b1447e03",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187897602,
-			"name": "create reviewer with wrong Bearer header",
+			"time": 1474173276705,
+			"name": "remove  admin without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "4063d0fe-dc7b-03fd-1958-219c5d10b788",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "42fc7559-c2a2-8b85-67e3-3812ae0d5998",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177185914,
-			"name": "remove copilot with admin token",
+			"time": 1474177780363,
+			"name": "create copilot with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "4547a259-b0cf-c5e6-8d04-035b9ae443ce",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=1.1",
+			"id": "43dbe6f5-32e5-f0f0-5735-42a3a9f08120",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188155542,
-			"name": "get all reviewers with non-integer categoryId",
+			"time": 1474173399023,
+			"name": "create admin with not exist username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "46fea4dc-9708-763b-c0cc-713ac9c1a9eb",
-			"headers": "Authorization: Bearer {{authToken}}\n",
-			"headerData": [
-				{
-					"key": "Authorization",
-					"value": "Bearer {{authToken}}",
-					"description": "",
-					"enabled": true
-				}
-			],
-			"url": "{{url}}/develop/challenges/checkpoint/2220005",
-			"queryParams": [],
+			"id": "477195d0-14ca-6a6e-274f-513e7d50a45c",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"pathVariableData": [],
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1497550755372,
-			"name": "New logic, access denied",
+			"time": 1474179290066,
+			"name": "create copilot with isStudioCopilot/isSoftwareCopilot false",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": []
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"isStudioCopilot\": false,\n    \"isSoftwareCopilot\":false\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "497b04d4-c729-3008-107e-b69aead7e3db",
+			"id": "49557532-d98e-55e3-5cc4-4c702b62e3ed",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189226479,
-			"name": "create copilot without isSoftwareCopilot",
+			"time": 1474266891365,
+			"name": "remove reviewer with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "4b62272c-8167-0310-930a-d5f0526c52a8",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "49952d3d-864a-25ff-3648-abbb79550dc2",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173399023,
-			"name": "create admin with not exist username",
+			"time": 1474177116518,
+			"name": "remove copilot with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "4c54c5ab-5d8b-a873-49b0-0f3d63d6b42f",
+			"id": "49c5d6f4-5b86-3e9f-8c82-ef7430411264",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
@@ -948,55 +882,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178883094,
-			"name": "create copilot without username",
+			"time": 1474179169639,
+			"name": "create copilot with empty username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"     \",\n     \"isSoftwareCopilot\": true,\n     \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "4f247a99-8f61-47ea-3323-68ec5a7e7000",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=wrong",
+			"id": "4a6e3f4b-cb9e-978d-281f-81a57545b0ac",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474184004438,
-			"name": "get all reviewers with invalid categoryId",
+			"time": 1474187884890,
+			"name": "create reviewer with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "52edc048-18d6-ce4d-5312-69286ce2e2f9",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"id": "4b8d4933-247c-d204-23c6-3acd8ec2e66a",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189283486,
-			"name": "get all reviewers without categoryId",
+			"time": 1474189091821,
+			"name": "remove reviewer without username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+			"rawModeData": "{}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "597e4417-c496-e48d-801c-5504e9201d18",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "518db876-c166-6aa7-d484-b8b778297b4e",
+			"headers": "Content-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1006,18 +942,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474272371352,
-			"name": "create copilot with admin token",
+			"time": 1474178853689,
+			"name": "create copilot without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "5cf9ac97-40c2-128f-a531-982ec0dc1247",
+			"id": "538a99a4-4701-1ee0-527c-6d2db316dae6",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -1026,56 +962,56 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282495801,
-			"name": "remove reviewer with not exist username",
+			"time": 1474177126290,
+			"name": "remove copilot with empty username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{\n    \"username\": \"     \"\n}",
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "5ebd6774-7f4f-df1a-86e7-f81966773ba8",
+			"id": "59d2ab3f-1ef2-3925-42c4-754eced98658",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers?categoryId=14",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474273020582,
-			"name": "remove reviewer with categoryId in query",
+			"time": 1474169674465,
+			"name": "create admin with empty username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{\n    \"username\": \"     \"\n}",
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "5eee889a-83e0-96da-a476-ffd50ad66960",
+			"id": "600d723c-706d-42ca-9ecc-94a32e280063",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188017748,
-			"name": "create reviewer with invalid categoryId",
+			"time": 1474173326368,
+			"name": "remove admin without empty username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"     \"\n}",
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "5fcaab29-db1b-2b79-e6a0-ee0f19f60f58",
+			"id": "636f8c2c-7cc2-4d90-179e-7808ae8bbba1",
 			"headers": "Content-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -1089,63 +1025,54 @@
 			"time": 1474189062608,
 			"name": "remove reviewer without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
-		},
-		{
-			"id": "60330c29-7ed3-b453-8d01-652084ca19b1",
-			"headers": "Authorization: Bearer {{authToken}}\n",
-			"headerData": [
-				{
-					"key": "Authorization",
-					"value": "Bearer {{authToken}}",
-					"description": "",
-					"enabled": true
-				}
-			],
-			"url": "{{url}}/develop/challenges/checkpoint/2220004",
-			"queryParams": [],
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
+		},
+		{
+			"id": "6727946e-aa76-0996-e734-800bb07cf5c6",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"pathVariableData": [],
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1497550705028,
-			"name": "New logic, access allowed",
+			"time": 1474189246551,
+			"name": "create copilot without isStudioCopilot",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": []
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "6116bd27-1dd4-0d0e-938b-26e50c622b75",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "67db2b5a-4b85-4e18-2709-5c475849329f",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189083334,
-			"name": "remove reviewer with wrong Bearer header",
+			"time": 1474176736874,
+			"name": "get all copilots with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
 		},
 		{
-			"id": "617c7aa5-6a13-7f08-3621-050d7bb9fb42",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "68d189c2-eb05-ded4-1e97-414ebde03ab8",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1154,57 +1081,58 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187884890,
-			"name": "create reviewer with user token",
+			"time": 1474179220315,
+			"name": "create copilot with invalid isSoftwareCopilot",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": \"invalid boolean\",\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "61f8c960-54fd-f1b3-0cc3-8ac89de6361a",
+			"id": "6fcaeb1e-8611-9adf-319f-92f61ac2d62d",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282763352,
-			"name": "create reviewer with code category id",
+			"time": 1474284520276,
+			"name": "remove reviewer with categoryId in query and body at same time",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"Hung\",\n     \"categoryId\": 39\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\":7\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "62a5e348-741b-fd42-ed58-839def26d4bf",
-			"headers": "",
-			"url": "{{url}}/admin/copilots",
+			"id": "6fd784f5-bda9-b183-1d85-c30879a47427",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "DELETE",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474176772030,
-			"name": "get all copilots without Authorization header",
+			"time": 1474189135829,
+			"name": "remove reviewer with invalid categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": \"wrong number\"\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "676c46be-e1bf-ba14-d357-1ca01119054b",
+			"id": "790064a6-e429-1f9c-24b5-7112ce1fb8b2",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1213,37 +1141,37 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189246551,
-			"name": "create copilot without isStudioCopilot",
+			"time": 1474283473763,
+			"name": "create reviewer with immune",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"Yoshi\",\n    \"categoryId\": 14,\n    \"immune\":1\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "6a8ef947-840a-bf33-c225-be351341f914",
+			"id": "79444594-2c40-1e6e-9f71-f22d57828026",
 			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177116518,
-			"name": "remove copilot with wrong Bearer header",
+			"time": 1474178865110,
+			"name": "create copilot with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "6ab91574-6c11-9d54-a6a3-a87304bec08b",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"id": "828d7e47-ee45-5ed2-fe37-2114815e84f1",
+			"headers": "Authorization: Bearer wrong\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1253,17 +1181,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173887249,
-			"name": "get all admins with admin token",
+			"time": 1474174234342,
+			"name": "get all admins with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
+			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
 		},
 		{
-			"id": "6fc730e8-851c-c0c0-4dbf-79a9fc7c67e1",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "84cd43c0-c407-365b-f1f4-07929e2876cc",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1272,17 +1200,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178865110,
-			"name": "create copilot with wrong Bearer header",
+			"time": 1474188081763,
+			"name": "create reviewer with non-integer categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "73994f91-2d50-2d6b-f808-5c8b5063d046",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "85022108-999a-7200-89cd-e6b11f66bcb8",
+			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1292,45 +1220,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177126290,
-			"name": "remove copilot with empty username",
+			"time": 1474177106806,
+			"name": "remove copilot with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \"\n}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
-		},
-		{
-			"id": "76441abd-9a70-5fe9-93e1-59dd0318384f",
-			"headers": "Authorization: Bearer {{authToken}}\n",
-			"headerData": [
-				{
-					"key": "Authorization",
-					"value": "Bearer {{authToken}}",
-					"description": "",
-					"enabled": true
-				}
-			],
-			"url": "{{url}}/develop/challenges/checkpoint/2220003",
-			"queryParams": [],
-			"preRequestScript": null,
-			"pathVariables": {},
-			"pathVariableData": [],
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1497550652259,
-			"name": "Old logic, access denied",
-			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": []
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "7667b82b-d891-3959-4469-2b6e3673ed03",
-			"headers": "Content-Type: application/json\n",
+			"id": "858050d9-d3f2-900f-79a8-4a56c7ca586b",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1340,17 +1240,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474178853689,
-			"name": "create copilot without Authorization header",
+			"time": 1474179176872,
+			"name": "create copilot with not exist username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "789c4564-2cb5-a4da-04f4-0d3a432950dd",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "8679c69e-e94d-7188-60fd-bbe506b851d1",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1360,18 +1260,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282655617,
-			"name": "create reviewer with empty username",
+			"time": 1474187897602,
+			"name": "create reviewer with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "7b7bc600-f9a9-e566-ccd3-4bff678d50da",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "88ae8323-4232-1675-8796-e06c6997f3f9",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1380,36 +1280,35 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474283473763,
-			"name": "create reviewer with immune",
+			"time": 1474168987848,
+			"name": "create admin with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"Yoshi\",\n    \"categoryId\": 14,\n    \"immune\":1\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "7d7675c4-0334-9a22-beab-485f817fbbce",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "897d4baa-72d5-1eca-ff61-51db0d14408c",
+			"headers": "Authorization: Bearer wrong\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189071606,
-			"name": "remove reviewer without Bearer header",
+			"time": 1474176766163,
+			"name": "get all copilots with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
 		},
 		{
-			"id": "8b52ad5d-31a4-8a84-4d24-ceb91021a467",
+			"id": "8a43eff3-3f9a-83a2-6734-a683e29252c8",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -1420,69 +1319,38 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282760160,
-			"name": "create reviewer with studio type",
+			"time": 1474189200056,
+			"name": "create reviewer without categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"cartajs\",\n     \"categoryId\": 17\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "8bb4421e-098b-3ae7-59b7-869927cf659e",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "8b843cb6-1fc6-8c0b-1d6d-f54d9470cf76",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189177783,
-			"name": "remove reviewer without categoryId",
+			"time": 1474168982704,
+			"name": "create admin without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
-		},
-		{
-			"id": "8db48405-6ba0-f116-06c6-cc34cffd77c1",
-			"headers": "Authorization: Bearer {{authToken}}\n",
-			"headerData": [
-				{
-					"key": "Authorization",
-					"value": "Bearer {{authToken}}",
-					"description": "",
-					"enabled": true
-				}
-			],
-			"url": "{{url}}/develop/challenges/checkpoint/2220001",
-			"queryParams": [],
-			"pathVariables": {},
-			"pathVariableData": [],
-			"preRequestScript": null,
-			"method": "GET",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"data": null,
-			"dataMode": "params",
-			"name": "No groups (challenge is not private)",
-			"description": "",
-			"descriptionFormat": "html",
-			"time": 1497550504090,
-			"version": 2,
-			"responses": [],
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"folder": "498ee2d2-174c-7049-3cc4-43b4e330083b"
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "9308798f-cbfd-b44c-1d47-6ef6650424f0",
-			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=-4",
+			"id": "8bd1727c-34f8-ced7-eb92-d50cc6e56772",
+			"headers": "",
+			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -1491,57 +1359,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474184022183,
-			"name": "get all reviewers with negative categoryId",
+			"time": 1474282217351,
+			"name": "get all reviewers without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "972a47ef-1768-7d9b-f12c-df8c57cb5bf5",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
+			"id": "9bccd2a2-8aac-1931-b78e-8b61a99415a4",
+			"headers": "Content-Type: application/json\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173280471,
-			"name": "remove admin with user token",
+			"time": 1474168977872,
+			"name": "create admin without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "983e7dd1-673c-a1a9-81e9-4e81ff0ec74b",
+			"id": "9e458d5b-5aa5-05ec-6240-7d171c75cf5e",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173326368,
-			"name": "remove admin without empty username",
+			"time": 1474282760160,
+			"name": "create reviewer with studio type",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \"\n}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"rawModeData": "{\n    \"username\": \"cartajs\",\n     \"categoryId\": 17\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "9ddc746e-591c-69e7-2326-a05aa52f7109",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "9fb05ea1-f85e-209e-7619-e40450acd7f3",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1550,36 +1418,36 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168977872,
-			"name": "create admin without Authorization header",
+			"time": 1474178858906,
+			"name": "create copilot without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "a183318a-b246-f372-1b0e-2ff1ad2395c0",
+			"id": "9ff114f0-56ca-f56c-08e4-3bb4dcaac10f",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474266891365,
-			"name": "remove reviewer with admin token",
+			"time": 1474189226479,
+			"name": "create copilot without isSoftwareCopilot",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isStudioCopilot\":true\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "a407a482-48ea-5561-9158-71259c3e8a3b",
+			"id": "a466f2b7-2f9c-4a14-fc0e-eee7981cdb42",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
@@ -1590,17 +1458,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188081763,
-			"name": "create reviewer with non-integer categoryId",
+			"time": 1474282767080,
+			"name": "create reviewer with f2f category id",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"liquid_user\",\n     \"categoryId\": 38\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "a6001143-99ca-b1ab-a1c9-58c3dc8b6fe0",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "a47c9a54-d12a-6801-02a1-c57c420237cf",
+			"headers": "",
+			"url": "{{url}}/admin/copilots",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474176772030,
+			"name": "get all copilots without Authorization header",
+			"description": "",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"responses": [],
+			"folder": "1a80812c-dfa2-5dc4-aca7-299502bbc807"
+		},
+		{
+			"id": "a495567b-a450-037f-ca8e-c9da52116890",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/auth",
+			"preRequestScript": null,
+			"pathVariables": {},
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
+			"version": 2,
+			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1474159245944,
+			"name": "Log in as ordinary user",
+			"description": "",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
+			"responses": [],
+			"rawModeData": "{\n    \"username\": \"user\", \n    \"password\": \"password\"\n}",
+			"folder": "fedff379-68f7-3322-d2e9-29471d82cc60"
+		},
+		{
+			"id": "a887c7eb-8b15-90aa-07ef-6d998297bcee",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1610,17 +1518,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282491538,
-			"name": "remove reviewer with empty username",
+			"time": 1474189071606,
+			"name": "remove reviewer without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "b557e83b-d42a-a7b8-8a9c-8fa2270188b1",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"id": "a8e7c6c2-1cfb-e3ad-af5c-9c27bd71924b",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1630,57 +1538,58 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187893955,
-			"name": "create reviewer without Bearer header",
+			"time": 1474282655617,
+			"name": "create reviewer with empty username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "b5f484a7-b5e9-e763-97fb-5d750d08cd6d",
-			"headers": "Authorization: wrong\n",
-			"url": "{{url}}/admin/admins",
+			"id": "ac18e672-1e47-37fa-1ae8-85eed1beab2d",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
+			"method": "POST",
+			"data": [],
+			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474174209799,
-			"name": "get all admins without Bearer header",
+			"time": 1474187888883,
+			"name": "create reviewer without Authorization header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "b762147c-aae5-9630-dfe7-d6468a8a3843",
+			"id": "ad152575-1e23-f242-96d2-f4b49a616c56",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474169000065,
-			"name": "create admin without username",
+			"time": 1474177119734,
+			"name": "remove copilot without username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "c15dff6e-1a55-a875-3460-2d2097b2f960",
-			"headers": "Authorization: Bearer wrong\n",
-			"url": "{{url}}/admin/reviewers?categoryId=7",
+			"id": "b0bfa529-5f58-d5a6-e1bc-2099abfa253f",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -1689,15 +1598,15 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282226901,
-			"name": "get all reviewers with wrong Bearer header",
+			"time": 1474173887249,
+			"name": "get all admins with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
 		},
 		{
-			"id": "c21ce35d-8558-ca77-c6af-8a6d930564b9",
+			"id": "b83cdcb1-5abe-0f73-1c9c-b558c0634baf",
 			"headers": "Authorization: Bearer {{userToken}}\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
@@ -1711,93 +1620,91 @@
 			"time": 1474174015997,
 			"name": "get all admins with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "43eec092-7864-262f-fe9d-a2a416e1a2d8"
+			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
 		},
 		{
-			"id": "c2e943b2-f53d-6788-26e6-ca35b5a5fec7",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "b84bd2e1-cd0b-3489-3c11-917a1624249e",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177110084,
-			"name": "remove copilot without Authorization header",
+			"time": 1474282455411,
+			"name": "create reviewer with categoryId in query",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "c3dcb7b2-c57c-398e-62d8-170db419f168",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "b8d3fef6-214c-5032-3002-f6c16f3288e2",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474188046380,
-			"name": "create reviewer with nagative categoryId",
+			"time": 1474173287352,
+			"name": "remove admin with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": -1\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "c42386fb-4880-273c-5f56-514a24108ffc",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "c0db4362-622a-b556-1991-80df568707b7",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/reviewers?categoryId=-4",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189200056,
-			"name": "create reviewer without categoryId",
+			"time": 1474184022183,
+			"name": "get all reviewers with negative categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "d01d666a-59bc-e7e9-2fc1-435a1b4cee89",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "c1d0d1a9-a8b9-8ee7-c6e6-e539a52fbf35",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
 			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189158880,
-			"name": "remove reviewer with non-integer categoryId",
+			"time": 1474189283486,
+			"name": "get all reviewers without categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 1.1\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "d0457f1e-5957-b83c-f603-aaf45690e622",
-			"headers": "",
+			"id": "c28b4a81-8ee7-24ba-fc8b-54b1b3642fab",
+			"headers": "Authorization: Bearer {{userToken}}\n",
 			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1807,17 +1714,17 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282217351,
-			"name": "get all reviewers without Authorization header",
+			"time": 1474282212758,
+			"name": "get all reviewers with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "d0e8a5bc-f7c7-268b-5a66-37e90947dabc",
+			"id": "c3383672-4018-ec1b-2688-515b73987d36",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers?categoryId=14",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -1826,77 +1733,58 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177129491,
-			"name": "remove copilot with not exist username",
+			"time": 1474273020582,
+			"name": "remove reviewer with categoryId in query",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "d7913d8d-6c66-b1cd-62d5-c40393c22661",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "c8075e84-bb8d-7596-ba92-5990705f93bc",
+			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179169639,
-			"name": "create copilot with empty username",
+			"time": 1474173283865,
+			"name": "remove admin without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \",\n     \"isSoftwareCopilot\": true,\n     \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "dcf543f4-41e0-0506-52a1-d9abc07132e2",
+			"id": "ccc25e86-5365-aaf6-8ce8-9838898142eb",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179220315,
-			"name": "create copilot with invalid isSoftwareCopilot",
-			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\",\n     \"isSoftwareCopilot\": \"invalid boolean\",\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
-		},
-		{
-			"id": "e1dd94fd-2dea-4082-61f8-a551fcf1d55f",
-			"headers": "Authorization: Bearer wrong\n",
-			"url": "{{url}}/admin/copilots",
-			"preRequestScript": null,
-			"pathVariables": {},
-			"method": "GET",
-			"data": null,
-			"dataMode": "params",
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1474176766163,
-			"name": "get all copilots with wrong Bearer header",
+			"time": 1474177185914,
+			"name": "remove copilot with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "2c775e97-29a3-c27d-abb5-e5dc6a5e05d9"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "2afb4105-1932-6ef0-866c-43ecb13c0048"
 		},
 		{
-			"id": "e3c87489-0dac-48e0-869b-117743e7fb01",
-			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "d0a6e94f-3c59-2398-f0f5-a1d54a6f4e15",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -1905,57 +1793,57 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177780363,
-			"name": "create copilot with user token",
+			"time": 1474282659872,
+			"name": "create reviewer with not exist username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": true,\n    \"isStudioCopilot\":true\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"notexist\",\n    \"categoryId\": 14\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "e498adc6-5df6-ea02-491f-de46950eff67",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
+			"id": "d2bf20ce-e0ed-a347-69dc-577e34dbefd0",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474168982704,
-			"name": "create admin without Bearer header",
+			"time": 1474173258538,
+			"name": "remove admin with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
 			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"folder": "78aeaf8b-80c8-40df-6ed6-2af5acdbf2ea"
 		},
 		{
-			"id": "e5179ef5-cef4-a08b-9fbf-cd63b4a4066d",
+			"id": "da88d593-5117-3c1f-f56c-47ac74724c79",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
+			"method": "DELETE",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474169674465,
-			"name": "create admin with empty username",
+			"time": 1474282491538,
+			"name": "remove reviewer with empty username",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"     \"\n}",
-			"folder": "305f84dd-24a3-cbe7-97f1-7063b14a5f42"
+			"rawModeData": "{\n    \"username\": \"     \",\n    \"categoryId\": 14\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "e61162b5-ccbd-79fc-7daa-ad1e9e71f8db",
-			"headers": "Authorization: Bearer {{userToken}}\n",
+			"id": "ddf839fa-733a-056a-8a2c-a1e56d0e9072",
+			"headers": "Authorization: Bearer wrong\n",
 			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
 			"pathVariables": {},
@@ -1965,77 +1853,56 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474282212758,
-			"name": "get all reviewers with user token",
-			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
-		},
-		{
-			"id": "e766e9a8-dd56-26b0-5fa7-2e7e876001d7",
-			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
-			"preRequestScript": null,
-			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1474173287352,
-			"name": "remove admin with wrong Bearer header",
+			"time": 1474282226901,
+			"name": "get all reviewers with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "e8a850e5-31bf-6c13-0e44-bc4583bca2cb",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/admins",
+			"id": "e058d344-3c5d-951a-c86e-ebfeba41bab8",
+			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/copilots",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173283865,
-			"name": "remove admin without Bearer header",
+			"time": 1474179507223,
+			"name": "create copilot with isStudioCopilot false",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"isSoftwareCopilot\": 1,\n    \"isStudioCopilot\":0\n}",
+			"folder": "8052cbf5-e206-af03-0392-e853f3f06bf4"
 		},
 		{
-			"id": "eb8f368e-9c8e-47b7-c70d-1cf7ac89c02c",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
+			"id": "e10c59ae-1669-54bd-03bb-4de19d51fb5e",
+			"headers": "Authorization: wrong\n",
 			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474173533574,
-			"name": "remove admin with notexist  username",
+			"time": 1474174209799,
+			"name": "get all admins without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"notexist\"\n}",
-			"folder": "4ff79efc-3da3-8c10-cbf9-8a883260cc55"
+			"folder": "2964b89d-893b-aada-2e0e-c4136b920508"
 		},
 		{
-			"id": "eeabcbce-4ca9-88ce-ec1a-93e0729bad11",
-			"headers": "Authorization: wrong\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"id": "e6b6464b-da41-67ee-c2ca-53b1d5ba417d",
+			"headers": "Authorization: Bearer wrong\nContent-Type: application/json\n",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "DELETE",
@@ -2044,18 +1911,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474177113168,
-			"name": "remove copilot without Bearer header",
+			"time": 1474189083334,
+			"name": "remove reviewer with wrong Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "f11d599f-4472-bcef-b9e3-7c86ac139e35"
 		},
 		{
-			"id": "f6e293f3-5650-d73b-36e8-97d587604a4b",
+			"id": "ebcf31ae-035b-49ac-41d4-fa4484eff6a1",
 			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
+			"url": "{{url}}/admin/reviewers",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
@@ -2064,18 +1931,18 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474179290066,
-			"name": "create copilot with isStudioCopilot/isSoftwareCopilot false",
+			"time": 1474187872946,
+			"name": "create reviewer with admin token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n     \"isStudioCopilot\": false,\n    \"isSoftwareCopilot\":false\n}",
-			"folder": "1438537c-a455-8206-0b64-bcb6e98cb447"
+			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
+			"folder": "7544e9b2-c615-4376-7145-511bb968c906"
 		},
 		{
-			"id": "f88f1d64-7461-652d-f3fb-6c48fa553e61",
+			"id": "ef7fd1f5-a302-b7b6-a772-a43eb3b82062",
 			"headers": "Authorization: Bearer {{adminToken}}\n",
-			"url": "{{url}}/admin/reviewers?categoryId=7",
+			"url": "{{url}}/admin/reviewers?categoryId=wrong",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "GET",
@@ -2084,76 +1951,75 @@
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474268286128,
-			"name": "get all reviewers with admin token",
+			"time": 1474184004438,
+			"name": "get all reviewers with invalid categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "f8efe766-a322-ee21-b4f5-78d78642af19",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"id": "f6c44b3f-570d-e48f-3b7e-8419a9ebe9b6",
+			"headers": "Content-Type: application/json\n",
+			"url": "{{url}}/auth",
 			"preRequestScript": null,
 			"pathVariables": {},
 			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
-			"tests": null,
+			"version": 2,
+			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474187901930,
-			"name": "create reviewer without username",
+			"time": 1474159263289,
+			"name": "Login as admin user",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "ff6b7b38-7532-5c03-26db-c68f88696eb9"
+			"rawModeData": "{\n    \"username\": \"heffan\", \n    \"password\": \"password\"\n}",
+			"folder": "fedff379-68f7-3322-d2e9-29471d82cc60"
 		},
 		{
-			"id": "f901106d-47f8-080c-d56b-7badc5774481",
-			"headers": "Content-Type: application/json\n",
-			"url": "{{url}}/auth",
+			"id": "f784d0d8-8645-7633-91c6-54ec81aa95ff",
+			"headers": "Authorization: Bearer {{adminToken}}\n",
+			"url": "{{url}}/admin/reviewers?categoryId=1.1",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "POST",
-			"data": [],
-			"dataMode": "raw",
-			"version": 2,
-			"tests": "var authResponse = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"authToken\", authResponse.token);\ntests[\"Status code is 200\"] = responseCode.code === 200;\nvar jsonData = JSON.parse(responseBody);\ntests[\"A valid token is returned\"] = !!jsonData.token;",
+			"method": "GET",
+			"data": null,
+			"dataMode": "params",
+			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474159245944,
-			"name": "Log in as ordinary user",
+			"time": 1474188155542,
+			"name": "get all reviewers with non-integer categoryId",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"user\", \n    \"password\": \"password\"\n}",
-			"folder": "14f4dd06-76e0-ca22-602f-0ad3974aa4fa"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		},
 		{
-			"id": "f9a913ac-f3b4-3cba-ad0d-41265aa5904b",
+			"id": "fc7d7ac4-d1e1-a441-6717-ecb50b9ad7f6",
 			"headers": "Authorization: Bearer {{userToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/reviewers",
+			"url": "{{url}}/admin/admins",
 			"preRequestScript": null,
 			"pathVariables": {},
-			"method": "DELETE",
+			"method": "POST",
 			"data": [],
 			"dataMode": "raw",
 			"tests": null,
 			"currentHelper": "normal",
 			"helperAttributes": {},
-			"time": 1474189053598,
-			"name": "remove reviewer with user token",
+			"time": 1474172375481,
+			"name": "create admin with user token",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{\n    \"username\": \"dok_tester\",\n    \"categoryId\": 14\n}",
-			"folder": "f51d9a83-9d4a-fa4d-a3a8-08c9a94a35b5"
+			"rawModeData": "{\n    \"username\": \"dok_tester\"\n}",
+			"folder": "142d5b1b-b304-bced-c1f3-b59e8187d2aa"
 		},
 		{
-			"id": "fbdd77d2-d138-3a05-a543-d5302daeca50",
+			"id": "fe0a03f9-4969-651a-5eed-01de9398498e",
 			"headers": "Authorization: wrong\n",
 			"url": "{{url}}/admin/reviewers?categoryId=7",
 			"preRequestScript": null,
@@ -2167,29 +2033,9 @@
 			"time": 1474282221279,
 			"name": "get all reviewers without Bearer header",
 			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
-			"responses": [],
-			"folder": "790ca3b9-d88f-04e9-b65d-fd59442f3394"
-		},
-		{
-			"id": "ff7618ed-fc54-1b81-6129-8df5ac4e67a9",
-			"headers": "Authorization: Bearer {{adminToken}}\nContent-Type: application/json\n",
-			"url": "{{url}}/admin/copilots",
-			"preRequestScript": null,
-			"pathVariables": {},
-			"method": "DELETE",
-			"data": [],
-			"dataMode": "raw",
-			"tests": null,
-			"currentHelper": "normal",
-			"helperAttributes": {},
-			"time": 1474177119734,
-			"name": "remove copilot without username",
-			"description": "",
-			"collectionId": "ec27457a-c67c-97cc-a855-d1b82e4f952a",
+			"collectionId": "b4745ce1-c766-7823-c9cf-fa73e6b9cb2b",
 			"responses": [],
-			"rawModeData": "{}",
-			"folder": "dcec6b34-9127-b6df-bbd9-da6c35c739f8"
+			"folder": "81516934-d74e-f97d-262f-21d87d5961d1"
 		}
 	]
 }
\ No newline at end of file

From 445be50b7aac2abe76aba1d404e09914299e9bb7 Mon Sep 17 00:00:00 2001
From: Vyacheslav V Sokolov <deathless@t-sk.ru>
Date: Fri, 16 Jun 2017 08:15:33 +0700
Subject: [PATCH 3/4] Fixed the case with a challenge that doesn't have
 eligibility

---
 actions/challenges.js                  | 20 +++++++++++++++-----
 db_scripts/test_eligibility.insert.sql |  1 -
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/actions/challenges.js b/actions/challenges.js
index f47bbe7a6..3b17370ca 100755
--- a/actions/challenges.js
+++ b/actions/challenges.js
@@ -867,22 +867,32 @@ function validateChallenge(api, connection, dbConnectionMap, challengeId, isStud
                 challengeId: challengeId,
                 user_id: userId
             };
-            api.dataAccess.executeQuery('get_challenge_accessibility_and_groups', sqlParams, dbConnectionMap, cb);
+            async.parallel({
+                accessibility: function (cbx) {
+                    api.dataAccess.executeQuery('get_challenge_accessibility_and_groups', sqlParams, dbConnectionMap, cbx);
+                },
+                exists:  function (cbx) {
+                    api.dataAccess.executeQuery('check_challenge_exists', sqlParams, dbConnectionMap, cbx);
+                }
+            }, cb);
         }, function (res, cb) {
-            // If the record with this callengeId doesn't exist in contest_eligibility table
+            // If the record with this callengeId doesn't exist in 'project' table
             // or there's a studio/software mismatch
-            if (res.length === 0 || Boolean(res[0].is_studio) !== isStudio) {
+            if (res.exists.length === 0 || Boolean(res.exists[0].is_studio) !== isStudio) {
                 cb(new NotFoundError("Challenge not found."));
                 return;
             }
             // If there's no corresponding record in group_contest_eligibility
             // or the user is an admin
-            if (_.isNull(res[0].challenge_group_ind) || _.isUndefined(res[0].challenge_group_ind) || connection.caller.accessLevel === 'admin') {
+            if (res.accessibility.length === 0
+                    || _.isNull(res.accessibility[0].challenge_group_ind)
+                    || _.isUndefined(res.accessibility[0].challenge_group_ind)
+                    || connection.caller.accessLevel === 'admin') {
                 cb();
                 return;
             }
             error = false;
-            async.some(res, function (record, cbx) {
+            async.some(res.accessibility, function (record, cbx) {
                 if (record.challenge_group_ind === 0) {
                     cbx(!(_.isNull(record.user_group_xref_found) || _.isUndefined(record.user_group_xref_found)));
                 } else {
diff --git a/db_scripts/test_eligibility.insert.sql b/db_scripts/test_eligibility.insert.sql
index 05d827c15..020fd832e 100644
--- a/db_scripts/test_eligibility.insert.sql
+++ b/db_scripts/test_eligibility.insert.sql
@@ -114,7 +114,6 @@ INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_ite
 
 DATABASE common_oltp;
 
-INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110001, 2220001, 0);
 INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110002, 2220002, 0);
 INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110003, 2220003, 0);
 INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110004, 2220004, 0);

From 16be372f51e13af663a17b69d12ac2c39cfb7ae0 Mon Sep 17 00:00:00 2001
From: Vyacheslav V Sokolov <deathless@t-sk.ru>
Date: Mon, 19 Jun 2017 02:42:34 +0700
Subject: [PATCH 4/4] Shared the eligibility verification with
 challengeRegistration. The eligibility check routine is now in
 challengeHelper and can be added anywhere by a couple of simple lines of
 code.

---
 actions/challengeRegistration.js              |  39 +++--
 actions/challenges.js                         |  47 +----
 db_scripts/test_eligibility.delete.sql        |  17 ++
 db_scripts/test_eligibility.insert.sql        |  89 +++++++++-
 ...e-Improve Challenge Visibility Control.doc | Bin 49664 -> 52736 bytes
 initializers/challengeHelper.js               |  77 ++++++++-
 queries/challenge_registration_validations    |  10 --
 ...Visibility_Control.postman_collection.json | 160 ++++++++++++++++++
 8 files changed, 365 insertions(+), 74 deletions(-)

diff --git a/actions/challengeRegistration.js b/actions/challengeRegistration.js
index f50077b66..9424951ef 100644
--- a/actions/challengeRegistration.js
+++ b/actions/challengeRegistration.js
@@ -3,8 +3,8 @@
  *
  * The APIs to register a challenge (studio category or software category) for the current logged-in user.
  *
- * @version 1.7
- * @author ecnu_haozi, xjtufreeman, bugbuka, flytoj2ee, muzehyun
+ * @version 1.8
+ * @author ecnu_haozi, xjtufreeman, bugbuka, flytoj2ee, muzehyun, GFalcon
  *
  * changes in 1.1:
  * Combine Challenge Registration API(BUGR-11058)
@@ -27,6 +27,9 @@
  *
  * changes in 1.7:
  * Avoid reliability info set if there is none for new user.
+ * 
+ * changes in 1.8:
+ * Added the verification of the challenge's eligibility
  */
 "use strict";
 
@@ -880,19 +883,31 @@ exports.registerChallenge = {
                 } else {                   
                     api.helper.checkUserActivated(connection.caller.handle, api, connection.dbConnectionMap, function (err, inactive) {
                         var fail = err || inactive;
-                        if (fail) cb(fail);
-                        else api.dataAccess.executeQuery('check_challenge_exists', {challengeId: challengeId}, connection.dbConnectionMap, cb);
+                        if (fail) {
+                        	cb(fail);
+                        } else {
+                        	api.dataAccess.executeQuery('check_challenge_exists', {challengeId: challengeId}, connection.dbConnectionMap, cb);
+                        }
                     }, "You must activate your account in order to participate. Please check your e-mail in order to complete the activation process, or contact support@topcoder.com if you did not receive an e-mail.");                    
                 }
-            }, function (result, cb) {
-                if (result.length > 0) {
-                    if (result[0].is_studio) {
-                        registerStudioChallengeAction(api, connection, next);
-                    } else {
-                        registerSoftwareChallengeAction(api, connection, next);
-                    }
-                } else {
+            }, function(result, cb) {
+                // If the challenge is not found in the tcs_catalog:project table, 
+                if (result.length === 0) {
+                    // Do nothing, do not register
                     cb();
+                    return;
+                }
+                var isStudio = result[0].isStudio !== 0;
+                api.challengeHelper.checkUserChallengeEligibility(connection, challengeId, function (err) {
+                    cb(err, isStudio);
+                });
+            }, function (isStudio, cb) {
+                if (_.isUndefined(isStudio)) {
+                	cb();
+                } else if (isStudio) {
+                    registerStudioChallengeAction(api, connection, next);
+                } else {
+                    registerSoftwareChallengeAction(api, connection, next);
                 }
             }
         ], function (err) {
diff --git a/actions/challenges.js b/actions/challenges.js
index 3b17370ca..53266e7a8 100755
--- a/actions/challenges.js
+++ b/actions/challenges.js
@@ -867,55 +867,16 @@ function validateChallenge(api, connection, dbConnectionMap, challengeId, isStud
                 challengeId: challengeId,
                 user_id: userId
             };
-            async.parallel({
-                accessibility: function (cbx) {
-                    api.dataAccess.executeQuery('get_challenge_accessibility_and_groups', sqlParams, dbConnectionMap, cbx);
-                },
-                exists:  function (cbx) {
-                    api.dataAccess.executeQuery('check_challenge_exists', sqlParams, dbConnectionMap, cbx);
-                }
-            }, cb);
+            api.dataAccess.executeQuery('check_challenge_exists', sqlParams, dbConnectionMap, cb);
         }, function (res, cb) {
             // If the record with this callengeId doesn't exist in 'project' table
             // or there's a studio/software mismatch
-            if (res.exists.length === 0 || Boolean(res.exists[0].is_studio) !== isStudio) {
+            if (res.length === 0 || Boolean(res[0].is_studio) !== isStudio) {
                 cb(new NotFoundError("Challenge not found."));
                 return;
             }
-            // If there's no corresponding record in group_contest_eligibility
-            // or the user is an admin
-            if (res.accessibility.length === 0
-                    || _.isNull(res.accessibility[0].challenge_group_ind)
-                    || _.isUndefined(res.accessibility[0].challenge_group_ind)
-                    || connection.caller.accessLevel === 'admin') {
-                cb();
-                return;
-            }
-            error = false;
-            async.some(res.accessibility, function (record, cbx) {
-                if (record.challenge_group_ind === 0) {
-                    cbx(!(_.isNull(record.user_group_xref_found) || _.isUndefined(record.user_group_xref_found)));
-                } else {
-                    api.v3client.isUserInGroup(connection, userId, record.group_id, function (err, result) {
-                        if (err) {
-                            error = err;
-                            cbx(true);
-                        } else {
-                            cbx(result);
-                        }
-                    });
-                }
-            }, function (eligible) {
-                if (error) {
-                    cb(error);
-                } else if (eligible) {
-                    cb();
-                } else if (connection.caller.accessLevel === "anon") {
-                    cb(new UnauthorizedError());
-                } else {
-                    cb(new ForbiddenError());
-                }
-            });
+            // Check the eligibility
+            api.challengeHelper.checkUserChallengeEligibility(connection, challengeId, cb);
         }
     ], callback);
 }
diff --git a/db_scripts/test_eligibility.delete.sql b/db_scripts/test_eligibility.delete.sql
index c6a88def0..5f77f6c44 100644
--- a/db_scripts/test_eligibility.delete.sql
+++ b/db_scripts/test_eligibility.delete.sql
@@ -5,8 +5,25 @@ DELETE FROM security_groups WHERE group_id > 3330000 AND group_id < 3330100;
 DELETE FROM group_contest_eligibility WHERE contest_eligibility_id > 1110000 AND contest_eligibility_id < 1110100;
 DELETE FROM contest_eligibility WHERE contest_eligibility_id > 1110000 AND contest_eligibility_id < 1110100;
 
+DATABASE informixoltp;
+
+-- UPDATE coder SET comp_country_code = NULL WHERE user_id = 132458;
+
 DATABASE tcs_catalog;
 
+DELETE FROM notification WHERE project_id > 1110000 AND project_id < 1110100;
+DELETE FROM project_result WHERE project_id > 1110000 AND project_id < 1110100;
+DELETE FROM project_user_audit WHERE project_id > 1110000 AND project_id < 1110100;
+DELETE FROM component_inquiry WHERE project_id > 1110000 AND project_id < 1110100;
+DELETE FROM resource_info WHERE resource_id IN (SELECT resource_id FROM resource WHERE project_id > 1110000 AND project_id < 1110100);
+DELETE FROM resource WHERE project_id > 1110000 AND project_id < 1110100;
+
+DELETE FROM project_info WHERE project_id > 1110000 AND project_id < 1110100;
+DELETE FROM comp_versions WHERE component_id = 3330333;
+DELETE FROM comp_catalog WHERE component_id = 3330333;
+DELETE FROM project_phase WHERE project_id > 1110000 AND project_id < 1110100;
+DELETE FROM project WHERE project_id > 1110000 AND project_id < 1110100;
+
 DELETE FROM review_item_comment WHERE review_item_comment_id > 7770000 AND review_item_id < 7770100;
 DELETE FROM review_item WHERE review_item_id > 5550000 AND review_item_id < 5550100;
 DELETE FROM review WHERE review_id > 4440000 AND review_id < 4440100;
diff --git a/db_scripts/test_eligibility.insert.sql b/db_scripts/test_eligibility.insert.sql
index 020fd832e..8bb746502 100644
--- a/db_scripts/test_eligibility.insert.sql
+++ b/db_scripts/test_eligibility.insert.sql
@@ -99,7 +99,6 @@ INSERT INTO review_item	(review_item_id, review_id, scorecard_question_id, uploa
 	VALUES (5550004, 4440004, 3330333, 9990004, "---", 1, "132456", CURRENT, "132456", CURRENT);
 INSERT INTO review_item	(review_item_id, review_id, scorecard_question_id, upload_id, answer, sort, create_user, create_date, modify_user, modify_date)
 	VALUES (5550005, 4440005, 3330333, 9990005, "---", 1, "132456", CURRENT, "132456", CURRENT);
-	
 
 INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date)
 	VALUES (7770001, 8880001, 5550001, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
@@ -111,6 +110,84 @@ INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_ite
 	VALUES (7770004, 8880004, 5550004, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
 INSERT INTO review_item_comment (review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date)
 	VALUES (7770005, 8880005, 5550005, 1, "The current user has the right to view this challenge", 1, "132456", CURRENT, "132456", CURRENT);
+	
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (1110001, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (1110002, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (1110003, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (1110004, 1, 14, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project (project_id, project_status_id, project_category_id, create_user, create_date, modify_user, modify_date) 
+	VALUES (1110005, 1, 14, "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (2220001, 1110001, 1, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (2220002, 1110002, 1, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (2220003, 1110003, 1, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (2220004, 1110004, 1, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (2220005, 1110005, 1, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO comp_catalog (component_id, current_version, component_name, status_id, modify_date, public_ind)
+	VALUES (3330333, 1, "---", 1, CURRENT, 0);
+	
+INSERT INTO comp_versions (comp_vers_id, component_id, version, version_text, phase_id, phase_time, price, modify_date)
+	VALUES (4440444, 3330333, 1, "1", 113, CURRENT, 1000, CURRENT);
+
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110001, 2, "3330333", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110002, 2, "3330333", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110003, 2, "3330333", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110004, 2, "3330333", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110005, 2, "3330333", "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110001, 6, 3330333, "Not private", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110002, 6, 3330333, "Old logic - access allowed", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110003, 6, 3330333, "Old logic - access denied", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110004, 6, 3330333, "New logic - access allowed", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110005, 6, 3330333, "New logic - access denied", CURRENT, "132456", CURRENT);
+	
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110001, 79, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110002, 79, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110003, 79, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110004, 79, "---", "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date)
+	VALUES (1110005, 79, "---", "132456", CURRENT, "132456", CURRENT);
+
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (3330001, 1110001, 2, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (3330002, 1110002, 2, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (3330003, 1110003, 2, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (3330004, 1110004, 2, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+INSERT INTO project_phase (project_phase_id, project_id, phase_type_id, phase_status_id, scheduled_start_time, scheduled_end_time, duration, create_user, create_date, modify_user, modify_date)
+	VALUES (3330005, 1110005, 2, 2, CURRENT, CURRENT, 1, "132456", CURRENT, "132456", CURRENT);
+
+DATABASE informixoltp;
+	
+UPDATE coder SET comp_country_code = (
+	SELECT MIN(country_code) FROM country WHERE country_name = "United States"
+) WHERE coder_id = 132458;
 
 DATABASE common_oltp;
 
@@ -130,3 +207,13 @@ INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES
 INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110003, 3330002);
 INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110004, 3330003);
 INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110005, 3330004);
+
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110012, 1110002, 0);
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110013, 1110003, 0);
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110014, 1110004, 0);
+INSERT INTO contest_eligibility (contest_eligibility_id, contest_id, is_studio) VALUES (1110015, 1110005, 0);
+
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110012, 3330001);
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110013, 3330002);
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110014, 3330003);
+INSERT INTO group_contest_eligibility (contest_eligibility_id, group_id) VALUES (1110015, 3330004);
diff --git a/docs/Verification_Guide-Improve Challenge Visibility Control.doc b/docs/Verification_Guide-Improve Challenge Visibility Control.doc
index 5385983df3f5a6c74c77c93f4fa89de8b359be7d..1c2913aaec56e9f7acc508b92ae08a944ff0a3e0 100644
GIT binary patch
delta 3948
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

delta 2417
zcmaLZYfMvT7zgm@w6%6z1}f#E$o*zT<Wd@BBQA;t2}6R6V22DGGmA0k96`bq%3vl-
z+=4!49~@D<44JwPdYl>shEt4V#t<jQF*1b_V;CC32gX2U|A&iXy6m*S_C4=;Ps@4V
z|8t71R%@%))<i3tnqpRJUwJk$F_A|^@9=)@_Wk+Z4xMLYNRyE$){{s_WW_PUm<b&v
z&T8+na$<Dpk`ynZ;sB!bD56v|(PmhL6MSJY_<=tJ@UPL~3&+BVdN8sxj;IhL192n>
zf{A@&!q^&<qLXjtGckVL8lzV`V)_(KtS8&!{IpK!|G@0ekK-(CH79VG*}@emo_rzR
zkFTL!1E<${vn@V{x5j(2-t5P*@!ssPL};3fY_piAn`*!1H~j*+I@vVtQ}4K3wJYhM
zKCY}X`(%3mdux@+{zn?3S3QXIBy*&rsv3F!cW<6rn_Q^nw&WT|O3<9dr+3qP<lMuV
zyOi*N6&r|r@EubhC;dcqYZnjAL*I)d)!a8*++7lg-jGpU37vm%Xr8~JVxQ%n>A@|9
zD|KeomRGB23eD`7AM85095R#$SD2n3G*6~p4-*q^lauShmHD3p7Rrd}Z9S%bCx)!T
zQtUvV1Md+Ws9Utqv4kiDmwRU^Q5KGvB8l*%$T+SvSd5ofV0Cdg_;sQ|bSL72jQEpY
zn^S`mgV0*7@5YCnQ@APF;hK$8voY*yEG`E<RYo07h(OQG7KMEm9QjZkd)MU8jpZKN
zU9_FMs;cG&PyrQDA#bb>RWDYTxM^L;z)f4dc;6u>HSN%M3MTuys?@3){TLR<U}VSP
zbT%AWwxGG0ny=10`l+%1tA0*7a=|D$-2$ah2D_o0=hZD&&Tvv)_#CSbQ4tr^d9A5m
zNYn~#&<S_oE_h&WJ;57RK{Aws4Q_)wA|Hjwmw|(i*7>j78bGuSq&`N6Mlox>UA@$S
zmyX^JJgHq?dV726yu3;SP1#5#d%L}z?8oU#RaJS-Q9FNh#8;D4%q?}{6+457j)7k=
zCLXfD0h&-m6!ef2hSG&x$b&6#01m<lsD}n<gZuCphF}<+u#7cu0FJ>4s0TYBFBNna
zjb?ZV127DuAocwOp21G6bupAcDcIm3d;#@v6FT8OjKLFdL6WXR2Xw=H6XqR!ApnBF
zWU3&FMk5x?V1Wd<j@;gWv}HsYkcJzL+?JlupTkp+;b9sW7y#;{zUk+kf0{FWH2e5W
z=hQI5M-2PZ@MMO)R+(IPyl+E$b*cwh3`zmsHW?JYf84)<469SUsQ{$qftK7w;tfi!
zLCKOoD+4mY3PrF3Y+#2*XoGH$`{f{%Ek|l$A9TPCxD9uq8~Wh^JcNPen4{05v5Ig2
zGGmYu$c7xqhhiv!y<mq%XoGI(fkCK6^&SR048bsr!80J#uand;ybA7+51XN|0x$K@
z0CKm#1v)ck0Oo@Sc!D<sKoH39$2g6@{6y~vjg0)y!M>kwQad%D$K!0{S^RAreRAK@
z|5$=G@+E1I4jCXnSmUGPs#5ri;;xHM-AFW7Uf(h(q;oX<t}$$z=y%Tb4hiLnQz5F`
z>D$T+J>R_4^X*GLO|EmJW-3#vQYum^Q7TX>PAW|*ObSa1YAl>nFJ!2PT9Xw1RE^j$
zUn)zgN-9dKNvcSyN2*4uMXE%qLyAHQqGP%k(x;0-5+`Yslu5dJqBym6KYOXJJmhdy
ze&E2befVLkD?hzx=FfCSHeT`JwiajJbE)WU56PfpPckQ2lbj8}OuQso5-W+5#7N>J
zv5~k)Oe7)_4~fPpI0JU*jALu_Am3{U=RN0Kd6~}O?1Ef`DC@T1_ma<FHgUlvU;e%&
za;2xFXbdv3U|En2Ibelc$b)>41(p9TM)1|ow@2(a7q<T6=lf{bX77~G-q}5Sr)>64
p>Fk{n{NyE0&y$X$u5@zs<xs`hacxwqxT$~rXj2rcTK3ak&EG6)ejWe-

diff --git a/initializers/challengeHelper.js b/initializers/challengeHelper.js
index d8d94e75c..2460e3f17 100644
--- a/initializers/challengeHelper.js
+++ b/initializers/challengeHelper.js
@@ -1,8 +1,8 @@
 /*
  * Copyright (C) 2013 - 2014 TopCoder Inc., All Rights Reserved.
  *
- * @version 1.4
- * @author ecnu_haozi, bugbuka, Ghost_141, muzehyun
+ * @version 1.5
+ * @author ecnu_haozi, bugbuka, Ghost_141, muzehyun, GFalcon
  * Refactor common code out from challenge.js.
  *
  * changes in 1.1:
@@ -13,6 +13,9 @@
  * - Avoid undefined if rows[0].copilot_type is null.
  * Changes in 1.4:
  * - Add template id to challenge terms of use.
+ * Changes in 1.5:
+ * - Add the checkUserChallengeEligibility function
+ * - Removee the obsolete eligibility check in getChallengeTerms
  */
 "use strict";
 
@@ -135,11 +138,6 @@ exports.challengeHelper = function (api, next) {
                         return;
                     }
 
-                    if (!rows[0].no_elgibility_req && !rows[0].user_in_eligible_group) {
-                        cb(new ForbiddenError('You are not part of the groups eligible for this challenge.'));
-                        return;
-                    }
-
                     // Update check to use flag.
                     if (requireRegOpen && !rows[0].reg_open) {
                         cb(new ForbiddenError('Registration Phase of this challenge is not open.'));
@@ -316,8 +314,71 @@ exports.challengeHelper = function (api, next) {
                 }
                 next(null, result.terms);
             });
+        },
+        /**
+         * Check if the user currently logged in has the right to access the specified challenge
+         *
+         * @param {Object} connection The connection object for the current request
+         * @param {Number} challengeId The challenge id.
+         * @param {Function<err>} next The callback that will receive an error
+         *      if the user is not eligible
+         *
+         * @since 1.5
+         */
+        checkUserChallengeEligibility: function (connection, challengeId, next) {
+            // Admins can access any challenge
+            if (connection.caller.accessLevel === 'admin') {
+                next();
+                return;
+            }
+            // Query the accessibility information
+            var userId = (connection.caller.userId || 0);
+            api.dataAccess.executeQuery('get_challenge_accessibility_and_groups', {
+                challengeId: challengeId,
+                user_id: userId
+            }, connection.dbConnectionMap, function (err, res) {
+                if (err) {
+                    next(err);
+                    return;
+                }
+                // If there's no corresponding record in group_contest_eligibility
+                // then the challenge is available to all users
+                if (res.length === 0
+                        || _.isNull(res[0].challenge_group_ind)
+                        || _.isUndefined(res[0].challenge_group_ind)) {
+                    next();
+                    return;
+                }
+                var error = false;
+                // Look at the groups
+                async.some(res, function (record, cbx) {
+                    // Old challenges: check by looking up in common_oltp:user_group_xref
+                    if (record.challenge_group_ind === 0) {
+                        cbx(!(_.isNull(record.user_group_xref_found) || _.isUndefined(record.user_group_xref_found)));
+                    } else {
+                        // New challenges: query the V3 API
+                        api.v3client.isUserInGroup(connection, userId, record.group_id, function (err, result) {
+                            if (err) {
+                                error = err;
+                                cbx(true);
+                            } else {
+                                cbx(result);
+                            }
+                        });
+                    }
+                }, function (eligible) {
+                    if (error) {
+                        next(error);
+                    } else if (eligible) {
+                        next();
+                    } else if (connection.caller.accessLevel === "anon") {
+                        next(new UnauthorizedError());
+                    } else {
+                        next(new ForbiddenError());
+                    }
+                });
+            });
         }
-
     };
 
     next();
diff --git a/queries/challenge_registration_validations b/queries/challenge_registration_validations
index 1b20283f4..4bd4a63de 100644
--- a/queries/challenge_registration_validations
+++ b/queries/challenge_registration_validations
@@ -4,8 +4,6 @@ select
 	(pp_reg_open.project_id IS NOT NULL) as reg_open,
 	(r.project_id IS NOT NULL) as user_registered,
 	(us.user_id IS NOT NULL) as user_suspended,
-	(ce.contest_eligibility_id IS NULL) as no_elgibility_req,
-	(ugx.login_id IS NOT NULL) as user_in_eligible_group,
  	(uax.user_id IS NOT NULL OR coder.coder_id IS NOT NULL) as user_country_banned,
 	(coder2.comp_country_code IS NULL OR coder2.comp_country_code = '') as comp_country_is_null,
 	(cop.copilot_profile_id IS NOT NULL) as user_is_copilot,
@@ -28,14 +26,6 @@ left join
 	on us.user_id = @userId@
 	and us.user_status_type_id = 1
 	and us.user_status_id = 3
--- Check if user meets eligibility requirements
-left outer join (
-	contest_eligibility ce join (
-		group_contest_eligibility gce left outer join user_group_xref ugx 
-        	on ugx.group_id = gce.group_id and ugx.login_id = @userId@
-	) 
-	on ce.contest_eligibility_id = gce.contest_eligibility_id
-) on p.project_id = ce.contest_id
 -- Check user's country
 left outer join (
 	informixoltp:user_address_xref uax join (
diff --git a/test/postman/New_Challenge_Visibility_Control.postman_collection.json b/test/postman/New_Challenge_Visibility_Control.postman_collection.json
index 521f5e6a2..7dadfd3d1 100644
--- a/test/postman/New_Challenge_Visibility_Control.postman_collection.json
+++ b/test/postman/New_Challenge_Visibility_Control.postman_collection.json
@@ -17,6 +17,19 @@
 			],
 			"owner": "316251"
 		},
+		{
+			"id": "cfbf928f-56b8-9813-f8f3-4ac4e342d965",
+			"name": "Register for challenges",
+			"description": "",
+			"order": [
+				"4b64d85a-4c08-8ec2-9c3f-50605bd2e09e",
+				"5224f722-9f4f-07bb-58e7-351512cc66ea",
+				"60ae89de-4eb1-c0aa-b866-b28b52436e89",
+				"843d6759-0cc0-a0c6-9fde-60f893f56eac",
+				"46cf305a-8251-66aa-391c-46def82773a1"
+			],
+			"owner": "316251"
+		},
 		{
 			"id": "0eeb693c-c6b6-e23b-156d-cff5f21dbb27",
 			"name": "login",
@@ -62,6 +75,124 @@
 			"responses": [],
 			"folder": "712ffa63-a959-e4a3-6af9-84d4f236b2f3"
 		},
+		{
+			"id": "46cf305a-8251-66aa-391c-46def82773a1",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/challenges/1110005/register",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "POST",
+			"data": null,
+			"dataMode": "params",
+			"version": 2,
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497813578982,
+			"name": "New logic, access denied",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": []
+		},
+		{
+			"id": "4b64d85a-4c08-8ec2-9c3f-50605bd2e09e",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/challenges/1110001/register",
+			"queryParams": [],
+			"pathVariables": {},
+			"pathVariableData": [],
+			"preRequestScript": null,
+			"method": "POST",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"data": null,
+			"dataMode": "params",
+			"name": "No groups (challenge is not private)",
+			"description": "",
+			"descriptionFormat": "html",
+			"time": 1497813014785,
+			"version": 2,
+			"responses": [],
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"folder": "cfbf928f-56b8-9813-f8f3-4ac4e342d965"
+		},
+		{
+			"id": "5224f722-9f4f-07bb-58e7-351512cc66ea",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/challenges/1110002/register",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "POST",
+			"data": null,
+			"dataMode": "params",
+			"version": 2,
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497813399305,
+			"name": "Old logic, access allowed",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": []
+		},
+		{
+			"id": "60ae89de-4eb1-c0aa-b866-b28b52436e89",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/challenges/1110003/register",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "POST",
+			"data": null,
+			"dataMode": "params",
+			"version": 2,
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497813480606,
+			"name": "Old logic, access denied",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": []
+		},
 		{
 			"id": "6bed8920-6800-0ae0-e63d-b39b05c7f50c",
 			"headers": "Content-Type: application/json\n",
@@ -114,6 +245,35 @@
 			"helperAttributes": {},
 			"folder": "712ffa63-a959-e4a3-6af9-84d4f236b2f3"
 		},
+		{
+			"id": "843d6759-0cc0-a0c6-9fde-60f893f56eac",
+			"headers": "Authorization: Bearer {{authToken}}\n",
+			"headerData": [
+				{
+					"key": "Authorization",
+					"value": "Bearer {{authToken}}",
+					"description": "",
+					"enabled": true
+				}
+			],
+			"url": "{{url}}/challenges/1110004/register",
+			"queryParams": [],
+			"preRequestScript": null,
+			"pathVariables": {},
+			"pathVariableData": [],
+			"method": "POST",
+			"data": null,
+			"dataMode": "params",
+			"version": 2,
+			"tests": null,
+			"currentHelper": "normal",
+			"helperAttributes": {},
+			"time": 1497813524683,
+			"name": "New logic, access allowed",
+			"description": "",
+			"collectionId": "ba962be9-0d58-f187-8809-008a39bc2240",
+			"responses": []
+		},
 		{
 			"id": "a3ae5124-2077-4ff2-4e02-afae7670bbe5",
 			"headers": "Authorization: Bearer {{authToken}}\n",