{"action":"created","comment":{"url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/comments/34580336","id":34580336,"diff_hunk":"@@ -127,6 +128,114 @@ def update(self, instance, validated_data):\n         return instance\n \n \n+class ContributorSerializer(UserSerializer):\n+\n+    permissions = ser.ListField(read_only=True)\n+    bibliographic = ser.BooleanField(read_only=True, help_text='Whether the user will be included in citations for '\n+                                                               'this node or not')\n+    local_filterable = frozenset(['permission', 'bibliographic'])\n+    filterable_fields = frozenset.union(UserSerializer.filterable_fields, local_filterable)\n+\n+    id = ser.CharField(source='_id')\n+    fullname = ser.CharField(read_only=True, help_text='Display name used in the general user interface')\n+    given_name = ser.CharField(read_only=True, help_text='For bibliographic citations')\n+    middle_name = ser.CharField(read_only=True, source='middle_names', help_text='For bibliographic citations')\n+    family_name = ser.CharField(read_only=True, help_text='For bibliographic citations')\n+    suffix = ser.CharField(read_only=True, help_text='For bibliographic citations')\n+    date_registered = ser.DateTimeField(read_only=True)\n+    gravatar_url = ser.CharField(read_only=True, help_text='URL for the icon used to identify the user. Relies on '\n+                                                           'http://gravatar.com ')\n+    employment_institutions = ser.ListField(read_only=True, source='jobs', help_text='An array of dictionaries '\n+                                                                                     'representing the '\n+                                                                                     'places the user has worked')\n+    educational_institutions = ser.ListField(read_only=True, source='schools', help_text='An array of dictionaries '\n+                                                                                         'representing the places the '\n+                                                                                         'user has attended school')\n+    social_accounts = ser.DictField(read_only=True, source='social', help_text='A dictionary of various social media '\n+                                                                               'account identifiers including an array '\n+                                                                               'of user-defined URLs')\n+    links = LinksField({\n+        'html': 'absolute_url',\n+        'nodes': {\n+            'relation': Link('users:user-nodes', kwargs={'user_id': '<_id>'})\n+        },\n+        'edit contributor': Link('nodes:node-contributor-detail', kwargs={'user_id': '<_id>', 'node_id': '<node_id>'})\n+    })\n+\n+    def absolute_url(self, obj):\n+        return obj.absolute_url\n+\n+    def create(self, validated_data):\n+        user = self.context['request'].user\n+        auth = Auth(user)\n+        node = self.context['view'].get_node()\n+        contributor = User.load(validated_data['_id'])\n+        if not contributor:\n+            raise NotFound('User with id {} cannot be found.'.format(validated_data['_id']))\n+        elif contributor in node.contributors:\n+            raise ValidationError('User {} already is a contributor.'.format(contributor.username))\n+        else:\n+            node.add_contributor(contributor=contributor, auth=auth, save=True)\n+            contributor.node_id = node._id\n+        return contributor\n+\n+\n+class ContributorDetailSerializer(ContributorSerializer):","path":"api/nodes/serializers.py","position":68,"original_position":68,"commit_id":"5b73983123bd28dcab06137230d6af1c903f8145","original_commit_id":"909cb83e36805b2e498e4e7bcd291b8155370236","user":{"login":"PatrickEGorman","id":7470770,"avatar_url":"https://avatars.githubusercontent.com/u/7470770?v=3","gravatar_id":"","url":"https://api.github.com/users/PatrickEGorman","html_url":"https://github.com/PatrickEGorman","followers_url":"https://api.github.com/users/PatrickEGorman/followers","following_url":"https://api.github.com/users/PatrickEGorman/following{/other_user}","gists_url":"https://api.github.com/users/PatrickEGorman/gists{/gist_id}","starred_url":"https://api.github.com/users/PatrickEGorman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PatrickEGorman/subscriptions","organizations_url":"https://api.github.com/users/PatrickEGorman/orgs","repos_url":"https://api.github.com/users/PatrickEGorman/repos","events_url":"https://api.github.com/users/PatrickEGorman/events{/privacy}","received_events_url":"https://api.github.com/users/PatrickEGorman/received_events","type":"User","site_admin":false},"body":"Okay.  I'll work on that.  Thanks for the help","created_at":"2015-07-14T15:22:46Z","updated_at":"2015-07-14T15:22:46Z","html_url":"https://github.com/CenterForOpenScience/osf.io/pull/3184#discussion_r34580336","pull_request_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3184","_links":{"self":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/comments/34580336"},"html":{"href":"https://github.com/CenterForOpenScience/osf.io/pull/3184#discussion_r34580336"},"pull_request":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3184"}}},"pull_request":{"url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3184","id":37926304,"html_url":"https://github.com/CenterForOpenScience/osf.io/pull/3184","diff_url":"https://github.com/CenterForOpenScience/osf.io/pull/3184.diff","patch_url":"https://github.com/CenterForOpenScience/osf.io/pull/3184.patch","issue_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3184","number":3184,"state":"open","locked":false,"title":"[wip] Created method to add, edit, and remove contributor","user":{"login":"PatrickEGorman","id":7470770,"avatar_url":"https://avatars.githubusercontent.com/u/7470770?v=3","gravatar_id":"","url":"https://api.github.com/users/PatrickEGorman","html_url":"https://github.com/PatrickEGorman","followers_url":"https://api.github.com/users/PatrickEGorman/followers","following_url":"https://api.github.com/users/PatrickEGorman/following{/other_user}","gists_url":"https://api.github.com/users/PatrickEGorman/gists{/gist_id}","starred_url":"https://api.github.com/users/PatrickEGorman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PatrickEGorman/subscriptions","organizations_url":"https://api.github.com/users/PatrickEGorman/orgs","repos_url":"https://api.github.com/users/PatrickEGorman/repos","events_url":"https://api.github.com/users/PatrickEGorman/events{/privacy}","received_events_url":"https://api.github.com/users/PatrickEGorman/received_events","type":"User","site_admin":false},"body":"# Purpose\r\n\r\nAllow users to add/remove contributors to nodes in API, view contributor details, and edit permissions and bibliographic status.\r\nAnswers https://github.com/CenterForOpenScience/osf.io/issues/3045\r\n\r\n# Changes\r\n\r\nMoved contributor serializer and added contributor detail serializer.  \r\nCreated special permissions class to determine whether a user can add contributors.\r\nCreated another permission class for user to view, edit, and delete individual contributors.  \r\nAppended an add contributor option to contributor list page.\r\nCreated a user detail page with edit and remove function\r\nAdded numerous api-tests\r\n\r\n# Side effects\r\n\r\nAllows users to add, and remove node contributors as well as edit their permission and bibliographic statuses.\r\nUsers are added by admins via user id\r\n\r\nAn admin can remove a user if:\r\n - They are not the only admin\r\n - They are not the only visible contributor\r\n - They are removing a non-admin contributor\r\nA user can remove themselves regardless of admin status providing that they're not the only visible contributor or admin contributor.\r\n\r\nAn admin can change a users visibility if they are not the only visible contributor\r\nA user can change they're own visibility status from true to false regardless of admin status providing they're the not the only visible contributor\r\n\r\nAn admin can edit user permissions if they are not eliminating the only admin\r\nA user can change they're own permissions regardless of admin status from 'admin' to 'write' to 'read' but not the other way, providing that they're not the only admin.\r\n\r\n# JSON\r\n\r\n## Contributor List\r\n\r\n### Changes:\r\n - Added permissions list field\r\n - Added edit contributor link field\r\n\r\n### Original\r\n\r\n```json\r\n{\r\n    \"data\": [\r\n        {\r\n            \"id\": \"h2pve\",\r\n            \"fullname\": \"yarr\",\r\n            \"given_name\": \"yarr\",\r\n            \"middle_name\": \"\",\r\n            \"family_name\": \"\",\r\n            \"suffix\": \"\",\r\n            \"date_registered\": \"2015-07-12T15:15:36.460000\",\r\n            \"gravatar_url\": \"https://secure.gravatar.com/avatar/9d4b9fe9fbb545875c27d974ee5d7523?d=identicon&size=40\",\r\n            \"employment_institutions\": [],\r\n            \"educational_institutions\": [],\r\n            \"social_accounts\": {},\r\n            \"links\": {\r\n                \"nodes\": {\r\n                    \"relation\": \"http://localhost:8000/v2/users/h2pve/nodes/\"\r\n                },\r\n                \"html\": \"http://localhost:5000/h2pve/\",\r\n                \"self\": \"http://localhost:8000/v2/users/h2pve/\"\r\n            },\r\n            \"bibliographic\": true,\r\n            \"type\": \"users\"\r\n        },\r\n        {\r\n            \"id\": \"zh6ji\",\r\n            \"fullname\": \"test\",\r\n            \"given_name\": \"test\",\r\n            \"middle_name\": \"\",\r\n            \"family_name\": \"\",\r\n            \"suffix\": \"\",\r\n            \"date_registered\": \"2015-06-10T13:31:39.244000\",\r\n            \"gravatar_url\": \"https://secure.gravatar.com/avatar/dd46a756faad4727fb679320751f6dea?d=identicon&size=40\",\r\n            \"employment_institutions\": [],\r\n            \"educational_institutions\": [],\r\n            \"social_accounts\": {},\r\n            \"links\": {\r\n                \"nodes\": {\r\n                    \"relation\": \"http://localhost:8000/v2/users/zh6ji/nodes/\"\r\n                },\r\n                \"html\": \"http://localhost:5000/zh6ji/\",\r\n                \"self\": \"http://localhost:8000/v2/users/zh6ji/\"\r\n            },\r\n            \"bibliographic\": true,\r\n            \"type\": \"users\"\r\n        }\r\n    ],\r\n    \"links\": {\r\n        \"first\": null,\r\n        \"last\": null,\r\n        \"prev\": null,\r\n        \"next\": null,\r\n        \"meta\": {\r\n            \"total\": 2,\r\n            \"per_page\": 10\r\n        }\r\n    }\r\n}\r\n```\r\n\r\n### Updated\r\n```json\r\n{\r\n    \"data\": [\r\n        {\r\n            \"id\": \"h2pve\",\r\n            \"fullname\": \"yarr\",\r\n            \"given_name\": \"yarr\",\r\n            \"middle_name\": \"\",\r\n            \"family_name\": \"\",\r\n            \"suffix\": \"\",\r\n            \"date_registered\": \"2015-07-12T15:15:36.460000\",\r\n            \"gravatar_url\": \"https://secure.gravatar.com/avatar/9d4b9fe9fbb545875c27d974ee5d7523?d=identicon&size=40\",\r\n            \"employment_institutions\": [],\r\n            \"educational_institutions\": [],\r\n            \"social_accounts\": {},\r\n            \"links\": {\r\n                \"nodes\": {\r\n                    \"relation\": \"http://localhost:8000/v2/users/h2pve/nodes/\"\r\n                },\r\n                \"html\": \"http://localhost:5000/h2pve/\",\r\n                \"self\": \"http://localhost:8000/v2/users/h2pve/\",\r\n                \"edit contributor\": \"http://localhost:8000/v2/nodes/emdk3/contributors/h2pve/\"\r\n            },\r\n            \"permissions\": [\r\n                \"read\",\r\n                \"write\",\r\n                \"admin\"\r\n            ],\r\n            \"bibliographic\": true,\r\n            \"type\": \"users\"\r\n        },\r\n        {\r\n            \"id\": \"zh6ji\",\r\n            \"fullname\": \"test\",\r\n            \"given_name\": \"test\",\r\n            \"middle_name\": \"\",\r\n            \"family_name\": \"\",\r\n            \"suffix\": \"\",\r\n            \"date_registered\": \"2015-06-10T13:31:39.244000\",\r\n            \"gravatar_url\": \"https://secure.gravatar.com/avatar/dd46a756faad4727fb679320751f6dea?d=identicon&size=40\",\r\n            \"employment_institutions\": [],\r\n            \"educational_institutions\": [],\r\n            \"social_accounts\": {},\r\n            \"links\": {\r\n                \"nodes\": {\r\n                    \"relation\": \"http://localhost:8000/v2/users/zh6ji/nodes/\"\r\n                },\r\n                \"html\": \"http://localhost:5000/zh6ji/\",\r\n                \"self\": \"http://localhost:8000/v2/users/zh6ji/\",\r\n                \"edit contributor\": \"http://localhost:8000/v2/nodes/emdk3/contributors/zh6ji/\"\r\n            },\r\n            \"permissions\": [\r\n                \"read\",\r\n                \"write\",\r\n                \"admin\"\r\n            ],\r\n            \"bibliographic\": true,\r\n            \"type\": \"users\"\r\n        }\r\n    ],\r\n    \"links\": {\r\n        \"first\": null,\r\n        \"last\": null,\r\n        \"prev\": null,\r\n        \"next\": null,\r\n        \"meta\": {\r\n            \"total\": 2,\r\n            \"per_page\": 10\r\n        }\r\n    }\r\n}\r\n```\r\n\r\n## (New) Contributor Detail Page:\r\n\r\n### Currently under revision","created_at":"2015-06-17T17:32:03Z","updated_at":"2015-07-14T15:22:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c52e9a7bf6d0dc110082859192ab83d1ecfb707a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3184/commits","review_comments_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3184/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/3184/comments","statuses_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/statuses/5b73983123bd28dcab06137230d6af1c903f8145","head":{"label":"PatrickEGorman:feature/Node_contributors","ref":"feature/Node_contributors","sha":"5b73983123bd28dcab06137230d6af1c903f8145","user":{"login":"PatrickEGorman","id":7470770,"avatar_url":"https://avatars.githubusercontent.com/u/7470770?v=3","gravatar_id":"","url":"https://api.github.com/users/PatrickEGorman","html_url":"https://github.com/PatrickEGorman","followers_url":"https://api.github.com/users/PatrickEGorman/followers","following_url":"https://api.github.com/users/PatrickEGorman/following{/other_user}","gists_url":"https://api.github.com/users/PatrickEGorman/gists{/gist_id}","starred_url":"https://api.github.com/users/PatrickEGorman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PatrickEGorman/subscriptions","organizations_url":"https://api.github.com/users/PatrickEGorman/orgs","repos_url":"https://api.github.com/users/PatrickEGorman/repos","events_url":"https://api.github.com/users/PatrickEGorman/events{/privacy}","received_events_url":"https://api.github.com/users/PatrickEGorman/received_events","type":"User","site_admin":false},"repo":{"id":36376074,"name":"osf.io","full_name":"PatrickEGorman/osf.io","owner":{"login":"PatrickEGorman","id":7470770,"avatar_url":"https://avatars.githubusercontent.com/u/7470770?v=3","gravatar_id":"","url":"https://api.github.com/users/PatrickEGorman","html_url":"https://github.com/PatrickEGorman","followers_url":"https://api.github.com/users/PatrickEGorman/followers","following_url":"https://api.github.com/users/PatrickEGorman/following{/other_user}","gists_url":"https://api.github.com/users/PatrickEGorman/gists{/gist_id}","starred_url":"https://api.github.com/users/PatrickEGorman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PatrickEGorman/subscriptions","organizations_url":"https://api.github.com/users/PatrickEGorman/orgs","repos_url":"https://api.github.com/users/PatrickEGorman/repos","events_url":"https://api.github.com/users/PatrickEGorman/events{/privacy}","received_events_url":"https://api.github.com/users/PatrickEGorman/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/PatrickEGorman/osf.io","description":"Facilitating Open Science","fork":true,"url":"https://api.github.com/repos/PatrickEGorman/osf.io","forks_url":"https://api.github.com/repos/PatrickEGorman/osf.io/forks","keys_url":"https://api.github.com/repos/PatrickEGorman/osf.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PatrickEGorman/osf.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PatrickEGorman/osf.io/teams","hooks_url":"https://api.github.com/repos/PatrickEGorman/osf.io/hooks","issue_events_url":"https://api.github.com/repos/PatrickEGorman/osf.io/issues/events{/number}","events_url":"https://api.github.com/repos/PatrickEGorman/osf.io/events","assignees_url":"https://api.github.com/repos/PatrickEGorman/osf.io/assignees{/user}","branches_url":"https://api.github.com/repos/PatrickEGorman/osf.io/branches{/branch}","tags_url":"https://api.github.com/repos/PatrickEGorman/osf.io/tags","blobs_url":"https://api.github.com/repos/PatrickEGorman/osf.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PatrickEGorman/osf.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PatrickEGorman/osf.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/PatrickEGorman/osf.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PatrickEGorman/osf.io/statuses/{sha}","languages_url":"https://api.github.com/repos/PatrickEGorman/osf.io/languages","stargazers_url":"https://api.github.com/repos/PatrickEGorman/osf.io/stargazers","contributors_url":"https://api.github.com/repos/PatrickEGorman/osf.io/contributors","subscribers_url":"https://api.github.com/repos/PatrickEGorman/osf.io/subscribers","subscription_url":"https://api.github.com/repos/PatrickEGorman/osf.io/subscription","commits_url":"https://api.github.com/repos/PatrickEGorman/osf.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/PatrickEGorman/osf.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/PatrickEGorman/osf.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/PatrickEGorman/osf.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/PatrickEGorman/osf.io/contents/{+path}","compare_url":"https://api.github.com/repos/PatrickEGorman/osf.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PatrickEGorman/osf.io/merges","archive_url":"https://api.github.com/repos/PatrickEGorman/osf.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PatrickEGorman/osf.io/downloads","issues_url":"https://api.github.com/repos/PatrickEGorman/osf.io/issues{/number}","pulls_url":"https://api.github.com/repos/PatrickEGorman/osf.io/pulls{/number}","milestones_url":"https://api.github.com/repos/PatrickEGorman/osf.io/milestones{/number}","notifications_url":"https://api.github.com/repos/PatrickEGorman/osf.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PatrickEGorman/osf.io/labels{/name}","releases_url":"https://api.github.com/repos/PatrickEGorman/osf.io/releases{/id}","created_at":"2015-05-27T15:21:46Z","updated_at":"2015-05-28T15:05:03Z","pushed_at":"2015-07-13T20:54:59Z","git_url":"git://github.com/PatrickEGorman/osf.io.git","ssh_url":"git@github.com:PatrickEGorman/osf.io.git","clone_url":"https://github.com/PatrickEGorman/osf.io.git","svn_url":"https://github.com/PatrickEGorman/osf.io","homepage":"http://osf.io","size":96091,"stargazers_count":1,"watchers_count":1,"language":"Python","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":1,"default_branch":"develop"}},"base":{"label":"CenterForOpenScience:develop","ref":"develop","sha":"1f687a7502d49593fa7cee878942ce8cdf715f5c","user":{"login":"CenterForOpenScience","id":3344584,"avatar_url":"https://avatars.githubusercontent.com/u/3344584?v=3","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,"name":"osf.io","full_name":"CenterForOpenScience/osf.io","owner":{"login":"CenterForOpenScience","id":3344584,"avatar_url":"https://avatars.githubusercontent.com/u/3344584?v=3","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}","created_at":"2013-05-21T15:53:37Z","updated_at":"2015-07-09T17:18:16Z","pushed_at":"2015-07-14T15:12:48Z","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":"http://osf.io","size":213980,"stargazers_count":118,"watchers_count":118,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":104,"mirror_url":null,"open_issues_count":513,"forks":104,"open_issues":513,"watchers":118,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3184"},"html":{"href":"https://github.com/CenterForOpenScience/osf.io/pull/3184"},"issue":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3184"},"comments":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3184/comments"},"review_comments":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3184/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/3184/commits"},"statuses":{"href":"https://api.github.com/repos/CenterForOpenScience/osf.io/statuses/5b73983123bd28dcab06137230d6af1c903f8145"}}}}