{"action":"created","comment":{"url":"https://api.github.com/repos/gitcoinco/web/pulls/comments/238475585","pull_request_review_id":181026548,"id":238475585,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzODQ3NTU4NQ==","diff_hunk":"@@ -304,6 +322,162 @@ def __str__(self):\n         \"\"\"Return the string representation of a Subscription.\"\"\"\n         return f\"id: {self.pk}, active: {self.active}, subscription_hash: {self.subscription_hash}\"\n \n+<<<<<<< HEAD\n+    def get_nonce(self, address):\n+        return self.grant.contract.functions.extraNonce(address).call() + 1\n+\n+    def get_next_valid_timestamp(self, address):\n+        return self.grant.contract.functions.nextValidTimestamp(address).call()\n+\n+    def get_is_ready_to_be_processed_from_db(self):\n+        \"\"\"Return true if subscription is ready to be processed according to the DB.\"\"\"\n+        if not self.subscription_contribution.exists():\n+            return True\n+        last_contribution = self.subscription_contribution.order_by('created_on').last()\n+        period = self.real_period_seconds\n+        return (last_contribution.created_on.timestamp() + period > (timezone.now()))\n+\n+    def get_are_we_past_next_valid_timestamp(self):\n+        address = self.contributor_address\n+        return timezone.now().timestamp() > self.get_next_valid_timestamp(address)\n+\n+\n+    def get_is_subscription_ready_from_web3(self):\n+        \"\"\"Return true if subscription is ready to be processed according to web3.\"\"\"\n+        the_args = args = self.get_subscription_hash_arguments()\n+        return self.grant.contract.functions.isSubscriptionReady(\n+            args['from'],\n+            args['to'],\n+            args['tokenAddress'],\n+            args['tokenAmount'],\n+            args['periodSeconds'],\n+            args['gasPrice'],\n+            args['nonce'],\n+            args['signature'],\n+            ).call()\n+\n+    def get_check_success_web3(self):\n+        \"\"\"Checks the return value of the previous function. Returns true if the previous function.\"\"\"\n+        return self.grant.contract.functions.checkSuccess().call()\n+\n+    def do_cancel_subscription_via_web3(self, minutes_to_confirm_within = 5):\n+        \"\"\".Cancels the subscripion on the blockchain\"\"\"\n+        from dashboard.utils import get_web3\n+        args = self.get_subscription_hash_arguments()\n+        tx = self.grant.contract.functions.cancelSubscription(\n+                args['from'],\n+                args['to'],\n+                args['tokenAddress'],\n+                args['tokenAmount'],\n+                args['periodSeconds'],\n+                args['gasPrice'],\n+                args['nonce'],\n+                args['signature'],\n+            ).buildTransaction(\n+                self.helper_tx_dict(minutes_to_confirm_within)\n+            )\n+        web3 = get_web3(self.grant.network)\n+        signed_txn = web3.eth.account.signTransaction(tx, private_key=settings.GRANTS_PRIVATE_KEY)\n+        return web3.eth.sendRawTransaction(signed_txn.rawTransaction)  \n+\n+    def do_execute_subscription_via_web3(self, minutes_to_confirm_within = 5):\n+        \"\"\".Executes the subscription on the blockchain\"\"\"\n+        from dashboard.utils import get_web3\n+        args = self.get_subscription_hash_arguments()\n+        tx = self.grant.contract.functions.executeSubscription(\n+            args['from'],\n+            args['to'],\n+            args['tokenAddress'],\n+            args['tokenAmount'],\n+            args['periodSeconds'],\n+            args['gasPrice'],\n+            args['nonce'],\n+            args['signature'],\n+        ).buildTransaction(\n+            self.helper_tx_dict(minutes_to_confirm_within)\n+        )\n+        web3 = get_web3(self.grant.network)\n+        signed_txn = web3.eth.account.signTransaction(tx, private_key=settings.GRANTS_PRIVATE_KEY)\n+        return web3.eth.sendRawTransaction(signed_txn.rawTransaction)  \n+\n+\n+\n+    def helper_tx_dict(self, minutes_to_confirm_within=5):\n+        \"\"\"returns a dict like this: {'to': '0xd3cda913deb6f67967b99d67acdfa1712c293601', 'from': web3.eth.coinbase, 'value': 12345}\"\"\"\n+        from dashboard.utils import get_nonce\n+        return {\n+            'from': settings.GRANTS_OWNER_ACCOUNT,\n+            'nonce': get_nonce(self.grant.network, settings.GRANTS_OWNER_ACCOUNT),\n+            'value': 0,\n+            'gasPrice': recommend_min_gas_price_to_confirm_in_time(minutes_to_confirm_within) * 10**9,\n+        }\n+\n+    def get_is_active_from_web3(self):\n+        \"\"\"Return true if subscription is active according to web3.\"\"\"\n+        _hash = self.get_hash_from_web3()\n+        return self.grant.contract.functions.isSubscriptionActive(_hash, 10).call()\n+\n+    def get_subscription_signer_from_web3(self):\n+        \"\"\"Return subscription signer.\"\"\"\n+        _hash = self.get_hash_from_web3()\n+        return self.grant.contract.functions.getSubscriptionSigner(_hash, self.contributor_signature).call()\n+\n+    def get_subscription_hash_arguments(self):\n+        \"\"\"Returns the grants subscription hash (has to get it from web3).\"\"\"\n+        \"\"\"\n+            from = Subscription.contributor_address,\n+            to = Grant.admin_address,\n+            tokenAddress = Subscription.token_address,\n+            tokenAmount = Subscription.amount_per_period,\n+            periodSeconds = real_period_seconds in the Subscription model\n+            gasPrice = Subscription.gas_price,\n+            nonce = The nonce is stored in the Contribution model. its created / managed by sync_geth\n+            signature = Subscription.contributor_signature\n+        \"\"\"\n+        from dashboard.tokens import addr_to_token\n+\n+        subs = self\n+        grant = subs.grant\n+\n+        _from = subs.contributor_address\n+        to = grant.admin_address\n+        tokenAddress = subs.token_address\n+        tokenAmount = subs.amount_per_period\n+        periodSeconds = subs.real_period_seconds\n+        gasPrice = subs.gas_price\n+        nonce = subs.get_nonce(_from)\n+        signature = subs.contributor_signature\n+\n+        #TODO - figure out the number of decimals\n+        token = addr_to_token(subs.token_address, subs.grant.network)\n+        decimals = token.get('decimals', 0)\n+\n+        return {\n+            'from': Web3.toChecksumAddress(_from),\n+            'to': Web3.toChecksumAddress(to),\n+            'tokenAddress': Web3.toChecksumAddress(tokenAddress),\n+            'tokenAmount': int(tokenAmount  * 10**decimals),\n+            'periodSeconds': int(periodSeconds),\n+            'gasPrice': int(gasPrice * 10**9),\n+            'nonce': int(nonce),\n+            'signature': signature,\n+        }\n+\n+    def get_hash_from_web3(self):\n+        \"\"\"Returns the grants subscription hash (has to get it from web3).\"\"\"\n+        args = self.get_subscription_hash_arguments()\n+        return self.grant.contract.functions.getSubscriptionHash(\n+            Web3.toChecksumAddress(args['from']),\n+            Web3.toChecksumAddress(args['to']),\n+            Web3.toChecksumAddress(args['tokenAddress']),\n+            args['tokenAmount'],\n+            args['periodSeconds'],\n+            args['gasPrice'],\n+            args['nonce'],\n+            ).call()\n+\n+\n+=======","path":"app/grants/models.py","position":199,"original_position":199,"commit_id":"ed4fcf61f1a045fe1520d44ef1967e7991f998b1","original_commit_id":"ed4fcf61f1a045fe1520d44ef1967e7991f998b1","user":{"login":"stickler-ci","id":16011037,"node_id":"MDQ6VXNlcjE2MDExMDM3","avatar_url":"https://avatars3.githubusercontent.com/u/16011037?v=4","gravatar_id":"","url":"https://api.github.com/users/stickler-ci","html_url":"https://github.com/stickler-ci","followers_url":"https://api.github.com/users/stickler-ci/followers","following_url":"https://api.github.com/users/stickler-ci/following{/other_user}","gists_url":"https://api.github.com/users/stickler-ci/gists{/gist_id}","starred_url":"https://api.github.com/users/stickler-ci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stickler-ci/subscriptions","organizations_url":"https://api.github.com/users/stickler-ci/orgs","repos_url":"https://api.github.com/users/stickler-ci/repos","events_url":"https://api.github.com/users/stickler-ci/events{/privacy}","received_events_url":"https://api.github.com/users/stickler-ci/received_events","type":"User","site_admin":false},"body":"E225 missing whitespace around operator","created_at":"2018-12-03T23:13:46Z","updated_at":"2018-12-03T23:13:46Z","html_url":"https://github.com/gitcoinco/web/pull/3055#discussion_r238475585","pull_request_url":"https://api.github.com/repos/gitcoinco/web/pulls/3055","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/gitcoinco/web/pulls/comments/238475585"},"html":{"href":"https://github.com/gitcoinco/web/pull/3055#discussion_r238475585"},"pull_request":{"href":"https://api.github.com/repos/gitcoinco/web/pulls/3055"}}},"pull_request":{"url":"https://api.github.com/repos/gitcoinco/web/pulls/3055","id":235572397,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM1NTcyMzk3","html_url":"https://github.com/gitcoinco/web/pull/3055","diff_url":"https://github.com/gitcoinco/web/pull/3055.diff","patch_url":"https://github.com/gitcoinco/web/pull/3055.patch","issue_url":"https://api.github.com/repos/gitcoinco/web/issues/3055","number":3055,"state":"open","locked":false,"title":"minimum viable subminer","user":{"login":"owocki","id":513929,"node_id":"MDQ6VXNlcjUxMzkyOQ==","avatar_url":"https://avatars2.githubusercontent.com/u/513929?v=4","gravatar_id":"","url":"https://api.github.com/users/owocki","html_url":"https://github.com/owocki","followers_url":"https://api.github.com/users/owocki/followers","following_url":"https://api.github.com/users/owocki/following{/other_user}","gists_url":"https://api.github.com/users/owocki/gists{/gist_id}","starred_url":"https://api.github.com/users/owocki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/owocki/subscriptions","organizations_url":"https://api.github.com/users/owocki/orgs","repos_url":"https://api.github.com/users/owocki/repos","events_url":"https://api.github.com/users/owocki/events{/privacy}","received_events_url":"https://api.github.com/users/owocki/received_events","type":"User","site_admin":false},"body":"<!--\r\n  Thank you for your pull request. Please provide a description above and review\r\n  the requirements below.\r\n\r\n  Contributors guide: https://docs.gitcoin.co/mk_contributors/\r\n-->\r\n\r\n##### Description\r\n\r\n<!-- A description of what this PR aims to solve -->\r\n\r\nI spent 2 hours today putting together a a Minimum Viable Subminer (MVS). MVS which can be run with\r\n\r\n```\r\n./manage.py subminer rinkeby\r\n```\r\n\r\nit will run `executeSubscription() for any subscription\r\n\r\nTODOS \r\n- `network` is `''` one new grants, this needs fixed upstream\r\n- subminer ( https://gitcoincore.slack.com/archives/CBDTKB59A/p1543865991083100 ) url route needs hooked up\r\n- email/ db hooks upon successful contribution\r\n\r\n\r\n##### Checklist\r\n\r\n<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->\r\n\r\n- [x] linter status: 100% pass\r\n- [x] changes don't break existing behavior\r\n- [x] commit message follows [commit guidelines](https://docs.gitcoin.co/mk_contributors/#step-4-commit)\r\n\r\n##### Affected core subsystem(s)\r\n\r\n<!-- Provide affected core subsystem(s) (like doc, ui, crypto, etc). -->\r\ngrants / database\r\n\r\n##### Testing\r\n\r\n<!-- Why should the PR reviewer trust that this change doesn't break anything? How have you tested this change? -->\r\n\r\n##### Refers/Fixes\r\n\r\n<!--\r\n  Link to an issue if applicable. For example:\r\n  If your PR fixes an issue  -> Fixes: #102\r\n  If your PR refers an issue -> Refs: #101\r\n-->\r\nhttps://github.com/gitcoinco/web/issues/2424\r\nhttps://github.com/gitcoinco/web/issues/2324\r\n","created_at":"2018-12-03T19:55:28Z","updated_at":"2018-12-03T23:13:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"792da9db089bbcdc816c41f51678d7cc42167ba2","assignee":null,"assignees":[],"requested_reviewers":[{"login":"thelostone-mc","id":5358146,"node_id":"MDQ6VXNlcjUzNTgxNDY=","avatar_url":"https://avatars2.githubusercontent.com/u/5358146?v=4","gravatar_id":"","url":"https://api.github.com/users/thelostone-mc","html_url":"https://github.com/thelostone-mc","followers_url":"https://api.github.com/users/thelostone-mc/followers","following_url":"https://api.github.com/users/thelostone-mc/following{/other_user}","gists_url":"https://api.github.com/users/thelostone-mc/gists{/gist_id}","starred_url":"https://api.github.com/users/thelostone-mc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thelostone-mc/subscriptions","organizations_url":"https://api.github.com/users/thelostone-mc/orgs","repos_url":"https://api.github.com/users/thelostone-mc/repos","events_url":"https://api.github.com/users/thelostone-mc/events{/privacy}","received_events_url":"https://api.github.com/users/thelostone-mc/received_events","type":"User","site_admin":false},{"login":"mbeacom","id":7315957,"node_id":"MDQ6VXNlcjczMTU5NTc=","avatar_url":"https://avatars0.githubusercontent.com/u/7315957?v=4","gravatar_id":"","url":"https://api.github.com/users/mbeacom","html_url":"https://github.com/mbeacom","followers_url":"https://api.github.com/users/mbeacom/followers","following_url":"https://api.github.com/users/mbeacom/following{/other_user}","gists_url":"https://api.github.com/users/mbeacom/gists{/gist_id}","starred_url":"https://api.github.com/users/mbeacom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbeacom/subscriptions","organizations_url":"https://api.github.com/users/mbeacom/orgs","repos_url":"https://api.github.com/users/mbeacom/repos","events_url":"https://api.github.com/users/mbeacom/events{/privacy}","received_events_url":"https://api.github.com/users/mbeacom/received_events","type":"User","site_admin":false},{"login":"SaptakS","id":9530293,"node_id":"MDQ6VXNlcjk1MzAyOTM=","avatar_url":"https://avatars2.githubusercontent.com/u/9530293?v=4","gravatar_id":"","url":"https://api.github.com/users/SaptakS","html_url":"https://github.com/SaptakS","followers_url":"https://api.github.com/users/SaptakS/followers","following_url":"https://api.github.com/users/SaptakS/following{/other_user}","gists_url":"https://api.github.com/users/SaptakS/gists{/gist_id}","starred_url":"https://api.github.com/users/SaptakS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SaptakS/subscriptions","organizations_url":"https://api.github.com/users/SaptakS/orgs","repos_url":"https://api.github.com/users/SaptakS/repos","events_url":"https://api.github.com/users/SaptakS/events{/privacy}","received_events_url":"https://api.github.com/users/SaptakS/received_events","type":"User","site_admin":false},{"login":"captnseagraves","id":22862292,"node_id":"MDQ6VXNlcjIyODYyMjky","avatar_url":"https://avatars0.githubusercontent.com/u/22862292?v=4","gravatar_id":"","url":"https://api.github.com/users/captnseagraves","html_url":"https://github.com/captnseagraves","followers_url":"https://api.github.com/users/captnseagraves/followers","following_url":"https://api.github.com/users/captnseagraves/following{/other_user}","gists_url":"https://api.github.com/users/captnseagraves/gists{/gist_id}","starred_url":"https://api.github.com/users/captnseagraves/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/captnseagraves/subscriptions","organizations_url":"https://api.github.com/users/captnseagraves/orgs","repos_url":"https://api.github.com/users/captnseagraves/repos","events_url":"https://api.github.com/users/captnseagraves/events{/privacy}","received_events_url":"https://api.github.com/users/captnseagraves/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":820451824,"node_id":"MDU6TGFiZWw4MjA0NTE4MjQ=","url":"https://api.github.com/repos/gitcoinco/web/labels/in%20progress","name":"in progress","color":"4abc40","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/gitcoinco/web/pulls/3055/commits","review_comments_url":"https://api.github.com/repos/gitcoinco/web/pulls/3055/comments","review_comment_url":"https://api.github.com/repos/gitcoinco/web/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gitcoinco/web/issues/3055/comments","statuses_url":"https://api.github.com/repos/gitcoinco/web/statuses/ed4fcf61f1a045fe1520d44ef1967e7991f998b1","head":{"label":"gitcoinco:kevin/subminer","ref":"kevin/subminer","sha":"ed4fcf61f1a045fe1520d44ef1967e7991f998b1","user":{"login":"gitcoinco","id":30044474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMDQ0NDc0","avatar_url":"https://avatars1.githubusercontent.com/u/30044474?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoinco","html_url":"https://github.com/gitcoinco","followers_url":"https://api.github.com/users/gitcoinco/followers","following_url":"https://api.github.com/users/gitcoinco/following{/other_user}","gists_url":"https://api.github.com/users/gitcoinco/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoinco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoinco/subscriptions","organizations_url":"https://api.github.com/users/gitcoinco/orgs","repos_url":"https://api.github.com/users/gitcoinco/repos","events_url":"https://api.github.com/users/gitcoinco/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoinco/received_events","type":"Organization","site_admin":false},"repo":{"id":96767206,"node_id":"MDEwOlJlcG9zaXRvcnk5Njc2NzIwNg==","name":"web","full_name":"gitcoinco/web","private":false,"owner":{"login":"gitcoinco","id":30044474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMDQ0NDc0","avatar_url":"https://avatars1.githubusercontent.com/u/30044474?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoinco","html_url":"https://github.com/gitcoinco","followers_url":"https://api.github.com/users/gitcoinco/followers","following_url":"https://api.github.com/users/gitcoinco/following{/other_user}","gists_url":"https://api.github.com/users/gitcoinco/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoinco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoinco/subscriptions","organizations_url":"https://api.github.com/users/gitcoinco/orgs","repos_url":"https://api.github.com/users/gitcoinco/repos","events_url":"https://api.github.com/users/gitcoinco/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoinco/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/gitcoinco/web","description":"Grow Open Source","fork":false,"url":"https://api.github.com/repos/gitcoinco/web","forks_url":"https://api.github.com/repos/gitcoinco/web/forks","keys_url":"https://api.github.com/repos/gitcoinco/web/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gitcoinco/web/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gitcoinco/web/teams","hooks_url":"https://api.github.com/repos/gitcoinco/web/hooks","issue_events_url":"https://api.github.com/repos/gitcoinco/web/issues/events{/number}","events_url":"https://api.github.com/repos/gitcoinco/web/events","assignees_url":"https://api.github.com/repos/gitcoinco/web/assignees{/user}","branches_url":"https://api.github.com/repos/gitcoinco/web/branches{/branch}","tags_url":"https://api.github.com/repos/gitcoinco/web/tags","blobs_url":"https://api.github.com/repos/gitcoinco/web/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gitcoinco/web/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gitcoinco/web/git/refs{/sha}","trees_url":"https://api.github.com/repos/gitcoinco/web/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gitcoinco/web/statuses/{sha}","languages_url":"https://api.github.com/repos/gitcoinco/web/languages","stargazers_url":"https://api.github.com/repos/gitcoinco/web/stargazers","contributors_url":"https://api.github.com/repos/gitcoinco/web/contributors","subscribers_url":"https://api.github.com/repos/gitcoinco/web/subscribers","subscription_url":"https://api.github.com/repos/gitcoinco/web/subscription","commits_url":"https://api.github.com/repos/gitcoinco/web/commits{/sha}","git_commits_url":"https://api.github.com/repos/gitcoinco/web/git/commits{/sha}","comments_url":"https://api.github.com/repos/gitcoinco/web/comments{/number}","issue_comment_url":"https://api.github.com/repos/gitcoinco/web/issues/comments{/number}","contents_url":"https://api.github.com/repos/gitcoinco/web/contents/{+path}","compare_url":"https://api.github.com/repos/gitcoinco/web/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gitcoinco/web/merges","archive_url":"https://api.github.com/repos/gitcoinco/web/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gitcoinco/web/downloads","issues_url":"https://api.github.com/repos/gitcoinco/web/issues{/number}","pulls_url":"https://api.github.com/repos/gitcoinco/web/pulls{/number}","milestones_url":"https://api.github.com/repos/gitcoinco/web/milestones{/number}","notifications_url":"https://api.github.com/repos/gitcoinco/web/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gitcoinco/web/labels{/name}","releases_url":"https://api.github.com/repos/gitcoinco/web/releases{/id}","deployments_url":"https://api.github.com/repos/gitcoinco/web/deployments","created_at":"2017-07-10T10:53:45Z","updated_at":"2018-12-03T14:34:17Z","pushed_at":"2018-12-03T23:11:05Z","git_url":"git://github.com/gitcoinco/web.git","ssh_url":"git@github.com:gitcoinco/web.git","clone_url":"https://github.com/gitcoinco/web.git","svn_url":"https://github.com/gitcoinco/web","homepage":"https://gitcoin.co","size":326393,"stargazers_count":570,"watchers_count":570,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":334,"mirror_url":null,"archived":false,"open_issues_count":771,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0","node_id":"MDc6TGljZW5zZTE="},"forks":334,"open_issues":771,"watchers":570,"default_branch":"master"}},"base":{"label":"gitcoinco:grantz","ref":"grantz","sha":"432ff2b4fd7435159f3b9065210ca83054199a1a","user":{"login":"gitcoinco","id":30044474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMDQ0NDc0","avatar_url":"https://avatars1.githubusercontent.com/u/30044474?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoinco","html_url":"https://github.com/gitcoinco","followers_url":"https://api.github.com/users/gitcoinco/followers","following_url":"https://api.github.com/users/gitcoinco/following{/other_user}","gists_url":"https://api.github.com/users/gitcoinco/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoinco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoinco/subscriptions","organizations_url":"https://api.github.com/users/gitcoinco/orgs","repos_url":"https://api.github.com/users/gitcoinco/repos","events_url":"https://api.github.com/users/gitcoinco/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoinco/received_events","type":"Organization","site_admin":false},"repo":{"id":96767206,"node_id":"MDEwOlJlcG9zaXRvcnk5Njc2NzIwNg==","name":"web","full_name":"gitcoinco/web","private":false,"owner":{"login":"gitcoinco","id":30044474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMDQ0NDc0","avatar_url":"https://avatars1.githubusercontent.com/u/30044474?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoinco","html_url":"https://github.com/gitcoinco","followers_url":"https://api.github.com/users/gitcoinco/followers","following_url":"https://api.github.com/users/gitcoinco/following{/other_user}","gists_url":"https://api.github.com/users/gitcoinco/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoinco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoinco/subscriptions","organizations_url":"https://api.github.com/users/gitcoinco/orgs","repos_url":"https://api.github.com/users/gitcoinco/repos","events_url":"https://api.github.com/users/gitcoinco/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoinco/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/gitcoinco/web","description":"Grow Open Source","fork":false,"url":"https://api.github.com/repos/gitcoinco/web","forks_url":"https://api.github.com/repos/gitcoinco/web/forks","keys_url":"https://api.github.com/repos/gitcoinco/web/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gitcoinco/web/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gitcoinco/web/teams","hooks_url":"https://api.github.com/repos/gitcoinco/web/hooks","issue_events_url":"https://api.github.com/repos/gitcoinco/web/issues/events{/number}","events_url":"https://api.github.com/repos/gitcoinco/web/events","assignees_url":"https://api.github.com/repos/gitcoinco/web/assignees{/user}","branches_url":"https://api.github.com/repos/gitcoinco/web/branches{/branch}","tags_url":"https://api.github.com/repos/gitcoinco/web/tags","blobs_url":"https://api.github.com/repos/gitcoinco/web/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gitcoinco/web/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gitcoinco/web/git/refs{/sha}","trees_url":"https://api.github.com/repos/gitcoinco/web/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gitcoinco/web/statuses/{sha}","languages_url":"https://api.github.com/repos/gitcoinco/web/languages","stargazers_url":"https://api.github.com/repos/gitcoinco/web/stargazers","contributors_url":"https://api.github.com/repos/gitcoinco/web/contributors","subscribers_url":"https://api.github.com/repos/gitcoinco/web/subscribers","subscription_url":"https://api.github.com/repos/gitcoinco/web/subscription","commits_url":"https://api.github.com/repos/gitcoinco/web/commits{/sha}","git_commits_url":"https://api.github.com/repos/gitcoinco/web/git/commits{/sha}","comments_url":"https://api.github.com/repos/gitcoinco/web/comments{/number}","issue_comment_url":"https://api.github.com/repos/gitcoinco/web/issues/comments{/number}","contents_url":"https://api.github.com/repos/gitcoinco/web/contents/{+path}","compare_url":"https://api.github.com/repos/gitcoinco/web/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gitcoinco/web/merges","archive_url":"https://api.github.com/repos/gitcoinco/web/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gitcoinco/web/downloads","issues_url":"https://api.github.com/repos/gitcoinco/web/issues{/number}","pulls_url":"https://api.github.com/repos/gitcoinco/web/pulls{/number}","milestones_url":"https://api.github.com/repos/gitcoinco/web/milestones{/number}","notifications_url":"https://api.github.com/repos/gitcoinco/web/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gitcoinco/web/labels{/name}","releases_url":"https://api.github.com/repos/gitcoinco/web/releases{/id}","deployments_url":"https://api.github.com/repos/gitcoinco/web/deployments","created_at":"2017-07-10T10:53:45Z","updated_at":"2018-12-03T14:34:17Z","pushed_at":"2018-12-03T23:11:05Z","git_url":"git://github.com/gitcoinco/web.git","ssh_url":"git@github.com:gitcoinco/web.git","clone_url":"https://github.com/gitcoinco/web.git","svn_url":"https://github.com/gitcoinco/web","homepage":"https://gitcoin.co","size":326393,"stargazers_count":570,"watchers_count":570,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":334,"mirror_url":null,"archived":false,"open_issues_count":771,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0","node_id":"MDc6TGljZW5zZTE="},"forks":334,"open_issues":771,"watchers":570,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gitcoinco/web/pulls/3055"},"html":{"href":"https://github.com/gitcoinco/web/pull/3055"},"issue":{"href":"https://api.github.com/repos/gitcoinco/web/issues/3055"},"comments":{"href":"https://api.github.com/repos/gitcoinco/web/issues/3055/comments"},"review_comments":{"href":"https://api.github.com/repos/gitcoinco/web/pulls/3055/comments"},"review_comment":{"href":"https://api.github.com/repos/gitcoinco/web/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gitcoinco/web/pulls/3055/commits"},"statuses":{"href":"https://api.github.com/repos/gitcoinco/web/statuses/ed4fcf61f1a045fe1520d44ef1967e7991f998b1"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"stickler-ci"}}