{"action":"created","comment":{"url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/comments/197233112","pull_request_review_id":130938301,"id":197233112,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NzIzMzExMg==","diff_hunk":"@@ -390,7 +390,7 @@ def osfstorage_download(file_node, payload, **kwargs):\n     version = file_node.get_version(version_id, required=True)\n     # TODO: Update analytics in MFR callback when it is implemented\n     if request.args.get('mode') not in ('render', ):\n-        utils.update_analytics(OSFUser.load(user_id), file_node._id, int(version.identifier) - 1)\n+        utils.update_analytics(file_node.target, file_node._id, int(version.identifier) - 1)","path":"addons/osfstorage/views.py","position":5,"original_position":5,"commit_id":"60b8336cc3b272bd9ecf0b2ee6d7ce243b5004af","original_commit_id":"60b8336cc3b272bd9ecf0b2ee6d7ce243b5004af","user":{"login":"pattisdr","id":9755598,"node_id":"MDQ6VXNlcjk3NTU1OTg=","avatar_url":"https://avatars2.githubusercontent.com/u/9755598?v=4","gravatar_id":"","url":"https://api.github.com/users/pattisdr","html_url":"https://github.com/pattisdr","followers_url":"https://api.github.com/users/pattisdr/followers","following_url":"https://api.github.com/users/pattisdr/following{/other_user}","gists_url":"https://api.github.com/users/pattisdr/gists{/gist_id}","starred_url":"https://api.github.com/users/pattisdr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pattisdr/subscriptions","organizations_url":"https://api.github.com/users/pattisdr/orgs","repos_url":"https://api.github.com/users/pattisdr/repos","events_url":"https://api.github.com/users/pattisdr/events{/privacy}","received_events_url":"https://api.github.com/users/pattisdr/received_events","type":"User","site_admin":false},"body":"Might be a files-on-anything item that would need to change?","created_at":"2018-06-21T18:23:07Z","updated_at":"2018-06-21T18:23:08Z","html_url":"https://github.com/CenterForOpenScience/osf.io/pull/8422#discussion_r197233112","pull_request_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/comments/197233112"},"html":{"href":"https://github.com/CenterForOpenScience/osf.io/pull/8422#discussion_r197233112"},"pull_request":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422"}}},"pull_request":{"url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422","id":193511110,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkzNTExMTEw","html_url":"https://github.com/CenterForOpenScience/osf.io/pull/8422","diff_url":"https://github.com/CenterForOpenScience/osf.io/pull/8422.diff","patch_url":"https://github.com/CenterForOpenScience/osf.io/pull/8422.patch","issue_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/8422","number":8422,"state":"open","locked":false,"title":"[Need QA Prep] Feature/The Amicable Node-Preprint Divorce [PLAT-555][PLAT-480][PLAT-559][PLAT-561]","user":{"login":"pattisdr","id":9755598,"node_id":"MDQ6VXNlcjk3NTU1OTg=","avatar_url":"https://avatars2.githubusercontent.com/u/9755598?v=4","gravatar_id":"","url":"https://api.github.com/users/pattisdr","html_url":"https://github.com/pattisdr","followers_url":"https://api.github.com/users/pattisdr/followers","following_url":"https://api.github.com/users/pattisdr/following{/other_user}","gists_url":"https://api.github.com/users/pattisdr/gists{/gist_id}","starred_url":"https://api.github.com/users/pattisdr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pattisdr/subscriptions","organizations_url":"https://api.github.com/users/pattisdr/orgs","repos_url":"https://api.github.com/users/pattisdr/repos","events_url":"https://api.github.com/users/pattisdr/events{/privacy}","received_events_url":"https://api.github.com/users/pattisdr/received_events","type":"User","site_admin":false},"body":"## Purpose\r\n\r\nRemoves the dependency of Preprints on Nodes.  Nodes can house supplemental files for a preprint, but beyond that, Preprints are their own thing.\r\n\r\nTicket contains:\r\n- [Backend changes for node-preprint divorce ](https://openscience.atlassian.net/browse/PLAT-555)\r\n- [Schema and data migrations for legacy preprints ](https://openscience.atlassian.net/browse/PLAT-480)\r\n- [v1/Non-Ember front-end changes ](https://openscience.atlassian.net/browse/PLAT-559)\r\n- [API changes for preprints](https://openscience.atlassian.net/browse/PLAT-561)\r\n- ❗️ Doc changes haven't been made yet.  Support pages will also need to be updated (Becca?).  This can wait until front-end is ready?\r\n\r\n# How to create a preprint in the API\r\n\r\n## Step 1: Start Preprint\r\n`POST  http://localhost:8000/v2/preprints/`\r\nRequired fields are title and provider\r\n```json\r\nrequest body\r\n {\r\n     \"data\": {\r\n       \"type\": \"preprints\",\r\n       \"attributes\": {\r\n        \"title\": \"My first preprint\",\r\n        \"tags\": [\"coffee\", \"cinnamon\"]\r\n       },\r\n       \"relationships\": {\r\n          \"provider\": {\r\n             \"data\": {\r\n                \"type\": \"providers\",\r\n                \"id\": \"osf\"\r\n             \r\n             }\r\n          }\r\n    \t\t\r\n       }\r\n     }\r\n}\r\n```\r\n## Step 2 Upload new file to preprint, or copy file from existing node:\r\n### Uploading new file\r\n`GET http://localhost:8000/v2/preprints/nmqp6/files/` and then \r\n```\r\ncurl -X \"PUT\" \"http://localhost:7777/v1/resources/nmqp6/providers/osfstorage/?kind=file&name=my_preprint_file.txt\" \\\r\n--\r\n-H \"Authorization: Bearer my-token-goes-here\" \\\r\n-H \"Content-Type: text/plain\" \\\r\n-d \"This is a text file\"\r\n\r\n```\r\n### Copying file from supplementary node\r\nGet \"move\" link from supplementary node and then POST to move link where resource is the preprint id, action is copy, and provider is osfstorage.\r\n`GET http://localhost:8000/v2/nodes/4u3mk/files/osfstorage/` and then\r\n```json\r\ncurl -X \"POST\" \"http://localhost:7777/v1/resources/4u3mk/providers/osfstorage/5b2803b04c9d8502e5aea0cf\" \\\r\n--\r\n-H \"Authorization: Bearer my-token-goes-here \" \\\r\n-H \"Content-Type: application/json\" \\\r\n-d '{\"action\": \"copy\", \"path\": \"/\", \"resource\": \"nmqp6\", \"provider\": \"osfstorage\", \"conflict\": \"replace\"}'\r\n\r\n```\r\n\r\n## Step 3 - Update preprint to set newly uploaded file as primary file, add subjects if not there already, (supplementary node optional) and publish\r\n```\r\nPATCH http://localhost:8000/v2/preprints/nmqp6/\r\n {\r\n     \"data\": {\r\n       \"id\": \"nmqp6\",\r\n       \"type\": \"preprints\",\r\n       \"attributes\": {\r\n        \"subjects\": [[\"5b2419881f4ae00001670157\"]],\r\n        \"is_published\": \"true\"\r\n       },\r\n       \"relationships\": {\r\n          \"primary_file\": {\r\n             \"data\": {\r\n                \"type\": \"files\",\r\n                \"id\": \"5b2809294c9d8502e5aea0e1\"\r\n             }\r\n          },\r\n          \"node\": {\r\n             \"data\": {\r\n                 \"type\": \"nodes\",\r\n                 \"id\": \"4u3mk\"\r\n             }\r\n          }\r\n    \t\t\r\n       }\r\n     }\r\n}\r\n```\r\n\r\n## Changes\r\n### Too many to list, here are some of them.\r\n\r\n### Admin App\r\n- Preprints are their own thing in the admin app, not relying on node fields\r\n- You can modify contributors directly, flag preprints as spam, and reindex preprints in elastic search\r\n- Several node templates/views made more generic to work with nearly-identical preprints\r\n\r\n### API\r\n- Preprint endpoints are looking at preprint fields, not node fields.\r\n- PreprintProviderList endpoint and PreprintFiles list endpoint added (to expose OSFStorage Waterbutler endpoints for uploading primary file\r\n- New process for creating a preprint 1) POST to` v2/preprints/` (title, provider are required fields) 2) Use WB links to upload or move file to created preprint 3) PATCH to `v2/preprints/<preprint_id>/` to finish up process. \r\n- New preprints scopes added now that preprints/nodes are separate\r\n\r\n### Elastic Search\r\n- Legacy nodes attached to preprints are reindexed as nodes in a one-off script (`scripts/remove_after_use/node_preprint_es.py`)\r\n- Legacy preprints are added to the index as preprints\r\n- Moving forward, nodes are indexed as nodes, preprints are indexed as preprints\r\n- Modifications to search migration to not include QuickFIlesNode in Project list (bug fix?)\r\n- Modifications to search migration to add indexing for preprints and preprint files, and to stop indexing nodes as preprints\r\n\r\n### Modeling\r\n- New PreprintLog and PreprintContributor models\r\n- New ContributorMixin to share contributor-related methods between Nodes and Preprints\r\n- New SpamOverrideMixin to share spam-methods between Nodes and Preprints\r\n- Preprints uses Django-guardian for contributor permissions\r\n- Write contributors have been upgraded to have more permissions - can edit most things on a submitted preprint except publishing, withdrawing, etc.\r\n- Preprints do not have addons, so a few OSFStorage methods have been moved to the preprint.  \r\n- UploadMixin added to Preprint that creates a root folder for storage \r\n\r\n### Preprint File\r\n- Stored on preprint instead of node\r\n- Some OSFStorage methods modified to handle permission checking on preprint in addition to node\r\n- Preprints have regions (by default, same region as UserSettings, in migration, pulls region off of node).\r\n\r\n\r\n### Legacy UI\r\n- Dashboard My Preprints fetches from users/preprints/ instead of users/nodes/?filter['preprint']=True.  Activity logs removed\r\n- Preprint file restrictions removed from fangorn\r\n- Language changed on project page to reflect that project is a supplemental file for a project\r\n<img width=\"1249\" alt=\"screen shot 2018-06-20 at 6 29 08 pm\" src=\"https://user-images.githubusercontent.com/9755598/41689778-034eb9d8-74b8-11e8-84c3-db63697fd666.png\">\r\n<img width=\"570\" alt=\"screen shot 2018-06-20 at 6 29 15 pm\" src=\"https://user-images.githubusercontent.com/9755598/41689780-0626828a-74b8-11e8-8380-fe96d79cfec2.png\">\r\n\r\n#### Supplemental project attached to withdrawn preprint - status says Withdrawn\r\n<img width=\"902\" alt=\"screen shot 2018-06-21 at 1 04 21 pm\" src=\"https://user-images.githubusercontent.com/9755598/41737027-bc084264-7553-11e8-84a6-991aabeb9cea.png\">\r\n\r\n<img width=\"1205\" alt=\"screen shot 2018-06-07 at 5 58 33 pm\" src=\"https://user-images.githubusercontent.com/9755598/41161183-8c98d59a-6af7-11e8-86d5-c18c1f0ddb24.png\">\r\n\r\n#### Withdrawn preprint still shows up for a user on My Projects page. Is marked as withdrawn.\r\n<img width=\"960\" alt=\"screen shot 2018-06-20 at 4 39 01 pm\" src=\"https://user-images.githubusercontent.com/9755598/41686713-b289e69c-74aa-11e8-909a-c6c479dc64d7.png\">\r\n\r\n#### Published preprints show up on My Projects page\r\n<img width=\"958\" alt=\"screen shot 2018-06-20 at 12 42 57 pm\" src=\"https://user-images.githubusercontent.com/9755598/41675432-4e752d50-7488-11e8-889c-243bd6475cc2.png\">\r\n\r\n#### My private preprints still show up on My Projects page\r\n<img width=\"971\" alt=\"screen shot 2018-06-20 at 12 44 57 pm\" src=\"https://user-images.githubusercontent.com/9755598/41675443-54d8ea6a-7488-11e8-9079-f55fc72b9a4f.png\">\r\n\r\n#### Selecting multiple preprints on My Projects page\r\n<img width=\"910\" alt=\"screen shot 2018-06-20 at 4 56 07 pm\" src=\"https://user-images.githubusercontent.com/9755598/41686751-d90bac56-74aa-11e8-85c3-6744fc3b3ce9.png\">\r\n\r\n\r\n\r\n#### Elastic search before migration - 2 preprints 3 projects \r\n<img width=\"1238\" alt=\"screen shot 2018-06-12 at 12 02 27 am\" src=\"https://user-images.githubusercontent.com/9755598/41271545-df258be6-6dd6-11e8-9ff6-f60e52a6d812.png\">\r\n\r\n#### Elastic search after migration - 2 preprints 5 projects (2 projects formerly indexed as preprints were reindexed as projects)\r\n<img width=\"1211\" alt=\"screen shot 2018-06-12 at 12 08 46 am\" src=\"https://user-images.githubusercontent.com/9755598/41271563-f5d282a4-6dd6-11e8-8d29-ca02a8d15e52.png\">\r\n\r\n#### Preprint files don't have links, but you can click on preprint link. File detail for preprint page is blocked.\r\n<img width=\"927\" alt=\"screen shot 2018-06-12 at 12 08 53 am\" src=\"https://user-images.githubusercontent.com/9755598/41271583-0a207284-6dd7-11e8-9033-dce60d66aef8.png\">\r\n\r\n## QA Notes\r\nMany many things to test. A lot of Node code was adapted to work for preprints so we want to make sure we didn't break things.  Preprints front-end is not addressed here.\r\n\r\n### To check on Node\r\n- That file logs still work, (osfstorage_file_added, osfstorage_file_copied, for example). Do all the file operations on a node, verify logs are what you expect.\r\n- Contributor operations on nodes still work.\r\n- Project page banners that your node is a supplementary file for a preprint are what you expect, and appear when you expect. Test for various providers.\r\n- MyProjects page shows what you would expect for preprints. Activity log has been removed since we're not exposing preprint logs yet.\r\n- Searching for nodes still works the way it used to\r\n- SHARE updates for projects still work the way you would expect.\r\n- Test nodes in admin app, removing contributors, marking node as deleted, marking nodes as spam/ham,\r\n- Make sure deleting nodes with children on them still works\r\n\r\n### To check on preprint\r\n- Preprints themselves, instead of nodes are indexed in elastic search\r\n- Preprints are indexed in SHARE correctly (HAVE NOT TESTED THIS LOCALLY)\r\n- Test preprints in admin app, removing contributors, marking preprint as deleted, marking preprints as spam/ham, reindexing preprint in elastic search\r\n- Preprint files only show up in search if preprint is verified publishable\r\n- If you change the preprint file, the original is removed from search\r\n- Preprint files don't have links to file in search\r\n\r\n### Checking migration\r\n- Make several preprints ahead of time, make sure they have a title, abstract, primary_file, multiple contributors with different permissions/bibligraphic, article_doi, some public, others private, some that have been deleted, some that have been abandoned, tags, some whose nodes have been marked as spam, modified date.\r\n- modified date of preprint will be modified to the date of a preprint-related node log if it is a later date than the preprint modified.\r\n- Make sure that all of these files are moved over to the preprint.\r\n\r\n### \r\n\r\n<!-- Does this change need QA? If so, this section is required.\r\n     - Is cross-browser testing required/recommended?\r\n     - Is API testing required/recommended?\r\n     - What pages on the OSF should be tested?\r\n     - What edge cases should QA be aware of?\r\n-->\r\n\r\n## Side Effects\r\n\r\n<!-- Any possible side effects? -->\r\n\r\n## Ticket\r\n\r\n<!-- Link to JIRA ticket, if applicable e.g. https://openscience.atlassian.net/browse/OSF-1234 -->\r\n\r\n","created_at":"2018-06-08T05:18:39Z","updated_at":"2018-06-21T18:23:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d71058cff2a9e4187cb1a321a3827a1dbdce353a","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422/commits","review_comments_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422/comments","review_comment_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/8422/comments","statuses_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/statuses/60b8336cc3b272bd9ecf0b2ee6d7ce243b5004af","head":{"label":"pattisdr:feature/node-preprint","ref":"feature/node-preprint","sha":"60b8336cc3b272bd9ecf0b2ee6d7ce243b5004af","user":{"login":"pattisdr","id":9755598,"node_id":"MDQ6VXNlcjk3NTU1OTg=","avatar_url":"https://avatars2.githubusercontent.com/u/9755598?v=4","gravatar_id":"","url":"https://api.github.com/users/pattisdr","html_url":"https://github.com/pattisdr","followers_url":"https://api.github.com/users/pattisdr/followers","following_url":"https://api.github.com/users/pattisdr/following{/other_user}","gists_url":"https://api.github.com/users/pattisdr/gists{/gist_id}","starred_url":"https://api.github.com/users/pattisdr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pattisdr/subscriptions","organizations_url":"https://api.github.com/users/pattisdr/orgs","repos_url":"https://api.github.com/users/pattisdr/repos","events_url":"https://api.github.com/users/pattisdr/events{/privacy}","received_events_url":"https://api.github.com/users/pattisdr/received_events","type":"User","site_admin":false},"repo":{"id":35900874,"node_id":"MDEwOlJlcG9zaXRvcnkzNTkwMDg3NA==","name":"osf.io","full_name":"pattisdr/osf.io","owner":{"login":"pattisdr","id":9755598,"node_id":"MDQ6VXNlcjk3NTU1OTg=","avatar_url":"https://avatars2.githubusercontent.com/u/9755598?v=4","gravatar_id":"","url":"https://api.github.com/users/pattisdr","html_url":"https://github.com/pattisdr","followers_url":"https://api.github.com/users/pattisdr/followers","following_url":"https://api.github.com/users/pattisdr/following{/other_user}","gists_url":"https://api.github.com/users/pattisdr/gists{/gist_id}","starred_url":"https://api.github.com/users/pattisdr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pattisdr/subscriptions","organizations_url":"https://api.github.com/users/pattisdr/orgs","repos_url":"https://api.github.com/users/pattisdr/repos","events_url":"https://api.github.com/users/pattisdr/events{/privacy}","received_events_url":"https://api.github.com/users/pattisdr/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pattisdr/osf.io","description":"Facilitating Open Science","fork":true,"url":"https://api.github.com/repos/pattisdr/osf.io","forks_url":"https://api.github.com/repos/pattisdr/osf.io/forks","keys_url":"https://api.github.com/repos/pattisdr/osf.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pattisdr/osf.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pattisdr/osf.io/teams","hooks_url":"https://api.github.com/repos/pattisdr/osf.io/hooks","issue_events_url":"https://api.github.com/repos/pattisdr/osf.io/issues/events{/number}","events_url":"https://api.github.com/repos/pattisdr/osf.io/events","assignees_url":"https://api.github.com/repos/pattisdr/osf.io/assignees{/user}","branches_url":"https://api.github.com/repos/pattisdr/osf.io/branches{/branch}","tags_url":"https://api.github.com/repos/pattisdr/osf.io/tags","blobs_url":"https://api.github.com/repos/pattisdr/osf.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pattisdr/osf.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pattisdr/osf.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/pattisdr/osf.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pattisdr/osf.io/statuses/{sha}","languages_url":"https://api.github.com/repos/pattisdr/osf.io/languages","stargazers_url":"https://api.github.com/repos/pattisdr/osf.io/stargazers","contributors_url":"https://api.github.com/repos/pattisdr/osf.io/contributors","subscribers_url":"https://api.github.com/repos/pattisdr/osf.io/subscribers","subscription_url":"https://api.github.com/repos/pattisdr/osf.io/subscription","commits_url":"https://api.github.com/repos/pattisdr/osf.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/pattisdr/osf.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/pattisdr/osf.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/pattisdr/osf.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/pattisdr/osf.io/contents/{+path}","compare_url":"https://api.github.com/repos/pattisdr/osf.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pattisdr/osf.io/merges","archive_url":"https://api.github.com/repos/pattisdr/osf.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pattisdr/osf.io/downloads","issues_url":"https://api.github.com/repos/pattisdr/osf.io/issues{/number}","pulls_url":"https://api.github.com/repos/pattisdr/osf.io/pulls{/number}","milestones_url":"https://api.github.com/repos/pattisdr/osf.io/milestones{/number}","notifications_url":"https://api.github.com/repos/pattisdr/osf.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pattisdr/osf.io/labels{/name}","releases_url":"https://api.github.com/repos/pattisdr/osf.io/releases{/id}","deployments_url":"https://api.github.com/repos/pattisdr/osf.io/deployments","created_at":"2015-05-19T18:33:09Z","updated_at":"2016-01-11T21:17:43Z","pushed_at":"2018-06-21T18:18:47Z","git_url":"git://github.com/pattisdr/osf.io.git","ssh_url":"git@github.com:pattisdr/osf.io.git","clone_url":"https://github.com/pattisdr/osf.io.git","svn_url":"https://github.com/pattisdr/osf.io","homepage":"http://osf.io","size":173836,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":0,"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":1,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"CenterForOpenScience:feature/files-on-anything","ref":"feature/files-on-anything","sha":"801010c1b00e6ac916c667425fdea073dec2bc1f","user":{"login":"CenterForOpenScience","id":3344584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzNDQ1ODQ=","avatar_url":"https://avatars1.githubusercontent.com/u/3344584?v=4","gravatar_id":"","url":"https://api.github.com/users/CenterForOpenScience","html_url":"https://github.com/CenterForOpenScience","followers_url":"https://api.github.com/users/CenterForOpenScience/followers","following_url":"https://api.github.com/users/CenterForOpenScience/following{/other_user}","gists_url":"https://api.github.com/users/CenterForOpenScience/gists{/gist_id}","starred_url":"https://api.github.com/users/CenterForOpenScience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CenterForOpenScience/subscriptions","organizations_url":"https://api.github.com/users/CenterForOpenScience/orgs","repos_url":"https://api.github.com/users/CenterForOpenScience/repos","events_url":"https://api.github.com/users/CenterForOpenScience/events{/privacy}","received_events_url":"https://api.github.com/users/CenterForOpenScience/received_events","type":"Organization","site_admin":false},"repo":{"id":10199599,"node_id":"MDEwOlJlcG9zaXRvcnkxMDE5OTU5OQ==","name":"osf.io","full_name":"CenterForOpenScience/osf.io","owner":{"login":"CenterForOpenScience","id":3344584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzNDQ1ODQ=","avatar_url":"https://avatars1.githubusercontent.com/u/3344584?v=4","gravatar_id":"","url":"https://api.github.com/users/CenterForOpenScience","html_url":"https://github.com/CenterForOpenScience","followers_url":"https://api.github.com/users/CenterForOpenScience/followers","following_url":"https://api.github.com/users/CenterForOpenScience/following{/other_user}","gists_url":"https://api.github.com/users/CenterForOpenScience/gists{/gist_id}","starred_url":"https://api.github.com/users/CenterForOpenScience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CenterForOpenScience/subscriptions","organizations_url":"https://api.github.com/users/CenterForOpenScience/orgs","repos_url":"https://api.github.com/users/CenterForOpenScience/repos","events_url":"https://api.github.com/users/CenterForOpenScience/events{/privacy}","received_events_url":"https://api.github.com/users/CenterForOpenScience/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CenterForOpenScience/osf.io","description":"Facilitating Open Science","fork":false,"url":"https://api.github.com/repos/CenterForOpenScience/osf.io","forks_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/forks","keys_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/teams","hooks_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/hooks","issue_events_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/events{/number}","events_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/events","assignees_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/assignees{/user}","branches_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/branches{/branch}","tags_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/tags","blobs_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/statuses/{sha}","languages_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/languages","stargazers_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/stargazers","contributors_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/contributors","subscribers_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/subscribers","subscription_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/subscription","commits_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/contents/{+path}","compare_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/merges","archive_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/downloads","issues_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues{/number}","pulls_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls{/number}","milestones_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/milestones{/number}","notifications_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/labels{/name}","releases_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/releases{/id}","deployments_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/deployments","created_at":"2013-05-21T15:53:37Z","updated_at":"2018-06-21T12:58:12Z","pushed_at":"2018-06-21T18:18:50Z","git_url":"git://github.com/CenterForOpenScience/osf.io.git","ssh_url":"git@github.com:CenterForOpenScience/osf.io.git","clone_url":"https://github.com/CenterForOpenScience/osf.io.git","svn_url":"https://github.com/CenterForOpenScience/osf.io","homepage":"https://osf.io","size":172279,"stargazers_count":447,"watchers_count":447,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":247,"mirror_url":null,"archived":false,"open_issues_count":226,"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":247,"open_issues":226,"watchers":447,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422"},"html":{"href":"https://github.com/CenterForOpenScience/osf.io/pull/8422"},"issue":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/8422"},"comments":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/8422/comments"},"review_comments":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422/comments"},"review_comment":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/8422/commits"},"statuses":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/statuses/60b8336cc3b272bd9ecf0b2ee6d7ce243b5004af"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"pattisdr"}}