{"action":"created","comment":{"url":"https://api.github.com/repos/edx/ecommerce/pulls/comments/243173764","pull_request_review_id":186871096,"id":243173764,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MzE3Mzc2NA==","diff_hunk":"@@ -0,0 +1,157 @@\n+\"\"\"API endpoint for sending assignment emails to Learners\"\"\"\n+import logging\n+\n+from rest_framework import status\n+from rest_framework.permissions import IsAuthenticated\n+from rest_framework.response import Response\n+from rest_framework.views import APIView\n+\n+from ecommerce.extensions.offer.constants import OFFER_ASSIGNED, OFFER_ASSIGNMENT_EMAIL_BOUNCED\n+from ecommerce.extensions.offer.models import OfferAssignment, OfferAssignmentEmail\n+\n+logger = logging.getLogger(__name__)\n+\n+\n+class AssignmentEmail(APIView):\n+    \"\"\"Sends assignment email(s) to Learners.\"\"\"\n+    permission_classes = (IsAuthenticated,)\n+\n+    def get(self, request):  # pylint: disable=unused-argument\n+        \"\"\"\n+        GET /ecommerce/api/v2/assignmentemail/template\n+        Returns a JSON response of the following format:\n+        {'template': ('Your learning manager has provided you with a new access code to take a course at edX.'\n+                     ' You may redeem this code for {code_usage_count} courses. '\n+\n+                     'edX login: {user_email}'\n+                     'Enrollment url: {enrollment_url}'\n+                     'Access Code: {code}'\n+                     'Expiration date: {code_expiration_date}'\n+\n+                     'You may go directly to the Enrollment URL to view courses that are available for this code'\n+                     ' or you can insert the access code at check out under \"coupon code\" for applicable courses.'\n+\n+                     'For any questions, please reach out to your Learning Manager.')}\n+        \"\"\"\n+        email_template = ('Your learning manager has provided you with a new access code to take a course at edX.'\n+                          ' You may redeem this code for {code_usage_count} courses. '\n+\n+                          'edX login: {user_email}'\n+                          'Enrollment url: {enrollment_url}'\n+                          'Access Code: {code}'\n+                          'Expiration date: {code_expiration_date}'\n+\n+                          'You may go directly to the Enrollment URL to view courses that are available for this code'\n+                          ' or you can insert the access code at check out under \"coupon code\" for applicable courses.'\n+\n+                          'For any questions, please reach out to your Learning Manager.')\n+\n+        return Response(\n+            status=status.HTTP_200_OK,\n+            data={'template': email_template}\n+        )\n+\n+\n+class AssignmentEmailStatus(APIView):\n+    \"\"\"Updated assignment email status in offer_assignment and offer_assignment_email model.\"\"\"\n+    permission_classes = (IsAuthenticated,)\n+\n+    def update_email_status(self, offer_assignment_id, send_id):\n+        \"\"\"Update the OfferAssignment and OfferAssignmentEmail model\"\"\"\n+        assigned_offer = OfferAssignment.objects.get(id=offer_assignment_id)\n+        assigned_offer.status = OFFER_ASSIGNED\n+        assigned_offer.save(update_fields=['status'])\n+        OfferAssignmentEmail.objects.create(offer_assignment=assigned_offer, send_id=send_id)\n+\n+    def post(self, request):\n+        \"\"\"\n+        POST /ecommerce/api/v2/assignmentemail/updatestatus\n+        Requires a JSON object of the following format:\n+       {\n+            'offer_id': '555',\n+            'send_id': 'XBEn85WnoQJsIhk6'\n+            'status': 'success'\n+        }\n+        Returns a JSON object of the following format:\n+       {\n+            'offer_id': '555',\n+            'send_id': 'XBEn85WnoQJsIhk6'\n+            'status': 'updated'\n+            'error': ''\n+        }\n+        Keys:\n+        *offer_id*\n+            Primary key of the entry in the offer_assignment model.\n+        *status*\n+            The offer_assignment model update status\n+        *error*\n+            Error detail. Empty on a successful update.\n+        \"\"\"\n+        offer_assignment_id = int(request.data.get('offer_id'))\n+        send_id = request.data.get('send_id')\n+        email_status = request.data.get('status')\n+        update_status = {\n+            'offer_id': offer_assignment_id,\n+            'send_id': send_id,\n+        }\n+        if email_status == 'success':\n+            try:\n+                self.update_email_status(offer_assignment_id, send_id)\n+                extra_status = {\n+                    'status': 'updated',\n+                    'error': ''\n+                }\n+            except OfferAssignment.DoesNotExist as exc:\n+                logger.exception('[Offer Assignment] AssignmentEmailStatus update raised: %r', exc)\n+                extra_status = {\n+                    'status': 'failed',\n+                    'error': str(exc)\n+                }\n+        update_status.update(extra_status)\n+        return Response(update_status, status=status.HTTP_200_OK)\n+\n+\n+class AssignmentEmailBounce(APIView):\n+    \"\"\"Receive Sailthru bounce-api POST\"\"\"","path":"ecommerce/extensions/api/v2/views/assignmentemail.py","position":115,"original_position":115,"commit_id":"3232e371e32488c331f4216efcacb615f08ba284","original_commit_id":"3232e371e32488c331f4216efcacb615f08ba284","user":{"login":"irfanuddinahmad","id":34648393,"node_id":"MDQ6VXNlcjM0NjQ4Mzkz","avatar_url":"https://avatars1.githubusercontent.com/u/34648393?v=4","gravatar_id":"","url":"https://api.github.com/users/irfanuddinahmad","html_url":"https://github.com/irfanuddinahmad","followers_url":"https://api.github.com/users/irfanuddinahmad/followers","following_url":"https://api.github.com/users/irfanuddinahmad/following{/other_user}","gists_url":"https://api.github.com/users/irfanuddinahmad/gists{/gist_id}","starred_url":"https://api.github.com/users/irfanuddinahmad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/irfanuddinahmad/subscriptions","organizations_url":"https://api.github.com/users/irfanuddinahmad/orgs","repos_url":"https://api.github.com/users/irfanuddinahmad/repos","events_url":"https://api.github.com/users/irfanuddinahmad/events{/privacy}","received_events_url":"https://api.github.com/users/irfanuddinahmad/received_events","type":"User","site_admin":false},"body":"@georgebabey You mentioned that the Amazon API Gateway will proxy this url. Should I add a DevOps ticket for that?","created_at":"2018-12-20T07:14:21Z","updated_at":"2018-12-20T07:14:21Z","html_url":"https://github.com/edx/ecommerce/pull/1998#discussion_r243173764","pull_request_url":"https://api.github.com/repos/edx/ecommerce/pulls/1998","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/edx/ecommerce/pulls/comments/243173764"},"html":{"href":"https://github.com/edx/ecommerce/pull/1998#discussion_r243173764"},"pull_request":{"href":"https://api.github.com/repos/edx/ecommerce/pulls/1998"}},"in_reply_to_id":243079409},"pull_request":{"url":"https://api.github.com/repos/edx/ecommerce/pulls/1998","id":234687487,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM0Njg3NDg3","html_url":"https://github.com/edx/ecommerce/pull/1998","diff_url":"https://github.com/edx/ecommerce/pull/1998.diff","patch_url":"https://github.com/edx/ecommerce/pull/1998.patch","issue_url":"https://api.github.com/repos/edx/ecommerce/issues/1998","number":1998,"state":"open","locked":false,"title":"ENT-1362 api for sending emails to assigned learners","user":{"login":"irfanuddinahmad","id":34648393,"node_id":"MDQ6VXNlcjM0NjQ4Mzkz","avatar_url":"https://avatars1.githubusercontent.com/u/34648393?v=4","gravatar_id":"","url":"https://api.github.com/users/irfanuddinahmad","html_url":"https://github.com/irfanuddinahmad","followers_url":"https://api.github.com/users/irfanuddinahmad/followers","following_url":"https://api.github.com/users/irfanuddinahmad/following{/other_user}","gists_url":"https://api.github.com/users/irfanuddinahmad/gists{/gist_id}","starred_url":"https://api.github.com/users/irfanuddinahmad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/irfanuddinahmad/subscriptions","organizations_url":"https://api.github.com/users/irfanuddinahmad/orgs","repos_url":"https://api.github.com/users/irfanuddinahmad/repos","events_url":"https://api.github.com/users/irfanuddinahmad/events{/privacy}","received_events_url":"https://api.github.com/users/irfanuddinahmad/received_events","type":"User","site_admin":false},"body":"Description: This PR provides four functions briefly described below. The Jira link below provides more details.\r\nJira: https://openedx.atlassian.net/browse/ENT-1362\r\n\r\n1: Utility function to send an asynchronous coupon code assignment email via ecommerce-worker to learners (ecommerce.extensions.offer.utils.send_assigned_offer_email)\r\n2: API for receiving the status of the email from ecommerce-worker. The API handler updates the offer_assignment model with the email status. \r\n(POST /ecommerce/api/v2/assignmentemail/updatestatus)\r\n3: API for receiving email bounce status from Sailthru. The API handler updates the offer_assignment model with the email status\r\n(POST /ecommerce/api/v2/assignmentemail/receivebounce)\r\n4: API to fetch the default email template.\r\n(GET /ecommerce/api/v2/assignmentemail/template)\r\n\r\n***Message formats***\r\n\r\nThe message signatures for the API are described below:\r\n```\r\n POST /ecommerce/api/v2/assignmentemail/updatestatus\r\n        Requires a JSON object of the following format:\r\n       {\r\n            'offer_id': '555',\r\n            'send_id': 'XBEn85WnoQJsIhk6'\r\n            'status': 'success'\r\n        }\r\n        Returns a JSON object of the following format:\r\n       {\r\n            'offer_id': '555',\r\n            'send_id': 'XBEn85WnoQJsIhk6'\r\n            'status': 'updated'\r\n            'error': ''\r\n        }\r\n        Keys:\r\n        *offer_id*\r\n            Primary key of the entry in the offer_assignment model.\r\n        *status*\r\n            The offer_assignment model update status\r\n        *error*\r\n            Error detail. Empty on a successful update.\r\n\r\n\r\n\r\n POST /ecommerce/api/v2/assignmentemail/receivebounce\r\n        Requires a JSON object of the following format:\r\n        {\r\n            'email': blashsdsd@dfsdf.com\r\n            'send_id': WFQKQW5K3LBgi0mk\r\n            'action': hardbounce\r\n            'api_key': 6b805755ce5a23e3c0459aaa598efc56\r\n            'sig': 13b3987b656c7771fcac92982fdfb331\r\n        }\r\n        Returns HTTP_200_OK\r\n\r\n        Keys:\r\n        *email*\r\n            Email of the customer whose email bounced.\r\n        *send_id*\r\n            The unique identifier of the bounced message.\r\n        *action*\r\n            hardbounce: Email bounced.\r\n        *api_key*\r\n            Key provided by Sailthru.\r\n        *sig*\r\n            Hash of API key and all parameter values for the postback call\r\n\r\n\r\n\r\n GET /ecommerce/api/v2/assignmentemail/template\r\n        Returns a JSON response of the following format:\r\n        {'template': ('Your learning manager has provided you with a new access code to take a course at edX.'\r\n                     ' You may redeem this code for {code_usage_count} courses. '\r\n\r\n                     'edX login: {user_email}'\r\n                     'Enrollment url: {enrollment_url}'\r\n                     'Access Code: {code}'\r\n                     'Expiration date: {code_expiration_date}'\r\n\r\n                     'You may go directly to the Enrollment URL to view courses that are available for this code'\r\n                     ' or you can insert the access code at check out under \"coupon code\" for applicable courses.'\r\n\r\n                     'For any questions, please reach out to your Learning Manager.')}\r\n```","created_at":"2018-11-29T15:48:06Z","updated_at":"2018-12-20T07:14:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"22b64463f5269abd8c4777f798cff28a7261e429","assignee":null,"assignees":[],"requested_reviewers":[{"login":"georgebabey","id":1643389,"node_id":"MDQ6VXNlcjE2NDMzODk=","avatar_url":"https://avatars2.githubusercontent.com/u/1643389?v=4","gravatar_id":"","url":"https://api.github.com/users/georgebabey","html_url":"https://github.com/georgebabey","followers_url":"https://api.github.com/users/georgebabey/followers","following_url":"https://api.github.com/users/georgebabey/following{/other_user}","gists_url":"https://api.github.com/users/georgebabey/gists{/gist_id}","starred_url":"https://api.github.com/users/georgebabey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/georgebabey/subscriptions","organizations_url":"https://api.github.com/users/georgebabey/orgs","repos_url":"https://api.github.com/users/georgebabey/repos","events_url":"https://api.github.com/users/georgebabey/events{/privacy}","received_events_url":"https://api.github.com/users/georgebabey/received_events","type":"User","site_admin":false},{"login":"muhammad-ammar","id":6767924,"node_id":"MDQ6VXNlcjY3Njc5MjQ=","avatar_url":"https://avatars2.githubusercontent.com/u/6767924?v=4","gravatar_id":"","url":"https://api.github.com/users/muhammad-ammar","html_url":"https://github.com/muhammad-ammar","followers_url":"https://api.github.com/users/muhammad-ammar/followers","following_url":"https://api.github.com/users/muhammad-ammar/following{/other_user}","gists_url":"https://api.github.com/users/muhammad-ammar/gists{/gist_id}","starred_url":"https://api.github.com/users/muhammad-ammar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muhammad-ammar/subscriptions","organizations_url":"https://api.github.com/users/muhammad-ammar/orgs","repos_url":"https://api.github.com/users/muhammad-ammar/repos","events_url":"https://api.github.com/users/muhammad-ammar/events{/privacy}","received_events_url":"https://api.github.com/users/muhammad-ammar/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/edx/ecommerce/pulls/1998/commits","review_comments_url":"https://api.github.com/repos/edx/ecommerce/pulls/1998/comments","review_comment_url":"https://api.github.com/repos/edx/ecommerce/pulls/comments{/number}","comments_url":"https://api.github.com/repos/edx/ecommerce/issues/1998/comments","statuses_url":"https://api.github.com/repos/edx/ecommerce/statuses/3232e371e32488c331f4216efcacb615f08ba284","head":{"label":"edx:iahmad/ENT-1362-Email-when-assigning","ref":"iahmad/ENT-1362-Email-when-assigning","sha":"3232e371e32488c331f4216efcacb615f08ba284","user":{"login":"edx","id":3179841,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMxNzk4NDE=","avatar_url":"https://avatars3.githubusercontent.com/u/3179841?v=4","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"repo":{"id":30175039,"node_id":"MDEwOlJlcG9zaXRvcnkzMDE3NTAzOQ==","name":"ecommerce","full_name":"edx/ecommerce","private":false,"owner":{"login":"edx","id":3179841,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMxNzk4NDE=","avatar_url":"https://avatars3.githubusercontent.com/u/3179841?v=4","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/edx/ecommerce","description":"Service for managing edX's product catalog and handling orders for those products","fork":false,"url":"https://api.github.com/repos/edx/ecommerce","forks_url":"https://api.github.com/repos/edx/ecommerce/forks","keys_url":"https://api.github.com/repos/edx/ecommerce/keys{/key_id}","collaborators_url":"https://api.github.com/repos/edx/ecommerce/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/edx/ecommerce/teams","hooks_url":"https://api.github.com/repos/edx/ecommerce/hooks","issue_events_url":"https://api.github.com/repos/edx/ecommerce/issues/events{/number}","events_url":"https://api.github.com/repos/edx/ecommerce/events","assignees_url":"https://api.github.com/repos/edx/ecommerce/assignees{/user}","branches_url":"https://api.github.com/repos/edx/ecommerce/branches{/branch}","tags_url":"https://api.github.com/repos/edx/ecommerce/tags","blobs_url":"https://api.github.com/repos/edx/ecommerce/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/edx/ecommerce/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/edx/ecommerce/git/refs{/sha}","trees_url":"https://api.github.com/repos/edx/ecommerce/git/trees{/sha}","statuses_url":"https://api.github.com/repos/edx/ecommerce/statuses/{sha}","languages_url":"https://api.github.com/repos/edx/ecommerce/languages","stargazers_url":"https://api.github.com/repos/edx/ecommerce/stargazers","contributors_url":"https://api.github.com/repos/edx/ecommerce/contributors","subscribers_url":"https://api.github.com/repos/edx/ecommerce/subscribers","subscription_url":"https://api.github.com/repos/edx/ecommerce/subscription","commits_url":"https://api.github.com/repos/edx/ecommerce/commits{/sha}","git_commits_url":"https://api.github.com/repos/edx/ecommerce/git/commits{/sha}","comments_url":"https://api.github.com/repos/edx/ecommerce/comments{/number}","issue_comment_url":"https://api.github.com/repos/edx/ecommerce/issues/comments{/number}","contents_url":"https://api.github.com/repos/edx/ecommerce/contents/{+path}","compare_url":"https://api.github.com/repos/edx/ecommerce/compare/{base}...{head}","merges_url":"https://api.github.com/repos/edx/ecommerce/merges","archive_url":"https://api.github.com/repos/edx/ecommerce/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/edx/ecommerce/downloads","issues_url":"https://api.github.com/repos/edx/ecommerce/issues{/number}","pulls_url":"https://api.github.com/repos/edx/ecommerce/pulls{/number}","milestones_url":"https://api.github.com/repos/edx/ecommerce/milestones{/number}","notifications_url":"https://api.github.com/repos/edx/ecommerce/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/edx/ecommerce/labels{/name}","releases_url":"https://api.github.com/repos/edx/ecommerce/releases{/id}","deployments_url":"https://api.github.com/repos/edx/ecommerce/deployments","created_at":"2015-02-02T06:55:15Z","updated_at":"2018-12-19T16:49:02Z","pushed_at":"2018-12-19T22:35:12Z","git_url":"git://github.com/edx/ecommerce.git","ssh_url":"git@github.com:edx/ecommerce.git","clone_url":"https://github.com/edx/ecommerce.git","svn_url":"https://github.com/edx/ecommerce","homepage":"https://edx-ecommerce.readthedocs.io/en/latest/","size":15275,"stargazers_count":83,"watchers_count":83,"language":"Python","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":108,"mirror_url":null,"archived":false,"open_issues_count":22,"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":108,"open_issues":22,"watchers":83,"default_branch":"master"}},"base":{"label":"edx:master","ref":"master","sha":"7cfff6d5139b1ec79b0505a948667f017b359715","user":{"login":"edx","id":3179841,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMxNzk4NDE=","avatar_url":"https://avatars3.githubusercontent.com/u/3179841?v=4","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"repo":{"id":30175039,"node_id":"MDEwOlJlcG9zaXRvcnkzMDE3NTAzOQ==","name":"ecommerce","full_name":"edx/ecommerce","private":false,"owner":{"login":"edx","id":3179841,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMxNzk4NDE=","avatar_url":"https://avatars3.githubusercontent.com/u/3179841?v=4","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/edx/ecommerce","description":"Service for managing edX's product catalog and handling orders for those products","fork":false,"url":"https://api.github.com/repos/edx/ecommerce","forks_url":"https://api.github.com/repos/edx/ecommerce/forks","keys_url":"https://api.github.com/repos/edx/ecommerce/keys{/key_id}","collaborators_url":"https://api.github.com/repos/edx/ecommerce/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/edx/ecommerce/teams","hooks_url":"https://api.github.com/repos/edx/ecommerce/hooks","issue_events_url":"https://api.github.com/repos/edx/ecommerce/issues/events{/number}","events_url":"https://api.github.com/repos/edx/ecommerce/events","assignees_url":"https://api.github.com/repos/edx/ecommerce/assignees{/user}","branches_url":"https://api.github.com/repos/edx/ecommerce/branches{/branch}","tags_url":"https://api.github.com/repos/edx/ecommerce/tags","blobs_url":"https://api.github.com/repos/edx/ecommerce/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/edx/ecommerce/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/edx/ecommerce/git/refs{/sha}","trees_url":"https://api.github.com/repos/edx/ecommerce/git/trees{/sha}","statuses_url":"https://api.github.com/repos/edx/ecommerce/statuses/{sha}","languages_url":"https://api.github.com/repos/edx/ecommerce/languages","stargazers_url":"https://api.github.com/repos/edx/ecommerce/stargazers","contributors_url":"https://api.github.com/repos/edx/ecommerce/contributors","subscribers_url":"https://api.github.com/repos/edx/ecommerce/subscribers","subscription_url":"https://api.github.com/repos/edx/ecommerce/subscription","commits_url":"https://api.github.com/repos/edx/ecommerce/commits{/sha}","git_commits_url":"https://api.github.com/repos/edx/ecommerce/git/commits{/sha}","comments_url":"https://api.github.com/repos/edx/ecommerce/comments{/number}","issue_comment_url":"https://api.github.com/repos/edx/ecommerce/issues/comments{/number}","contents_url":"https://api.github.com/repos/edx/ecommerce/contents/{+path}","compare_url":"https://api.github.com/repos/edx/ecommerce/compare/{base}...{head}","merges_url":"https://api.github.com/repos/edx/ecommerce/merges","archive_url":"https://api.github.com/repos/edx/ecommerce/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/edx/ecommerce/downloads","issues_url":"https://api.github.com/repos/edx/ecommerce/issues{/number}","pulls_url":"https://api.github.com/repos/edx/ecommerce/pulls{/number}","milestones_url":"https://api.github.com/repos/edx/ecommerce/milestones{/number}","notifications_url":"https://api.github.com/repos/edx/ecommerce/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/edx/ecommerce/labels{/name}","releases_url":"https://api.github.com/repos/edx/ecommerce/releases{/id}","deployments_url":"https://api.github.com/repos/edx/ecommerce/deployments","created_at":"2015-02-02T06:55:15Z","updated_at":"2018-12-19T16:49:02Z","pushed_at":"2018-12-19T22:35:12Z","git_url":"git://github.com/edx/ecommerce.git","ssh_url":"git@github.com:edx/ecommerce.git","clone_url":"https://github.com/edx/ecommerce.git","svn_url":"https://github.com/edx/ecommerce","homepage":"https://edx-ecommerce.readthedocs.io/en/latest/","size":15275,"stargazers_count":83,"watchers_count":83,"language":"Python","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":108,"mirror_url":null,"archived":false,"open_issues_count":22,"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":108,"open_issues":22,"watchers":83,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/edx/ecommerce/pulls/1998"},"html":{"href":"https://github.com/edx/ecommerce/pull/1998"},"issue":{"href":"https://api.github.com/repos/edx/ecommerce/issues/1998"},"comments":{"href":"https://api.github.com/repos/edx/ecommerce/issues/1998/comments"},"review_comments":{"href":"https://api.github.com/repos/edx/ecommerce/pulls/1998/comments"},"review_comment":{"href":"https://api.github.com/repos/edx/ecommerce/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/edx/ecommerce/pulls/1998/commits"},"statuses":{"href":"https://api.github.com/repos/edx/ecommerce/statuses/3232e371e32488c331f4216efcacb615f08ba284"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"irfanuddinahmad"}}