{"action":"created","issue":{"url":"https://api.github.com/repos/18F/identity-idp/issues/415","repository_url":"https://api.github.com/repos/18F/identity-idp","labels_url":"https://api.github.com/repos/18F/identity-idp/issues/415/labels{/name}","comments_url":"https://api.github.com/repos/18F/identity-idp/issues/415/comments","events_url":"https://api.github.com/repos/18F/identity-idp/issues/415/events","html_url":"https://github.com/18F/identity-idp/pull/415","id":173111804,"number":415,"title":"[Issue #648] Adds voice OTP support","user":{"login":"amoose","id":1328699,"avatar_url":"https://avatars.githubusercontent.com/u/1328699?v=3","gravatar_id":"","url":"https://api.github.com/users/amoose","html_url":"https://github.com/amoose","followers_url":"https://api.github.com/users/amoose/followers","following_url":"https://api.github.com/users/amoose/following{/other_user}","gists_url":"https://api.github.com/users/amoose/gists{/gist_id}","starred_url":"https://api.github.com/users/amoose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amoose/subscriptions","organizations_url":"https://api.github.com/users/amoose/orgs","repos_url":"https://api.github.com/users/amoose/repos","events_url":"https://api.github.com/users/amoose/events{/privacy}","received_events_url":"https://api.github.com/users/amoose/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/18F/identity-idp/labels/ready%20for%20review","name":"ready for review","color":"0e8a16"}],"state":"open","locked":false,"assignee":{"login":"amoose","id":1328699,"avatar_url":"https://avatars.githubusercontent.com/u/1328699?v=3","gravatar_id":"","url":"https://api.github.com/users/amoose","html_url":"https://github.com/amoose","followers_url":"https://api.github.com/users/amoose/followers","following_url":"https://api.github.com/users/amoose/following{/other_user}","gists_url":"https://api.github.com/users/amoose/gists{/gist_id}","starred_url":"https://api.github.com/users/amoose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amoose/subscriptions","organizations_url":"https://api.github.com/users/amoose/orgs","repos_url":"https://api.github.com/users/amoose/repos","events_url":"https://api.github.com/users/amoose/events{/privacy}","received_events_url":"https://api.github.com/users/amoose/received_events","type":"User","site_admin":false},"assignees":[{"login":"amoose","id":1328699,"avatar_url":"https://avatars.githubusercontent.com/u/1328699?v=3","gravatar_id":"","url":"https://api.github.com/users/amoose","html_url":"https://github.com/amoose","followers_url":"https://api.github.com/users/amoose/followers","following_url":"https://api.github.com/users/amoose/following{/other_user}","gists_url":"https://api.github.com/users/amoose/gists{/gist_id}","starred_url":"https://api.github.com/users/amoose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amoose/subscriptions","organizations_url":"https://api.github.com/users/amoose/orgs","repos_url":"https://api.github.com/users/amoose/repos","events_url":"https://api.github.com/users/amoose/events{/privacy}","received_events_url":"https://api.github.com/users/amoose/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/18F/identity-idp/milestones/13","html_url":"https://github.com/18F/identity-idp/milestones/Sprint%2013","labels_url":"https://api.github.com/repos/18F/identity-idp/milestones/13/labels","id":1961878,"number":13,"title":"Sprint 13","description":"","creator":{"login":"monfresh","id":811150,"avatar_url":"https://avatars.githubusercontent.com/u/811150?v=3","gravatar_id":"","url":"https://api.github.com/users/monfresh","html_url":"https://github.com/monfresh","followers_url":"https://api.github.com/users/monfresh/followers","following_url":"https://api.github.com/users/monfresh/following{/other_user}","gists_url":"https://api.github.com/users/monfresh/gists{/gist_id}","starred_url":"https://api.github.com/users/monfresh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/monfresh/subscriptions","organizations_url":"https://api.github.com/users/monfresh/orgs","repos_url":"https://api.github.com/users/monfresh/repos","events_url":"https://api.github.com/users/monfresh/events{/privacy}","received_events_url":"https://api.github.com/users/monfresh/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":10,"state":"open","created_at":"2016-08-24T23:07:24Z","updated_at":"2016-08-29T15:42:59Z","due_on":"2016-09-05T00:00:00Z","closed_at":null},"comments":13,"created_at":"2016-08-25T04:29:34Z","updated_at":"2016-09-01T15:35:41Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/18F/identity-idp/pulls/415","html_url":"https://github.com/18F/identity-idp/pull/415","diff_url":"https://github.com/18F/identity-idp/pull/415.diff","patch_url":"https://github.com/18F/identity-idp/pull/415.patch"},"body":"# Completes https://github.com/18F/identity-private/issues/648\r\n\r\n### Why\r\nUsers want to receive OTP via SMS and Voice\r\n\r\n### How\r\n- Removes sms-spec in favor of Twilio-specific mock clients\r\n- Adds step to choose delivery method for OTP during auth and phone confirmation\r\n  - Disables automatically sending OTP after_authentication (upstream PRs pending)\r\n- Permits graceful fallback when confirming phone, editing phone, or authenticating.\r\n  - SMS -> Voice\r\n  - Voice -> SMS\r\n  - TOTP -> Voice || SMS -> SMS || Voice\r\n- Adds new queue for voice calls\r\n- Adds new job for sending OTP via voice\r\n\r\nℹ️ Follow-up issue for Voice OTP for verified phone confirmation https://github.com/18F/identity-private/issues/688\r\nℹ️ Follow-up work with two_factor_authentication gem https://github.com/18F/identity-private/issues/708"},"comment":{"url":"https://api.github.com/repos/18F/identity-idp/issues/comments/244118562","html_url":"https://github.com/18F/identity-idp/pull/415#issuecomment-244118562","issue_url":"https://api.github.com/repos/18F/identity-idp/issues/415","id":244118562,"user":{"login":"monfresh","id":811150,"avatar_url":"https://avatars.githubusercontent.com/u/811150?v=3","gravatar_id":"","url":"https://api.github.com/users/monfresh","html_url":"https://github.com/monfresh","followers_url":"https://api.github.com/users/monfresh/followers","following_url":"https://api.github.com/users/monfresh/following{/other_user}","gists_url":"https://api.github.com/users/monfresh/gists{/gist_id}","starred_url":"https://api.github.com/users/monfresh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/monfresh/subscriptions","organizations_url":"https://api.github.com/users/monfresh/orgs","repos_url":"https://api.github.com/users/monfresh/repos","events_url":"https://api.github.com/users/monfresh/events{/privacy}","received_events_url":"https://api.github.com/users/monfresh/received_events","type":"User","site_admin":false},"created_at":"2016-09-01T15:35:41Z","updated_at":"2016-09-01T15:35:41Z","body":"I think this is good to go now. Wanna squash?"}}
{"actor":{"display_login":"monfresh"}}