{"action":"created","comment":{"url":"https://api.github.com/repos/DataBiosphere/azul/pulls/comments/215768571","pull_request_review_id":153099703,"id":215768571,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNTc2ODU3MQ==","diff_hunk":"@@ -322,7 +326,64 @@ def get_manifest():\n     # Get the response back\n     logger.info(\"Creating the API response\")\n     response = es_td.transform_manifest(filters=filters)\n-    # Return the excel file\n+    if output_formats == 'tsv':  # returns metadata as TSV file\n+        return response\n+    elif output_formats == 'bdbag':  # returns presigned URL to a BDBag in S3\n+        response_bag = bdbag_response(response)\n+        return jsonify(response_bag)\n+\n+\n+def bdbag_response(response_obj):\n+    logger = logging.getLogger('dashboardService.webservice.bdbag_response')\n+    # Create and return the BDbag folder.\n+    bag_name = 'manifest'\n+    bag_info = {'organization': 'UCSC Genomics Institute',\n+                'data_type': 'TOPMed',\n+                'date_created': datetime.datetime.now().isoformat()}\n+\n+    # Instantiate bag object.\n+    bag = BagHandler(data=response_obj.get_data(),\n+                     bag_info=bag_info,\n+                     bag_name=bag_name)\n+    zipped_bag = bag.create_bag()  # path to compressed bag\n+    logger.info(\"Creating a compressed BDbag containing manifest.\")\n+\n+    # Import bucket environment variable, launch instance of S3-file handler,\n+    # and upload the BDBag file to S3.\n+\n+    # Transfer parameters.\n+    aws_region = 'us-west-2'\n+    bucket_key = str(uuid.uuid4())\n+    azul_s3_bucket = os.getenv(\"AZUL_S3_BUCKET\")\n+    access_key_id = os.getenv(\"AWS_ACCESS_KEY_ID\")\n+    secret_key = os.getenv(\"AWS_SECRET_ACCESS_KEY\")\n+\n+    s3 = S3FileHandler(aws_region, access_key_id, secret_key)\n+    r = s3.upload_object_to_bucket(azul_s3_bucket,\n+                                   zipped_bag,\n+                                   bucket_key)\n+    os.remove(zipped_bag)\n+\n+    if r['status_code'] == 200:\n+        logger.info(\"Uploaded BDbag {} to S3 bucket {}.\".format(bucket_key,\n+                                                                azul_s3_bucket))\n+        # Generate presigned URL to access that s3 location.\n+        response = s3.create_presigned_url(azul_s3_bucket, bucket_key)\n+        response['s3_upload_status_code'] = r['status_code']\n+        if response['status_code'] == 200:\n+            logger.info(\"Successfully created presigned URL for bucket {}.\".\n+                        format(''.join([azul_s3_bucket, '/', bucket_key])))\n+        else:\n+            logger.debug(\"Failed to create presigned URL for bucket {}.\".\n+                        format(''.join([azul_s3_bucket, '/', bucket_key])))\n+    else:\n+        logger.error(\"Upload to S3 bucket {} failed: {}\".format(\n+            azul_s3_bucket, r['status_code']))\n+        response = {\n+            'presigned_url': None,","path":"webservice/webservice.py","position":85,"original_position":85,"commit_id":"8fbf17e14f1273044f21e810db0024180c2542f2","original_commit_id":"8fbf17e14f1273044f21e810db0024180c2542f2","user":{"login":"coverbeck","id":1049340,"node_id":"MDQ6VXNlcjEwNDkzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/1049340?v=4","gravatar_id":"","url":"https://api.github.com/users/coverbeck","html_url":"https://github.com/coverbeck","followers_url":"https://api.github.com/users/coverbeck/followers","following_url":"https://api.github.com/users/coverbeck/following{/other_user}","gists_url":"https://api.github.com/users/coverbeck/gists{/gist_id}","starred_url":"https://api.github.com/users/coverbeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coverbeck/subscriptions","organizations_url":"https://api.github.com/users/coverbeck/orgs","repos_url":"https://api.github.com/users/coverbeck/repos","events_url":"https://api.github.com/users/coverbeck/events{/privacy}","received_events_url":"https://api.github.com/users/coverbeck/received_events","type":"User","site_admin":false},"body":"If there is an error, your HTTP response status code needs to indicate the error. If I'm reading this correctly, you will return a 200 status code with the error status code in the body. If that is the case, please return a 4xx or 5xx as appropriate.\r\n\r\nI don't think you should have presigned_url in the response body. The response of an error does not have to match the response body of success.\r\n\r\nSee these links for some ideas: \r\n\r\nhttps://medium.com/@suhas_chatekar/return-well-formed-error-responses-from-your-rest-apis-956b5275948\r\n\r\nhttps://apigee.com/about/blog/technology/restful-api-design-what-about-errors (although don't do it the Facebook way from this link).","created_at":"2018-09-06T20:35:45Z","updated_at":"2018-09-06T20:36:37Z","html_url":"https://github.com/DataBiosphere/azul/pull/304#discussion_r215768571","pull_request_url":"https://api.github.com/repos/DataBiosphere/azul/pulls/304","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/DataBiosphere/azul/pulls/comments/215768571"},"html":{"href":"https://github.com/DataBiosphere/azul/pull/304#discussion_r215768571"},"pull_request":{"href":"https://api.github.com/repos/DataBiosphere/azul/pulls/304"}}},"pull_request":{"url":"https://api.github.com/repos/DataBiosphere/azul/pulls/304","id":213715177,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzNzE1MTc3","html_url":"https://github.com/DataBiosphere/azul/pull/304","diff_url":"https://github.com/DataBiosphere/azul/pull/304.diff","patch_url":"https://github.com/DataBiosphere/azul/pull/304.patch","issue_url":"https://api.github.com/repos/DataBiosphere/azul/issues/304","number":304,"state":"open","locked":false,"title":"Feature/mkrause/38 test endpoint (resolves #292)","user":{"login":"mjkrause","id":15079157,"node_id":"MDQ6VXNlcjE1MDc5MTU3","avatar_url":"https://avatars0.githubusercontent.com/u/15079157?v=4","gravatar_id":"","url":"https://api.github.com/users/mjkrause","html_url":"https://github.com/mjkrause","followers_url":"https://api.github.com/users/mjkrause/followers","following_url":"https://api.github.com/users/mjkrause/following{/other_user}","gists_url":"https://api.github.com/users/mjkrause/gists{/gist_id}","starred_url":"https://api.github.com/users/mjkrause/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjkrause/subscriptions","organizations_url":"https://api.github.com/users/mjkrause/orgs","repos_url":"https://api.github.com/users/mjkrause/repos","events_url":"https://api.github.com/users/mjkrause/events{/privacy}","received_events_url":"https://api.github.com/users/mjkrause/received_events","type":"User","site_admin":false},"body":"This PR modifies the export function of Boardwalk's webservice. In webservice.py the route `/repository/files/export` calls method `get_manifest`. That endpoint originally created a tab-separated values (TSV) file from a metadata manifest, and downloaded it to a user's local system.\r\n\r\nIn this PR we add a query parameter to it so the user can specify whether the original functionality should be executed, or whether the metadata in form of a zipped BDBag should be uploaded to Amazon AWS S3 for temporary storage. The two options can be invoked with strings `tsv` and `bdbag`, respectively, as query parameters.\r\n\r\nA test instance of the service is running at `https://mkrause2.ucsc-cgp-dev.org`. To test functionality do\r\n\r\n- upload metadata as BDBag to S3 and return presigned URL to it: `curl 'https://mkrause2.ucsc-cgp-dev.org/api/v1/repository/files/export?filters=%7B%7D&output_formats=bdbag' -H 'accept: application/json'`\r\n- test to return summary of data in database: `curl 'https://mkrause2.ucsc-cgp-dev.org/api/v1/repository/files/summary?filters=%7B%7D' -H 'accept: application/json'`\r\n- test to return a metadata file: `curl 'https://mkrause2.ucsc-cgp-dev.org/api/v1/repository/files/export?filters=%7B%7D&output_formats=tsv' -H 'accept: application/json'`\r\n","created_at":"2018-09-06T18:50:37Z","updated_at":"2018-09-06T20:36:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7b70b01fbc92326610c64fd53af90969071941bf","assignee":{"login":"mjkrause","id":15079157,"node_id":"MDQ6VXNlcjE1MDc5MTU3","avatar_url":"https://avatars0.githubusercontent.com/u/15079157?v=4","gravatar_id":"","url":"https://api.github.com/users/mjkrause","html_url":"https://github.com/mjkrause","followers_url":"https://api.github.com/users/mjkrause/followers","following_url":"https://api.github.com/users/mjkrause/following{/other_user}","gists_url":"https://api.github.com/users/mjkrause/gists{/gist_id}","starred_url":"https://api.github.com/users/mjkrause/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjkrause/subscriptions","organizations_url":"https://api.github.com/users/mjkrause/orgs","repos_url":"https://api.github.com/users/mjkrause/repos","events_url":"https://api.github.com/users/mjkrause/events{/privacy}","received_events_url":"https://api.github.com/users/mjkrause/received_events","type":"User","site_admin":false},"assignees":[{"login":"mjkrause","id":15079157,"node_id":"MDQ6VXNlcjE1MDc5MTU3","avatar_url":"https://avatars0.githubusercontent.com/u/15079157?v=4","gravatar_id":"","url":"https://api.github.com/users/mjkrause","html_url":"https://github.com/mjkrause","followers_url":"https://api.github.com/users/mjkrause/followers","following_url":"https://api.github.com/users/mjkrause/following{/other_user}","gists_url":"https://api.github.com/users/mjkrause/gists{/gist_id}","starred_url":"https://api.github.com/users/mjkrause/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjkrause/subscriptions","organizations_url":"https://api.github.com/users/mjkrause/orgs","repos_url":"https://api.github.com/users/mjkrause/repos","events_url":"https://api.github.com/users/mjkrause/events{/privacy}","received_events_url":"https://api.github.com/users/mjkrause/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1027559317,"node_id":"MDU6TGFiZWwxMDI3NTU5MzE3","url":"https://api.github.com/repos/DataBiosphere/azul/labels/commons","name":"commons","color":"019e8b","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/DataBiosphere/azul/pulls/304/commits","review_comments_url":"https://api.github.com/repos/DataBiosphere/azul/pulls/304/comments","review_comment_url":"https://api.github.com/repos/DataBiosphere/azul/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DataBiosphere/azul/issues/304/comments","statuses_url":"https://api.github.com/repos/DataBiosphere/azul/statuses/8fbf17e14f1273044f21e810db0024180c2542f2","head":{"label":"DataBiosphere:feature/mkrause/38-test-endpoint","ref":"feature/mkrause/38-test-endpoint","sha":"8fbf17e14f1273044f21e810db0024180c2542f2","user":{"login":"DataBiosphere","id":32805087,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyODA1MDg3","avatar_url":"https://avatars0.githubusercontent.com/u/32805087?v=4","gravatar_id":"","url":"https://api.github.com/users/DataBiosphere","html_url":"https://github.com/DataBiosphere","followers_url":"https://api.github.com/users/DataBiosphere/followers","following_url":"https://api.github.com/users/DataBiosphere/following{/other_user}","gists_url":"https://api.github.com/users/DataBiosphere/gists{/gist_id}","starred_url":"https://api.github.com/users/DataBiosphere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataBiosphere/subscriptions","organizations_url":"https://api.github.com/users/DataBiosphere/orgs","repos_url":"https://api.github.com/users/DataBiosphere/repos","events_url":"https://api.github.com/users/DataBiosphere/events{/privacy}","received_events_url":"https://api.github.com/users/DataBiosphere/received_events","type":"Organization","site_admin":false},"repo":{"id":139095537,"node_id":"MDEwOlJlcG9zaXRvcnkxMzkwOTU1Mzc=","name":"azul","full_name":"DataBiosphere/azul","owner":{"login":"DataBiosphere","id":32805087,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyODA1MDg3","avatar_url":"https://avatars0.githubusercontent.com/u/32805087?v=4","gravatar_id":"","url":"https://api.github.com/users/DataBiosphere","html_url":"https://github.com/DataBiosphere","followers_url":"https://api.github.com/users/DataBiosphere/followers","following_url":"https://api.github.com/users/DataBiosphere/following{/other_user}","gists_url":"https://api.github.com/users/DataBiosphere/gists{/gist_id}","starred_url":"https://api.github.com/users/DataBiosphere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataBiosphere/subscriptions","organizations_url":"https://api.github.com/users/DataBiosphere/orgs","repos_url":"https://api.github.com/users/DataBiosphere/repos","events_url":"https://api.github.com/users/DataBiosphere/events{/privacy}","received_events_url":"https://api.github.com/users/DataBiosphere/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DataBiosphere/azul","description":null,"fork":false,"url":"https://api.github.com/repos/DataBiosphere/azul","forks_url":"https://api.github.com/repos/DataBiosphere/azul/forks","keys_url":"https://api.github.com/repos/DataBiosphere/azul/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DataBiosphere/azul/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DataBiosphere/azul/teams","hooks_url":"https://api.github.com/repos/DataBiosphere/azul/hooks","issue_events_url":"https://api.github.com/repos/DataBiosphere/azul/issues/events{/number}","events_url":"https://api.github.com/repos/DataBiosphere/azul/events","assignees_url":"https://api.github.com/repos/DataBiosphere/azul/assignees{/user}","branches_url":"https://api.github.com/repos/DataBiosphere/azul/branches{/branch}","tags_url":"https://api.github.com/repos/DataBiosphere/azul/tags","blobs_url":"https://api.github.com/repos/DataBiosphere/azul/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DataBiosphere/azul/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DataBiosphere/azul/git/refs{/sha}","trees_url":"https://api.github.com/repos/DataBiosphere/azul/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DataBiosphere/azul/statuses/{sha}","languages_url":"https://api.github.com/repos/DataBiosphere/azul/languages","stargazers_url":"https://api.github.com/repos/DataBiosphere/azul/stargazers","contributors_url":"https://api.github.com/repos/DataBiosphere/azul/contributors","subscribers_url":"https://api.github.com/repos/DataBiosphere/azul/subscribers","subscription_url":"https://api.github.com/repos/DataBiosphere/azul/subscription","commits_url":"https://api.github.com/repos/DataBiosphere/azul/commits{/sha}","git_commits_url":"https://api.github.com/repos/DataBiosphere/azul/git/commits{/sha}","comments_url":"https://api.github.com/repos/DataBiosphere/azul/comments{/number}","issue_comment_url":"https://api.github.com/repos/DataBiosphere/azul/issues/comments{/number}","contents_url":"https://api.github.com/repos/DataBiosphere/azul/contents/{+path}","compare_url":"https://api.github.com/repos/DataBiosphere/azul/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DataBiosphere/azul/merges","archive_url":"https://api.github.com/repos/DataBiosphere/azul/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DataBiosphere/azul/downloads","issues_url":"https://api.github.com/repos/DataBiosphere/azul/issues{/number}","pulls_url":"https://api.github.com/repos/DataBiosphere/azul/pulls{/number}","milestones_url":"https://api.github.com/repos/DataBiosphere/azul/milestones{/number}","notifications_url":"https://api.github.com/repos/DataBiosphere/azul/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DataBiosphere/azul/labels{/name}","releases_url":"https://api.github.com/repos/DataBiosphere/azul/releases{/id}","deployments_url":"https://api.github.com/repos/DataBiosphere/azul/deployments","created_at":"2018-06-29T03:18:14Z","updated_at":"2018-09-05T19:40:22Z","pushed_at":"2018-09-06T20:34:36Z","git_url":"git://github.com/DataBiosphere/azul.git","ssh_url":"git@github.com:DataBiosphere/azul.git","clone_url":"https://github.com/DataBiosphere/azul.git","svn_url":"https://github.com/DataBiosphere/azul","homepage":null,"size":10737,"stargazers_count":3,"watchers_count":3,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":92,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":2,"open_issues":92,"watchers":3,"default_branch":"develop"}},"base":{"label":"DataBiosphere:feature/commons","ref":"feature/commons","sha":"595db447f7149544776fef584a00315bdefd2b7a","user":{"login":"DataBiosphere","id":32805087,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyODA1MDg3","avatar_url":"https://avatars0.githubusercontent.com/u/32805087?v=4","gravatar_id":"","url":"https://api.github.com/users/DataBiosphere","html_url":"https://github.com/DataBiosphere","followers_url":"https://api.github.com/users/DataBiosphere/followers","following_url":"https://api.github.com/users/DataBiosphere/following{/other_user}","gists_url":"https://api.github.com/users/DataBiosphere/gists{/gist_id}","starred_url":"https://api.github.com/users/DataBiosphere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataBiosphere/subscriptions","organizations_url":"https://api.github.com/users/DataBiosphere/orgs","repos_url":"https://api.github.com/users/DataBiosphere/repos","events_url":"https://api.github.com/users/DataBiosphere/events{/privacy}","received_events_url":"https://api.github.com/users/DataBiosphere/received_events","type":"Organization","site_admin":false},"repo":{"id":139095537,"node_id":"MDEwOlJlcG9zaXRvcnkxMzkwOTU1Mzc=","name":"azul","full_name":"DataBiosphere/azul","owner":{"login":"DataBiosphere","id":32805087,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyODA1MDg3","avatar_url":"https://avatars0.githubusercontent.com/u/32805087?v=4","gravatar_id":"","url":"https://api.github.com/users/DataBiosphere","html_url":"https://github.com/DataBiosphere","followers_url":"https://api.github.com/users/DataBiosphere/followers","following_url":"https://api.github.com/users/DataBiosphere/following{/other_user}","gists_url":"https://api.github.com/users/DataBiosphere/gists{/gist_id}","starred_url":"https://api.github.com/users/DataBiosphere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataBiosphere/subscriptions","organizations_url":"https://api.github.com/users/DataBiosphere/orgs","repos_url":"https://api.github.com/users/DataBiosphere/repos","events_url":"https://api.github.com/users/DataBiosphere/events{/privacy}","received_events_url":"https://api.github.com/users/DataBiosphere/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DataBiosphere/azul","description":null,"fork":false,"url":"https://api.github.com/repos/DataBiosphere/azul","forks_url":"https://api.github.com/repos/DataBiosphere/azul/forks","keys_url":"https://api.github.com/repos/DataBiosphere/azul/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DataBiosphere/azul/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DataBiosphere/azul/teams","hooks_url":"https://api.github.com/repos/DataBiosphere/azul/hooks","issue_events_url":"https://api.github.com/repos/DataBiosphere/azul/issues/events{/number}","events_url":"https://api.github.com/repos/DataBiosphere/azul/events","assignees_url":"https://api.github.com/repos/DataBiosphere/azul/assignees{/user}","branches_url":"https://api.github.com/repos/DataBiosphere/azul/branches{/branch}","tags_url":"https://api.github.com/repos/DataBiosphere/azul/tags","blobs_url":"https://api.github.com/repos/DataBiosphere/azul/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DataBiosphere/azul/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DataBiosphere/azul/git/refs{/sha}","trees_url":"https://api.github.com/repos/DataBiosphere/azul/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DataBiosphere/azul/statuses/{sha}","languages_url":"https://api.github.com/repos/DataBiosphere/azul/languages","stargazers_url":"https://api.github.com/repos/DataBiosphere/azul/stargazers","contributors_url":"https://api.github.com/repos/DataBiosphere/azul/contributors","subscribers_url":"https://api.github.com/repos/DataBiosphere/azul/subscribers","subscription_url":"https://api.github.com/repos/DataBiosphere/azul/subscription","commits_url":"https://api.github.com/repos/DataBiosphere/azul/commits{/sha}","git_commits_url":"https://api.github.com/repos/DataBiosphere/azul/git/commits{/sha}","comments_url":"https://api.github.com/repos/DataBiosphere/azul/comments{/number}","issue_comment_url":"https://api.github.com/repos/DataBiosphere/azul/issues/comments{/number}","contents_url":"https://api.github.com/repos/DataBiosphere/azul/contents/{+path}","compare_url":"https://api.github.com/repos/DataBiosphere/azul/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DataBiosphere/azul/merges","archive_url":"https://api.github.com/repos/DataBiosphere/azul/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DataBiosphere/azul/downloads","issues_url":"https://api.github.com/repos/DataBiosphere/azul/issues{/number}","pulls_url":"https://api.github.com/repos/DataBiosphere/azul/pulls{/number}","milestones_url":"https://api.github.com/repos/DataBiosphere/azul/milestones{/number}","notifications_url":"https://api.github.com/repos/DataBiosphere/azul/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DataBiosphere/azul/labels{/name}","releases_url":"https://api.github.com/repos/DataBiosphere/azul/releases{/id}","deployments_url":"https://api.github.com/repos/DataBiosphere/azul/deployments","created_at":"2018-06-29T03:18:14Z","updated_at":"2018-09-05T19:40:22Z","pushed_at":"2018-09-06T20:34:36Z","git_url":"git://github.com/DataBiosphere/azul.git","ssh_url":"git@github.com:DataBiosphere/azul.git","clone_url":"https://github.com/DataBiosphere/azul.git","svn_url":"https://github.com/DataBiosphere/azul","homepage":null,"size":10737,"stargazers_count":3,"watchers_count":3,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":92,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":2,"open_issues":92,"watchers":3,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/DataBiosphere/azul/pulls/304"},"html":{"href":"https://github.com/DataBiosphere/azul/pull/304"},"issue":{"href":"https://api.github.com/repos/DataBiosphere/azul/issues/304"},"comments":{"href":"https://api.github.com/repos/DataBiosphere/azul/issues/304/comments"},"review_comments":{"href":"https://api.github.com/repos/DataBiosphere/azul/pulls/304/comments"},"review_comment":{"href":"https://api.github.com/repos/DataBiosphere/azul/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DataBiosphere/azul/pulls/304/commits"},"statuses":{"href":"https://api.github.com/repos/DataBiosphere/azul/statuses/8fbf17e14f1273044f21e810db0024180c2542f2"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"coverbeck"}}