{"action":"created","comment":{"url":"https://api.github.com/repos/juju/juju-gui/pulls/comments/86369646","pull_request_review_id":7031869,"id":86369646,"diff_hunk":"@@ -1298,6 +1299,222 @@ with this program.  If not, see <http://www.gnu.org/licenses/>.\n       assert.strictEqual(err, 'bad wolf');\n     });\n \n+    describe('addPendingResources', function() {\n+      it('uploads resources', done => {\n+        // Perform the request.\n+        const resources = [\n+          {Name: 'res1', File: 'res1.tgz'},\n+          {Name: 'res2', File: 'res2.tgz'}\n+        ];\n+        env.addPendingResources({\n+          applicationName: 'wordpress',\n+          charmURL: 'wordpress-42',\n+          channel: 'stable',\n+          resources: resources\n+        }, (err, ids) => {\n+          assert.strictEqual(err, null);\n+          assert.deepEqual(ids, {res1: 'id-res-1', res2: 'id-res-2'});\n+          assert.strictEqual(conn.messages.length, 1);\n+          const msg = conn.last_message();\n+          assert.deepEqual(msg, {\n+            type: 'Resources',\n+            version: 7,\n+            request: 'AddPendingResources',\n+            params: {\n+              tag: 'application-wordpress',\n+              url: 'wordpress-42',\n+              channel: 'stable',\n+              resources: [{\n+                Name: 'res1', File: 'res1.tgz', Origin: 'store'\n+              }, {\n+                Name: 'res2', File: 'res2.tgz', Origin: 'store'\n+              }]\n+            },\n+            'request-id': 1\n+          });\n+          done();\n+        });\n+        // Mimic response.\n+        conn.msg({\n+          'request-id': 1,\n+          response: {'pending-ids': ['id-res-1', 'id-res-2']}\n+        });\n+      });\n+\n+      it('uploads a single resource', done => {\n+        // Perform the request.\n+        env.addPendingResources({\n+          applicationName: 'hap',\n+          charmURL: 'cs:xenial/haproxy-47',\n+          channel: 'beta',\n+          resources: [{Name: 'myres', File: 'myres.tar.bz2'}]\n+        }, (err, ids) => {\n+          assert.strictEqual(err, null);\n+          assert.deepEqual(ids, {myres: 'id-res-1'});\n+          assert.strictEqual(conn.messages.length, 1);\n+          const msg = conn.last_message();\n+          assert.deepEqual(msg, {\n+            type: 'Resources',\n+            version: 7,\n+            request: 'AddPendingResources',\n+            params: {\n+              tag: 'application-hap',\n+              url: 'cs:xenial/haproxy-47',\n+              channel: 'beta',\n+              resources: [{\n+                Name: 'myres', File: 'myres.tar.bz2', Origin: 'store'\n+              }]\n+            },\n+            'request-id': 1\n+          });\n+          done();\n+        });\n+        // Mimic response.\n+        conn.msg({\n+          'request-id': 1,\n+          response: {'pending-ids': ['id-res-1']}\n+        });\n+      });\n+\n+      it('uploads resources with origin', done => {\n+        // Perform the request.\n+        env.addPendingResources({\n+          applicationName: 'haproxy',\n+          charmURL: 'xenial/haproxy-47',\n+          resources: [{Name: 'myres', File: 'myres.tar.bz2', Origin: 'Vulcan'}]\n+        }, (err, ids) => {\n+          assert.strictEqual(err, null);\n+          assert.deepEqual(ids, {myres: 'id-res-vulcan'});\n+          assert.strictEqual(conn.messages.length, 1);\n+          const msg = conn.last_message();\n+          assert.deepEqual(msg, {\n+            type: 'Resources',\n+            version: 7,\n+            request: 'AddPendingResources',\n+            params: {\n+              tag: 'application-haproxy',\n+              url: 'xenial/haproxy-47',\n+              channel: 'stable',\n+              resources: [{\n+                Name: 'myres', File: 'myres.tar.bz2', Origin: 'Vulcan'\n+              }]\n+            },\n+            'request-id': 1\n+          });\n+          done();\n+        });\n+        // Mimic response.\n+        conn.msg({\n+          'request-id': 1,\n+          response: {'pending-ids': ['id-res-vulcan']}\n+        });\n+      });\n+\n+      it('fails when no application name is provided', done => {\n+        // Perform the request.\n+        const args = {\n+          charmURL: 'cs:xenial/haproxy-47',\n+          channel: 'beta',\n+          resources: [{Name: 'myres', File: 'myres.tar.bz2'}]\n+        };\n+        env.addPendingResources(args, (err, ids) => {\n+          assert.equal(err, 'invalid arguments: ' + JSON.stringify(args));\n+          assert.deepEqual(ids, {});\n+          done();\n+        });\n+      });\n+\n+      it('fails when no charm URL is provided', done => {\n+        // Perform the request.\n+        const args = {\n+          applicationName: 'wordpress',\n+          charmURL: '',\n+          channel: 'candidate',\n+          resources: [{Name: 'myres', File: 'myres.tar.bz2'}]\n+        };\n+        env.addPendingResources(args, (err, ids) => {\n+          assert.equal(err, 'invalid arguments: ' + JSON.stringify(args));\n+          assert.deepEqual(ids, {});\n+          done();\n+        });\n+      });\n+\n+      it('fails when no resources are provided', done => {\n+        // Perform the request.\n+        const args = {\n+          applicationName: 'wordpress',\n+          charmURL: 'wordpress-42',\n+          resources: []\n+        };\n+        env.addPendingResources(args, (err, ids) => {\n+          assert.equal(err, 'invalid arguments: ' + JSON.stringify(args));\n+          assert.deepEqual(ids, {});\n+          done();\n+        });\n+      });\n+\n+      it('fails when invalid resources are provided', done => {\n+        // Perform the request.\n+        env.addPendingResources({\n+          applicationName: 'wordpress',\n+          charmURL: 'wordpress-42',\n+          resources: [{File: 'bad'}]\n+        }, (err, ids) => {\n+          assert.equal(err, 'resource without name: [{\"File\":\"bad\"}]');\n+          assert.deepEqual(ids, {});\n+          done();\n+        });\n+      });\n+\n+      it('handles global failures while adding resources', done => {\n+        // Perform the request.\n+        env.addPendingResources({\n+          applicationName: 'redis',\n+          charmURL: 'redis-0',\n+          resources: [{Name: 'red', File: 'red.tgz'}]\n+        }, (err, ids) => {\n+          assert.strictEqual(err, 'bad wolf');\n+          assert.deepEqual(ids, {});\n+          done();\n+        });\n+        // Mimic response.\n+        conn.msg({'request-id': 1, error: 'bad wolf'});\n+      });\n+\n+      it('handles local failures while adding resources', done => {\n+        // Perform the request.\n+        env.addPendingResources({\n+          applicationName: 'redis',\n+          charmURL: 'redis-0',\n+          resources: [{Name: 'red', File: 'red.tgz'}]\n+        }, (err, ids) => {\n+          assert.strictEqual(err, 'bad wolf');\n+          assert.deepEqual(ids, {});\n+          done();\n+        });\n+        // Mimic response.\n+        conn.msg({\n+          'request-id': 1,\n+          response: {error: {message: 'bad wolf'}}\n+        });\n+      });\n+\n+      it('handles unexpected failures while adding resources', done => {\n+        // Perform the request.\n+        env.addPendingResources({\n+          applicationName: 'redis',\n+          charmURL: 'redis-0',\n+          resources: [{Name: 'red', File: 'red.tgz'}]\n+        }, (err, ids) => {\n+          assert.strictEqual(err, 'unexpected response: {\"pending-ids\":[]}');\n+          assert.deepEqual(ids, {});\n+          done();\n+        });\n+        // Mimic response.\n+        conn.msg({'request-id': 1, response: {'pending-ids': []}});\n+      });\n+    });","path":"jujugui/static/gui/src/test/test_env_api.js","position":228,"original_position":228,"commit_id":"310cb4a5ed122aae0ef17e9ee5a0df16da757608","original_commit_id":"4b9a604dd94fd2e5d6da1be3ed4f2b07e5b3bafd","user":{"login":"jaycee","id":26728,"avatar_url":"https://avatars.githubusercontent.com/u/26728?v=3","gravatar_id":"","url":"https://api.github.com/users/jaycee","html_url":"https://github.com/jaycee","followers_url":"https://api.github.com/users/jaycee/followers","following_url":"https://api.github.com/users/jaycee/following{/other_user}","gists_url":"https://api.github.com/users/jaycee/gists{/gist_id}","starred_url":"https://api.github.com/users/jaycee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaycee/subscriptions","organizations_url":"https://api.github.com/users/jaycee/orgs","repos_url":"https://api.github.com/users/jaycee/repos","events_url":"https://api.github.com/users/jaycee/events{/privacy}","received_events_url":"https://api.github.com/users/jaycee/received_events","type":"User","site_admin":false},"body":"Ah, ok. That makes sense. Thanks.","created_at":"2016-11-03T15:26:57Z","updated_at":"2016-11-03T15:26:57Z","html_url":"https://github.com/juju/juju-gui/pull/2174#discussion_r86369646","pull_request_url":"https://api.github.com/repos/juju/juju-gui/pulls/2174","_links":{"self":{"href":"https://api.github.com/repos/juju/juju-gui/pulls/comments/86369646"},"html":{"href":"https://github.com/juju/juju-gui/pull/2174#discussion_r86369646"},"pull_request":{"href":"https://api.github.com/repos/juju/juju-gui/pulls/2174"}}},"pull_request":{"url":"https://api.github.com/repos/juju/juju-gui/pulls/2174","id":92134847,"html_url":"https://github.com/juju/juju-gui/pull/2174","diff_url":"https://github.com/juju/juju-gui/pull/2174.diff","patch_url":"https://github.com/juju/juju-gui/pull/2174.patch","issue_url":"https://api.github.com/repos/juju/juju-gui/issues/2174","number":2174,"state":"open","locked":false,"title":"Implement the Resources.AddPendingResources API.","user":{"login":"frankban","id":1408172,"avatar_url":"https://avatars.githubusercontent.com/u/1408172?v=3","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"body":"This will be used later for deploying charms with resources.","created_at":"2016-11-03T11:28:02Z","updated_at":"2016-11-03T15:26:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d6ec406819a340cfac489cb8c50aea3575879c46","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/juju/juju-gui/milestones/17","html_url":"https://github.com/juju/juju-gui/milestones/2.2.3","labels_url":"https://api.github.com/repos/juju/juju-gui/milestones/17/labels","id":2077814,"number":17,"title":"2.2.3","description":"","creator":{"login":"hatched","id":532033,"avatar_url":"https://avatars.githubusercontent.com/u/532033?v=3","gravatar_id":"","url":"https://api.github.com/users/hatched","html_url":"https://github.com/hatched","followers_url":"https://api.github.com/users/hatched/followers","following_url":"https://api.github.com/users/hatched/following{/other_user}","gists_url":"https://api.github.com/users/hatched/gists{/gist_id}","starred_url":"https://api.github.com/users/hatched/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hatched/subscriptions","organizations_url":"https://api.github.com/users/hatched/orgs","repos_url":"https://api.github.com/users/hatched/repos","events_url":"https://api.github.com/users/hatched/events{/privacy}","received_events_url":"https://api.github.com/users/hatched/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":20,"state":"open","created_at":"2016-10-18T16:59:54Z","updated_at":"2016-11-03T15:04:08Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/juju/juju-gui/pulls/2174/commits","review_comments_url":"https://api.github.com/repos/juju/juju-gui/pulls/2174/comments","review_comment_url":"https://api.github.com/repos/juju/juju-gui/pulls/comments{/number}","comments_url":"https://api.github.com/repos/juju/juju-gui/issues/2174/comments","statuses_url":"https://api.github.com/repos/juju/juju-gui/statuses/310cb4a5ed122aae0ef17e9ee5a0df16da757608","head":{"label":"frankban:pending-resources-api","ref":"pending-resources-api","sha":"310cb4a5ed122aae0ef17e9ee5a0df16da757608","user":{"login":"frankban","id":1408172,"avatar_url":"https://avatars.githubusercontent.com/u/1408172?v=3","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"repo":{"id":15930273,"name":"juju-gui","full_name":"frankban/juju-gui","owner":{"login":"frankban","id":1408172,"avatar_url":"https://avatars.githubusercontent.com/u/1408172?v=3","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/frankban/juju-gui","description":"Juju-GUI is a web-based GUI for Juju <https://juju.ubuntu.com/>.","fork":true,"url":"https://api.github.com/repos/frankban/juju-gui","forks_url":"https://api.github.com/repos/frankban/juju-gui/forks","keys_url":"https://api.github.com/repos/frankban/juju-gui/keys{/key_id}","collaborators_url":"https://api.github.com/repos/frankban/juju-gui/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/frankban/juju-gui/teams","hooks_url":"https://api.github.com/repos/frankban/juju-gui/hooks","issue_events_url":"https://api.github.com/repos/frankban/juju-gui/issues/events{/number}","events_url":"https://api.github.com/repos/frankban/juju-gui/events","assignees_url":"https://api.github.com/repos/frankban/juju-gui/assignees{/user}","branches_url":"https://api.github.com/repos/frankban/juju-gui/branches{/branch}","tags_url":"https://api.github.com/repos/frankban/juju-gui/tags","blobs_url":"https://api.github.com/repos/frankban/juju-gui/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/frankban/juju-gui/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/frankban/juju-gui/git/refs{/sha}","trees_url":"https://api.github.com/repos/frankban/juju-gui/git/trees{/sha}","statuses_url":"https://api.github.com/repos/frankban/juju-gui/statuses/{sha}","languages_url":"https://api.github.com/repos/frankban/juju-gui/languages","stargazers_url":"https://api.github.com/repos/frankban/juju-gui/stargazers","contributors_url":"https://api.github.com/repos/frankban/juju-gui/contributors","subscribers_url":"https://api.github.com/repos/frankban/juju-gui/subscribers","subscription_url":"https://api.github.com/repos/frankban/juju-gui/subscription","commits_url":"https://api.github.com/repos/frankban/juju-gui/commits{/sha}","git_commits_url":"https://api.github.com/repos/frankban/juju-gui/git/commits{/sha}","comments_url":"https://api.github.com/repos/frankban/juju-gui/comments{/number}","issue_comment_url":"https://api.github.com/repos/frankban/juju-gui/issues/comments{/number}","contents_url":"https://api.github.com/repos/frankban/juju-gui/contents/{+path}","compare_url":"https://api.github.com/repos/frankban/juju-gui/compare/{base}...{head}","merges_url":"https://api.github.com/repos/frankban/juju-gui/merges","archive_url":"https://api.github.com/repos/frankban/juju-gui/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/frankban/juju-gui/downloads","issues_url":"https://api.github.com/repos/frankban/juju-gui/issues{/number}","pulls_url":"https://api.github.com/repos/frankban/juju-gui/pulls{/number}","milestones_url":"https://api.github.com/repos/frankban/juju-gui/milestones{/number}","notifications_url":"https://api.github.com/repos/frankban/juju-gui/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/frankban/juju-gui/labels{/name}","releases_url":"https://api.github.com/repos/frankban/juju-gui/releases{/id}","deployments_url":"https://api.github.com/repos/frankban/juju-gui/deployments","created_at":"2014-01-15T09:15:06Z","updated_at":"2015-04-29T09:56:41Z","pushed_at":"2016-11-03T14:52:46Z","git_url":"git://github.com/frankban/juju-gui.git","ssh_url":"git@github.com:frankban/juju-gui.git","clone_url":"https://github.com/frankban/juju-gui.git","svn_url":"https://github.com/frankban/juju-gui","homepage":null,"size":119042,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"juju:develop","ref":"develop","sha":"86fcc8acceed78479f57da973c194e7b2ce32165","user":{"login":"juju","id":4604548,"avatar_url":"https://avatars.githubusercontent.com/u/4604548?v=3","gravatar_id":"","url":"https://api.github.com/users/juju","html_url":"https://github.com/juju","followers_url":"https://api.github.com/users/juju/followers","following_url":"https://api.github.com/users/juju/following{/other_user}","gists_url":"https://api.github.com/users/juju/gists{/gist_id}","starred_url":"https://api.github.com/users/juju/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juju/subscriptions","organizations_url":"https://api.github.com/users/juju/orgs","repos_url":"https://api.github.com/users/juju/repos","events_url":"https://api.github.com/users/juju/events{/privacy}","received_events_url":"https://api.github.com/users/juju/received_events","type":"Organization","site_admin":false},"repo":{"id":14960387,"name":"juju-gui","full_name":"juju/juju-gui","owner":{"login":"juju","id":4604548,"avatar_url":"https://avatars.githubusercontent.com/u/4604548?v=3","gravatar_id":"","url":"https://api.github.com/users/juju","html_url":"https://github.com/juju","followers_url":"https://api.github.com/users/juju/followers","following_url":"https://api.github.com/users/juju/following{/other_user}","gists_url":"https://api.github.com/users/juju/gists{/gist_id}","starred_url":"https://api.github.com/users/juju/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juju/subscriptions","organizations_url":"https://api.github.com/users/juju/orgs","repos_url":"https://api.github.com/users/juju/repos","events_url":"https://api.github.com/users/juju/events{/privacy}","received_events_url":"https://api.github.com/users/juju/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/juju/juju-gui","description":"Juju-GUI is a web-based GUI for Juju <https://jujucharms.com/>.","fork":false,"url":"https://api.github.com/repos/juju/juju-gui","forks_url":"https://api.github.com/repos/juju/juju-gui/forks","keys_url":"https://api.github.com/repos/juju/juju-gui/keys{/key_id}","collaborators_url":"https://api.github.com/repos/juju/juju-gui/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/juju/juju-gui/teams","hooks_url":"https://api.github.com/repos/juju/juju-gui/hooks","issue_events_url":"https://api.github.com/repos/juju/juju-gui/issues/events{/number}","events_url":"https://api.github.com/repos/juju/juju-gui/events","assignees_url":"https://api.github.com/repos/juju/juju-gui/assignees{/user}","branches_url":"https://api.github.com/repos/juju/juju-gui/branches{/branch}","tags_url":"https://api.github.com/repos/juju/juju-gui/tags","blobs_url":"https://api.github.com/repos/juju/juju-gui/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/juju/juju-gui/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/juju/juju-gui/git/refs{/sha}","trees_url":"https://api.github.com/repos/juju/juju-gui/git/trees{/sha}","statuses_url":"https://api.github.com/repos/juju/juju-gui/statuses/{sha}","languages_url":"https://api.github.com/repos/juju/juju-gui/languages","stargazers_url":"https://api.github.com/repos/juju/juju-gui/stargazers","contributors_url":"https://api.github.com/repos/juju/juju-gui/contributors","subscribers_url":"https://api.github.com/repos/juju/juju-gui/subscribers","subscription_url":"https://api.github.com/repos/juju/juju-gui/subscription","commits_url":"https://api.github.com/repos/juju/juju-gui/commits{/sha}","git_commits_url":"https://api.github.com/repos/juju/juju-gui/git/commits{/sha}","comments_url":"https://api.github.com/repos/juju/juju-gui/comments{/number}","issue_comment_url":"https://api.github.com/repos/juju/juju-gui/issues/comments{/number}","contents_url":"https://api.github.com/repos/juju/juju-gui/contents/{+path}","compare_url":"https://api.github.com/repos/juju/juju-gui/compare/{base}...{head}","merges_url":"https://api.github.com/repos/juju/juju-gui/merges","archive_url":"https://api.github.com/repos/juju/juju-gui/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/juju/juju-gui/downloads","issues_url":"https://api.github.com/repos/juju/juju-gui/issues{/number}","pulls_url":"https://api.github.com/repos/juju/juju-gui/pulls{/number}","milestones_url":"https://api.github.com/repos/juju/juju-gui/milestones{/number}","notifications_url":"https://api.github.com/repos/juju/juju-gui/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/juju/juju-gui/labels{/name}","releases_url":"https://api.github.com/repos/juju/juju-gui/releases{/id}","deployments_url":"https://api.github.com/repos/juju/juju-gui/deployments","created_at":"2013-12-05T17:15:48Z","updated_at":"2016-10-24T19:23:27Z","pushed_at":"2016-11-03T15:04:08Z","git_url":"git://github.com/juju/juju-gui.git","ssh_url":"git@github.com:juju/juju-gui.git","clone_url":"https://github.com/juju/juju-gui.git","svn_url":"https://github.com/juju/juju-gui","homepage":"","size":123367,"stargazers_count":101,"watchers_count":101,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":57,"mirror_url":null,"open_issues_count":102,"forks":57,"open_issues":102,"watchers":101,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/juju/juju-gui/pulls/2174"},"html":{"href":"https://github.com/juju/juju-gui/pull/2174"},"issue":{"href":"https://api.github.com/repos/juju/juju-gui/issues/2174"},"comments":{"href":"https://api.github.com/repos/juju/juju-gui/issues/2174/comments"},"review_comments":{"href":"https://api.github.com/repos/juju/juju-gui/pulls/2174/comments"},"review_comment":{"href":"https://api.github.com/repos/juju/juju-gui/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/juju/juju-gui/pulls/2174/commits"},"statuses":{"href":"https://api.github.com/repos/juju/juju-gui/statuses/310cb4a5ed122aae0ef17e9ee5a0df16da757608"}}}}
{"actor":{"display_login":"jaycee"}}