{"action":"created","issue":{"url":"https://api.github.com/repos/hammerlab/cycledash/issues/617","labels_url":"https://api.github.com/repos/hammerlab/cycledash/issues/617/labels{/name}","comments_url":"https://api.github.com/repos/hammerlab/cycledash/issues/617/comments","events_url":"https://api.github.com/repos/hammerlab/cycledash/issues/617/events","html_url":"https://github.com/hammerlab/cycledash/pull/617","id":78217909,"number":617,"title":"Migrate and greatly simplify Python JSON API","user":{"login":"ihodes","id":167803,"avatar_url":"https://avatars.githubusercontent.com/u/167803?v=3","gravatar_id":"","url":"https://api.github.com/users/ihodes","html_url":"https://github.com/ihodes","followers_url":"https://api.github.com/users/ihodes/followers","following_url":"https://api.github.com/users/ihodes/following{/other_user}","gists_url":"https://api.github.com/users/ihodes/gists{/gist_id}","starred_url":"https://api.github.com/users/ihodes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihodes/subscriptions","organizations_url":"https://api.github.com/users/ihodes/orgs","repos_url":"https://api.github.com/users/ihodes/repos","events_url":"https://api.github.com/users/ihodes/events{/privacy}","received_events_url":"https://api.github.com/users/ihodes/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"danvk","id":98301,"avatar_url":"https://avatars.githubusercontent.com/u/98301?v=3","gravatar_id":"","url":"https://api.github.com/users/danvk","html_url":"https://github.com/danvk","followers_url":"https://api.github.com/users/danvk/followers","following_url":"https://api.github.com/users/danvk/following{/other_user}","gists_url":"https://api.github.com/users/danvk/gists{/gist_id}","starred_url":"https://api.github.com/users/danvk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danvk/subscriptions","organizations_url":"https://api.github.com/users/danvk/orgs","repos_url":"https://api.github.com/users/danvk/repos","events_url":"https://api.github.com/users/danvk/events{/privacy}","received_events_url":"https://api.github.com/users/danvk/received_events","type":"User","site_admin":false},"milestone":null,"comments":4,"created_at":"2015-05-19T19:21:52Z","updated_at":"2015-05-20T20:37:32Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/hammerlab/cycledash/pulls/617","html_url":"https://github.com/hammerlab/cycledash/pull/617","diff_url":"https://github.com/hammerlab/cycledash/pull/617.diff","patch_url":"https://github.com/hammerlab/cycledash/pull/617.patch"},"body":"The goal of this PR is to simplify the JSON API, make the API more\r\nuniform and RESTful, and provide better error messages.\r\n\r\nEventually the work in this PR should be used to automatically generate\r\ndocumentation.\r\n\r\nUse flask-restful\r\nReturn camel-cased JSON\r\nAccept camel-cased JSON\r\nBetter error handling and responses\r\nMuch shorter, easier to read API code\r\nIncrease test coverage on API: comments + runs are now tested! \r\nRework comments JS to use new API\r\nRework runs page to use new API\r\nRework tasks to use new API\r\nRework examine page to use new API\r\nRework tests of JS to work with new comment fields (camelcase)\r\nUpdate API docs\r\nForms submit via AJAX, and errors show in an alert()\r\n\r\nLater, in a different PR (https://github.com/hammerlab/cycledash/issues/621):\r\n> Migrate to use voluptuous for `marshal_with`, and add docstring to each field in the request/response schemas. These can later be used to generate documentation.\r\n\r\n<!-- Reviewable:start -->\r\n[<img src=\"https://reviewable.io/review_button.png\" height=40 alt=\"Review on Reviewable\"/>](https://reviewable.io/reviews/hammerlab/cycledash/617)\r\n<!-- Reviewable:end -->\r\n"},"comment":{"url":"https://api.github.com/repos/hammerlab/cycledash/issues/comments/104030679","html_url":"https://github.com/hammerlab/cycledash/pull/617#issuecomment-104030679","issue_url":"https://api.github.com/repos/hammerlab/cycledash/issues/617","id":104030679,"user":{"login":"danvk","id":98301,"avatar_url":"https://avatars.githubusercontent.com/u/98301?v=3","gravatar_id":"","url":"https://api.github.com/users/danvk","html_url":"https://github.com/danvk","followers_url":"https://api.github.com/users/danvk/followers","following_url":"https://api.github.com/users/danvk/following{/other_user}","gists_url":"https://api.github.com/users/danvk/gists{/gist_id}","starred_url":"https://api.github.com/users/danvk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danvk/subscriptions","organizations_url":"https://api.github.com/users/danvk/orgs","repos_url":"https://api.github.com/users/danvk/repos","events_url":"https://api.github.com/users/danvk/events{/privacy}","received_events_url":"https://api.github.com/users/danvk/received_events","type":"User","site_admin":false},"created_at":"2015-05-20T20:37:32Z","updated_at":"2015-05-20T20:37:32Z","body":"looks good\n\n---\n\nReview status: 19 of 36 files reviewed, 1 unresolved discussion, all commit checks successful.\nReviewed files:\n- DEVELOP.md @ r3\n\n---\n\n<sup>**[tests/js/CommentUtils.js, line 75 \\[r2\\]](https://reviewable.io:443/reviews/hammerlab/cycledash/617#-Jpme1lclpGGde9HJ8B4)** ([raw file](https://github.com/hammerlab/cycledash/blob/76e0136b0b22f02fecd2995c6b43dc818063e384/tests/js/CommentUtils.js#L75)):</sup>\nit just feels unnecessarily risky, e.g. `chr1` position 23 would get the same key as `chr12` position 3.\n\n---\n\n\nComments from the [review on Reviewable.io](https://reviewable.io:443/reviews/hammerlab/cycledash/617)\n<!-- Sent from Reviewable.io -->\n"}}