{"action":"created","comment":{"url":"https://api.github.com/repos/2600hz/kazoo/pulls/comments/33005017","id":33005017,"diff_hunk":"@@ -0,0 +1,549 @@\n+%%%-------------------------------------------------------------------\n+%%% @copyright (C) 2015, 2600Hz INC\n+%%% @doc\n+%%%\n+%%% @end\n+%%% @contributors\n+%%%   Peter Defebvre\n+%%%-------------------------------------------------------------------\n+-module(knm_phone_number).\n+\n+-include(\"knm.hrl\").\n+\n+-export([\n+    fetch/1, fetch/2\n+    ,save/1\n+    ,delete/1\n+]).\n+\n+-export([\n+    to_json/1\n+    ,to_public_json/1\n+    ,from_json/1\n+]).\n+\n+-export([\n+    setters/2\n+    ,new/0\n+    ,number/1, set_number/2\n+    ,number_db/1 ,set_number_db/2\n+    ,assigned_to/1 ,set_assigned_to/2\n+    ,prev_assigned_to/1 ,set_prev_assigned_to/2\n+    ,used_by/1 ,set_used_by/2\n+    ,features/1 ,set_features/2\n+    ,feature/2 ,set_feature/3\n+    ,state/1 ,set_state/2\n+    ,reserve_history/1 ,set_reserve_history/2\n+    ,ported_in/1 ,set_ported_in/2\n+    ,module_name/1 ,set_module_name/2\n+    ,region/1 ,set_region/2\n+    ,auth_by/1 ,set_auth_by/2, is_authorize/1\n+    ,dry_run/1 ,set_dry_run/2\n+    ,doc/1\n+]).\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec fetch(ne_binary()) -> number_return().\n+-spec fetch(ne_binary(), ne_binary()) -> number_return().\n+fetch(Num) ->\n+    fetch(Num, <<\"system\">>).\n+\n+fetch(Num, AuthBy) ->\n+    NormalizedNum = knm_converters:normalize(Num),\n+    NumberDb = knm_converters:to_db(NormalizedNum),\n+    case couch_mgr:open_cache_doc(NumberDb, NormalizedNum) of\n+        {'error', _R}=E ->\n+            lager:error(\"failed to open ~s in ~s\", [NormalizedNum, NumberDb]),\n+            E;\n+        {'ok', JObj} ->\n+            Number = set_auth_by(from_json(JObj), AuthBy),\n+            case is_authorize(Number) of\n+                'true' -> {'ok', Number};\n+                'false' ->\n+                    {'error', 'unauthorized'}\n+            end\n+    end.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec save(number()) -> number_return().\n+save(#number{dry_run='true'}=Number) ->\n+    Routines = [\n+        fun knm_providers:save/1\n+    ],\n+    routines(Number, Routines);\n+save(#number{dry_run='false'}=Number) ->\n+    Routines = [\n+        fun knm_providers:save/1\n+        ,fun save_to_number_db/1\n+        ,fun hangle_assignment/1\n+    ],\n+    routines(Number, Routines).\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec delete(number()) -> number_return().\n+delete(#number{dry_run='true'}=Number) -> {'ok', Number};\n+delete(#number{dry_run='false'}=Number) ->\n+    Routines = [\n+        fun knm_providers:delete/1\n+        ,fun delete_number_doc/1\n+        ,fun maybe_remove_number_from_account/1\n+    ],\n+    routines(Number, Routines).\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec to_public_json(number()) -> wh_json:object().\n+to_public_json(Number) ->\n+    JObj = to_json(Number),\n+    wh_json:public_fields(JObj).\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec to_json(number()) -> wh_json:object().\n+to_json(#number{doc=JObj}=N) ->\n+    Now = wh_util:current_tstamp(),\n+    wh_json:from_list(\n+        props:filter_undefined([\n+            {<<\"_id\">>, number(N)}\n+            ,{?PVT_DB_NAME, number_db(N)}\n+            ,{?PVT_ASSIGNED_TO, assigned_to(N)}\n+            ,{?PVT_PREVIOUSLY_ASSIGNED_TO, prev_assigned_to(N)}\n+            ,{?PVT_USED_BY, used_by(N)}\n+            ,{?PVT_FEATURES, features(N)}\n+            ,{?PVT_STATE, state(N)}\n+            ,{?PVT_RESERVE_HISTORY, reserve_history(N)}\n+            ,{?PVT_PORTED_IN, ported_in(N)}\n+            ,{?PVT_MODULE_NAME, module_name(N)}\n+            ,{?PVT_REGION, region(N)}\n+            ,{?PVT_MODIFIED, Now}\n+            ,{?PVT_CREATED, wh_json:get_value(<<\"pvt_created\">>, JObj, Now)}\n+            ,{?PVT_TYPE, <<\"number\">>}\n+        ])\n+    ).\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec from_json(wh_json:object()) -> number().\n+from_json(JObj) ->\n+    #number{\n+        number=wh_json:get_value(<<\"_id\">>, JObj)\n+        ,number_db=wh_json:get_value(?PVT_DB_NAME, JObj)\n+        ,assigned_to=wh_json:get_value(?PVT_ASSIGNED_TO, JObj)\n+        ,prev_assigned_to=wh_json:get_value(?PVT_PREVIOUSLY_ASSIGNED_TO, JObj)\n+        ,used_by=wh_json:get_value(?PVT_USED_BY, JObj)\n+        ,features=wh_json:get_value(?PVT_FEATURES, JObj)\n+        ,state=wh_json:get_value(?PVT_STATE, JObj)\n+        ,reserve_history=wh_json:get_value(?PVT_RESERVE_HISTORY, JObj)\n+        ,ported_in=wh_json:get_value(?PVT_PORTED_IN, JObj)\n+        ,module_name=wh_json:get_value(?PVT_MODULE_NAME, JObj)\n+        ,region=wh_json:get_value(?PVT_REGION, JObj)\n+        ,doc=JObj\n+    }.\n+\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec new() -> number().\n+new() ->\n+    #number{}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec setters(number(), wh_proplist()) -> number().\n+setters(Number, Props) ->\n+    lists:foldl(\n+        fun({Fun, Value}, Acc) when is_function(Fun) ->\n+            Fun(Acc, Value);\n+           (_, Acc) -> Acc\n+        end\n+        ,Number\n+        ,Props\n+    ).\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec number(number()) -> ne_binary().\n+number(Number) ->\n+    Number#number.number.\n+\n+-spec set_number(number(), ne_binary()) -> number().\n+set_number(N, Number) ->\n+    N#number{number=Number}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec number_db(number()) -> ne_binary().\n+number_db(Number) ->\n+    Number#number.number_db.\n+\n+-spec set_number_db(number(), ne_binary()) -> number().\n+set_number_db(N, NumberDb) ->\n+    N#number{number_db=NumberDb}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec assigned_to(number()) -> ne_binary().\n+assigned_to(Number) ->\n+    Number#number.assigned_to.\n+\n+-spec set_assigned_to(number(), ne_binary()) -> number().\n+set_assigned_to(N, AccountId) ->\n+    N#number{assigned_to=AccountId}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec prev_assigned_to(number()) -> ne_binary().\n+prev_assigned_to(Number) ->\n+    Number#number.prev_assigned_to.\n+\n+-spec set_prev_assigned_to(number(), ne_binary()) -> number().\n+set_prev_assigned_to(N, AccountId) ->\n+    N#number{prev_assigned_to=AccountId}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec used_by(number()) -> ne_binary().\n+used_by(Number) ->\n+    Number#number.used_by.\n+\n+-spec set_used_by(number(), ne_binary()) -> number().\n+set_used_by(N, UsedBy) ->\n+    N#number{used_by=UsedBy}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec features(number()) -> ne_binary().\n+features(Number) ->\n+    Number#number.features.\n+\n+-spec set_features(number(), ne_binary()) -> number().\n+set_features(N, Features) ->\n+    N#number{features=Features}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec feature(number(), ne_binary()) -> ne_binary().\n+feature(Number, Feature) ->\n+    wh_json:get_value(Feature, Number#number.features).\n+\n+-spec set_feature(number(), ne_binary(), _) -> number().\n+set_feature(N, Feature, Data) ->\n+    Features = features(N),\n+    N#number{features=wh_json:set_value(Feature, Data, Features)}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec state(number()) -> ne_binary().\n+state(Number) ->\n+    Number#number.state.\n+\n+-spec set_state(number(), ne_binary()) -> number().\n+set_state(N, State) ->\n+    N#number{state=State}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec reserve_history(number()) -> ne_binaries().\n+reserve_history(Number) ->\n+    Number#number.reserve_history.\n+\n+-spec set_reserve_history(number(), ne_binaries()) -> number().\n+set_reserve_history(N, History) ->\n+    N#number{reserve_history=History}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec ported_in(number()) -> boolean().\n+ported_in(Number) ->\n+    Number#number.ported_in.\n+\n+-spec set_ported_in(number(), boolean()) -> number().\n+set_ported_in(N, Ported) ->\n+    N#number{ported_in=Ported}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec module_name(number()) -> ne_binary().\n+module_name(Number) ->\n+    Number#number.module_name.\n+\n+-spec set_module_name(number(), ne_binary()) -> number().\n+set_module_name(N, Name) ->\n+    N#number{module_name=Name}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec region(number()) -> ne_binary().\n+region(Number) ->\n+    Number#number.region.\n+\n+-spec set_region(number(), ne_binary()) -> number().\n+set_region(N, Region) ->\n+    N#number{region=Region}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec auth_by(number()) -> ne_binary().\n+auth_by(Number) ->\n+    Number#number.auth_by.\n+\n+-spec set_auth_by(number(), ne_binary()) -> number().\n+set_auth_by(N, AuthBy) ->\n+    N#number{auth_by=AuthBy}.\n+\n+%%--------------------------------------------------------------------\n+%% @public\n+%% @doc\n+%% @end\n+%%--------------------------------------------------------------------\n+-spec dry_run(number()) -> ne_binary().\n+dry_run(Number) ->","path":"core/kazoo_number_manager-1.0.0/src/knm_phone_number.erl","position":366,"original_position":366,"commit_id":"e2ba15ee9ed4c1ccd14cebf20e55c194b3f4d3e6","original_commit_id":"2364fa040487f4d48023dc7aebae6852ed9cd5ee","user":{"login":"jamesaimonetti","id":160921,"avatar_url":"https://avatars.githubusercontent.com/u/160921?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesaimonetti","html_url":"https://github.com/jamesaimonetti","followers_url":"https://api.github.com/users/jamesaimonetti/followers","following_url":"https://api.github.com/users/jamesaimonetti/following{/other_user}","gists_url":"https://api.github.com/users/jamesaimonetti/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesaimonetti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesaimonetti/subscriptions","organizations_url":"https://api.github.com/users/jamesaimonetti/orgs","repos_url":"https://api.github.com/users/jamesaimonetti/repos","events_url":"https://api.github.com/users/jamesaimonetti/events{/privacy}","received_events_url":"https://api.github.com/users/jamesaimonetti/received_events","type":"User","site_admin":false},"body":"Why create temporary variables in these? Just pattern match the record's field and return it. No reason to bind Number.","created_at":"2015-06-23T02:39:05Z","updated_at":"2015-06-23T02:39:05Z","html_url":"https://github.com/2600hz/kazoo/pull/1111#discussion_r33005017","pull_request_url":"https://api.github.com/repos/2600hz/kazoo/pulls/1111","_links":{"self":{"href":"https://api.github.com/repos/2600hz/kazoo/pulls/comments/33005017"},"html":{"href":"https://github.com/2600hz/kazoo/pull/1111#discussion_r33005017"},"pull_request":{"href":"https://api.github.com/repos/2600hz/kazoo/pulls/1111"}}},"pull_request":{"url":"https://api.github.com/repos/2600hz/kazoo/pulls/1111","id":38148807,"html_url":"https://github.com/2600hz/kazoo/pull/1111","diff_url":"https://github.com/2600hz/kazoo/pull/1111.diff","patch_url":"https://github.com/2600hz/kazoo/pull/1111.patch","issue_url":"https://api.github.com/repos/2600hz/kazoo/issues/1111","number":1111,"state":"open","locked":false,"title":"Kazoo Number Manager","user":{"login":"macpie","id":778101,"avatar_url":"https://avatars.githubusercontent.com/u/778101?v=3","gravatar_id":"","url":"https://api.github.com/users/macpie","html_url":"https://github.com/macpie","followers_url":"https://api.github.com/users/macpie/followers","following_url":"https://api.github.com/users/macpie/following{/other_user}","gists_url":"https://api.github.com/users/macpie/gists{/gist_id}","starred_url":"https://api.github.com/users/macpie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/macpie/subscriptions","organizations_url":"https://api.github.com/users/macpie/orgs","repos_url":"https://api.github.com/users/macpie/repos","events_url":"https://api.github.com/users/macpie/events{/privacy}","received_events_url":"https://api.github.com/users/macpie/received_events","type":"User","site_admin":false},"body":"Not ready (just to keep track)","created_at":"2015-06-19T21:18:00Z","updated_at":"2015-06-23T02:39:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"391a2ace3f1d71cebe8476467d355a4853655931","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/2600hz/kazoo/pulls/1111/commits","review_comments_url":"https://api.github.com/repos/2600hz/kazoo/pulls/1111/comments","review_comment_url":"https://api.github.com/repos/2600hz/kazoo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/2600hz/kazoo/issues/1111/comments","statuses_url":"https://api.github.com/repos/2600hz/kazoo/statuses/e2ba15ee9ed4c1ccd14cebf20e55c194b3f4d3e6","head":{"label":"2600hz:kazoo-number_manager","ref":"kazoo-number_manager","sha":"e2ba15ee9ed4c1ccd14cebf20e55c194b3f4d3e6","user":{"login":"2600hz","id":408801,"avatar_url":"https://avatars.githubusercontent.com/u/408801?v=3","gravatar_id":"","url":"https://api.github.com/users/2600hz","html_url":"https://github.com/2600hz","followers_url":"https://api.github.com/users/2600hz/followers","following_url":"https://api.github.com/users/2600hz/following{/other_user}","gists_url":"https://api.github.com/users/2600hz/gists{/gist_id}","starred_url":"https://api.github.com/users/2600hz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/2600hz/subscriptions","organizations_url":"https://api.github.com/users/2600hz/orgs","repos_url":"https://api.github.com/users/2600hz/repos","events_url":"https://api.github.com/users/2600hz/events{/privacy}","received_events_url":"https://api.github.com/users/2600hz/received_events","type":"Organization","site_admin":false},"repo":{"id":2966241,"name":"kazoo","full_name":"2600hz/kazoo","owner":{"login":"2600hz","id":408801,"avatar_url":"https://avatars.githubusercontent.com/u/408801?v=3","gravatar_id":"","url":"https://api.github.com/users/2600hz","html_url":"https://github.com/2600hz","followers_url":"https://api.github.com/users/2600hz/followers","following_url":"https://api.github.com/users/2600hz/following{/other_user}","gists_url":"https://api.github.com/users/2600hz/gists{/gist_id}","starred_url":"https://api.github.com/users/2600hz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/2600hz/subscriptions","organizations_url":"https://api.github.com/users/2600hz/orgs","repos_url":"https://api.github.com/users/2600hz/repos","events_url":"https://api.github.com/users/2600hz/events{/privacy}","received_events_url":"https://api.github.com/users/2600hz/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/2600hz/kazoo","description":"","fork":false,"url":"https://api.github.com/repos/2600hz/kazoo","forks_url":"https://api.github.com/repos/2600hz/kazoo/forks","keys_url":"https://api.github.com/repos/2600hz/kazoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/2600hz/kazoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/2600hz/kazoo/teams","hooks_url":"https://api.github.com/repos/2600hz/kazoo/hooks","issue_events_url":"https://api.github.com/repos/2600hz/kazoo/issues/events{/number}","events_url":"https://api.github.com/repos/2600hz/kazoo/events","assignees_url":"https://api.github.com/repos/2600hz/kazoo/assignees{/user}","branches_url":"https://api.github.com/repos/2600hz/kazoo/branches{/branch}","tags_url":"https://api.github.com/repos/2600hz/kazoo/tags","blobs_url":"https://api.github.com/repos/2600hz/kazoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/2600hz/kazoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/2600hz/kazoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/2600hz/kazoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/2600hz/kazoo/statuses/{sha}","languages_url":"https://api.github.com/repos/2600hz/kazoo/languages","stargazers_url":"https://api.github.com/repos/2600hz/kazoo/stargazers","contributors_url":"https://api.github.com/repos/2600hz/kazoo/contributors","subscribers_url":"https://api.github.com/repos/2600hz/kazoo/subscribers","subscription_url":"https://api.github.com/repos/2600hz/kazoo/subscription","commits_url":"https://api.github.com/repos/2600hz/kazoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/2600hz/kazoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/2600hz/kazoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/2600hz/kazoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/2600hz/kazoo/contents/{+path}","compare_url":"https://api.github.com/repos/2600hz/kazoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/2600hz/kazoo/merges","archive_url":"https://api.github.com/repos/2600hz/kazoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/2600hz/kazoo/downloads","issues_url":"https://api.github.com/repos/2600hz/kazoo/issues{/number}","pulls_url":"https://api.github.com/repos/2600hz/kazoo/pulls{/number}","milestones_url":"https://api.github.com/repos/2600hz/kazoo/milestones{/number}","notifications_url":"https://api.github.com/repos/2600hz/kazoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/2600hz/kazoo/labels{/name}","releases_url":"https://api.github.com/repos/2600hz/kazoo/releases{/id}","created_at":"2011-12-12T18:08:02Z","updated_at":"2015-06-20T09:47:25Z","pushed_at":"2015-06-23T01:16:28Z","git_url":"git://github.com/2600hz/kazoo.git","ssh_url":"git@github.com:2600hz/kazoo.git","clone_url":"https://github.com/2600hz/kazoo.git","svn_url":"https://github.com/2600hz/kazoo","homepage":"","size":546720,"stargazers_count":262,"watchers_count":262,"language":"Erlang","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":136,"mirror_url":null,"open_issues_count":16,"forks":136,"open_issues":16,"watchers":262,"default_branch":"master"}},"base":{"label":"2600hz:master","ref":"master","sha":"4ef0282861219fd10a563c0270d085aad2f9d9c4","user":{"login":"2600hz","id":408801,"avatar_url":"https://avatars.githubusercontent.com/u/408801?v=3","gravatar_id":"","url":"https://api.github.com/users/2600hz","html_url":"https://github.com/2600hz","followers_url":"https://api.github.com/users/2600hz/followers","following_url":"https://api.github.com/users/2600hz/following{/other_user}","gists_url":"https://api.github.com/users/2600hz/gists{/gist_id}","starred_url":"https://api.github.com/users/2600hz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/2600hz/subscriptions","organizations_url":"https://api.github.com/users/2600hz/orgs","repos_url":"https://api.github.com/users/2600hz/repos","events_url":"https://api.github.com/users/2600hz/events{/privacy}","received_events_url":"https://api.github.com/users/2600hz/received_events","type":"Organization","site_admin":false},"repo":{"id":2966241,"name":"kazoo","full_name":"2600hz/kazoo","owner":{"login":"2600hz","id":408801,"avatar_url":"https://avatars.githubusercontent.com/u/408801?v=3","gravatar_id":"","url":"https://api.github.com/users/2600hz","html_url":"https://github.com/2600hz","followers_url":"https://api.github.com/users/2600hz/followers","following_url":"https://api.github.com/users/2600hz/following{/other_user}","gists_url":"https://api.github.com/users/2600hz/gists{/gist_id}","starred_url":"https://api.github.com/users/2600hz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/2600hz/subscriptions","organizations_url":"https://api.github.com/users/2600hz/orgs","repos_url":"https://api.github.com/users/2600hz/repos","events_url":"https://api.github.com/users/2600hz/events{/privacy}","received_events_url":"https://api.github.com/users/2600hz/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/2600hz/kazoo","description":"","fork":false,"url":"https://api.github.com/repos/2600hz/kazoo","forks_url":"https://api.github.com/repos/2600hz/kazoo/forks","keys_url":"https://api.github.com/repos/2600hz/kazoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/2600hz/kazoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/2600hz/kazoo/teams","hooks_url":"https://api.github.com/repos/2600hz/kazoo/hooks","issue_events_url":"https://api.github.com/repos/2600hz/kazoo/issues/events{/number}","events_url":"https://api.github.com/repos/2600hz/kazoo/events","assignees_url":"https://api.github.com/repos/2600hz/kazoo/assignees{/user}","branches_url":"https://api.github.com/repos/2600hz/kazoo/branches{/branch}","tags_url":"https://api.github.com/repos/2600hz/kazoo/tags","blobs_url":"https://api.github.com/repos/2600hz/kazoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/2600hz/kazoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/2600hz/kazoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/2600hz/kazoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/2600hz/kazoo/statuses/{sha}","languages_url":"https://api.github.com/repos/2600hz/kazoo/languages","stargazers_url":"https://api.github.com/repos/2600hz/kazoo/stargazers","contributors_url":"https://api.github.com/repos/2600hz/kazoo/contributors","subscribers_url":"https://api.github.com/repos/2600hz/kazoo/subscribers","subscription_url":"https://api.github.com/repos/2600hz/kazoo/subscription","commits_url":"https://api.github.com/repos/2600hz/kazoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/2600hz/kazoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/2600hz/kazoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/2600hz/kazoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/2600hz/kazoo/contents/{+path}","compare_url":"https://api.github.com/repos/2600hz/kazoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/2600hz/kazoo/merges","archive_url":"https://api.github.com/repos/2600hz/kazoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/2600hz/kazoo/downloads","issues_url":"https://api.github.com/repos/2600hz/kazoo/issues{/number}","pulls_url":"https://api.github.com/repos/2600hz/kazoo/pulls{/number}","milestones_url":"https://api.github.com/repos/2600hz/kazoo/milestones{/number}","notifications_url":"https://api.github.com/repos/2600hz/kazoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/2600hz/kazoo/labels{/name}","releases_url":"https://api.github.com/repos/2600hz/kazoo/releases{/id}","created_at":"2011-12-12T18:08:02Z","updated_at":"2015-06-20T09:47:25Z","pushed_at":"2015-06-23T01:16:28Z","git_url":"git://github.com/2600hz/kazoo.git","ssh_url":"git@github.com:2600hz/kazoo.git","clone_url":"https://github.com/2600hz/kazoo.git","svn_url":"https://github.com/2600hz/kazoo","homepage":"","size":546720,"stargazers_count":262,"watchers_count":262,"language":"Erlang","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":136,"mirror_url":null,"open_issues_count":16,"forks":136,"open_issues":16,"watchers":262,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/2600hz/kazoo/pulls/1111"},"html":{"href":"https://github.com/2600hz/kazoo/pull/1111"},"issue":{"href":"https://api.github.com/repos/2600hz/kazoo/issues/1111"},"comments":{"href":"https://api.github.com/repos/2600hz/kazoo/issues/1111/comments"},"review_comments":{"href":"https://api.github.com/repos/2600hz/kazoo/pulls/1111/comments"},"review_comment":{"href":"https://api.github.com/repos/2600hz/kazoo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/2600hz/kazoo/pulls/1111/commits"},"statuses":{"href":"https://api.github.com/repos/2600hz/kazoo/statuses/e2ba15ee9ed4c1ccd14cebf20e55c194b3f4d3e6"}}}}