{"action":"created","comment":{"url":"https://api.github.com/repos/fronteerio/grasshopper/pulls/comments/31380349","id":31380349,"diff_hunk":"@@ -193,14 +210,231 @@ var _importCourses = function(ctx, courses, callback) {\n     }\n \n     var course = courses.pop();\n+\n     log().info({'id': course.orgUnitId}, 'Importing %s', course.displayName);\n-    OrgUnitImport.importOrgUnit(ctx, course.orgUnitId, course, false, function(err) {\n+    var options = {\n+        'deleteMissing': false,\n+        'checkExternalId': false\n+    };\n+    OrgUnitImport.importOrgUnit(ctx, course.orgUnitId, course, options, function(err) {\n         if (err) {\n             log().error({'err': err}, 'Failed to import a course');\n-            process.exit();\n+            process.exit(1);\n         }\n \n         // Move on to the next course\n         _importCourses(ctx, courses, callback);\n     });\n };\n+\n+/**\n+ * Export a set of courses. This method will add an `exportedCourse` on each course\n+ * holding the entire tree for that course\n+ *\n+ * @param  {Context}    ctx         Standard context object containing the current user and the current application\n+ * @param  {Object[]}   courses     The courses to export\n+ * @param  {Function}   callback    Standard callback function\n+ * @api private\n+ */\n+var _exportCourses = function(ctx, courses, callback) {\n+    if (_.isEmpty(courses)) {\n+        return callback();\n+    }\n+\n+    var course = courses.pop();\n+\n+    // Export the course so the new ids can be used for the borrowing stage\n+    OrgUnitAPI.exportOrgUnit(ctx, course.orgUnitId, 'json', function(err, exportedCourse) {\n+        if (err) {\n+            log().error({'err': err}, 'Failed to export a course');\n+            process.exit(1);\n+        }\n+\n+        course.exportedCourse = exportedCourse;\n+\n+        // Move on to the next course\n+        _exportCourses(ctx, courses, callback);\n+    });\n+};\n+\n+/**\n+ * Borrow series under a module where appropriate\n+ *\n+ * @param  {Context}    ctx         Standard context object containing the current user and the current application\n+ * @param  {Object[]}   courses     The courses to check for borrowing\n+ * @param  {Function}   callback    Standard callback function\n+ * @api private\n+ */\n+var _handleBorrowing = function(ctx, courses, callback) {\n+    // Get all the organisational units with borrowed series\n+    var orgunitsWithBorrowedSeries = [];\n+    _.each(courses, function(course) {\n+        _getOrgUnitsWithBorrowedSeries(course, orgunitsWithBorrowedSeries);\n+    });\n+\n+    // If there is not a single organisational unit with a series, we're done\n+    if (_.isEmpty(orgunitsWithBorrowedSeries)) {\n+        return callback();\n+    }\n+\n+    // Otherwise, we need to process them\n+    return _handleOrgUnitsWithBorrowedSeries(ctx, courses, orgunitsWithBorrowedSeries, callback);\n+};\n+\n+/**\n+ * Get the organisational units (modules) who contain series that are borrowed from\n+ * other modules\n+ *\n+ * @param  {OrgUnit}        orgUnit                         The organisational unit to check\n+ * @param  {OrgUnit[]}      orgunitsWithBorrowedSeries      The organisational units that contain borrowed series\n+ */\n+var _getOrgUnitsWithBorrowedSeries = function(orgUnit, orgunitsWithBorrowedSeries) {\n+    if (!_.isEmpty(orgUnit.borrowedSeries)) {\n+        orgunitsWithBorrowedSeries.push(orgUnit);\n+    }\n+\n+    // Visit any child organisational units\n+    _.each(orgUnit.children, function(childOrgUnit) {\n+        _getOrgUnitsWithBorrowedSeries(childOrgUnit, orgunitsWithBorrowedSeries);\n+    });\n+};\n+\n+/**\n+ * Borrow series for a set of organisational units known to contain borrowed series\n+ *\n+ * @param  {Context}    ctx                             Standard context object containing the current user and the current application\n+ * @param  {Object[]}   courses                         The courses to check for borrowing\n+ * @param  {OrgUnit[]}  orgunitsWithBorrowedSeries      The organisational units that contain borrowed series\n+ * @param  {Function}   callback                        Standard callback function\n+ * @api private\n+ */\n+var _handleOrgUnitsWithBorrowedSeries = function(ctx, courses, orgunitsWithBorrowedSeries, callback) {\n+    if (_.isEmpty(orgunitsWithBorrowedSeries)) {\n+        return callback();\n+    }\n+\n+    // Deal with an organisational unit's borrowed series\n+    var orgUnitWithBorrowedSeries = orgunitsWithBorrowedSeries.pop();\n+    _handleOrgUnitWithBorrowedSeries(ctx, courses, orgUnitWithBorrowedSeries, function() {\n+\n+        // Move on to the next organisational unit with one or more borrowed series\n+        _handleOrgUnitsWithBorrowedSeries(ctx, courses, orgunitsWithBorrowedSeries, callback);\n+    });\n+};\n+\n+/**\n+ * Borrow series for an organisational unit known to contain borrowed series\n+ *\n+ * @param  {Context}    ctx                             Standard context object containing the current user and the current application\n+ * @param  {Object[]}   courses                         The courses to check for borrowing\n+ * @param  {OrgUnit}    orgUnitWithBorrowedSeries       The organisational unit that contains borrowed series\n+ * @param  {Function}   callback                        Standard callback function\n+ * @api private\n+ */\n+var _handleOrgUnitWithBorrowedSeries = function(ctx, courses, orgUnitWithBorrowedSeries, callback) {\n+    // If this organisational unit has no further borrowed series, we're done\n+    if (_.isEmpty(orgUnitWithBorrowedSeries.borrowedSeries)) {\n+        return callback();\n+    }\n+\n+    var borrowedSeries = orgUnitWithBorrowedSeries.borrowedSeries.pop();\n+\n+    // We need the *exported* organisational unit under which the serie will be borrowed","path":"etc/scripts/timetable/import.js","position":181,"original_position":181,"commit_id":"5efa2cef9c4258c07890527d71932b08d8e0521e","original_commit_id":"5efa2cef9c4258c07890527d71932b08d8e0521e","user":{"login":"mrvisser","id":102265,"avatar_url":"https://avatars.githubusercontent.com/u/102265?v=3","gravatar_id":"","url":"https://api.github.com/users/mrvisser","html_url":"https://github.com/mrvisser","followers_url":"https://api.github.com/users/mrvisser/followers","following_url":"https://api.github.com/users/mrvisser/following{/other_user}","gists_url":"https://api.github.com/users/mrvisser/gists{/gist_id}","starred_url":"https://api.github.com/users/mrvisser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrvisser/subscriptions","organizations_url":"https://api.github.com/users/mrvisser/orgs","repos_url":"https://api.github.com/users/mrvisser/repos","events_url":"https://api.github.com/users/mrvisser/events{/privacy}","received_events_url":"https://api.github.com/users/mrvisser/received_events","type":"User","site_admin":false},"body":"`under which the series will be borrowed`","created_at":"2015-05-30T12:43:44Z","updated_at":"2015-05-30T12:43:44Z","html_url":"https://github.com/fronteerio/grasshopper/pull/75#discussion_r31380349","pull_request_url":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75","_links":{"self":{"href":"https://api.github.com/repos/fronteerio/grasshopper/pulls/comments/31380349"},"html":{"href":"https://github.com/fronteerio/grasshopper/pull/75#discussion_r31380349"},"pull_request":{"href":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75"}}},"pull_request":{"url":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75","id":34916278,"html_url":"https://github.com/fronteerio/grasshopper/pull/75","diff_url":"https://github.com/fronteerio/grasshopper/pull/75.diff","patch_url":"https://github.com/fronteerio/grasshopper/pull/75.patch","issue_url":"https://api.github.com/repos/fronteerio/grasshopper/issues/75","number":75,"state":"open","locked":false,"title":"Rollover API","user":{"login":"simong","id":92180,"avatar_url":"https://avatars.githubusercontent.com/u/92180?v=3","gravatar_id":"","url":"https://api.github.com/users/simong","html_url":"https://github.com/simong","followers_url":"https://api.github.com/users/simong/followers","following_url":"https://api.github.com/users/simong/following{/other_user}","gists_url":"https://api.github.com/users/simong/gists{/gist_id}","starred_url":"https://api.github.com/users/simong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simong/subscriptions","organizations_url":"https://api.github.com/users/simong/orgs","repos_url":"https://api.github.com/users/simong/repos","events_url":"https://api.github.com/users/simong/events{/privacy}","received_events_url":"https://api.github.com/users/simong/received_events","type":"User","site_admin":false},"body":"Rolling over last year's data would involve a few steps. The following steps would have to be taken by the user prior to actually being able to roll over data\r\n\r\n- Dump the data of last year through the archival endpoint\r\n- Set up a new application\r\n- Configure the academical year in the config\r\n- Import all the users through the user-import endpoint\r\n- Import last year's data through the rollover endpoint\r\n\r\nEndpoint:\r\n\r\nPOST `/api/apps/:id/rollover`\r\n\r\nThe rollover endpoint will re-create the organisational units and series. It will also calculate try and place the events from last year in the same \"time slot\" in this academic year. This means that the event that resembles a lecture in Week 2 on Tuesday last year should happen in week 2 on Tuesday in this academic year.","created_at":"2015-05-07T13:41:28Z","updated_at":"2015-05-30T12:43:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b7a39000e9225394d8e4282dc1d232c7054dfe79","assignee":{"login":"mrvisser","id":102265,"avatar_url":"https://avatars.githubusercontent.com/u/102265?v=3","gravatar_id":"","url":"https://api.github.com/users/mrvisser","html_url":"https://github.com/mrvisser","followers_url":"https://api.github.com/users/mrvisser/followers","following_url":"https://api.github.com/users/mrvisser/following{/other_user}","gists_url":"https://api.github.com/users/mrvisser/gists{/gist_id}","starred_url":"https://api.github.com/users/mrvisser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrvisser/subscriptions","organizations_url":"https://api.github.com/users/mrvisser/orgs","repos_url":"https://api.github.com/users/mrvisser/repos","events_url":"https://api.github.com/users/mrvisser/events{/privacy}","received_events_url":"https://api.github.com/users/mrvisser/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/fronteerio/grasshopper/milestones/3","html_url":"https://github.com/fronteerio/grasshopper/milestones/Production%20release","labels_url":"https://api.github.com/repos/fronteerio/grasshopper/milestones/3/labels","id":1021506,"number":3,"title":"Production release","description":"","creator":{"login":"nicolaasmatthijs","id":109850,"avatar_url":"https://avatars.githubusercontent.com/u/109850?v=3","gravatar_id":"","url":"https://api.github.com/users/nicolaasmatthijs","html_url":"https://github.com/nicolaasmatthijs","followers_url":"https://api.github.com/users/nicolaasmatthijs/followers","following_url":"https://api.github.com/users/nicolaasmatthijs/following{/other_user}","gists_url":"https://api.github.com/users/nicolaasmatthijs/gists{/gist_id}","starred_url":"https://api.github.com/users/nicolaasmatthijs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nicolaasmatthijs/subscriptions","organizations_url":"https://api.github.com/users/nicolaasmatthijs/orgs","repos_url":"https://api.github.com/users/nicolaasmatthijs/repos","events_url":"https://api.github.com/users/nicolaasmatthijs/events{/privacy}","received_events_url":"https://api.github.com/users/nicolaasmatthijs/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":3,"state":"open","created_at":"2015-03-14T14:57:25Z","updated_at":"2015-05-03T20:18:35Z","due_on":"2015-06-16T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75/commits","review_comments_url":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75/comments","review_comment_url":"https://api.github.com/repos/fronteerio/grasshopper/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fronteerio/grasshopper/issues/75/comments","statuses_url":"https://api.github.com/repos/fronteerio/grasshopper/statuses/5efa2cef9c4258c07890527d71932b08d8e0521e","head":{"label":"fronteerio:rollover","ref":"rollover","sha":"5efa2cef9c4258c07890527d71932b08d8e0521e","user":{"login":"fronteerio","id":9116505,"avatar_url":"https://avatars.githubusercontent.com/u/9116505?v=3","gravatar_id":"","url":"https://api.github.com/users/fronteerio","html_url":"https://github.com/fronteerio","followers_url":"https://api.github.com/users/fronteerio/followers","following_url":"https://api.github.com/users/fronteerio/following{/other_user}","gists_url":"https://api.github.com/users/fronteerio/gists{/gist_id}","starred_url":"https://api.github.com/users/fronteerio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fronteerio/subscriptions","organizations_url":"https://api.github.com/users/fronteerio/orgs","repos_url":"https://api.github.com/users/fronteerio/repos","events_url":"https://api.github.com/users/fronteerio/events{/privacy}","received_events_url":"https://api.github.com/users/fronteerio/received_events","type":"Organization","site_admin":false},"repo":{"id":24999124,"name":"grasshopper","full_name":"fronteerio/grasshopper","owner":{"login":"fronteerio","id":9116505,"avatar_url":"https://avatars.githubusercontent.com/u/9116505?v=3","gravatar_id":"","url":"https://api.github.com/users/fronteerio","html_url":"https://github.com/fronteerio","followers_url":"https://api.github.com/users/fronteerio/followers","following_url":"https://api.github.com/users/fronteerio/following{/other_user}","gists_url":"https://api.github.com/users/fronteerio/gists{/gist_id}","starred_url":"https://api.github.com/users/fronteerio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fronteerio/subscriptions","organizations_url":"https://api.github.com/users/fronteerio/orgs","repos_url":"https://api.github.com/users/fronteerio/repos","events_url":"https://api.github.com/users/fronteerio/events{/privacy}","received_events_url":"https://api.github.com/users/fronteerio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fronteerio/grasshopper","description":"Grasshopper Event Engine","fork":false,"url":"https://api.github.com/repos/fronteerio/grasshopper","forks_url":"https://api.github.com/repos/fronteerio/grasshopper/forks","keys_url":"https://api.github.com/repos/fronteerio/grasshopper/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fronteerio/grasshopper/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fronteerio/grasshopper/teams","hooks_url":"https://api.github.com/repos/fronteerio/grasshopper/hooks","issue_events_url":"https://api.github.com/repos/fronteerio/grasshopper/issues/events{/number}","events_url":"https://api.github.com/repos/fronteerio/grasshopper/events","assignees_url":"https://api.github.com/repos/fronteerio/grasshopper/assignees{/user}","branches_url":"https://api.github.com/repos/fronteerio/grasshopper/branches{/branch}","tags_url":"https://api.github.com/repos/fronteerio/grasshopper/tags","blobs_url":"https://api.github.com/repos/fronteerio/grasshopper/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fronteerio/grasshopper/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fronteerio/grasshopper/git/refs{/sha}","trees_url":"https://api.github.com/repos/fronteerio/grasshopper/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fronteerio/grasshopper/statuses/{sha}","languages_url":"https://api.github.com/repos/fronteerio/grasshopper/languages","stargazers_url":"https://api.github.com/repos/fronteerio/grasshopper/stargazers","contributors_url":"https://api.github.com/repos/fronteerio/grasshopper/contributors","subscribers_url":"https://api.github.com/repos/fronteerio/grasshopper/subscribers","subscription_url":"https://api.github.com/repos/fronteerio/grasshopper/subscription","commits_url":"https://api.github.com/repos/fronteerio/grasshopper/commits{/sha}","git_commits_url":"https://api.github.com/repos/fronteerio/grasshopper/git/commits{/sha}","comments_url":"https://api.github.com/repos/fronteerio/grasshopper/comments{/number}","issue_comment_url":"https://api.github.com/repos/fronteerio/grasshopper/issues/comments{/number}","contents_url":"https://api.github.com/repos/fronteerio/grasshopper/contents/{+path}","compare_url":"https://api.github.com/repos/fronteerio/grasshopper/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fronteerio/grasshopper/merges","archive_url":"https://api.github.com/repos/fronteerio/grasshopper/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fronteerio/grasshopper/downloads","issues_url":"https://api.github.com/repos/fronteerio/grasshopper/issues{/number}","pulls_url":"https://api.github.com/repos/fronteerio/grasshopper/pulls{/number}","milestones_url":"https://api.github.com/repos/fronteerio/grasshopper/milestones{/number}","notifications_url":"https://api.github.com/repos/fronteerio/grasshopper/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fronteerio/grasshopper/labels{/name}","releases_url":"https://api.github.com/repos/fronteerio/grasshopper/releases{/id}","created_at":"2014-10-09T16:51:39Z","updated_at":"2015-05-01T14:17:34Z","pushed_at":"2015-05-30T09:12:45Z","git_url":"git://github.com/fronteerio/grasshopper.git","ssh_url":"git@github.com:fronteerio/grasshopper.git","clone_url":"https://github.com/fronteerio/grasshopper.git","svn_url":"https://github.com/fronteerio/grasshopper","homepage":null,"size":5831,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":10,"forks":5,"open_issues":10,"watchers":0,"default_branch":"master"}},"base":{"label":"fronteerio:master","ref":"master","sha":"1bca8b3e7650f01dc4a88853e846ee6004c74aab","user":{"login":"fronteerio","id":9116505,"avatar_url":"https://avatars.githubusercontent.com/u/9116505?v=3","gravatar_id":"","url":"https://api.github.com/users/fronteerio","html_url":"https://github.com/fronteerio","followers_url":"https://api.github.com/users/fronteerio/followers","following_url":"https://api.github.com/users/fronteerio/following{/other_user}","gists_url":"https://api.github.com/users/fronteerio/gists{/gist_id}","starred_url":"https://api.github.com/users/fronteerio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fronteerio/subscriptions","organizations_url":"https://api.github.com/users/fronteerio/orgs","repos_url":"https://api.github.com/users/fronteerio/repos","events_url":"https://api.github.com/users/fronteerio/events{/privacy}","received_events_url":"https://api.github.com/users/fronteerio/received_events","type":"Organization","site_admin":false},"repo":{"id":24999124,"name":"grasshopper","full_name":"fronteerio/grasshopper","owner":{"login":"fronteerio","id":9116505,"avatar_url":"https://avatars.githubusercontent.com/u/9116505?v=3","gravatar_id":"","url":"https://api.github.com/users/fronteerio","html_url":"https://github.com/fronteerio","followers_url":"https://api.github.com/users/fronteerio/followers","following_url":"https://api.github.com/users/fronteerio/following{/other_user}","gists_url":"https://api.github.com/users/fronteerio/gists{/gist_id}","starred_url":"https://api.github.com/users/fronteerio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fronteerio/subscriptions","organizations_url":"https://api.github.com/users/fronteerio/orgs","repos_url":"https://api.github.com/users/fronteerio/repos","events_url":"https://api.github.com/users/fronteerio/events{/privacy}","received_events_url":"https://api.github.com/users/fronteerio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fronteerio/grasshopper","description":"Grasshopper Event Engine","fork":false,"url":"https://api.github.com/repos/fronteerio/grasshopper","forks_url":"https://api.github.com/repos/fronteerio/grasshopper/forks","keys_url":"https://api.github.com/repos/fronteerio/grasshopper/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fronteerio/grasshopper/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fronteerio/grasshopper/teams","hooks_url":"https://api.github.com/repos/fronteerio/grasshopper/hooks","issue_events_url":"https://api.github.com/repos/fronteerio/grasshopper/issues/events{/number}","events_url":"https://api.github.com/repos/fronteerio/grasshopper/events","assignees_url":"https://api.github.com/repos/fronteerio/grasshopper/assignees{/user}","branches_url":"https://api.github.com/repos/fronteerio/grasshopper/branches{/branch}","tags_url":"https://api.github.com/repos/fronteerio/grasshopper/tags","blobs_url":"https://api.github.com/repos/fronteerio/grasshopper/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fronteerio/grasshopper/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fronteerio/grasshopper/git/refs{/sha}","trees_url":"https://api.github.com/repos/fronteerio/grasshopper/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fronteerio/grasshopper/statuses/{sha}","languages_url":"https://api.github.com/repos/fronteerio/grasshopper/languages","stargazers_url":"https://api.github.com/repos/fronteerio/grasshopper/stargazers","contributors_url":"https://api.github.com/repos/fronteerio/grasshopper/contributors","subscribers_url":"https://api.github.com/repos/fronteerio/grasshopper/subscribers","subscription_url":"https://api.github.com/repos/fronteerio/grasshopper/subscription","commits_url":"https://api.github.com/repos/fronteerio/grasshopper/commits{/sha}","git_commits_url":"https://api.github.com/repos/fronteerio/grasshopper/git/commits{/sha}","comments_url":"https://api.github.com/repos/fronteerio/grasshopper/comments{/number}","issue_comment_url":"https://api.github.com/repos/fronteerio/grasshopper/issues/comments{/number}","contents_url":"https://api.github.com/repos/fronteerio/grasshopper/contents/{+path}","compare_url":"https://api.github.com/repos/fronteerio/grasshopper/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fronteerio/grasshopper/merges","archive_url":"https://api.github.com/repos/fronteerio/grasshopper/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fronteerio/grasshopper/downloads","issues_url":"https://api.github.com/repos/fronteerio/grasshopper/issues{/number}","pulls_url":"https://api.github.com/repos/fronteerio/grasshopper/pulls{/number}","milestones_url":"https://api.github.com/repos/fronteerio/grasshopper/milestones{/number}","notifications_url":"https://api.github.com/repos/fronteerio/grasshopper/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fronteerio/grasshopper/labels{/name}","releases_url":"https://api.github.com/repos/fronteerio/grasshopper/releases{/id}","created_at":"2014-10-09T16:51:39Z","updated_at":"2015-05-01T14:17:34Z","pushed_at":"2015-05-30T09:12:45Z","git_url":"git://github.com/fronteerio/grasshopper.git","ssh_url":"git@github.com:fronteerio/grasshopper.git","clone_url":"https://github.com/fronteerio/grasshopper.git","svn_url":"https://github.com/fronteerio/grasshopper","homepage":null,"size":5831,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":10,"forks":5,"open_issues":10,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75"},"html":{"href":"https://github.com/fronteerio/grasshopper/pull/75"},"issue":{"href":"https://api.github.com/repos/fronteerio/grasshopper/issues/75"},"comments":{"href":"https://api.github.com/repos/fronteerio/grasshopper/issues/75/comments"},"review_comments":{"href":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75/comments"},"review_comment":{"href":"https://api.github.com/repos/fronteerio/grasshopper/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fronteerio/grasshopper/pulls/75/commits"},"statuses":{"href":"https://api.github.com/repos/fronteerio/grasshopper/statuses/5efa2cef9c4258c07890527d71932b08d8e0521e"}}}}