{"action":"created","issue":{"url":"https://api.github.com/repos/jupyter/enhancement-proposals/issues/5","labels_url":"https://api.github.com/repos/jupyter/enhancement-proposals/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/jupyter/enhancement-proposals/issues/5/comments","events_url":"https://api.github.com/repos/jupyter/enhancement-proposals/issues/5/events","html_url":"https://github.com/jupyter/enhancement-proposals/pull/5","id":108547172,"number":5,"title":"Binder API for specifying, launching, and pooling notebook servers.","user":{"login":"rgbkrk","id":836375,"avatar_url":"https://avatars.githubusercontent.com/u/836375?v=3","gravatar_id":"","url":"https://api.github.com/users/rgbkrk","html_url":"https://github.com/rgbkrk","followers_url":"https://api.github.com/users/rgbkrk/followers","following_url":"https://api.github.com/users/rgbkrk/following{/other_user}","gists_url":"https://api.github.com/users/rgbkrk/gists{/gist_id}","starred_url":"https://api.github.com/users/rgbkrk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgbkrk/subscriptions","organizations_url":"https://api.github.com/users/rgbkrk/orgs","repos_url":"https://api.github.com/users/rgbkrk/repos","events_url":"https://api.github.com/users/rgbkrk/events{/privacy}","received_events_url":"https://api.github.com/users/rgbkrk/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":16,"created_at":"2015-09-27T16:46:06Z","updated_at":"2015-10-05T12:42:06Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/jupyter/enhancement-proposals/pulls/5","html_url":"https://github.com/jupyter/enhancement-proposals/pull/5","diff_url":"https://github.com/jupyter/enhancement-proposals/pull/5.diff","patch_url":"https://github.com/jupyter/enhancement-proposals/pull/5.patch"},"body":"The temporary notebook system (tmpnb) was put together to solve some immediate\r\ndemands, the primary of which were:\r\n\r\n* Instantaneous launching of a brand new notebook server\r\n* Fully reproducible environment (installation, code, data, notebooks, etc.)\r\n* Multi-tenant\r\n* Launch as a user hits a URL (no interaction)\r\n* Launch via a simple API (POST to `/api/spawn`), as used by e.g. thebe\r\n\r\nIn order to make running a multi-tenant service like this simple to operate,\r\nmaintain, and extend we need a REST API that assists three classes of users:\r\n\r\n* Front end developers developing against the API (e.g. Thebe and associated contexts)\r\n* Operators (e.g. codeneuro, try.jupyter.org, mybinder)\r\n* Users (consuming kernels as developers, readers, scientists, researchers)\r\n\r\nThere are four main actions:\r\n\r\n* `build` - build an image from the contents of a GitHub repository (or possibly some other specification)\r\n* `stage` - make one or more images ready for deployment, including specifying any additional services, and resource allocation\r\n* `deploy` - deploys a named environment, and provides status about running versions of that environment\r\n* `pool` - pre-allocate and view details about current pools of running environments\r\n\r\nThe four resources that support these actions are:\r\n\r\n* `builds`\r\n* `stagings`\r\n* `servers`\r\n* `pools`\r\n\r\nSome of these operations should have authorization, depending on their usage.\r\nThese are assumed to be run on an API endpoint (e.g. api.mybinder.org) or\r\npotentially with a leading `/api/` path.\r\n\r\nThe README is the main source to review right now and we can work toward a full spec in swagger.\r\n\r\nThis was also brought up in https://github.com/binder-project/binder/issues/8 as well as https://groups.google.com/forum/#!msg/jupyter/2K2Wuem1HB8/r4dQ_6FbEAAJ."},"comment":{"url":"https://api.github.com/repos/jupyter/enhancement-proposals/issues/comments/145515798","html_url":"https://github.com/jupyter/enhancement-proposals/pull/5#issuecomment-145515798","issue_url":"https://api.github.com/repos/jupyter/enhancement-proposals/issues/5","id":145515798,"user":{"login":"rgbkrk","id":836375,"avatar_url":"https://avatars.githubusercontent.com/u/836375?v=3","gravatar_id":"","url":"https://api.github.com/users/rgbkrk","html_url":"https://github.com/rgbkrk","followers_url":"https://api.github.com/users/rgbkrk/followers","following_url":"https://api.github.com/users/rgbkrk/following{/other_user}","gists_url":"https://api.github.com/users/rgbkrk/gists{/gist_id}","starred_url":"https://api.github.com/users/rgbkrk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgbkrk/subscriptions","organizations_url":"https://api.github.com/users/rgbkrk/orgs","repos_url":"https://api.github.com/users/rgbkrk/repos","events_url":"https://api.github.com/users/rgbkrk/events{/privacy}","received_events_url":"https://api.github.com/users/rgbkrk/received_events","type":"User","site_admin":false},"created_at":"2015-10-05T12:42:06Z","updated_at":"2015-10-05T12:42:06Z","body":"Yeah, I imagine `cull-timeout` is for the entire ~~bundle~~ *ahem* pod of services started together and when they're getting shutdown."}}