{"action":"created","comment":{"url":"https://api.github.com/repos/serokell/ariadne/pulls/comments/212679350","pull_request_review_id":149362800,"id":212679350,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMjY3OTM1MA==","diff_hunk":"@@ -117,20 +116,20 @@ restoreFromKeyFile acidDb face runCardanoMode mbWalletName path rType = do\n \n restoreFromSecretKey ::\n        HasConfiguration\n-    => AcidState DB\n+    => PassiveWalletLayer IO\n     -> WalletFace\n     -> (CardanoMode ~> IO)\n     -> Maybe WalletName\n     -> EncryptedSecretKey\n     -> WalletRestoreType\n-    -> HasSpendingPassword\n+    -> HasNonemptyPassphrase\n     -> AssuranceLevel\n     -> IO ()\n-restoreFromSecretKey acidDb face runCardanoMode mbWalletName esk rType hasPass assurance = do\n+restoreFromSecretKey pwl face runCardanoMode mbWalletName esk rType hasPP assurance = do\n     utxoByAccount <- case rType of\n         WalletRestoreQuick -> pure mempty\n         WalletRestoreFull  -> runCardanoMode $ collectUtxo esk\n-    addWallet acidDb face runCardanoMode esk mbWalletName utxoByAccount hasPass assurance\n+    addWallet pwl face esk mbWalletName utxoByAccount hasPP assurance","path":"ariadne/cardano/src/Ariadne/Wallet/Backend/Restore.hs","position":126,"original_position":126,"commit_id":"5c5e5c8a3bf47315fca79dfbcb43949489f82da9","original_commit_id":"5c5e5c8a3bf47315fca79dfbcb43949489f82da9","user":{"login":"maksbotan","id":275614,"node_id":"MDQ6VXNlcjI3NTYxNA==","avatar_url":"https://avatars0.githubusercontent.com/u/275614?v=4","gravatar_id":"","url":"https://api.github.com/users/maksbotan","html_url":"https://github.com/maksbotan","followers_url":"https://api.github.com/users/maksbotan/followers","following_url":"https://api.github.com/users/maksbotan/following{/other_user}","gists_url":"https://api.github.com/users/maksbotan/gists{/gist_id}","starred_url":"https://api.github.com/users/maksbotan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maksbotan/subscriptions","organizations_url":"https://api.github.com/users/maksbotan/orgs","repos_url":"https://api.github.com/users/maksbotan/repos","events_url":"https://api.github.com/users/maksbotan/events{/privacy}","received_events_url":"https://api.github.com/users/maksbotan/received_events","type":"User","site_admin":false},"body":"would it make some sense to turn all these functions into `ReaderT PassiveWalletLayer IO`? that'd increase the diff though...","created_at":"2018-08-24T16:12:09Z","updated_at":"2018-08-24T16:28:45Z","html_url":"https://github.com/serokell/ariadne/pull/288#discussion_r212679350","pull_request_url":"https://api.github.com/repos/serokell/ariadne/pulls/288","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/serokell/ariadne/pulls/comments/212679350"},"html":{"href":"https://github.com/serokell/ariadne/pull/288#discussion_r212679350"},"pull_request":{"href":"https://api.github.com/repos/serokell/ariadne/pulls/288"}}},"pull_request":{"url":"https://api.github.com/repos/serokell/ariadne/pulls/288","id":210575395,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEwNTc1Mzk1","html_url":"https://github.com/serokell/ariadne/pull/288","diff_url":"https://github.com/serokell/ariadne/pull/288.diff","patch_url":"https://github.com/serokell/ariadne/pull/288.patch","issue_url":"https://api.github.com/repos/serokell/ariadne/issues/288","number":288,"state":"open","locked":false,"title":"[AD-326] Port IOHK updates","user":{"login":"Pastafarianist","id":1315874,"node_id":"MDQ6VXNlcjEzMTU4NzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/1315874?v=4","gravatar_id":"","url":"https://api.github.com/users/Pastafarianist","html_url":"https://github.com/Pastafarianist","followers_url":"https://api.github.com/users/Pastafarianist/followers","following_url":"https://api.github.com/users/Pastafarianist/following{/other_user}","gists_url":"https://api.github.com/users/Pastafarianist/gists{/gist_id}","starred_url":"https://api.github.com/users/Pastafarianist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Pastafarianist/subscriptions","organizations_url":"https://api.github.com/users/Pastafarianist/orgs","repos_url":"https://api.github.com/users/Pastafarianist/repos","events_url":"https://api.github.com/users/Pastafarianist/events{/privacy}","received_events_url":"https://api.github.com/users/Pastafarianist/received_events","type":"User","site_admin":false},"body":"**YT issue:**\r\n* https://issues.serokell.io/issue/AD-326\r\n* https://issues.serokell.io/issue/AD-306\r\n* https://issues.serokell.io/issue/AD-176\r\n\r\n**Checklist:**\r\n\r\n- [x] Updated docs if necessary _(not necessary)_\r\n- [ ] Adressed HLint warnings and hints _(pending)_\r\n- [x] Rebased branch on current master and squashed all \"Address PR comment\" commits\r\n- [ ] Tested my changes if they modify code _(pending)_\r\n\r\n**Description:**\r\n\r\nThis is basically a massive refactoring. The only change that should be visible on the outside is that key storage is now broken: the path to it is hardcoded to `secret-mainnet.key`, and it only persists changes when wallet terminates gracefully.\r\n\r\nSummary of changes:\r\n\r\n* `[AD-306]` `WalletLayer` now sits in between of (most) calls between the `Kernel` and the rest of the code. The general pattern is that we create a `PassiveWalletLayer` in `Wallet.Backend` and pass it to various functions, which are mostly defined in `KeyStorage`. These functions then call methods from the `PassiveWalletLayer` instead of invoking `Kernel` functions directly. The implementations are mostly in `Kernel.{Wallets,Accounts,Addresses}`. The interface and wrappers are in `WalletLayer.{Types,Kernel}`.\r\n* `addUs` and the whole hackery around it is gone. Now wallet manages its own `Keystore`. However, it does not persist changes at each update (it only saves them at shutdown), which must be fixed. IOHK have an [issue](https://github.com/input-output-hk/cardano-sl/blob/44c903587d453cea86dae4ef8549430e34b2449f/wallet-new/src/Cardano/Wallet/Kernel/Keystore.hs#L79) registered for that, but we may have to do it ourselves.\r\n* `BlockMeta` is now hidden within a `PrefilteredBlock`.\r\n* `Kernel.DB.HdWallet.Derivation` is a new collection of helper functions, mostly from `KeyStorage`.\r\n* `HasSpendingPassword` is no longer passed around, instead it is generated in `Kernel.Wallets`. Instead, we use `HasNonemptyPassword`, which is a `newtype` over `Bool`.\r\n* `WalletLayer.Kernel` now exports `passiveWalletLayerWithDBComponent` in addition to `passiveWalletLayerComponent`; the former allows to specify a custom Acid DB instead of creating one in-memory.\r\n* `import_wallet.sh` is updated.\r\n\r\nSubstantial differences with upstream are:\r\n\r\n* no `CoinSelection`\r\n* no `MonadDBReadAdapter`\r\n* instead of their implementation of BIP-39 we're using the one from Lootbox\r\n* `Derivation` is completely different\r\n* `HdRootId` wraps `AddressHash PublicKey` instead of `Address`\r\n* `PrefilteredBlock` is very different\r\n* no limits on execution time of API functions\r\n* `ComponentM` instead of `bracket`\r\n\r\nRemaining TODOs:\r\n\r\n- [x] Compare old implementations of various functions in `KeyStorage` and new ones in `{Wallets,Accounts,Addresses}` and make sure nothing is forgotten.\r\n- [ ] Decide whether `Keystore` should be fixed in this PR or in a follow-up. If we decide for the latter, register an issue about persisting `Keystore` safely.\r\n- [ ] Register an issue about switching back to `bracket`. `ComponentM` is great, and I see no reason not to use it, but unless we manage to convince IOHK to use it as well, adopting their test suite will be more difficult.\r\n- [ ] Register an issue about abstracting away the existence of AcidState DB in `PassiveWalletLayer`. Currently it exposes `getDBSnapshot`. This should probably be fixed.\r\n- [ ] Review wallet/account name autogeneration. Currently it is not uniform, as wallet name is generated in `KeyStorage.addWallet`, while account name is generated in `Kernel.DB.HdWallet.Create.initHdAccount`. Decide what (if anything) to do about it.\r\n- [ ] There is now a single function for changing wallet parameters, `_pwlUpdateWallet`. It accepts both a new name and a new assurance and does not allow to modify them separately. Decide whether it should stay that way, or whether we should expose separate functions for updating parameters.\r\n- [ ] Fix naming. Currently there is no single scheme for naming `DB` vs `Db`. However, this will (even further) increase our diff with upstream.\r\n- [ ] Register an issue for adopting stuff that is omitted here:\r\n    * `ActiveWallet`\r\n    * submission layer\r\n    * coin selection\r\n- [ ] `import_wallet.sh` now contains a very long line that I would like to see shortened, but I don't know enough Bash to do that.\r\n- [ ] Decide what to do about naming of wallet/account/address generation functions. Currently they still contain `Rnd` even though they no longer generate things randomly, as they were in IOHK implementation. But, again, diff.\r\n- [ ] Fix outdated comments.\r\n- [ ] Run `hlint` on this.\r\n- [ ] Test.\r\n\r\nAs a final note, it seems that our vision differs too much with that of IOHK. In particular:\r\n\r\n* we use BIP-44 and the whole `{Acc,Addr}Checkpoint` dichotomy\r\n* we use `Map HdAccountId PrefilteredUtxo` as a format for passing prefiltered utxo around, and our definition of `PrefilteredUtxo` is different (more structured)\r\n* we use `AddressHash PublicKey` as a root key identifier instead of a more malleable `Address`\r\n* we don't need to expose an API that can be served via HTTP (and thus don't use anything from `V1.Types`)\r\n* we don't set limits on the time for wallet API method execution\r\n\r\nso at this moment I'm not sure how, when and whether further imports will proceed after we merge the [tests](https://github.com/serokell/ariadne/compare/thatguy/ad167-port-iohk-tests-0fa0ce6?expand=1).","created_at":"2018-08-23T21:03:23Z","updated_at":"2018-08-24T16:28:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b5531fb94e8ad6e4c18efad9298a532dc510cb53","assignee":{"login":"Pastafarianist","id":1315874,"node_id":"MDQ6VXNlcjEzMTU4NzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/1315874?v=4","gravatar_id":"","url":"https://api.github.com/users/Pastafarianist","html_url":"https://github.com/Pastafarianist","followers_url":"https://api.github.com/users/Pastafarianist/followers","following_url":"https://api.github.com/users/Pastafarianist/following{/other_user}","gists_url":"https://api.github.com/users/Pastafarianist/gists{/gist_id}","starred_url":"https://api.github.com/users/Pastafarianist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Pastafarianist/subscriptions","organizations_url":"https://api.github.com/users/Pastafarianist/orgs","repos_url":"https://api.github.com/users/Pastafarianist/repos","events_url":"https://api.github.com/users/Pastafarianist/events{/privacy}","received_events_url":"https://api.github.com/users/Pastafarianist/received_events","type":"User","site_admin":false},"assignees":[{"login":"Pastafarianist","id":1315874,"node_id":"MDQ6VXNlcjEzMTU4NzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/1315874?v=4","gravatar_id":"","url":"https://api.github.com/users/Pastafarianist","html_url":"https://github.com/Pastafarianist","followers_url":"https://api.github.com/users/Pastafarianist/followers","following_url":"https://api.github.com/users/Pastafarianist/following{/other_user}","gists_url":"https://api.github.com/users/Pastafarianist/gists{/gist_id}","starred_url":"https://api.github.com/users/Pastafarianist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Pastafarianist/subscriptions","organizations_url":"https://api.github.com/users/Pastafarianist/orgs","repos_url":"https://api.github.com/users/Pastafarianist/repos","events_url":"https://api.github.com/users/Pastafarianist/events{/privacy}","received_events_url":"https://api.github.com/users/Pastafarianist/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"gromakovsky","id":2556409,"node_id":"MDQ6VXNlcjI1NTY0MDk=","avatar_url":"https://avatars0.githubusercontent.com/u/2556409?v=4","gravatar_id":"","url":"https://api.github.com/users/gromakovsky","html_url":"https://github.com/gromakovsky","followers_url":"https://api.github.com/users/gromakovsky/followers","following_url":"https://api.github.com/users/gromakovsky/following{/other_user}","gists_url":"https://api.github.com/users/gromakovsky/gists{/gist_id}","starred_url":"https://api.github.com/users/gromakovsky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gromakovsky/subscriptions","organizations_url":"https://api.github.com/users/gromakovsky/orgs","repos_url":"https://api.github.com/users/gromakovsky/repos","events_url":"https://api.github.com/users/gromakovsky/events{/privacy}","received_events_url":"https://api.github.com/users/gromakovsky/received_events","type":"User","site_admin":false},{"login":"goodsoft","id":2828228,"node_id":"MDQ6VXNlcjI4MjgyMjg=","avatar_url":"https://avatars2.githubusercontent.com/u/2828228?v=4","gravatar_id":"","url":"https://api.github.com/users/goodsoft","html_url":"https://github.com/goodsoft","followers_url":"https://api.github.com/users/goodsoft/followers","following_url":"https://api.github.com/users/goodsoft/following{/other_user}","gists_url":"https://api.github.com/users/goodsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/goodsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goodsoft/subscriptions","organizations_url":"https://api.github.com/users/goodsoft/orgs","repos_url":"https://api.github.com/users/goodsoft/repos","events_url":"https://api.github.com/users/goodsoft/events{/privacy}","received_events_url":"https://api.github.com/users/goodsoft/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/serokell/ariadne/pulls/288/commits","review_comments_url":"https://api.github.com/repos/serokell/ariadne/pulls/288/comments","review_comment_url":"https://api.github.com/repos/serokell/ariadne/pulls/comments{/number}","comments_url":"https://api.github.com/repos/serokell/ariadne/issues/288/comments","statuses_url":"https://api.github.com/repos/serokell/ariadne/statuses/5c5e5c8a3bf47315fca79dfbcb43949489f82da9","head":{"label":"serokell:thatguy/ad326-port-iohk-updates","ref":"thatguy/ad326-port-iohk-updates","sha":"5c5e5c8a3bf47315fca79dfbcb43949489f82da9","user":{"login":"serokell","id":13840520,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzODQwNTIw","avatar_url":"https://avatars2.githubusercontent.com/u/13840520?v=4","gravatar_id":"","url":"https://api.github.com/users/serokell","html_url":"https://github.com/serokell","followers_url":"https://api.github.com/users/serokell/followers","following_url":"https://api.github.com/users/serokell/following{/other_user}","gists_url":"https://api.github.com/users/serokell/gists{/gist_id}","starred_url":"https://api.github.com/users/serokell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/serokell/subscriptions","organizations_url":"https://api.github.com/users/serokell/orgs","repos_url":"https://api.github.com/users/serokell/repos","events_url":"https://api.github.com/users/serokell/events{/privacy}","received_events_url":"https://api.github.com/users/serokell/received_events","type":"Organization","site_admin":false},"repo":{"id":122662740,"node_id":"MDEwOlJlcG9zaXRvcnkxMjI2NjI3NDA=","name":"ariadne","full_name":"serokell/ariadne","owner":{"login":"serokell","id":13840520,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzODQwNTIw","avatar_url":"https://avatars2.githubusercontent.com/u/13840520?v=4","gravatar_id":"","url":"https://api.github.com/users/serokell","html_url":"https://github.com/serokell","followers_url":"https://api.github.com/users/serokell/followers","following_url":"https://api.github.com/users/serokell/following{/other_user}","gists_url":"https://api.github.com/users/serokell/gists{/gist_id}","starred_url":"https://api.github.com/users/serokell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/serokell/subscriptions","organizations_url":"https://api.github.com/users/serokell/orgs","repos_url":"https://api.github.com/users/serokell/repos","events_url":"https://api.github.com/users/serokell/events{/privacy}","received_events_url":"https://api.github.com/users/serokell/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/serokell/ariadne","description":"An open source Ada wallet for users who need more","fork":false,"url":"https://api.github.com/repos/serokell/ariadne","forks_url":"https://api.github.com/repos/serokell/ariadne/forks","keys_url":"https://api.github.com/repos/serokell/ariadne/keys{/key_id}","collaborators_url":"https://api.github.com/repos/serokell/ariadne/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/serokell/ariadne/teams","hooks_url":"https://api.github.com/repos/serokell/ariadne/hooks","issue_events_url":"https://api.github.com/repos/serokell/ariadne/issues/events{/number}","events_url":"https://api.github.com/repos/serokell/ariadne/events","assignees_url":"https://api.github.com/repos/serokell/ariadne/assignees{/user}","branches_url":"https://api.github.com/repos/serokell/ariadne/branches{/branch}","tags_url":"https://api.github.com/repos/serokell/ariadne/tags","blobs_url":"https://api.github.com/repos/serokell/ariadne/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/serokell/ariadne/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/serokell/ariadne/git/refs{/sha}","trees_url":"https://api.github.com/repos/serokell/ariadne/git/trees{/sha}","statuses_url":"https://api.github.com/repos/serokell/ariadne/statuses/{sha}","languages_url":"https://api.github.com/repos/serokell/ariadne/languages","stargazers_url":"https://api.github.com/repos/serokell/ariadne/stargazers","contributors_url":"https://api.github.com/repos/serokell/ariadne/contributors","subscribers_url":"https://api.github.com/repos/serokell/ariadne/subscribers","subscription_url":"https://api.github.com/repos/serokell/ariadne/subscription","commits_url":"https://api.github.com/repos/serokell/ariadne/commits{/sha}","git_commits_url":"https://api.github.com/repos/serokell/ariadne/git/commits{/sha}","comments_url":"https://api.github.com/repos/serokell/ariadne/comments{/number}","issue_comment_url":"https://api.github.com/repos/serokell/ariadne/issues/comments{/number}","contents_url":"https://api.github.com/repos/serokell/ariadne/contents/{+path}","compare_url":"https://api.github.com/repos/serokell/ariadne/compare/{base}...{head}","merges_url":"https://api.github.com/repos/serokell/ariadne/merges","archive_url":"https://api.github.com/repos/serokell/ariadne/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/serokell/ariadne/downloads","issues_url":"https://api.github.com/repos/serokell/ariadne/issues{/number}","pulls_url":"https://api.github.com/repos/serokell/ariadne/pulls{/number}","milestones_url":"https://api.github.com/repos/serokell/ariadne/milestones{/number}","notifications_url":"https://api.github.com/repos/serokell/ariadne/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/serokell/ariadne/labels{/name}","releases_url":"https://api.github.com/repos/serokell/ariadne/releases{/id}","deployments_url":"https://api.github.com/repos/serokell/ariadne/deployments","created_at":"2018-02-23T19:17:07Z","updated_at":"2018-08-24T09:27:00Z","pushed_at":"2018-08-24T15:25:50Z","git_url":"git://github.com/serokell/ariadne.git","ssh_url":"git@github.com:serokell/ariadne.git","clone_url":"https://github.com/serokell/ariadne.git","svn_url":"https://github.com/serokell/ariadne","homepage":"https://serokell.io/ariadne","size":2465,"stargazers_count":26,"watchers_count":26,"language":"Haskell","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":0,"open_issues":10,"watchers":26,"default_branch":"master"}},"base":{"label":"serokell:master","ref":"master","sha":"971fa6f7164fd06b9e8a19174f9a2612e1a63884","user":{"login":"serokell","id":13840520,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzODQwNTIw","avatar_url":"https://avatars2.githubusercontent.com/u/13840520?v=4","gravatar_id":"","url":"https://api.github.com/users/serokell","html_url":"https://github.com/serokell","followers_url":"https://api.github.com/users/serokell/followers","following_url":"https://api.github.com/users/serokell/following{/other_user}","gists_url":"https://api.github.com/users/serokell/gists{/gist_id}","starred_url":"https://api.github.com/users/serokell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/serokell/subscriptions","organizations_url":"https://api.github.com/users/serokell/orgs","repos_url":"https://api.github.com/users/serokell/repos","events_url":"https://api.github.com/users/serokell/events{/privacy}","received_events_url":"https://api.github.com/users/serokell/received_events","type":"Organization","site_admin":false},"repo":{"id":122662740,"node_id":"MDEwOlJlcG9zaXRvcnkxMjI2NjI3NDA=","name":"ariadne","full_name":"serokell/ariadne","owner":{"login":"serokell","id":13840520,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzODQwNTIw","avatar_url":"https://avatars2.githubusercontent.com/u/13840520?v=4","gravatar_id":"","url":"https://api.github.com/users/serokell","html_url":"https://github.com/serokell","followers_url":"https://api.github.com/users/serokell/followers","following_url":"https://api.github.com/users/serokell/following{/other_user}","gists_url":"https://api.github.com/users/serokell/gists{/gist_id}","starred_url":"https://api.github.com/users/serokell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/serokell/subscriptions","organizations_url":"https://api.github.com/users/serokell/orgs","repos_url":"https://api.github.com/users/serokell/repos","events_url":"https://api.github.com/users/serokell/events{/privacy}","received_events_url":"https://api.github.com/users/serokell/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/serokell/ariadne","description":"An open source Ada wallet for users who need more","fork":false,"url":"https://api.github.com/repos/serokell/ariadne","forks_url":"https://api.github.com/repos/serokell/ariadne/forks","keys_url":"https://api.github.com/repos/serokell/ariadne/keys{/key_id}","collaborators_url":"https://api.github.com/repos/serokell/ariadne/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/serokell/ariadne/teams","hooks_url":"https://api.github.com/repos/serokell/ariadne/hooks","issue_events_url":"https://api.github.com/repos/serokell/ariadne/issues/events{/number}","events_url":"https://api.github.com/repos/serokell/ariadne/events","assignees_url":"https://api.github.com/repos/serokell/ariadne/assignees{/user}","branches_url":"https://api.github.com/repos/serokell/ariadne/branches{/branch}","tags_url":"https://api.github.com/repos/serokell/ariadne/tags","blobs_url":"https://api.github.com/repos/serokell/ariadne/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/serokell/ariadne/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/serokell/ariadne/git/refs{/sha}","trees_url":"https://api.github.com/repos/serokell/ariadne/git/trees{/sha}","statuses_url":"https://api.github.com/repos/serokell/ariadne/statuses/{sha}","languages_url":"https://api.github.com/repos/serokell/ariadne/languages","stargazers_url":"https://api.github.com/repos/serokell/ariadne/stargazers","contributors_url":"https://api.github.com/repos/serokell/ariadne/contributors","subscribers_url":"https://api.github.com/repos/serokell/ariadne/subscribers","subscription_url":"https://api.github.com/repos/serokell/ariadne/subscription","commits_url":"https://api.github.com/repos/serokell/ariadne/commits{/sha}","git_commits_url":"https://api.github.com/repos/serokell/ariadne/git/commits{/sha}","comments_url":"https://api.github.com/repos/serokell/ariadne/comments{/number}","issue_comment_url":"https://api.github.com/repos/serokell/ariadne/issues/comments{/number}","contents_url":"https://api.github.com/repos/serokell/ariadne/contents/{+path}","compare_url":"https://api.github.com/repos/serokell/ariadne/compare/{base}...{head}","merges_url":"https://api.github.com/repos/serokell/ariadne/merges","archive_url":"https://api.github.com/repos/serokell/ariadne/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/serokell/ariadne/downloads","issues_url":"https://api.github.com/repos/serokell/ariadne/issues{/number}","pulls_url":"https://api.github.com/repos/serokell/ariadne/pulls{/number}","milestones_url":"https://api.github.com/repos/serokell/ariadne/milestones{/number}","notifications_url":"https://api.github.com/repos/serokell/ariadne/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/serokell/ariadne/labels{/name}","releases_url":"https://api.github.com/repos/serokell/ariadne/releases{/id}","deployments_url":"https://api.github.com/repos/serokell/ariadne/deployments","created_at":"2018-02-23T19:17:07Z","updated_at":"2018-08-24T09:27:00Z","pushed_at":"2018-08-24T15:25:50Z","git_url":"git://github.com/serokell/ariadne.git","ssh_url":"git@github.com:serokell/ariadne.git","clone_url":"https://github.com/serokell/ariadne.git","svn_url":"https://github.com/serokell/ariadne","homepage":"https://serokell.io/ariadne","size":2465,"stargazers_count":26,"watchers_count":26,"language":"Haskell","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":0,"open_issues":10,"watchers":26,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/serokell/ariadne/pulls/288"},"html":{"href":"https://github.com/serokell/ariadne/pull/288"},"issue":{"href":"https://api.github.com/repos/serokell/ariadne/issues/288"},"comments":{"href":"https://api.github.com/repos/serokell/ariadne/issues/288/comments"},"review_comments":{"href":"https://api.github.com/repos/serokell/ariadne/pulls/288/comments"},"review_comment":{"href":"https://api.github.com/repos/serokell/ariadne/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/serokell/ariadne/pulls/288/commits"},"statuses":{"href":"https://api.github.com/repos/serokell/ariadne/statuses/5c5e5c8a3bf47315fca79dfbcb43949489f82da9"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"maksbotan"}}