{"action":"created","comment":{"url":"https://api.github.com/repos/mozilla-services/userplex/pulls/comments/77386864","id":77386864,"diff_hunk":"@@ -0,0 +1,188 @@\n+// This Source Code Form is subject to the terms of the Mozilla Public\n+// License, v. 2.0. If a copy of the MPL was not distributed with this\n+// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n+//\n+// Contributor: Miles Crabill <mcrabill@mozilla.com>\n+\n+package pagerduty\n+\n+import (\n+\t\"fmt\"\n+\t\"log\"\n+\t\"strings\"\n+\n+\tpagerduty \"github.com/PagerDuty/go-pagerduty\"\n+\n+\t\"go.mozilla.org/userplex/modules\"\n+)\n+\n+func init() {\n+\tmodules.Register(\"pagerduty\", new(module))\n+}\n+\n+type module struct{}\n+\n+func (m *module) NewRun(c modules.Configuration) modules.Runner {\n+\tr := new(run)\n+\tr.Conf = c\n+\treturn r\n+}\n+\n+type run struct {\n+\tConf modules.Configuration\n+\tp    parameters\n+\tc    credentials\n+\n+\tpagerdutyEmailToLdapEmail  map[string]string\n+\tldapEmailToPagerdutyEmails map[string][]string\n+}\n+\n+type parameters struct {\n+\tSubdomain string\n+}\n+\n+type credentials struct {\n+\tAPIKey string\n+}\n+\n+func (r *run) Run() (err error) {\n+\terr = r.Conf.GetParameters(&r.p)\n+\tif err != nil {\n+\t\treturn\n+\t}\n+\terr = r.Conf.GetCredentials(&r.c)\n+\tif err != nil {\n+\t\treturn\n+\t}\n+\n+\tr.buildLdapMapping()\n+\tldapers := r.getLdaperEmails()\n+\n+\tclient := pagerduty.NewClient(r.c.APIKey)\n+\n+\tvar allUsers []pagerduty.User\n+\toffset := uint(0)\n+\topt := pagerduty.ListUserOptions{\n+\t\tAPIListObject: pagerduty.APIListObject{Offset: offset},\n+\t}\n+\tfor {\n+\t\tusersResp, err := client.ListUsers(opt)\n+\t\tif err != nil {\n+\t\t\tlog.Fatalf(\"[error] pagerduty %s: %s\", r.p.Subdomain, err.Error())\n+\t\t}\n+\t\tallUsers = append(allUsers, usersResp.Users...)\n+\t\tif !usersResp.More {\n+\t\t\tbreak\n+\t\t}\n+\t\toffset += usersResp.Limit\n+\t\topt.APIListObject.Offset = offset\n+\t}\n+\n+\tlog.Printf(\"[info] pagerduty %s: found %d users\", r.p.Subdomain, len(allUsers))\n+\n+\t// all pagerduty users\n+\tfor _, user := range allUsers {\n+\t\t// if there's an ldapuid/localuid mapping for the user\n+\t\tvar ldapEmail, ldapEmailString string\n+\t\tif email, ok := r.pagerdutyEmailToLdapEmail[user.Email]; ok {\n+\t\t\tldapEmail = email\n+\t\t\tldapEmailString = \" (pagerduty) / \" + ldapEmail + \" (ldap)\"\n+\t\t}\n+\t\tif ldapEmail == \"\" {\n+\t\t\tldapEmail = user.Email\n+\t\t}\n+\n+\t\t// if the user is in ldap\n+\t\tif _, ok := ldapers[ldapEmail]; ok {\n+\t\t\tldapers[ldapEmail] = true\n+\t\t} else {\n+\t\t\t// user not in ldap\n+\t\t\tlog.Printf(\"[info] pagerduty %s: user %s%s is not in ldap groups %s but is in PagerDuty account %s\", r.p.Subdomain, user.Email, ldapEmailString, r.Conf.LdapGroups, r.p.Subdomain)\n+\t\t\tif r.Conf.Delete {\n+\t\t\t\tif !r.Conf.ApplyChanges {\n+\t\t\t\t\tlog.Printf(\"[dryrun] pagerduty %s: would have deleted user %s\", r.p.Subdomain, user.Email)\n+\t\t\t\t} else {\n+\t\t\t\t\terr := client.DeleteUser(user.ID)\n+\t\t\t\t\tif err != nil {\n+\t\t\t\t\t\tlog.Fatalf(\"[error] pagerduty %s: could not delete user %s: %s\", r.p.Subdomain, user.Email, err.Error())\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\tr.notify(ldapEmail, fmt.Sprintf(\"Userplex deleted %s from Pagerduty account %s\", ldapEmail, r.p.Subdomain))\n+\t\t\t}\n+\t\t}\n+\t}\n+\n+\tfor ldapEmail, isInPagerduty := range ldapers {\n+\t\t// if there's an ldapuid/localuid mapping for the user\n+\t\tvar (\n+\t\t\tpagerdutyEmails       []string\n+\t\t\tpagerdutyEmailsString string\n+\t\t)\n+\t\tif emails, ok := r.ldapEmailToPagerdutyEmails[ldapEmail]; ok {\n+\t\t\tpagerdutyEmails = emails\n+\t\t\tpagerdutyEmailsString = strings.Join(pagerdutyEmails, \", \") + \" (pagerduty) / \"\n+\t\t}\n+\n+\t\tif !isInPagerduty && r.Conf.Create {\n+\t\t\tlog.Printf(\"[info] pagerduty %s: user %s%s (ldap) is not in Pagerduty account %s\", r.p.Subdomain, pagerdutyEmailsString, ldapEmail, r.p.Subdomain)\n+\t\t\tif !r.Conf.ApplyChanges {\n+\t\t\t\tlog.Printf(\"[dryrun] pagerduty %s: would have created user %s\", r.p.Subdomain, ldapEmail)\n+\t\t\t} else {\n+\t\t\t\t// add user to pagerduty\n+\t\t\t\tclient.CreateUser(pagerduty.User{\n+\t\t\t\t\tEmail: ldapEmail,\n+\t\t\t\t\tName:  ldapEmail,\n+\t\t\t\t})\n+\t\t\t}\n+\t\t\tr.notify(ldapEmail, fmt.Sprintf(\"Userplex added %s to Pagerduty account %s\", ldapEmail, r.p.Subdomain))\n+\t\t}\n+\t}\n+\n+\treturn\n+}\n+\n+func (r *run) buildLdapMapping() {\n+\tr.pagerdutyEmailToLdapEmail = make(map[string]string)\n+\tr.ldapEmailToPagerdutyEmails = make(map[string][]string)\n+\tfor _, mapping := range r.Conf.UidMap {\n+\t\tr.pagerdutyEmailToLdapEmail[mapping.LocalUID] = mapping.LdapUid\n+\t\tr.ldapEmailToPagerdutyEmails[mapping.LdapUid] = append(r.ldapEmailToPagerdutyEmails[mapping.LdapUid], mapping.LocalUID)\n+\t}\n+}\n+\n+func (r *run) getLdaperEmails() (ldapUsers map[string]bool) {\n+\tldapUsers = make(map[string]bool)\n+\tusers, err := r.Conf.LdapCli.GetEnabledUsersInGroups(r.Conf.LdapGroups)\n+\tif err != nil {\n+\t\treturn\n+\t}\n+\tfor _, user := range users {\n+\t\tshortdn := strings.Split(user, \",\")[0]\n+\t\tuserEmail, err := r.Conf.LdapCli.GetUserEmail(shortdn)\n+\t\tif err != nil {\n+\t\t\tlog.Printf(\"[error] pagerduty: could not get email for user %s: %v\", shortdn, err)\n+\t\t\tcontinue\n+\t\t}\n+\n+\t\tldapUsers[userEmail] = false\n+\t}\n+\treturn\n+}\n+\n+func (r *run) notify(ldapEmail string, body string) (err error) {\n+\trcpt := r.Conf.Notify.Recipient\n+\tif rcpt == \"{ldap:mail}\" {\n+\t\t// if email, ok := r.pagerdutyEmailToLdapEmail[ldapEmail]; ok {\n+\t\t// \tldapEmail = email\n+\t\t// }\n+\t\trcpt = ldapEmail\n+\t}\n+\tr.Conf.Notify.Channel <- modules.Notification{\n+\t\tModule:      \"github\",","path":"modules/pagerduty/pagerduty.go","position":null,"original_position":181,"commit_id":"78b9376cb8f90e91887628645bcf0ce2a35da620","original_commit_id":"df3a9a41057de4300973ba7a1a155d023e212235","user":{"login":"milescrabill","id":4430892,"avatar_url":"https://avatars.githubusercontent.com/u/4430892?v=3","gravatar_id":"","url":"https://api.github.com/users/milescrabill","html_url":"https://github.com/milescrabill","followers_url":"https://api.github.com/users/milescrabill/followers","following_url":"https://api.github.com/users/milescrabill/following{/other_user}","gists_url":"https://api.github.com/users/milescrabill/gists{/gist_id}","starred_url":"https://api.github.com/users/milescrabill/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milescrabill/subscriptions","organizations_url":"https://api.github.com/users/milescrabill/orgs","repos_url":"https://api.github.com/users/milescrabill/repos","events_url":"https://api.github.com/users/milescrabill/events{/privacy}","received_events_url":"https://api.github.com/users/milescrabill/received_events","type":"User","site_admin":false},"body":"Fixed","created_at":"2016-09-02T17:55:11Z","updated_at":"2016-09-02T17:55:11Z","html_url":"https://github.com/mozilla-services/userplex/pull/33#discussion_r77386864","pull_request_url":"https://api.github.com/repos/mozilla-services/userplex/pulls/33","_links":{"self":{"href":"https://api.github.com/repos/mozilla-services/userplex/pulls/comments/77386864"},"html":{"href":"https://github.com/mozilla-services/userplex/pull/33#discussion_r77386864"},"pull_request":{"href":"https://api.github.com/repos/mozilla-services/userplex/pulls/33"}}},"pull_request":{"url":"https://api.github.com/repos/mozilla-services/userplex/pulls/33","id":83693986,"html_url":"https://github.com/mozilla-services/userplex/pull/33","diff_url":"https://github.com/mozilla-services/userplex/pull/33.diff","patch_url":"https://github.com/mozilla-services/userplex/pull/33.patch","issue_url":"https://api.github.com/repos/mozilla-services/userplex/issues/33","number":33,"state":"open","locked":false,"title":"Pagerduty module","user":{"login":"milescrabill","id":4430892,"avatar_url":"https://avatars.githubusercontent.com/u/4430892?v=3","gravatar_id":"","url":"https://api.github.com/users/milescrabill","html_url":"https://github.com/milescrabill","followers_url":"https://api.github.com/users/milescrabill/followers","following_url":"https://api.github.com/users/milescrabill/following{/other_user}","gists_url":"https://api.github.com/users/milescrabill/gists{/gist_id}","starred_url":"https://api.github.com/users/milescrabill/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milescrabill/subscriptions","organizations_url":"https://api.github.com/users/milescrabill/orgs","repos_url":"https://api.github.com/users/milescrabill/repos","events_url":"https://api.github.com/users/milescrabill/events{/privacy}","received_events_url":"https://api.github.com/users/milescrabill/received_events","type":"User","site_admin":false},"body":"@jvehent r+?","created_at":"2016-09-01T19:40:32Z","updated_at":"2016-09-02T17:55:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"836c4d253e4427307ccd7765c3c801ffc72368bc","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mozilla-services/userplex/pulls/33/commits","review_comments_url":"https://api.github.com/repos/mozilla-services/userplex/pulls/33/comments","review_comment_url":"https://api.github.com/repos/mozilla-services/userplex/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mozilla-services/userplex/issues/33/comments","statuses_url":"https://api.github.com/repos/mozilla-services/userplex/statuses/78b9376cb8f90e91887628645bcf0ce2a35da620","head":{"label":"mozilla-services:pagerduty","ref":"pagerduty","sha":"78b9376cb8f90e91887628645bcf0ce2a35da620","user":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"repo":{"id":44342229,"name":"userplex","full_name":"mozilla-services/userplex","owner":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mozilla-services/userplex","description":"Users Multiplexers to go from one LDAP to many SaaS","fork":false,"url":"https://api.github.com/repos/mozilla-services/userplex","forks_url":"https://api.github.com/repos/mozilla-services/userplex/forks","keys_url":"https://api.github.com/repos/mozilla-services/userplex/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozilla-services/userplex/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozilla-services/userplex/teams","hooks_url":"https://api.github.com/repos/mozilla-services/userplex/hooks","issue_events_url":"https://api.github.com/repos/mozilla-services/userplex/issues/events{/number}","events_url":"https://api.github.com/repos/mozilla-services/userplex/events","assignees_url":"https://api.github.com/repos/mozilla-services/userplex/assignees{/user}","branches_url":"https://api.github.com/repos/mozilla-services/userplex/branches{/branch}","tags_url":"https://api.github.com/repos/mozilla-services/userplex/tags","blobs_url":"https://api.github.com/repos/mozilla-services/userplex/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozilla-services/userplex/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozilla-services/userplex/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozilla-services/userplex/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozilla-services/userplex/statuses/{sha}","languages_url":"https://api.github.com/repos/mozilla-services/userplex/languages","stargazers_url":"https://api.github.com/repos/mozilla-services/userplex/stargazers","contributors_url":"https://api.github.com/repos/mozilla-services/userplex/contributors","subscribers_url":"https://api.github.com/repos/mozilla-services/userplex/subscribers","subscription_url":"https://api.github.com/repos/mozilla-services/userplex/subscription","commits_url":"https://api.github.com/repos/mozilla-services/userplex/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozilla-services/userplex/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozilla-services/userplex/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozilla-services/userplex/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozilla-services/userplex/contents/{+path}","compare_url":"https://api.github.com/repos/mozilla-services/userplex/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozilla-services/userplex/merges","archive_url":"https://api.github.com/repos/mozilla-services/userplex/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozilla-services/userplex/downloads","issues_url":"https://api.github.com/repos/mozilla-services/userplex/issues{/number}","pulls_url":"https://api.github.com/repos/mozilla-services/userplex/pulls{/number}","milestones_url":"https://api.github.com/repos/mozilla-services/userplex/milestones{/number}","notifications_url":"https://api.github.com/repos/mozilla-services/userplex/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozilla-services/userplex/labels{/name}","releases_url":"https://api.github.com/repos/mozilla-services/userplex/releases{/id}","deployments_url":"https://api.github.com/repos/mozilla-services/userplex/deployments","created_at":"2015-10-15T20:04:26Z","updated_at":"2016-08-30T17:01:23Z","pushed_at":"2016-09-02T17:48:10Z","git_url":"git://github.com/mozilla-services/userplex.git","ssh_url":"git@github.com:mozilla-services/userplex.git","clone_url":"https://github.com/mozilla-services/userplex.git","svn_url":"https://github.com/mozilla-services/userplex","homepage":null,"size":10451,"stargazers_count":15,"watchers_count":15,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":14,"forks":3,"open_issues":14,"watchers":15,"default_branch":"master"}},"base":{"label":"mozilla-services:master","ref":"master","sha":"42d19d35c7de52d2b7436d7ceb025772cd6e7282","user":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"repo":{"id":44342229,"name":"userplex","full_name":"mozilla-services/userplex","owner":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mozilla-services/userplex","description":"Users Multiplexers to go from one LDAP to many SaaS","fork":false,"url":"https://api.github.com/repos/mozilla-services/userplex","forks_url":"https://api.github.com/repos/mozilla-services/userplex/forks","keys_url":"https://api.github.com/repos/mozilla-services/userplex/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozilla-services/userplex/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozilla-services/userplex/teams","hooks_url":"https://api.github.com/repos/mozilla-services/userplex/hooks","issue_events_url":"https://api.github.com/repos/mozilla-services/userplex/issues/events{/number}","events_url":"https://api.github.com/repos/mozilla-services/userplex/events","assignees_url":"https://api.github.com/repos/mozilla-services/userplex/assignees{/user}","branches_url":"https://api.github.com/repos/mozilla-services/userplex/branches{/branch}","tags_url":"https://api.github.com/repos/mozilla-services/userplex/tags","blobs_url":"https://api.github.com/repos/mozilla-services/userplex/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozilla-services/userplex/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozilla-services/userplex/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozilla-services/userplex/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozilla-services/userplex/statuses/{sha}","languages_url":"https://api.github.com/repos/mozilla-services/userplex/languages","stargazers_url":"https://api.github.com/repos/mozilla-services/userplex/stargazers","contributors_url":"https://api.github.com/repos/mozilla-services/userplex/contributors","subscribers_url":"https://api.github.com/repos/mozilla-services/userplex/subscribers","subscription_url":"https://api.github.com/repos/mozilla-services/userplex/subscription","commits_url":"https://api.github.com/repos/mozilla-services/userplex/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozilla-services/userplex/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozilla-services/userplex/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozilla-services/userplex/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozilla-services/userplex/contents/{+path}","compare_url":"https://api.github.com/repos/mozilla-services/userplex/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozilla-services/userplex/merges","archive_url":"https://api.github.com/repos/mozilla-services/userplex/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozilla-services/userplex/downloads","issues_url":"https://api.github.com/repos/mozilla-services/userplex/issues{/number}","pulls_url":"https://api.github.com/repos/mozilla-services/userplex/pulls{/number}","milestones_url":"https://api.github.com/repos/mozilla-services/userplex/milestones{/number}","notifications_url":"https://api.github.com/repos/mozilla-services/userplex/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozilla-services/userplex/labels{/name}","releases_url":"https://api.github.com/repos/mozilla-services/userplex/releases{/id}","deployments_url":"https://api.github.com/repos/mozilla-services/userplex/deployments","created_at":"2015-10-15T20:04:26Z","updated_at":"2016-08-30T17:01:23Z","pushed_at":"2016-09-02T17:48:10Z","git_url":"git://github.com/mozilla-services/userplex.git","ssh_url":"git@github.com:mozilla-services/userplex.git","clone_url":"https://github.com/mozilla-services/userplex.git","svn_url":"https://github.com/mozilla-services/userplex","homepage":null,"size":10451,"stargazers_count":15,"watchers_count":15,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":14,"forks":3,"open_issues":14,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mozilla-services/userplex/pulls/33"},"html":{"href":"https://github.com/mozilla-services/userplex/pull/33"},"issue":{"href":"https://api.github.com/repos/mozilla-services/userplex/issues/33"},"comments":{"href":"https://api.github.com/repos/mozilla-services/userplex/issues/33/comments"},"review_comments":{"href":"https://api.github.com/repos/mozilla-services/userplex/pulls/33/comments"},"review_comment":{"href":"https://api.github.com/repos/mozilla-services/userplex/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mozilla-services/userplex/pulls/33/commits"},"statuses":{"href":"https://api.github.com/repos/mozilla-services/userplex/statuses/78b9376cb8f90e91887628645bcf0ce2a35da620"}}}}
{"actor":{"display_login":"milescrabill"}}