{"action":"created","comment":{"url":"https://api.github.com/repos/fnproject/fn/pulls/comments/184390663","pull_request_review_id":115573759,"id":184390663,"diff_hunk":"@@ -0,0 +1,416 @@\n+# Fn 2.0\n+\n+## NOTE: This is a proposal for updating Fn with the following goals:\n+\n+* Split HTTP routes from functions\n+* Support CloudEvent messages as the native format throughout\n+* Simplify everything\n+* Modularize components\n+* Namespacing\n+\n+## Removals\n+\n+* Default, HTTP and JSON formats will be removed\n+* Cold functions will be removed\n+* Async, queues are event sources now\n+\n+## Terminology\n+\n+Fn follows the terminology defined here: https://github.com/cloudevents/spec/blob/master/spec.md#notations-and-terminology\n+\n+As well as the following:\n+\n+### Event Sources\n+\n+Event sources are things that emit events and pass the event messages to Fn. Three common event sources are:\n+\n+* HTTP\n+* Scheduler\n+* Queue\n+\n+### Functions\n+\n+Functions are little programs that accept a defined input and output a defined output. They do not need to be aware of any other parts\n+of the system and can run standalone; from the command line, etc. These can be written in any language and are packaged up as a container image. \n+\n+* Functions read from STDIN, write to STDOUT and log to STDERR\n+* Functions are packaged in container images\n+* Input is a stream of CloudEvent messages in JSON format\n+* Output is a stream of CloudEvent messages in JSON format\n+  * With some additions to deal with things like error handling and protocol specific responses (eg: function wants to return a specific http status code if it was fired from an HTTP event source.)\n+\n+#### Function Error Handling\n+\n+Errors will be returned as a CloudEvent with an “error” attribute, no “data” attribute, describing the error. \n+\n+```\n+{\n+  \"cloud-events-version\": \"0.1\",\n+  \"event-id\": \"6480da1a-5028-4301-acc3-fbae628207b3\",\n+  \"source\": \"http://example.com/repomanager\",\n+  \"event-type\": \"http-request\",\n+  \"event-type-version\": \"v1.5\",\n+  \"event-time\": \"2018-04-01T23:12:34Z\",\n+  \"content-type\": \"application/json\",\n+  “error”: {","path":"docs/fn-2.0/README.md","position":55,"original_position":55,"commit_id":"7f00dcfb49d18b3868aa3c5012ef118933fb278d","original_commit_id":"7f00dcfb49d18b3868aa3c5012ef118933fb278d","user":{"login":"denismakogon","id":3034091,"avatar_url":"https://avatars1.githubusercontent.com/u/3034091?v=4","gravatar_id":"","url":"https://api.github.com/users/denismakogon","html_url":"https://github.com/denismakogon","followers_url":"https://api.github.com/users/denismakogon/followers","following_url":"https://api.github.com/users/denismakogon/following{/other_user}","gists_url":"https://api.github.com/users/denismakogon/gists{/gist_id}","starred_url":"https://api.github.com/users/denismakogon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denismakogon/subscriptions","organizations_url":"https://api.github.com/users/denismakogon/orgs","repos_url":"https://api.github.com/users/denismakogon/repos","events_url":"https://api.github.com/users/denismakogon/events{/privacy}","received_events_url":"https://api.github.com/users/denismakogon/received_events","type":"User","site_admin":false},"body":"That's true. If we want to return an error from the function we definitely need to use extensions.\r\nAt this moment the function is responsible for sending back complete CloudEvent object, which looks quite complex and unnecessary because the protocol dispatcher can do that for each function's call.\r\nIMHO there is no strong requirement for a function to write back complete CloudEvent.\r\n","created_at":"2018-04-26T13:34:43Z","updated_at":"2018-04-26T14:01:15Z","html_url":"https://github.com/fnproject/fn/pull/957#discussion_r184390663","pull_request_url":"https://api.github.com/repos/fnproject/fn/pulls/957","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/fnproject/fn/pulls/comments/184390663"},"html":{"href":"https://github.com/fnproject/fn/pull/957#discussion_r184390663"},"pull_request":{"href":"https://api.github.com/repos/fnproject/fn/pulls/957"}},"in_reply_to_id":184243142},"pull_request":{"url":"https://api.github.com/repos/fnproject/fn/pulls/957","id":184189013,"html_url":"https://github.com/fnproject/fn/pull/957","diff_url":"https://github.com/fnproject/fn/pull/957.diff","patch_url":"https://github.com/fnproject/fn/pull/957.patch","issue_url":"https://api.github.com/repos/fnproject/fn/issues/957","number":957,"state":"open","locked":false,"title":"[Proposal] Fn 2.0","user":{"login":"rdallman","id":2935111,"avatar_url":"https://avatars0.githubusercontent.com/u/2935111?v=4","gravatar_id":"","url":"https://api.github.com/users/rdallman","html_url":"https://github.com/rdallman","followers_url":"https://api.github.com/users/rdallman/followers","following_url":"https://api.github.com/users/rdallman/following{/other_user}","gists_url":"https://api.github.com/users/rdallman/gists{/gist_id}","starred_url":"https://api.github.com/users/rdallman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rdallman/subscriptions","organizations_url":"https://api.github.com/users/rdallman/orgs","repos_url":"https://api.github.com/users/rdallman/repos","events_url":"https://api.github.com/users/rdallman/events{/privacy}","received_events_url":"https://api.github.com/users/rdallman/received_events","type":"User","site_admin":false},"body":"Here be the doc. This tries to make a lot of the API changes we need to make in one fell swoop. Perhaps this is a bad idea, we can likely stage things though to where it's edible, it's nice to have a cohesive plan (if this is such... there was an attempt). There are a number of open questions at the top of the swagger2.yaml file, if you have opinions that is a great place to start after reviewing the doc. additionally, large questions remain around the log/call API, and this is a good chance to make any changes there. This doc also doesn't handle explicitly creating a separate function registry API, we can cross that bridge when we get to it, and just have a uniform function API for now. The doc itself has all the content needed for context, won't add much more here.\r\n\r\nFeedback is more than welcome from anyone (from nits to redesigning entire components), if you would like to work on any specific pieces then let's chat about it. we should maybe break this up into smaller issues to work on, once we're in general agreement, and have more involved discussions over details on those?\r\n\r\nI forgot to validate my swagger file, but I don't think it really holds up the discussion, i was gonna link it to comb through a rendered version here but sorry... i'll try to fix this tomorrow, i'm at the point where i have to add printlns to the validator now, boo. it probably still needs some further massaging, can add along w/ any feedback here. \r\n\r\nrelevant issues (possibly closing): #947 #858 #885 #870 #824 #819 #817 #785 #763 #714 #574 #595 #500 #446 #281 #155 #137 \r\n","created_at":"2018-04-25T23:23:27Z","updated_at":"2018-04-26T14:01:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"71bca45e951830295688db5481567a368ffe7e7e","assignee":null,"assignees":[],"requested_reviewers":[{"login":"msgodf","id":408138,"avatar_url":"https://avatars3.githubusercontent.com/u/408138?v=4","gravatar_id":"","url":"https://api.github.com/users/msgodf","html_url":"https://github.com/msgodf","followers_url":"https://api.github.com/users/msgodf/followers","following_url":"https://api.github.com/users/msgodf/following{/other_user}","gists_url":"https://api.github.com/users/msgodf/gists{/gist_id}","starred_url":"https://api.github.com/users/msgodf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msgodf/subscriptions","organizations_url":"https://api.github.com/users/msgodf/orgs","repos_url":"https://api.github.com/users/msgodf/repos","events_url":"https://api.github.com/users/msgodf/events{/privacy}","received_events_url":"https://api.github.com/users/msgodf/received_events","type":"User","site_admin":false},{"login":"vshiva","id":853115,"avatar_url":"https://avatars2.githubusercontent.com/u/853115?v=4","gravatar_id":"","url":"https://api.github.com/users/vshiva","html_url":"https://github.com/vshiva","followers_url":"https://api.github.com/users/vshiva/followers","following_url":"https://api.github.com/users/vshiva/following{/other_user}","gists_url":"https://api.github.com/users/vshiva/gists{/gist_id}","starred_url":"https://api.github.com/users/vshiva/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vshiva/subscriptions","organizations_url":"https://api.github.com/users/vshiva/orgs","repos_url":"https://api.github.com/users/vshiva/repos","events_url":"https://api.github.com/users/vshiva/events{/privacy}","received_events_url":"https://api.github.com/users/vshiva/received_events","type":"User","site_admin":false},{"login":"shaunsmith","id":1213015,"avatar_url":"https://avatars3.githubusercontent.com/u/1213015?v=4","gravatar_id":"","url":"https://api.github.com/users/shaunsmith","html_url":"https://github.com/shaunsmith","followers_url":"https://api.github.com/users/shaunsmith/followers","following_url":"https://api.github.com/users/shaunsmith/following{/other_user}","gists_url":"https://api.github.com/users/shaunsmith/gists{/gist_id}","starred_url":"https://api.github.com/users/shaunsmith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shaunsmith/subscriptions","organizations_url":"https://api.github.com/users/shaunsmith/orgs","repos_url":"https://api.github.com/users/shaunsmith/repos","events_url":"https://api.github.com/users/shaunsmith/events{/privacy}","received_events_url":"https://api.github.com/users/shaunsmith/received_events","type":"User","site_admin":false},{"login":"jan-g","id":3430517,"avatar_url":"https://avatars3.githubusercontent.com/u/3430517?v=4","gravatar_id":"","url":"https://api.github.com/users/jan-g","html_url":"https://github.com/jan-g","followers_url":"https://api.github.com/users/jan-g/followers","following_url":"https://api.github.com/users/jan-g/following{/other_user}","gists_url":"https://api.github.com/users/jan-g/gists{/gist_id}","starred_url":"https://api.github.com/users/jan-g/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jan-g/subscriptions","organizations_url":"https://api.github.com/users/jan-g/orgs","repos_url":"https://api.github.com/users/jan-g/repos","events_url":"https://api.github.com/users/jan-g/events{/privacy}","received_events_url":"https://api.github.com/users/jan-g/received_events","type":"User","site_admin":false},{"login":"rikgibson","id":16211574,"avatar_url":"https://avatars3.githubusercontent.com/u/16211574?v=4","gravatar_id":"","url":"https://api.github.com/users/rikgibson","html_url":"https://github.com/rikgibson","followers_url":"https://api.github.com/users/rikgibson/followers","following_url":"https://api.github.com/users/rikgibson/following{/other_user}","gists_url":"https://api.github.com/users/rikgibson/gists{/gist_id}","starred_url":"https://api.github.com/users/rikgibson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rikgibson/subscriptions","organizations_url":"https://api.github.com/users/rikgibson/orgs","repos_url":"https://api.github.com/users/rikgibson/repos","events_url":"https://api.github.com/users/rikgibson/events{/privacy}","received_events_url":"https://api.github.com/users/rikgibson/received_events","type":"User","site_admin":false},{"login":"gviedma","id":21263124,"avatar_url":"https://avatars0.githubusercontent.com/u/21263124?v=4","gravatar_id":"","url":"https://api.github.com/users/gviedma","html_url":"https://github.com/gviedma","followers_url":"https://api.github.com/users/gviedma/followers","following_url":"https://api.github.com/users/gviedma/following{/other_user}","gists_url":"https://api.github.com/users/gviedma/gists{/gist_id}","starred_url":"https://api.github.com/users/gviedma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gviedma/subscriptions","organizations_url":"https://api.github.com/users/gviedma/orgs","repos_url":"https://api.github.com/users/gviedma/repos","events_url":"https://api.github.com/users/gviedma/events{/privacy}","received_events_url":"https://api.github.com/users/gviedma/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/fnproject/fn/pulls/957/commits","review_comments_url":"https://api.github.com/repos/fnproject/fn/pulls/957/comments","review_comment_url":"https://api.github.com/repos/fnproject/fn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fnproject/fn/issues/957/comments","statuses_url":"https://api.github.com/repos/fnproject/fn/statuses/7f00dcfb49d18b3868aa3c5012ef118933fb278d","head":{"label":"fnproject:fn2.0","ref":"fn2.0","sha":"7f00dcfb49d18b3868aa3c5012ef118933fb278d","user":{"login":"fnproject","id":30273834,"avatar_url":"https://avatars2.githubusercontent.com/u/30273834?v=4","gravatar_id":"","url":"https://api.github.com/users/fnproject","html_url":"https://github.com/fnproject","followers_url":"https://api.github.com/users/fnproject/followers","following_url":"https://api.github.com/users/fnproject/following{/other_user}","gists_url":"https://api.github.com/users/fnproject/gists{/gist_id}","starred_url":"https://api.github.com/users/fnproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fnproject/subscriptions","organizations_url":"https://api.github.com/users/fnproject/orgs","repos_url":"https://api.github.com/users/fnproject/repos","events_url":"https://api.github.com/users/fnproject/events{/privacy}","received_events_url":"https://api.github.com/users/fnproject/received_events","type":"Organization","site_admin":false},"repo":{"id":97652025,"name":"fn","full_name":"fnproject/fn","owner":{"login":"fnproject","id":30273834,"avatar_url":"https://avatars2.githubusercontent.com/u/30273834?v=4","gravatar_id":"","url":"https://api.github.com/users/fnproject","html_url":"https://github.com/fnproject","followers_url":"https://api.github.com/users/fnproject/followers","following_url":"https://api.github.com/users/fnproject/following{/other_user}","gists_url":"https://api.github.com/users/fnproject/gists{/gist_id}","starred_url":"https://api.github.com/users/fnproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fnproject/subscriptions","organizations_url":"https://api.github.com/users/fnproject/orgs","repos_url":"https://api.github.com/users/fnproject/repos","events_url":"https://api.github.com/users/fnproject/events{/privacy}","received_events_url":"https://api.github.com/users/fnproject/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fnproject/fn","description":"The container native, cloud agnostic serverless platform.","fork":false,"url":"https://api.github.com/repos/fnproject/fn","forks_url":"https://api.github.com/repos/fnproject/fn/forks","keys_url":"https://api.github.com/repos/fnproject/fn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fnproject/fn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fnproject/fn/teams","hooks_url":"https://api.github.com/repos/fnproject/fn/hooks","issue_events_url":"https://api.github.com/repos/fnproject/fn/issues/events{/number}","events_url":"https://api.github.com/repos/fnproject/fn/events","assignees_url":"https://api.github.com/repos/fnproject/fn/assignees{/user}","branches_url":"https://api.github.com/repos/fnproject/fn/branches{/branch}","tags_url":"https://api.github.com/repos/fnproject/fn/tags","blobs_url":"https://api.github.com/repos/fnproject/fn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fnproject/fn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fnproject/fn/git/refs{/sha}","trees_url":"https://api.github.com/repos/fnproject/fn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fnproject/fn/statuses/{sha}","languages_url":"https://api.github.com/repos/fnproject/fn/languages","stargazers_url":"https://api.github.com/repos/fnproject/fn/stargazers","contributors_url":"https://api.github.com/repos/fnproject/fn/contributors","subscribers_url":"https://api.github.com/repos/fnproject/fn/subscribers","subscription_url":"https://api.github.com/repos/fnproject/fn/subscription","commits_url":"https://api.github.com/repos/fnproject/fn/commits{/sha}","git_commits_url":"https://api.github.com/repos/fnproject/fn/git/commits{/sha}","comments_url":"https://api.github.com/repos/fnproject/fn/comments{/number}","issue_comment_url":"https://api.github.com/repos/fnproject/fn/issues/comments{/number}","contents_url":"https://api.github.com/repos/fnproject/fn/contents/{+path}","compare_url":"https://api.github.com/repos/fnproject/fn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fnproject/fn/merges","archive_url":"https://api.github.com/repos/fnproject/fn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fnproject/fn/downloads","issues_url":"https://api.github.com/repos/fnproject/fn/issues{/number}","pulls_url":"https://api.github.com/repos/fnproject/fn/pulls{/number}","milestones_url":"https://api.github.com/repos/fnproject/fn/milestones{/number}","notifications_url":"https://api.github.com/repos/fnproject/fn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fnproject/fn/labels{/name}","releases_url":"https://api.github.com/repos/fnproject/fn/releases{/id}","deployments_url":"https://api.github.com/repos/fnproject/fn/deployments","created_at":"2017-07-18T23:22:46Z","updated_at":"2018-04-26T13:34:16Z","pushed_at":"2018-04-25T23:23:27Z","git_url":"git://github.com/fnproject/fn.git","ssh_url":"git@github.com:fnproject/fn.git","clone_url":"https://github.com/fnproject/fn.git","svn_url":"https://github.com/fnproject/fn","homepage":"http://fnproject.io","size":152245,"stargazers_count":2703,"watchers_count":2703,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":188,"mirror_url":null,"archived":false,"open_issues_count":107,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":188,"open_issues":107,"watchers":2703,"default_branch":"master"}},"base":{"label":"fnproject:master","ref":"master","sha":"1124c014ec6e2a1fcce69b50a03025a476ee3e0c","user":{"login":"fnproject","id":30273834,"avatar_url":"https://avatars2.githubusercontent.com/u/30273834?v=4","gravatar_id":"","url":"https://api.github.com/users/fnproject","html_url":"https://github.com/fnproject","followers_url":"https://api.github.com/users/fnproject/followers","following_url":"https://api.github.com/users/fnproject/following{/other_user}","gists_url":"https://api.github.com/users/fnproject/gists{/gist_id}","starred_url":"https://api.github.com/users/fnproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fnproject/subscriptions","organizations_url":"https://api.github.com/users/fnproject/orgs","repos_url":"https://api.github.com/users/fnproject/repos","events_url":"https://api.github.com/users/fnproject/events{/privacy}","received_events_url":"https://api.github.com/users/fnproject/received_events","type":"Organization","site_admin":false},"repo":{"id":97652025,"name":"fn","full_name":"fnproject/fn","owner":{"login":"fnproject","id":30273834,"avatar_url":"https://avatars2.githubusercontent.com/u/30273834?v=4","gravatar_id":"","url":"https://api.github.com/users/fnproject","html_url":"https://github.com/fnproject","followers_url":"https://api.github.com/users/fnproject/followers","following_url":"https://api.github.com/users/fnproject/following{/other_user}","gists_url":"https://api.github.com/users/fnproject/gists{/gist_id}","starred_url":"https://api.github.com/users/fnproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fnproject/subscriptions","organizations_url":"https://api.github.com/users/fnproject/orgs","repos_url":"https://api.github.com/users/fnproject/repos","events_url":"https://api.github.com/users/fnproject/events{/privacy}","received_events_url":"https://api.github.com/users/fnproject/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fnproject/fn","description":"The container native, cloud agnostic serverless platform.","fork":false,"url":"https://api.github.com/repos/fnproject/fn","forks_url":"https://api.github.com/repos/fnproject/fn/forks","keys_url":"https://api.github.com/repos/fnproject/fn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fnproject/fn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fnproject/fn/teams","hooks_url":"https://api.github.com/repos/fnproject/fn/hooks","issue_events_url":"https://api.github.com/repos/fnproject/fn/issues/events{/number}","events_url":"https://api.github.com/repos/fnproject/fn/events","assignees_url":"https://api.github.com/repos/fnproject/fn/assignees{/user}","branches_url":"https://api.github.com/repos/fnproject/fn/branches{/branch}","tags_url":"https://api.github.com/repos/fnproject/fn/tags","blobs_url":"https://api.github.com/repos/fnproject/fn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fnproject/fn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fnproject/fn/git/refs{/sha}","trees_url":"https://api.github.com/repos/fnproject/fn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fnproject/fn/statuses/{sha}","languages_url":"https://api.github.com/repos/fnproject/fn/languages","stargazers_url":"https://api.github.com/repos/fnproject/fn/stargazers","contributors_url":"https://api.github.com/repos/fnproject/fn/contributors","subscribers_url":"https://api.github.com/repos/fnproject/fn/subscribers","subscription_url":"https://api.github.com/repos/fnproject/fn/subscription","commits_url":"https://api.github.com/repos/fnproject/fn/commits{/sha}","git_commits_url":"https://api.github.com/repos/fnproject/fn/git/commits{/sha}","comments_url":"https://api.github.com/repos/fnproject/fn/comments{/number}","issue_comment_url":"https://api.github.com/repos/fnproject/fn/issues/comments{/number}","contents_url":"https://api.github.com/repos/fnproject/fn/contents/{+path}","compare_url":"https://api.github.com/repos/fnproject/fn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fnproject/fn/merges","archive_url":"https://api.github.com/repos/fnproject/fn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fnproject/fn/downloads","issues_url":"https://api.github.com/repos/fnproject/fn/issues{/number}","pulls_url":"https://api.github.com/repos/fnproject/fn/pulls{/number}","milestones_url":"https://api.github.com/repos/fnproject/fn/milestones{/number}","notifications_url":"https://api.github.com/repos/fnproject/fn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fnproject/fn/labels{/name}","releases_url":"https://api.github.com/repos/fnproject/fn/releases{/id}","deployments_url":"https://api.github.com/repos/fnproject/fn/deployments","created_at":"2017-07-18T23:22:46Z","updated_at":"2018-04-26T13:34:16Z","pushed_at":"2018-04-25T23:23:27Z","git_url":"git://github.com/fnproject/fn.git","ssh_url":"git@github.com:fnproject/fn.git","clone_url":"https://github.com/fnproject/fn.git","svn_url":"https://github.com/fnproject/fn","homepage":"http://fnproject.io","size":152245,"stargazers_count":2703,"watchers_count":2703,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":188,"mirror_url":null,"archived":false,"open_issues_count":107,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":188,"open_issues":107,"watchers":2703,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fnproject/fn/pulls/957"},"html":{"href":"https://github.com/fnproject/fn/pull/957"},"issue":{"href":"https://api.github.com/repos/fnproject/fn/issues/957"},"comments":{"href":"https://api.github.com/repos/fnproject/fn/issues/957/comments"},"review_comments":{"href":"https://api.github.com/repos/fnproject/fn/pulls/957/comments"},"review_comment":{"href":"https://api.github.com/repos/fnproject/fn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fnproject/fn/pulls/957/commits"},"statuses":{"href":"https://api.github.com/repos/fnproject/fn/statuses/7f00dcfb49d18b3868aa3c5012ef118933fb278d"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"denismakogon"}}