{"action":"created","issue":{"url":"https://api.github.com/repos/ipfs/py-ipfs-api/issues/146","repository_url":"https://api.github.com/repos/ipfs/py-ipfs-api","labels_url":"https://api.github.com/repos/ipfs/py-ipfs-api/issues/146/labels{/name}","comments_url":"https://api.github.com/repos/ipfs/py-ipfs-api/issues/146/comments","events_url":"https://api.github.com/repos/ipfs/py-ipfs-api/issues/146/events","html_url":"https://github.com/ipfs/py-ipfs-api/pull/146","id":383995676,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMzMzIzNjQw","number":146,"title":"Upgrade API to comply to the IPFS Interface specification","user":{"login":"alexander255","id":246386,"node_id":"MDQ6VXNlcjI0NjM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/246386?v=4","gravatar_id":"","url":"https://api.github.com/users/alexander255","html_url":"https://github.com/alexander255","followers_url":"https://api.github.com/users/alexander255/followers","following_url":"https://api.github.com/users/alexander255/following{/other_user}","gists_url":"https://api.github.com/users/alexander255/gists{/gist_id}","starred_url":"https://api.github.com/users/alexander255/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexander255/subscriptions","organizations_url":"https://api.github.com/users/alexander255/orgs","repos_url":"https://api.github.com/users/alexander255/repos","events_url":"https://api.github.com/users/alexander255/events{/privacy}","received_events_url":"https://api.github.com/users/alexander255/received_events","type":"User","site_admin":false},"labels":[{"id":314374004,"node_id":"MDU6TGFiZWwzMTQzNzQwMDQ=","url":"https://api.github.com/repos/ipfs/py-ipfs-api/labels/needs%20review","name":"needs review","color":"0052cc","default":false}],"state":"open","locked":false,"assignee":{"login":"alexander255","id":246386,"node_id":"MDQ6VXNlcjI0NjM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/246386?v=4","gravatar_id":"","url":"https://api.github.com/users/alexander255","html_url":"https://github.com/alexander255","followers_url":"https://api.github.com/users/alexander255/followers","following_url":"https://api.github.com/users/alexander255/following{/other_user}","gists_url":"https://api.github.com/users/alexander255/gists{/gist_id}","starred_url":"https://api.github.com/users/alexander255/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexander255/subscriptions","organizations_url":"https://api.github.com/users/alexander255/orgs","repos_url":"https://api.github.com/users/alexander255/repos","events_url":"https://api.github.com/users/alexander255/events{/privacy}","received_events_url":"https://api.github.com/users/alexander255/received_events","type":"User","site_admin":false},"assignees":[{"login":"alexander255","id":246386,"node_id":"MDQ6VXNlcjI0NjM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/246386?v=4","gravatar_id":"","url":"https://api.github.com/users/alexander255","html_url":"https://github.com/alexander255","followers_url":"https://api.github.com/users/alexander255/followers","following_url":"https://api.github.com/users/alexander255/following{/other_user}","gists_url":"https://api.github.com/users/alexander255/gists{/gist_id}","starred_url":"https://api.github.com/users/alexander255/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexander255/subscriptions","organizations_url":"https://api.github.com/users/alexander255/orgs","repos_url":"https://api.github.com/users/alexander255/repos","events_url":"https://api.github.com/users/alexander255/events{/privacy}","received_events_url":"https://api.github.com/users/alexander255/received_events","type":"User","site_admin":false}],"milestone":null,"comments":2,"created_at":"2018-11-24T14:52:18Z","updated_at":"2018-12-13T11:33:39Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/ipfs/py-ipfs-api/pulls/146","html_url":"https://github.com/ipfs/py-ipfs-api/pull/146","diff_url":"https://github.com/ipfs/py-ipfs-api/pull/146.diff","patch_url":"https://github.com/ipfs/py-ipfs-api/pull/146.patch"},"body":"See https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC for the (JS) spec we're trying to mimic here. Feedback from the authors of that spec (particularly @daviddias @alanshaw) would be highly appreciated. All of these changes are fully backwards-compatible (note that I didn't even touch any tests!)."},"comment":{"url":"https://api.github.com/repos/ipfs/py-ipfs-api/issues/comments/446937155","html_url":"https://github.com/ipfs/py-ipfs-api/pull/146#issuecomment-446937155","issue_url":"https://api.github.com/repos/ipfs/py-ipfs-api/issues/146","id":446937155,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NjkzNzE1NQ==","user":{"login":"alexander255","id":246386,"node_id":"MDQ6VXNlcjI0NjM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/246386?v=4","gravatar_id":"","url":"https://api.github.com/users/alexander255","html_url":"https://github.com/alexander255","followers_url":"https://api.github.com/users/alexander255/followers","following_url":"https://api.github.com/users/alexander255/following{/other_user}","gists_url":"https://api.github.com/users/alexander255/gists{/gist_id}","starred_url":"https://api.github.com/users/alexander255/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexander255/subscriptions","organizations_url":"https://api.github.com/users/alexander255/orgs","repos_url":"https://api.github.com/users/alexander255/repos","events_url":"https://api.github.com/users/alexander255/events{/privacy}","received_events_url":"https://api.github.com/users/alexander255/received_events","type":"User","site_admin":false},"created_at":"2018-12-13T11:33:39Z","updated_at":"2018-12-13T11:33:39Z","author_association":"CONTRIBUTOR","body":"@daviddias: Fair enough I guess :slightly_smiling_face: \r\n\r\nThe main point of this PR is changing the way the existing IPFS API is presented to users of the library. For instance, previously `ipfs files cp` would have been `client.files_cp(…)` in Python; with this PR it would become `client.files.cp(…)` (like in JavaScript). I made these changes in accordance with the [`ipfs-interface-core` spec](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC). In particular:\r\n\r\n  * I split the giant `client.py` file into several roughly along the lines of that spec (but this is not user-visible anyways)\r\n     * See [`ipfsapi/client/__init__.py`](https://github.com/ipfs/py-ipfs-api/blob/26d3b23e7af2e997792fcaa196e32576e1b7f1bb/ipfsapi/client/__init__.py#L87) for the merging\r\n  * I changed method names to be of the `client.a.b(…)` style where appropriate\r\n     * For instance [`ipfsapi/client/files.py`](https://github.com/ipfs/py-ipfs-api/blob/26d3b23e7af2e997792fcaa196e32576e1b7f1bb/ipfsapi/client/files.py)\r\n\r\n(Not that this will also be released as part of the new `ipfshttpclient` library with the current code being for the old `ipfsapi` library and including the backward-compatibility shims.)\r\n\r\nSome questions, mainly based on the discussions in https://github.com/ipfs/interface-ipfs-core/issues/284:\r\n\r\n  * Is the split of the files module into `client.{add,file_ls,get,cat,ls}` on the one hand vs `client.files.{cp,ls,mkdir,mv,read,rm,stat,write}` on the hand still current or should things be done differently now that we have a chance to break API? (Remember I'll push an update for the old library adding shims and wrapping the new version.)\r\n  * What's the point of `/api/v0/file/ls` vs `/api/v0/ls` anyways? Can one of these be dropped?\r\n  * What's this chat about `ipfsx` and how does it relate to the exposed interfaces?\r\n  * Is `/api/v0/bitswap/unwant` dead? It's giving me errors on newer versions of IPFS.\r\n  * Any other feedback you may have.\r\n\r\nHope this is more useful this time 😊"}}
{"actor":{"display_login":"alexander255"}}