{"action":"created","comment":{"url":"https://api.github.com/repos/parse-community/parse-server/pulls/comments/208204545","pull_request_review_id":143960908,"id":208204545,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwODIwNDU0NQ==","diff_hunk":"@@ -0,0 +1,209 @@\n+# Upgrading Parse Server to version 3.0.0\n+\n+With the 3.0.0, parse-server has completely revamped it's cloud code interface. Gone are the backbone style calls, welcome promises and async await.\n+\n+In order to leverage those new nodejs features, you'll need to run at least node 8.10. We've dropped the support of node 6 a few months ago, so you should feed really comfortable at home.\n+\n+## Migrating Cloud Code Hooks\n+\n+### Synchronous validations:\n+\n+```js\n+// before\n+Parse.Cloud.beforeSave('MyClassName', function(request, response) {\n+  if (!passesValidation(req.object)) {\n+    response.error('Ooops something went wrong');\n+  } else {\n+    response.success();\n+  }\n+});\n+\n+// after\n+Parse.Cloud.beforeSave('MyClassName', (request) => {\n+  if (!passesValidation(req.object)) {\n+    throw 'Ooops something went wrong'; \n+  }\n+});\n+```\n+\n+All methods are wrapped into promises, so you can freely `throw` `Error`, `Parse.Error` or `string` to mark an error.\n+\n+### Asynchronous validations:\n+\n+For asynchronous code, you can use promises or async / await.\n+\n+Consider the following beforeSave call that would replace the contents of a fileURL with a proper copy of the image as a Parse.File.\n+\n+```js\n+// before\n+Parse.Cloud.beforeSave('Post', function(request, response) {\n+  Parse.Cloud.httpRequest({\n+    url: request.object.get('fileURL'),\n+    success: function(contents) {\n+      const file = new Parse.File('image.png', { base64: contents.buffer.toString('base64') });\n+      file.save({\n+        success: function() {\n+          request.object.set('file', file);\n+          response.success();\n+        },\n+        error: response.error\n+      });\n+    }, \n+    error: response.error\n+  });\n+});\n+```\n+\n+As we can see the current way, with backbone style callbacks is quite tough to read and maintain.\n+It's also not really trivial to handle errors, as you need to pass the response.error to each error handlers.\n+\n+Now it can be modernized with promises:\n+\n+```js\n+// after (with promises)\n+Parse.Cloud.beforeSave('MyClassName', (request) => {\n+  return Parse.Cloud.httpRequest({\n+    url: request.object.get('fileURL')\n+  }).then((response) => {\n+    const file = new Parse.File('image.png', { base64: contents.buffer.toString('base64') });\n+    request.object.set('file', file);\n+    return file.save();\n+  });\n+});\n+```\n+\n+And you can even make it better with async await.\n+\n+```js\n+// after with async/await\n+Parse.Cloud.beforeSave('MyClassName', async (request) => {\n+  const contents = await Parse.Cloud.httpRequest({\n+    url: request.object.get('fileURL')\n+  });\n+\n+  const file = new Parse.File('image.png', { base64: contents.buffer.toString('base64') });\n+  request.object.set('file', file);\n+  await file.save();\n+});\n+```\n+\n+Note: whenever a failure will occur, the beforeSave will fail.\n+\n+## Migrating Functions\n+\n+Cloud Functions can be migrated the same way as cloud code hooks.\n+In functions, the response object is not passed anymore, as it is in cloud code hooks\n+\n+Let's get again with the image downloader:\n+\n+```js\n+// before\n+Parse.Cloud.define('downloadImage', function(request, response) {\n+  Parse.Cloud.httpRequest({\n+    url: request.params.url,\n+    success: function(contents) {\n+      const file = new Parse.File(request.params.name, { base64: contents.buffer.toString('base64') });\n+      file.save({\n+        success: function() {\n+          response.success(file);\n+        },\n+        error: response.error\n+      });\n+    }, \n+    error: response.error\n+  });\n+});\n+```\n+\n+You would call this method with:\n+\n+```js\n+Parse.Cloud.run({\n+  url: '....',\n+  name: 'my-file'\n+});\n+```\n+\n+To migrate this function you would follow the same practices as the ones before, and we'll jump right away to the async/await implementation:\n+\n+```js\n+// after with async/await\n+Parse.Cloud.beforeSave('MyClassName', async (request) => {\n+  const {\n+    url, name\n+  } = request.params;\n+  const response = await Parse.Cloud.httpRequest({ url });\n+\n+  const file = new Parse.File(name, { base64: response.buffer.toString('base64') });\n+  await file.save();\n+  return file;\n+});\n+```\n+\n+## Migrating jobs\n+\n+As the hooks and functions, jobs don't have a status object anymore.","path":"3.0.0.md","position":145,"original_position":145,"commit_id":"91e6a3bb1ad07d051a5a26e5d2187748988c1542","original_commit_id":"91e6a3bb1ad07d051a5a26e5d2187748988c1542","user":{"login":"acinader","id":700572,"node_id":"MDQ6VXNlcjcwMDU3Mg==","avatar_url":"https://avatars1.githubusercontent.com/u/700572?v=4","gravatar_id":"","url":"https://api.github.com/users/acinader","html_url":"https://github.com/acinader","followers_url":"https://api.github.com/users/acinader/followers","following_url":"https://api.github.com/users/acinader/following{/other_user}","gists_url":"https://api.github.com/users/acinader/gists{/gist_id}","starred_url":"https://api.github.com/users/acinader/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acinader/subscriptions","organizations_url":"https://api.github.com/users/acinader/orgs","repos_url":"https://api.github.com/users/acinader/repos","events_url":"https://api.github.com/users/acinader/events{/privacy}","received_events_url":"https://api.github.com/users/acinader/received_events","type":"User","site_admin":false},"body":"As with hooks and functions....","created_at":"2018-08-07T12:07:34Z","updated_at":"2018-08-07T12:12:24Z","html_url":"https://github.com/parse-community/parse-server/pull/4933#discussion_r208204545","pull_request_url":"https://api.github.com/repos/parse-community/parse-server/pulls/4933","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/parse-community/parse-server/pulls/comments/208204545"},"html":{"href":"https://github.com/parse-community/parse-server/pull/4933#discussion_r208204545"},"pull_request":{"href":"https://api.github.com/repos/parse-community/parse-server/pulls/4933"}}},"pull_request":{"url":"https://api.github.com/repos/parse-community/parse-server/pulls/4933","id":206534487,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2NTM0NDg3","html_url":"https://github.com/parse-community/parse-server/pull/4933","diff_url":"https://github.com/parse-community/parse-server/pull/4933.diff","patch_url":"https://github.com/parse-community/parse-server/pull/4933.patch","issue_url":"https://api.github.com/repos/parse-community/parse-server/issues/4933","number":4933,"state":"open","locked":false,"title":"Version 3.0.0","user":{"login":"flovilmart","id":364568,"node_id":"MDQ6VXNlcjM2NDU2OA==","avatar_url":"https://avatars3.githubusercontent.com/u/364568?v=4","gravatar_id":"","url":"https://api.github.com/users/flovilmart","html_url":"https://github.com/flovilmart","followers_url":"https://api.github.com/users/flovilmart/followers","following_url":"https://api.github.com/users/flovilmart/following{/other_user}","gists_url":"https://api.github.com/users/flovilmart/gists{/gist_id}","starred_url":"https://api.github.com/users/flovilmart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flovilmart/subscriptions","organizations_url":"https://api.github.com/users/flovilmart/orgs","repos_url":"https://api.github.com/users/flovilmart/repos","events_url":"https://api.github.com/users/flovilmart/events{/privacy}","received_events_url":"https://api.github.com/users/flovilmart/received_events","type":"User","site_admin":false},"body":"Closes #4930 \r\n\r\n- Removes success / error based callbacks\r\n- Removes `response` object from cloud code hooks and functions\r\n- Removes `status` object from cloud code jobs\r\n- Support fully promise and async await based APIs","created_at":"2018-08-06T22:35:58Z","updated_at":"2018-08-07T12:12:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c3dd55e5c7aa03dba75476ecb49ef1d988c74e62","assignee":null,"assignees":[],"requested_reviewers":[{"login":"TylerBrock","id":280807,"node_id":"MDQ6VXNlcjI4MDgwNw==","avatar_url":"https://avatars1.githubusercontent.com/u/280807?v=4","gravatar_id":"","url":"https://api.github.com/users/TylerBrock","html_url":"https://github.com/TylerBrock","followers_url":"https://api.github.com/users/TylerBrock/followers","following_url":"https://api.github.com/users/TylerBrock/following{/other_user}","gists_url":"https://api.github.com/users/TylerBrock/gists{/gist_id}","starred_url":"https://api.github.com/users/TylerBrock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TylerBrock/subscriptions","organizations_url":"https://api.github.com/users/TylerBrock/orgs","repos_url":"https://api.github.com/users/TylerBrock/repos","events_url":"https://api.github.com/users/TylerBrock/events{/privacy}","received_events_url":"https://api.github.com/users/TylerBrock/received_events","type":"User","site_admin":false},{"login":"montymxb","id":5070304,"node_id":"MDQ6VXNlcjUwNzAzMDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/5070304?v=4","gravatar_id":"","url":"https://api.github.com/users/montymxb","html_url":"https://github.com/montymxb","followers_url":"https://api.github.com/users/montymxb/followers","following_url":"https://api.github.com/users/montymxb/following{/other_user}","gists_url":"https://api.github.com/users/montymxb/gists{/gist_id}","starred_url":"https://api.github.com/users/montymxb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/montymxb/subscriptions","organizations_url":"https://api.github.com/users/montymxb/orgs","repos_url":"https://api.github.com/users/montymxb/repos","events_url":"https://api.github.com/users/montymxb/events{/privacy}","received_events_url":"https://api.github.com/users/montymxb/received_events","type":"User","site_admin":false},{"login":"dplewis","id":9830365,"node_id":"MDQ6VXNlcjk4MzAzNjU=","avatar_url":"https://avatars3.githubusercontent.com/u/9830365?v=4","gravatar_id":"","url":"https://api.github.com/users/dplewis","html_url":"https://github.com/dplewis","followers_url":"https://api.github.com/users/dplewis/followers","following_url":"https://api.github.com/users/dplewis/following{/other_user}","gists_url":"https://api.github.com/users/dplewis/gists{/gist_id}","starred_url":"https://api.github.com/users/dplewis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dplewis/subscriptions","organizations_url":"https://api.github.com/users/dplewis/orgs","repos_url":"https://api.github.com/users/dplewis/repos","events_url":"https://api.github.com/users/dplewis/events{/privacy}","received_events_url":"https://api.github.com/users/dplewis/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/parse-community/parse-server/pulls/4933/commits","review_comments_url":"https://api.github.com/repos/parse-community/parse-server/pulls/4933/comments","review_comment_url":"https://api.github.com/repos/parse-community/parse-server/pulls/comments{/number}","comments_url":"https://api.github.com/repos/parse-community/parse-server/issues/4933/comments","statuses_url":"https://api.github.com/repos/parse-community/parse-server/statuses/91e6a3bb1ad07d051a5a26e5d2187748988c1542","head":{"label":"parse-community:version-3.0.0","ref":"version-3.0.0","sha":"91e6a3bb1ad07d051a5a26e5d2187748988c1542","user":{"login":"parse-community","id":26932219,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI2OTMyMjE5","avatar_url":"https://avatars3.githubusercontent.com/u/26932219?v=4","gravatar_id":"","url":"https://api.github.com/users/parse-community","html_url":"https://github.com/parse-community","followers_url":"https://api.github.com/users/parse-community/followers","following_url":"https://api.github.com/users/parse-community/following{/other_user}","gists_url":"https://api.github.com/users/parse-community/gists{/gist_id}","starred_url":"https://api.github.com/users/parse-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parse-community/subscriptions","organizations_url":"https://api.github.com/users/parse-community/orgs","repos_url":"https://api.github.com/users/parse-community/repos","events_url":"https://api.github.com/users/parse-community/events{/privacy}","received_events_url":"https://api.github.com/users/parse-community/received_events","type":"Organization","site_admin":false},"repo":{"id":50603846,"node_id":"MDEwOlJlcG9zaXRvcnk1MDYwMzg0Ng==","name":"parse-server","full_name":"parse-community/parse-server","owner":{"login":"parse-community","id":26932219,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI2OTMyMjE5","avatar_url":"https://avatars3.githubusercontent.com/u/26932219?v=4","gravatar_id":"","url":"https://api.github.com/users/parse-community","html_url":"https://github.com/parse-community","followers_url":"https://api.github.com/users/parse-community/followers","following_url":"https://api.github.com/users/parse-community/following{/other_user}","gists_url":"https://api.github.com/users/parse-community/gists{/gist_id}","starred_url":"https://api.github.com/users/parse-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parse-community/subscriptions","organizations_url":"https://api.github.com/users/parse-community/orgs","repos_url":"https://api.github.com/users/parse-community/repos","events_url":"https://api.github.com/users/parse-community/events{/privacy}","received_events_url":"https://api.github.com/users/parse-community/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/parse-community/parse-server","description":"Parse-compatible API server module for Node/Express","fork":false,"url":"https://api.github.com/repos/parse-community/parse-server","forks_url":"https://api.github.com/repos/parse-community/parse-server/forks","keys_url":"https://api.github.com/repos/parse-community/parse-server/keys{/key_id}","collaborators_url":"https://api.github.com/repos/parse-community/parse-server/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/parse-community/parse-server/teams","hooks_url":"https://api.github.com/repos/parse-community/parse-server/hooks","issue_events_url":"https://api.github.com/repos/parse-community/parse-server/issues/events{/number}","events_url":"https://api.github.com/repos/parse-community/parse-server/events","assignees_url":"https://api.github.com/repos/parse-community/parse-server/assignees{/user}","branches_url":"https://api.github.com/repos/parse-community/parse-server/branches{/branch}","tags_url":"https://api.github.com/repos/parse-community/parse-server/tags","blobs_url":"https://api.github.com/repos/parse-community/parse-server/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/parse-community/parse-server/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/parse-community/parse-server/git/refs{/sha}","trees_url":"https://api.github.com/repos/parse-community/parse-server/git/trees{/sha}","statuses_url":"https://api.github.com/repos/parse-community/parse-server/statuses/{sha}","languages_url":"https://api.github.com/repos/parse-community/parse-server/languages","stargazers_url":"https://api.github.com/repos/parse-community/parse-server/stargazers","contributors_url":"https://api.github.com/repos/parse-community/parse-server/contributors","subscribers_url":"https://api.github.com/repos/parse-community/parse-server/subscribers","subscription_url":"https://api.github.com/repos/parse-community/parse-server/subscription","commits_url":"https://api.github.com/repos/parse-community/parse-server/commits{/sha}","git_commits_url":"https://api.github.com/repos/parse-community/parse-server/git/commits{/sha}","comments_url":"https://api.github.com/repos/parse-community/parse-server/comments{/number}","issue_comment_url":"https://api.github.com/repos/parse-community/parse-server/issues/comments{/number}","contents_url":"https://api.github.com/repos/parse-community/parse-server/contents/{+path}","compare_url":"https://api.github.com/repos/parse-community/parse-server/compare/{base}...{head}","merges_url":"https://api.github.com/repos/parse-community/parse-server/merges","archive_url":"https://api.github.com/repos/parse-community/parse-server/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/parse-community/parse-server/downloads","issues_url":"https://api.github.com/repos/parse-community/parse-server/issues{/number}","pulls_url":"https://api.github.com/repos/parse-community/parse-server/pulls{/number}","milestones_url":"https://api.github.com/repos/parse-community/parse-server/milestones{/number}","notifications_url":"https://api.github.com/repos/parse-community/parse-server/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/parse-community/parse-server/labels{/name}","releases_url":"https://api.github.com/repos/parse-community/parse-server/releases{/id}","deployments_url":"https://api.github.com/repos/parse-community/parse-server/deployments","created_at":"2016-01-28T18:29:14Z","updated_at":"2018-08-07T10:50:45Z","pushed_at":"2018-08-07T11:33:47Z","git_url":"git://github.com/parse-community/parse-server.git","ssh_url":"git@github.com:parse-community/parse-server.git","clone_url":"https://github.com/parse-community/parse-server.git","svn_url":"https://github.com/parse-community/parse-server","homepage":"http://parseplatform.org","size":6081,"stargazers_count":15380,"watchers_count":15380,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4025,"mirror_url":null,"archived":false,"open_issues_count":268,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":4025,"open_issues":268,"watchers":15380,"default_branch":"master"}},"base":{"label":"parse-community:master","ref":"master","sha":"ff25ae254d485ee242eca02a96a5fe021005e0a6","user":{"login":"parse-community","id":26932219,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI2OTMyMjE5","avatar_url":"https://avatars3.githubusercontent.com/u/26932219?v=4","gravatar_id":"","url":"https://api.github.com/users/parse-community","html_url":"https://github.com/parse-community","followers_url":"https://api.github.com/users/parse-community/followers","following_url":"https://api.github.com/users/parse-community/following{/other_user}","gists_url":"https://api.github.com/users/parse-community/gists{/gist_id}","starred_url":"https://api.github.com/users/parse-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parse-community/subscriptions","organizations_url":"https://api.github.com/users/parse-community/orgs","repos_url":"https://api.github.com/users/parse-community/repos","events_url":"https://api.github.com/users/parse-community/events{/privacy}","received_events_url":"https://api.github.com/users/parse-community/received_events","type":"Organization","site_admin":false},"repo":{"id":50603846,"node_id":"MDEwOlJlcG9zaXRvcnk1MDYwMzg0Ng==","name":"parse-server","full_name":"parse-community/parse-server","owner":{"login":"parse-community","id":26932219,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI2OTMyMjE5","avatar_url":"https://avatars3.githubusercontent.com/u/26932219?v=4","gravatar_id":"","url":"https://api.github.com/users/parse-community","html_url":"https://github.com/parse-community","followers_url":"https://api.github.com/users/parse-community/followers","following_url":"https://api.github.com/users/parse-community/following{/other_user}","gists_url":"https://api.github.com/users/parse-community/gists{/gist_id}","starred_url":"https://api.github.com/users/parse-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parse-community/subscriptions","organizations_url":"https://api.github.com/users/parse-community/orgs","repos_url":"https://api.github.com/users/parse-community/repos","events_url":"https://api.github.com/users/parse-community/events{/privacy}","received_events_url":"https://api.github.com/users/parse-community/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/parse-community/parse-server","description":"Parse-compatible API server module for Node/Express","fork":false,"url":"https://api.github.com/repos/parse-community/parse-server","forks_url":"https://api.github.com/repos/parse-community/parse-server/forks","keys_url":"https://api.github.com/repos/parse-community/parse-server/keys{/key_id}","collaborators_url":"https://api.github.com/repos/parse-community/parse-server/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/parse-community/parse-server/teams","hooks_url":"https://api.github.com/repos/parse-community/parse-server/hooks","issue_events_url":"https://api.github.com/repos/parse-community/parse-server/issues/events{/number}","events_url":"https://api.github.com/repos/parse-community/parse-server/events","assignees_url":"https://api.github.com/repos/parse-community/parse-server/assignees{/user}","branches_url":"https://api.github.com/repos/parse-community/parse-server/branches{/branch}","tags_url":"https://api.github.com/repos/parse-community/parse-server/tags","blobs_url":"https://api.github.com/repos/parse-community/parse-server/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/parse-community/parse-server/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/parse-community/parse-server/git/refs{/sha}","trees_url":"https://api.github.com/repos/parse-community/parse-server/git/trees{/sha}","statuses_url":"https://api.github.com/repos/parse-community/parse-server/statuses/{sha}","languages_url":"https://api.github.com/repos/parse-community/parse-server/languages","stargazers_url":"https://api.github.com/repos/parse-community/parse-server/stargazers","contributors_url":"https://api.github.com/repos/parse-community/parse-server/contributors","subscribers_url":"https://api.github.com/repos/parse-community/parse-server/subscribers","subscription_url":"https://api.github.com/repos/parse-community/parse-server/subscription","commits_url":"https://api.github.com/repos/parse-community/parse-server/commits{/sha}","git_commits_url":"https://api.github.com/repos/parse-community/parse-server/git/commits{/sha}","comments_url":"https://api.github.com/repos/parse-community/parse-server/comments{/number}","issue_comment_url":"https://api.github.com/repos/parse-community/parse-server/issues/comments{/number}","contents_url":"https://api.github.com/repos/parse-community/parse-server/contents/{+path}","compare_url":"https://api.github.com/repos/parse-community/parse-server/compare/{base}...{head}","merges_url":"https://api.github.com/repos/parse-community/parse-server/merges","archive_url":"https://api.github.com/repos/parse-community/parse-server/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/parse-community/parse-server/downloads","issues_url":"https://api.github.com/repos/parse-community/parse-server/issues{/number}","pulls_url":"https://api.github.com/repos/parse-community/parse-server/pulls{/number}","milestones_url":"https://api.github.com/repos/parse-community/parse-server/milestones{/number}","notifications_url":"https://api.github.com/repos/parse-community/parse-server/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/parse-community/parse-server/labels{/name}","releases_url":"https://api.github.com/repos/parse-community/parse-server/releases{/id}","deployments_url":"https://api.github.com/repos/parse-community/parse-server/deployments","created_at":"2016-01-28T18:29:14Z","updated_at":"2018-08-07T10:50:45Z","pushed_at":"2018-08-07T11:33:47Z","git_url":"git://github.com/parse-community/parse-server.git","ssh_url":"git@github.com:parse-community/parse-server.git","clone_url":"https://github.com/parse-community/parse-server.git","svn_url":"https://github.com/parse-community/parse-server","homepage":"http://parseplatform.org","size":6081,"stargazers_count":15380,"watchers_count":15380,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4025,"mirror_url":null,"archived":false,"open_issues_count":268,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":4025,"open_issues":268,"watchers":15380,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/parse-community/parse-server/pulls/4933"},"html":{"href":"https://github.com/parse-community/parse-server/pull/4933"},"issue":{"href":"https://api.github.com/repos/parse-community/parse-server/issues/4933"},"comments":{"href":"https://api.github.com/repos/parse-community/parse-server/issues/4933/comments"},"review_comments":{"href":"https://api.github.com/repos/parse-community/parse-server/pulls/4933/comments"},"review_comment":{"href":"https://api.github.com/repos/parse-community/parse-server/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/parse-community/parse-server/pulls/4933/commits"},"statuses":{"href":"https://api.github.com/repos/parse-community/parse-server/statuses/91e6a3bb1ad07d051a5a26e5d2187748988c1542"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"acinader"}}