{"action":"created","comment":{"url":"https://api.github.com/repos/mozilla/fxa/pulls/comments/76920527","id":76920527,"diff_hunk":"@@ -0,0 +1,410 @@\n+\n+# Devices View\n+\n+Feature card: https://github.com/mozilla/fxa-features/issues/8\n+\n+Original draft: https://docs.google.com/document/d/1VrysJ4LFPZ20IeMMmRts5l_2GUHhm890rlQhD012U_g\n+\n+Engineering bugs: https://waffle.io/mozilla/fxa?milestone=FxA-89:%20devices%20view\n+\n+## Stories\n+\n+* So that I can best ensure the integrity of my Sync setup,\n+  as a Firefox Sync user,\n+  I want to see information about the devices\n+  connected to my Firefox Account.\n+* So that I can obtain a device overview more quickly,\n+  I want the devices connected to my account\n+  to have recognizable names by default.\n+* I want to easily see the type\n+  and browser details of the each device, \n+* So that I can better tell what device I am currently using,\n+  I want it to be easily distinguishable from the other items.\n+* So that I can easily detect when a device is no longer active,\n+  I want to be able to see when my devices last authenticated.\n+\n+\n+## Hypothesis\n+\n+1. If we add a device view in settings\n+   for Firefox Account users with multiple devices,\n+   then **we will decrease the number of malicious connections**\n+   because we will observe users managing and disconnecting\n+   suspicious devices which they cannot presently do.\n+2. If we add a device view in settings\n+   for Firefox Account users with multiple devices,\n+   then **we will decrease the number of old/lost devices\n+   still connected to an account**\n+   because we will observe users managing their devices.\n+3. Less importantly,\n+   if we present users with download links for Firefox\n+   when they don’t have a 2nd device,\n+   **we will increase multi-device users**\n+   because we will generate downloads from the device management view.\n+\n+## Metrics\n+\n+### Key Success Metric\n+\n+We will know our hypotheses to be true when we measure that users are disconnecting old, lost and unknown devices.\n+\n+We will measure this through the confirmation dialogue after users click to disconnect a device.\n+\n+### Secondary Metrics\n+\n+* Number of device disconnections per day.\n+  * Categorized by traffic source (e.g email, settings via hamburger menu)\n+* Percentage of clicks on \"missing or duplicate devices?\" link.\n+  * # of users that clicked it / # of users that saw device view\n+* Percentage refresh rate\n+  * # of users that clicked refresh / # of users that saw device view\n+* Clicks on the \"Connect...\" button\n+  * # of users that clicked it / # of users that saw the button\n+* Number of mobile installs generated from the page.\n+  * From mobile team metrics via adjust.com\n+* Number of clicks on \"I did not disconnect this device\" in email\n+  * From mobile team metrics via adjust.com\n+\n+\n+## UX\n+\n+### Assets\n+\n+Use these icons for desktop, phone, and tablet device types:\n+\n+<img src=\"screenshot-of-device-icon-assets.png\" />\n+\n+TODO: @ryanfeeley to provide raw asset files to add here.\n+\n+### Collapsed View\n+\n+A **Devices** section appears in the settings screen\n+above the **Password** section:\n+\n+<img src=\"devices-view-collapsed.png\" alt=\"Collapsed View\" />\n+\n+### Fetching Devices View\n+When the user clicks the **Show** button,\n+and the server has to fetch the images,\n+the **Show** button becomes disabled\n+and is replaced with a spinning wheel\n+(halved in size from full size spinning wheel).\n+\n+<img src=\"devices-view-fetching.png\" alt=\"Fetching Devices View\" />\n+\n+### Zero or one Device Views\n+\n+When the user expands the Device section,\n+and has no devices,\n+they are shown their current device\n+but are able to download Firefox for iOS or Android\n+and to refresh the list:\n+\n+<img src=\"devices-view-single-desktop-device.png\" alt=\"Zero or one Device Views\" />\n+\n+Links for Android and iOS go their respective stores.\n+The mobile app placeholders should not be there\n+if the user has a real mobile device\n+attached to their account.\n+\n+### List View\n+\n+When the user expands the Devices section,\n+the Firefox profiles that are syncing through this account\n+are presented with the relative time they were “Last active”,\n+with a \"Disconnect...\" button beside each.\n+\n+<img src=\"devices-view-populated.png\" alt=\"List View\" />\n+\n+Unlike in the first version of this feature,\n+when devices are connected,\n+we *should not* display “Firefox is available for Windows, OS X, etc…”.\n+The reason for this is that we want to make sure\n+we are not distracting the users\n+when they are about to disconnect one of their devices.\n+A distraction could result in them disconnecting the wrong device.\n+\n+When the user is viewing the device list\n+from a web session on accounts.firefox.com,\n+and is on a compatible Firefox browser\n+that is not currently connected to Sync,\n+we provide a \"Connect...\" button\n+that will allow them to sign in to sync\n+on that device.\n+\n+<img src=\"devices-view-current-web-session.png\" alt=\"Zero or one Device Views\" />\n+\n+### Disconnecting View\n+\n+When the user selects to disconnect a device,\n+we overlay a modal confirmation dialog.\n+This will minimize accidental clicks on \"Disconnect...\"\n+and help us measure signals as to why a device is removed.\n+\n+In this view, we should not see\n+any message to download Firefox on other devices.\n+We want to minimize noise and distractions.\n+\n+When the user clicks and releases the \"Disconnect...\" button\n+the following occurs:\n+\n+1. We verify that the user session is recent.\n+   If it is too old then we bounce the user\n+   through the existing \"force auth\" screen\n+   in order to refresh their login session.\n+2. We display a modal dialog\n+   asking them to confirm\n+   and supply a reason why they are disconnecting:\n+\n+   <img src=\"modal-disconnect-dialog.png\" />\n+\n+3. We display an error \"Valid response required\"\n+   if they submit the dialog\n+   without selecting a reason:\n+\n+   <img src=\"modal-disconnect-dialog-validation-error.png\" />\n+\n+4. When the user selects any option,\n+   the placeholder floats up to be a field label\n+   and the Disconnect button becomes enabled:\n+\n+   <img src=\"modal-disconnect-dialog-filled.png\" />\n+\n+5. When the form is submitted\n+   we disconnect the device\n+   by calling the `/account/device/destroy` endpoint\n+   on the server..\n+\n+6. Depending on the user's selected reason for disconnecting\n+   we may show an additional message styled as follows:\n+\n+   <img src=\"modal-disconnect-dialog-success.png\" />\n+\n+The available choices for disconnection reason will be:\n+\n+* Suspicious device\n+  * Upon Disconnect, show additional message with the body copy:\n+    “We’re sorry to hear about this. If this was a device you\n+    really don’t trust, you should change your Firefox Account password,\n+    and change any passwords saved in Firefox.”\n+* Lost or stolen device\n+  * Upon Disconnect, show additional message with the body copy:\n+  “We’re sorry to hear about this. You should change your Firefox Account password,\n+  and look for information from your device manufacturer about erasing your data remotely.”\n+* Old or replaced device\n+  * Upon Disconnect, don’t present an additional message.\n+    Close the dialog and return to the device view.\n+* Rather not say\n+  * Upon Disconnect, don’t present an additional message.\n+    Close the dialog and return to the device view.\n+\n+\n+After device removal has been confirmed,\n+the dialog closes and,\n+the row is overtaken by the area beneath it:\n+\n+<img src=\"devices-view-disconnecting.gif\" />\n+\n+One the server side,\n+we send the user an email notification about the removed device.\n+It includes:\n+* Removed device name\n+* IP and geo information of person that triggered the removal\n+* Link that says: “I did not request to remove this device from my FxA”,\n+  linking to a SUMO page that says:\n+  * Verify your currently connected devices\n+  * Disconnect any unknown devices\n+  * Change your FxA password\n+  * Change the passwords of any websites that you’ve saved in Firefox.\n+    To see which sites have been saved, visit:  about:preferences#security > Saved Logins\n+\n+If the device had registered a push endpoint,\n+we will send it a push notification\n+to inform it that it has been disconnected.\n+\n+\n+### Refreshing View\n+\n+<img src=\"devices-view-refreshing.png\" />\n+\n+\n+### Outgoing Links\n+\n+The links to download Firefox for desktop\n+should go to the following URL,\n+which works for all OSes and all languages:\n+\n+* https://www.mozilla.org/firefox/new/?utm_source=accounts.firefox.com&utm_medium=referral&utm_campaign=fxa-devices\n+\n+It should contain the UTM parameters as specified\n+and should not contain any locale in the URL.\n+\n+The link to get Firefox for iOS:\n+ \n+* https://app.adjust.com/2uo1qc?campaign=fxa-device-manager&adgroup=ios&creative=button&fallback=https%3A%2F%2Fitunes.apple.com%2Fapp%2Fapple-store%2Fid989804926%3Fpt%3D373246%26ct%3Dadjust_tracker%26mt%3D8 \n+* The `fallback` parameter  will force the App Store\n+  since default is Play Store if link is opened\n+  on desktop instead of a mobile device.\n+\n+The link to get Firefox for Android:\n+\n+* https://app.adjust.com/2uo1qc?campaign=fxa-device-manager&adgroup=ios&creative=button\n+* No `fallback` parameter is required\n+  since the URL will open the Play Store\n+  if it doesn’t recognize any mobile device.\n+\n+The link labelled \"Missing or duplicate devices?\"\n+will link to a SUMO article:\n+\n+* https://support.mozilla.org/kb/fxa-managing-devices\n+\n+When a user is using desktop Firefox\n+and has a web session with accounts.firefox.com\n+but is not connected with the current browser,\n+we can provide a \"Connect...\" button that links to:\n+\n+* /signin?service=sync&context=fx_desktop_v3\"\n+\n+\n+## Implementation Plan\n+\n+We will implement this feature in several phases,\n+intending each phase to be independently shippable\n+if we so choose.\n+\n+Since the primary goal for this feature is security,\n+we will first focus on implementing the parts\n+related to disconnecting devices.\n+This will be followed by additional notifications\n+and security checks to improve the disconnection experience,\n+and finally by the new affordances\n+for connecting additional devices.\n+\n+### Phase 1\n+\n+First we'll make sure\n+that the core disconnecting-your-devices experience\n+works well and emits the necessary metrics,\n+building on the existing devices view code.\n+\n+Acceptance criteria:\n+\n+* [ ] When I am connected to Sync on Desktop Firefox,\n+      my device list shows that device\n+      with a desktop icon,\n+      a plausible last-active timestamp,\n+      and a \"Disconnect...\" button.\n+* [ ] When I am connected to Sync from Fennec or iOS on a phone,\n+      my device list shows that device\n+      with a phone icon,\n+      a plausible last-active timestamp,\n+      and a \"Disconnect...\" button.\n+* [ ] When I am connected to Sync from Fennec or iOS on a tablet,\n+      my device list shows that device\n+      with a tablet icon,\n+      a plausible last-active timestamp,\n+      and a \"Disconnect...\" button.\n+* [ ] When I sign in to Firefox Accounts on the web\n+      without connecting to sync,\n+      this does not appear as an item\n+      in the device list.\n+* [ ] The devices view does not show\n+      any messaging about connecting new devices.\n+* [ ] Clicking the \"Disconnect...\" button for a device\n+      causes a modal confirmation dialog to be displayed\n+      with the specified messaging.\n+* [ ] Successfully submitting the dialog\n+      destroys the device record and session\n+      token for that device.\n+* [ ] Front-end metrics events are emitted\n+      when users view the devices list,\n+      click the \"Disconnect...\" button,\n+      submit or cancel the disconnect dialog,\n+      click the \"refresh\" button,\n+      and click the \"missing or duplicate devices\" link.\n+* [ ] Back-end metrics events are emitted\n+      when a device is disconnected,\n+      and include the reason for its disconnection.\n+* [ ] Graphs are available to view\n+      the number of views of this screen,\n+      the number of device disconnections\n+      broken down by reason,\n+      and the click rate on various buttons and links.\n+\n+With these parts of the feature built,\n+we should consider enabling it by default\n+for some percentage of the userbase,\n+in order to get preliminary metrics\n+on whether and how it will be used.\n+\n+### Phase 2\n+\n+Next we add some of the trickier parts\n+of the feature,\n+that enhance the experience\n+but are not expected to make a big difference\n+to the core success metrics.\n+\n+Acceptance criteria:\n+\n+* [ ] When I click the \"Disconnect...\" button\n+      and my login session is more than 30 minutes old,\n+      I required to re-enter my password\n+      before I can disconnect the device.\n+* [ ] When I disconnect my current device\n+      through the devices view,\n+      and then go to about:preferences#sync,","path":"features/FxA-89-devices-view/README.md","position":356,"original_position":356,"commit_id":"b5af564b1f35cfed75ce0f4d85b4caadc3986bf0","original_commit_id":"b5af564b1f35cfed75ce0f4d85b4caadc3986bf0","user":{"login":"rfk","id":34695,"avatar_url":"https://avatars.githubusercontent.com/u/34695?v=3","gravatar_id":"","url":"https://api.github.com/users/rfk","html_url":"https://github.com/rfk","followers_url":"https://api.github.com/users/rfk/followers","following_url":"https://api.github.com/users/rfk/following{/other_user}","gists_url":"https://api.github.com/users/rfk/gists{/gist_id}","starred_url":"https://api.github.com/users/rfk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rfk/subscriptions","organizations_url":"https://api.github.com/users/rfk/orgs","repos_url":"https://api.github.com/users/rfk/repos","events_url":"https://api.github.com/users/rfk/events{/privacy}","received_events_url":"https://api.github.com/users/rfk/received_events","type":"User","site_admin":false},"body":"I'd be happy to scope it specifically to Desktop devices, given that it depends on push support for immediate notification.  Alternately, we could generalize it, and take on adding push notification support for device disconnect in iOS and Fennec client code.","created_at":"2016-08-31T03:48:45Z","updated_at":"2016-08-31T03:48:45Z","html_url":"https://github.com/mozilla/fxa/pull/181#discussion_r76920527","pull_request_url":"https://api.github.com/repos/mozilla/fxa/pulls/181","_links":{"self":{"href":"https://api.github.com/repos/mozilla/fxa/pulls/comments/76920527"},"html":{"href":"https://github.com/mozilla/fxa/pull/181#discussion_r76920527"},"pull_request":{"href":"https://api.github.com/repos/mozilla/fxa/pulls/181"}}},"pull_request":{"url":"https://api.github.com/repos/mozilla/fxa/pulls/181","id":82133986,"html_url":"https://github.com/mozilla/fxa/pull/181","diff_url":"https://github.com/mozilla/fxa/pull/181.diff","patch_url":"https://github.com/mozilla/fxa/pull/181.patch","issue_url":"https://api.github.com/repos/mozilla/fxa/issues/181","number":181,"state":"open","locked":false,"title":"feat(FxA-89): import feature description for FxA-89 devices view","user":{"login":"rfk","id":34695,"avatar_url":"https://avatars.githubusercontent.com/u/34695?v=3","gravatar_id":"","url":"https://api.github.com/users/rfk","html_url":"https://github.com/rfk","followers_url":"https://api.github.com/users/rfk/followers","following_url":"https://api.github.com/users/rfk/following{/other_user}","gists_url":"https://api.github.com/users/rfk/gists{/gist_id}","starred_url":"https://api.github.com/users/rfk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rfk/subscriptions","organizations_url":"https://api.github.com/users/rfk/orgs","repos_url":"https://api.github.com/users/rfk/repos","events_url":"https://api.github.com/users/rfk/events{/privacy}","received_events_url":"https://api.github.com/users/rfk/received_events","type":"User","site_admin":false},"body":"Wherein we take all the stuff from [this google doc](https://docs.google.com/document/d/1VrysJ4LFPZ20IeMMmRts5l_2GUHhm890rlQhD012U_g/edit#heading=h.pp7h5tlhp2xv) and put it into github...\r\n\r\n[Click Here for Rendered View](https://github.com/mozilla/fxa/blob/fxa-89-devices-view/features/FxA-89-devices-view/README.md)\r\n\r\nI'm going to ping @davismtl for r? on this but have a couple of open questions to deal with in the google doc first...","created_at":"2016-08-22T04:50:49Z","updated_at":"2016-08-31T03:48:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"898b782ac3a1d5ae8389a4b8c12c4b6507f949f5","assignee":{"login":"vladikoff","id":128755,"avatar_url":"https://avatars.githubusercontent.com/u/128755?v=3","gravatar_id":"","url":"https://api.github.com/users/vladikoff","html_url":"https://github.com/vladikoff","followers_url":"https://api.github.com/users/vladikoff/followers","following_url":"https://api.github.com/users/vladikoff/following{/other_user}","gists_url":"https://api.github.com/users/vladikoff/gists{/gist_id}","starred_url":"https://api.github.com/users/vladikoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vladikoff/subscriptions","organizations_url":"https://api.github.com/users/vladikoff/orgs","repos_url":"https://api.github.com/users/vladikoff/repos","events_url":"https://api.github.com/users/vladikoff/events{/privacy}","received_events_url":"https://api.github.com/users/vladikoff/received_events","type":"User","site_admin":false},"assignees":[{"login":"vladikoff","id":128755,"avatar_url":"https://avatars.githubusercontent.com/u/128755?v=3","gravatar_id":"","url":"https://api.github.com/users/vladikoff","html_url":"https://github.com/vladikoff","followers_url":"https://api.github.com/users/vladikoff/followers","following_url":"https://api.github.com/users/vladikoff/following{/other_user}","gists_url":"https://api.github.com/users/vladikoff/gists{/gist_id}","starred_url":"https://api.github.com/users/vladikoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vladikoff/subscriptions","organizations_url":"https://api.github.com/users/vladikoff/orgs","repos_url":"https://api.github.com/users/vladikoff/repos","events_url":"https://api.github.com/users/vladikoff/events{/privacy}","received_events_url":"https://api.github.com/users/vladikoff/received_events","type":"User","site_admin":false},{"login":"davismtl","id":19537086,"avatar_url":"https://avatars.githubusercontent.com/u/19537086?v=3","gravatar_id":"","url":"https://api.github.com/users/davismtl","html_url":"https://github.com/davismtl","followers_url":"https://api.github.com/users/davismtl/followers","following_url":"https://api.github.com/users/davismtl/following{/other_user}","gists_url":"https://api.github.com/users/davismtl/gists{/gist_id}","starred_url":"https://api.github.com/users/davismtl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davismtl/subscriptions","organizations_url":"https://api.github.com/users/davismtl/orgs","repos_url":"https://api.github.com/users/davismtl/repos","events_url":"https://api.github.com/users/davismtl/events{/privacy}","received_events_url":"https://api.github.com/users/davismtl/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/mozilla/fxa/pulls/181/commits","review_comments_url":"https://api.github.com/repos/mozilla/fxa/pulls/181/comments","review_comment_url":"https://api.github.com/repos/mozilla/fxa/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mozilla/fxa/issues/181/comments","statuses_url":"https://api.github.com/repos/mozilla/fxa/statuses/b5af564b1f35cfed75ce0f4d85b4caadc3986bf0","head":{"label":"mozilla:fxa-89-devices-view","ref":"fxa-89-devices-view","sha":"b5af564b1f35cfed75ce0f4d85b4caadc3986bf0","user":{"login":"mozilla","id":131524,"avatar_url":"https://avatars.githubusercontent.com/u/131524?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla","html_url":"https://github.com/mozilla","followers_url":"https://api.github.com/users/mozilla/followers","following_url":"https://api.github.com/users/mozilla/following{/other_user}","gists_url":"https://api.github.com/users/mozilla/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla/subscriptions","organizations_url":"https://api.github.com/users/mozilla/orgs","repos_url":"https://api.github.com/users/mozilla/repos","events_url":"https://api.github.com/users/mozilla/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla/received_events","type":"Organization","site_admin":false},"repo":{"id":36831081,"name":"fxa","full_name":"mozilla/fxa","owner":{"login":"mozilla","id":131524,"avatar_url":"https://avatars.githubusercontent.com/u/131524?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla","html_url":"https://github.com/mozilla","followers_url":"https://api.github.com/users/mozilla/followers","following_url":"https://api.github.com/users/mozilla/following{/other_user}","gists_url":"https://api.github.com/users/mozilla/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla/subscriptions","organizations_url":"https://api.github.com/users/mozilla/orgs","repos_url":"https://api.github.com/users/mozilla/repos","events_url":"https://api.github.com/users/mozilla/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mozilla/fxa","description":"Top-level repository for Firefox Accounts","fork":false,"url":"https://api.github.com/repos/mozilla/fxa","forks_url":"https://api.github.com/repos/mozilla/fxa/forks","keys_url":"https://api.github.com/repos/mozilla/fxa/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozilla/fxa/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozilla/fxa/teams","hooks_url":"https://api.github.com/repos/mozilla/fxa/hooks","issue_events_url":"https://api.github.com/repos/mozilla/fxa/issues/events{/number}","events_url":"https://api.github.com/repos/mozilla/fxa/events","assignees_url":"https://api.github.com/repos/mozilla/fxa/assignees{/user}","branches_url":"https://api.github.com/repos/mozilla/fxa/branches{/branch}","tags_url":"https://api.github.com/repos/mozilla/fxa/tags","blobs_url":"https://api.github.com/repos/mozilla/fxa/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozilla/fxa/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozilla/fxa/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozilla/fxa/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozilla/fxa/statuses/{sha}","languages_url":"https://api.github.com/repos/mozilla/fxa/languages","stargazers_url":"https://api.github.com/repos/mozilla/fxa/stargazers","contributors_url":"https://api.github.com/repos/mozilla/fxa/contributors","subscribers_url":"https://api.github.com/repos/mozilla/fxa/subscribers","subscription_url":"https://api.github.com/repos/mozilla/fxa/subscription","commits_url":"https://api.github.com/repos/mozilla/fxa/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozilla/fxa/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozilla/fxa/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozilla/fxa/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozilla/fxa/contents/{+path}","compare_url":"https://api.github.com/repos/mozilla/fxa/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozilla/fxa/merges","archive_url":"https://api.github.com/repos/mozilla/fxa/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozilla/fxa/downloads","issues_url":"https://api.github.com/repos/mozilla/fxa/issues{/number}","pulls_url":"https://api.github.com/repos/mozilla/fxa/pulls{/number}","milestones_url":"https://api.github.com/repos/mozilla/fxa/milestones{/number}","notifications_url":"https://api.github.com/repos/mozilla/fxa/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozilla/fxa/labels{/name}","releases_url":"https://api.github.com/repos/mozilla/fxa/releases{/id}","deployments_url":"https://api.github.com/repos/mozilla/fxa/deployments","created_at":"2015-06-03T21:16:46Z","updated_at":"2016-07-08T00:08:52Z","pushed_at":"2016-08-26T16:14:28Z","git_url":"git://github.com/mozilla/fxa.git","ssh_url":"git@github.com:mozilla/fxa.git","clone_url":"https://github.com/mozilla/fxa.git","svn_url":"https://github.com/mozilla/fxa","homepage":"http://fxa.readthedocs.org","size":10775,"stargazers_count":10,"watchers_count":10,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":11,"forks":6,"open_issues":11,"watchers":10,"default_branch":"master"}},"base":{"label":"mozilla:master","ref":"master","sha":"29b74ec4f81eeb4cb38f90a16c23912dddac1ebb","user":{"login":"mozilla","id":131524,"avatar_url":"https://avatars.githubusercontent.com/u/131524?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla","html_url":"https://github.com/mozilla","followers_url":"https://api.github.com/users/mozilla/followers","following_url":"https://api.github.com/users/mozilla/following{/other_user}","gists_url":"https://api.github.com/users/mozilla/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla/subscriptions","organizations_url":"https://api.github.com/users/mozilla/orgs","repos_url":"https://api.github.com/users/mozilla/repos","events_url":"https://api.github.com/users/mozilla/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla/received_events","type":"Organization","site_admin":false},"repo":{"id":36831081,"name":"fxa","full_name":"mozilla/fxa","owner":{"login":"mozilla","id":131524,"avatar_url":"https://avatars.githubusercontent.com/u/131524?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla","html_url":"https://github.com/mozilla","followers_url":"https://api.github.com/users/mozilla/followers","following_url":"https://api.github.com/users/mozilla/following{/other_user}","gists_url":"https://api.github.com/users/mozilla/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla/subscriptions","organizations_url":"https://api.github.com/users/mozilla/orgs","repos_url":"https://api.github.com/users/mozilla/repos","events_url":"https://api.github.com/users/mozilla/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mozilla/fxa","description":"Top-level repository for Firefox Accounts","fork":false,"url":"https://api.github.com/repos/mozilla/fxa","forks_url":"https://api.github.com/repos/mozilla/fxa/forks","keys_url":"https://api.github.com/repos/mozilla/fxa/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozilla/fxa/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozilla/fxa/teams","hooks_url":"https://api.github.com/repos/mozilla/fxa/hooks","issue_events_url":"https://api.github.com/repos/mozilla/fxa/issues/events{/number}","events_url":"https://api.github.com/repos/mozilla/fxa/events","assignees_url":"https://api.github.com/repos/mozilla/fxa/assignees{/user}","branches_url":"https://api.github.com/repos/mozilla/fxa/branches{/branch}","tags_url":"https://api.github.com/repos/mozilla/fxa/tags","blobs_url":"https://api.github.com/repos/mozilla/fxa/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozilla/fxa/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozilla/fxa/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozilla/fxa/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozilla/fxa/statuses/{sha}","languages_url":"https://api.github.com/repos/mozilla/fxa/languages","stargazers_url":"https://api.github.com/repos/mozilla/fxa/stargazers","contributors_url":"https://api.github.com/repos/mozilla/fxa/contributors","subscribers_url":"https://api.github.com/repos/mozilla/fxa/subscribers","subscription_url":"https://api.github.com/repos/mozilla/fxa/subscription","commits_url":"https://api.github.com/repos/mozilla/fxa/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozilla/fxa/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozilla/fxa/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozilla/fxa/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozilla/fxa/contents/{+path}","compare_url":"https://api.github.com/repos/mozilla/fxa/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozilla/fxa/merges","archive_url":"https://api.github.com/repos/mozilla/fxa/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozilla/fxa/downloads","issues_url":"https://api.github.com/repos/mozilla/fxa/issues{/number}","pulls_url":"https://api.github.com/repos/mozilla/fxa/pulls{/number}","milestones_url":"https://api.github.com/repos/mozilla/fxa/milestones{/number}","notifications_url":"https://api.github.com/repos/mozilla/fxa/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozilla/fxa/labels{/name}","releases_url":"https://api.github.com/repos/mozilla/fxa/releases{/id}","deployments_url":"https://api.github.com/repos/mozilla/fxa/deployments","created_at":"2015-06-03T21:16:46Z","updated_at":"2016-07-08T00:08:52Z","pushed_at":"2016-08-26T16:14:28Z","git_url":"git://github.com/mozilla/fxa.git","ssh_url":"git@github.com:mozilla/fxa.git","clone_url":"https://github.com/mozilla/fxa.git","svn_url":"https://github.com/mozilla/fxa","homepage":"http://fxa.readthedocs.org","size":10775,"stargazers_count":10,"watchers_count":10,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":11,"forks":6,"open_issues":11,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mozilla/fxa/pulls/181"},"html":{"href":"https://github.com/mozilla/fxa/pull/181"},"issue":{"href":"https://api.github.com/repos/mozilla/fxa/issues/181"},"comments":{"href":"https://api.github.com/repos/mozilla/fxa/issues/181/comments"},"review_comments":{"href":"https://api.github.com/repos/mozilla/fxa/pulls/181/comments"},"review_comment":{"href":"https://api.github.com/repos/mozilla/fxa/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mozilla/fxa/pulls/181/commits"},"statuses":{"href":"https://api.github.com/repos/mozilla/fxa/statuses/b5af564b1f35cfed75ce0f4d85b4caadc3986bf0"}}}}
{"actor":{"display_login":"rfk"}}