{"action":"created","comment":{"url":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/comments/194749320","pull_request_review_id":127978297,"id":194749320,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NDc0OTMyMA==","diff_hunk":"@@ -0,0 +1,152 @@\n+#!/usr/bin/env python\n+\n+import os\n+import sys\n+import requests\n+import json\n+import defusedxml.ElementTree as ET\n+import ConfigParser\n+import logging\n+import logging.handlers\n+import argparse\n+from argo_ams_library import ArgoMessagingService, AmsException\n+\n+\n+def create_users(config, logger, verify):\n+\n+    # retrieve ams info\n+    ams_host = config.get(\"AMS\", \"ams_host\")\n+    ams_project = config.get(\"AMS\", \"ams_project\")\n+    ams_token = config.get(\"AMS\", \"ams_token\")\n+    ams_email = config.get(\"AMS\", \"ams_email\")\n+    users_role = config.get(\"AMS\", \"users_role\")\n+    goc_db_url = config.get(\"AMS\", \"goc_db_host\")\n+\n+    # retrieve authn info\n+    authn_host = config.get(\"AUTHN\", \"authn_host\")\n+    authn_service_uuid = config.get(\"AUTHN\", \"service_uuid\")\n+    authn_token = config.get(\"AUTHN\", \"authn_token\")\n+    authn_service_host = config.get(\"AUTHN\", \"service_host\")\n+\n+    # services holds all different services that the users  might belong to(which translates to ams topics)\n+    # each service will have a list of users associated with it\n+    services = {}\n+    conf_services = config.get(\"AMS\", \"service-types\").split(\",\")\n+    for srv in conf_services:\n+        services[srv] = []\n+\n+    # create the ams client\n+    ams = ArgoMessagingService(endpoint=ams_host, project=ams_project, token=ams_token)\n+\n+    # grab the xml data from goc db\n+    r = requests.get(goc_db_url, verify=False)\n+    print(r.text)\n+\n+    # users from goc db that don't have a dn registered\n+    missing_dns = []\n+\n+    # build the xml object\n+    root = ET.fromstring(r.text)\n+    # iterate through the xml object's service_endpoints\n+    for service_endpoint in root.findall(\"SERVICE_ENDPOINT\"):\n+        service_type = service_endpoint.find(\"SERVICE_TYPE\").text.replace(\".\", \"-\")\n+        # check if the service_type of the endpoint is one of the specified ones\n+        if service_type not in services:\n+            continue\n+        # grap the dn\n+        service_dn = service_endpoint.find(\"HOSTDN\")\n+        if service_dn is None:\n+            missing_dns.append(service_endpoint.find(\"HOSTNAME\").text)\n+            continue\n+\n+        # Create AMS user\n+        hostname = service_endpoint.find(\"HOSTNAME\").text.replace(\".\", \"-\")\n+        sitename = service_endpoint.find(\"SITENAME\").text.replace(\".\", \"-\")\n+        user_binding_name = service_type + \"---\" + hostname + \"---\" + sitename\n+        print(hostname)\n+        # reverse the dn and exclude the last slash\n+        service_dn = \",\".join(x for x in service_dn.text.split(\"/\")[::-1][:-1])\n+        project = {'project': ams_project, 'roles': [users_role]}\n+        usr_create = {'projects': [project], 'email': ams_email}\n+        print(json.dumps(usr_create))\n+\n+        # create the user\n+        req = requests.post(\"https://\"+ams_host+\"/v1/users/\" + user_binding_name + \"?key=\" + ams_token, data=json.dumps(usr_create), verify=verify)\n+        print(req.text)\n+        # if the rsponse doesn't contain the field uuid, it means the user was not created\n+        req_data = json.loads(req.text)\n+        if req.status_code != 201:\n+            logger.log(logging.CRITICAL, \"Something went wrong while creating ams user.\\nBody data: \" + str(usr_create) + \"\\nResponse Body: \" + req.text)\n+        if \"uuid\" not in req_data:\n+            logger.log(logging.CRITICAL, \"uuid field not found in response from ams\")\n+            continue\n+\n+        # Create the respective AUTH binding\n+        bd_data = {'name': user_binding_name, 'service_uuid': authn_service_uuid, 'host': authn_service_host, 'dn': service_dn, 'unique_key': req_data[\"uuid\"]}\n+        rr = requests.post(\"https://\"+authn_host+\"/v1/bindings?key=\"+authn_token, data=json.dumps(bd_data), verify=verify)\n+        print(rr.text)\n+        if rr.status_code != 201:\n+            logger.log(logging.CRITICAL, \"Something went wrong while creating a binding.\\nBody data: \" + str(bd_data) + \"\\nResponse: \" + rr.text)\n+            # delete the ams user, since binding could not be created\n+            requests.delete(\"https://\"+ams_host+\"/v1/users/\" + user_binding_name + \"?key=\" + ams_token, verify=verify)\n+            continue\n+\n+        # if both the user and binding have been created, assign the user to the acl of the topic\n+        services[service_type].append(hostname)\n+\n+\n+# modify the acl for each topic , to add all associated users\n+    print(services)\n+    for service in services:\n+        # if there are no users in the acl, skip the next topic\n+        if len(services[service]) == 0:\n+            continue\n+        print(service)\n+        authorized_users = services[service]\n+        rr = requests.post(\"https://\"+ams_host+\"/v1/projects/\"+ams_project+\"/topics/\"+service+\":modifyAcl?key=\"+ams_token, data=json.dumps({'authorized_users': authorized_users}), verify=verify)\n+        # print(services[service])\n+        # try:\n+        #     ams.modifyacl_topic(topic=service, users=authorized_users, verify=False)\n+        # except AmsException as e:\n+        #     logger.log(logging.CRITICAL, e.msg)\n+\n+    print(missing_dns)","path":"bin/ams-create-users-gocdb.py","position":113,"original_position":113,"commit_id":"a47185f71613dc97b42baea95989c25ce05e2e6b","original_commit_id":"a47185f71613dc97b42baea95989c25ce05e2e6b","user":{"login":"agelostsal","id":15677505,"node_id":"MDQ6VXNlcjE1Njc3NTA1","avatar_url":"https://avatars1.githubusercontent.com/u/15677505?v=4","gravatar_id":"","url":"https://api.github.com/users/agelostsal","html_url":"https://github.com/agelostsal","followers_url":"https://api.github.com/users/agelostsal/followers","following_url":"https://api.github.com/users/agelostsal/following{/other_user}","gists_url":"https://api.github.com/users/agelostsal/gists{/gist_id}","starred_url":"https://api.github.com/users/agelostsal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agelostsal/subscriptions","organizations_url":"https://api.github.com/users/agelostsal/orgs","repos_url":"https://api.github.com/users/agelostsal/repos","events_url":"https://api.github.com/users/agelostsal/events{/privacy}","received_events_url":"https://api.github.com/users/agelostsal/received_events","type":"User","site_admin":false},"body":"ready","created_at":"2018-06-12T14:01:47Z","updated_at":"2018-06-12T14:01:47Z","html_url":"https://github.com/ARGOeu/argo-api-authn/pull/22#discussion_r194749320","pull_request_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/comments/194749320"},"html":{"href":"https://github.com/ARGOeu/argo-api-authn/pull/22#discussion_r194749320"},"pull_request":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22"}},"in_reply_to_id":194717048},"pull_request":{"url":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22","id":192783948,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkyNzgzOTQ4","html_url":"https://github.com/ARGOeu/argo-api-authn/pull/22","diff_url":"https://github.com/ARGOeu/argo-api-authn/pull/22.diff","patch_url":"https://github.com/ARGOeu/argo-api-authn/pull/22.patch","issue_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/issues/22","number":22,"state":"open","locked":false,"title":"ARGO-1121 Script for creating users","user":{"login":"agelostsal","id":15677505,"node_id":"MDQ6VXNlcjE1Njc3NTA1","avatar_url":"https://avatars1.githubusercontent.com/u/15677505?v=4","gravatar_id":"","url":"https://api.github.com/users/agelostsal","html_url":"https://github.com/agelostsal","followers_url":"https://api.github.com/users/agelostsal/followers","following_url":"https://api.github.com/users/agelostsal/following{/other_user}","gists_url":"https://api.github.com/users/agelostsal/gists{/gist_id}","starred_url":"https://api.github.com/users/agelostsal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agelostsal/subscriptions","organizations_url":"https://api.github.com/users/agelostsal/orgs","repos_url":"https://api.github.com/users/agelostsal/repos","events_url":"https://api.github.com/users/agelostsal/events{/privacy}","received_events_url":"https://api.github.com/users/agelostsal/received_events","type":"User","site_admin":false},"body":"Python utility script for creating users at ams.\r\nAms library modifyacl_topic was not working properly for me so i handled it manually.","created_at":"2018-06-05T17:36:58Z","updated_at":"2018-06-12T14:01:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9416e0232e5e8027c32eb61bdf83edba285c104d","assignee":null,"assignees":[],"requested_reviewers":[{"login":"themiszamani","id":1556231,"node_id":"MDQ6VXNlcjE1NTYyMzE=","avatar_url":"https://avatars0.githubusercontent.com/u/1556231?v=4","gravatar_id":"","url":"https://api.github.com/users/themiszamani","html_url":"https://github.com/themiszamani","followers_url":"https://api.github.com/users/themiszamani/followers","following_url":"https://api.github.com/users/themiszamani/following{/other_user}","gists_url":"https://api.github.com/users/themiszamani/gists{/gist_id}","starred_url":"https://api.github.com/users/themiszamani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/themiszamani/subscriptions","organizations_url":"https://api.github.com/users/themiszamani/orgs","repos_url":"https://api.github.com/users/themiszamani/repos","events_url":"https://api.github.com/users/themiszamani/events{/privacy}","received_events_url":"https://api.github.com/users/themiszamani/received_events","type":"User","site_admin":false},{"login":"kaggis","id":6143589,"node_id":"MDQ6VXNlcjYxNDM1ODk=","avatar_url":"https://avatars2.githubusercontent.com/u/6143589?v=4","gravatar_id":"","url":"https://api.github.com/users/kaggis","html_url":"https://github.com/kaggis","followers_url":"https://api.github.com/users/kaggis/followers","following_url":"https://api.github.com/users/kaggis/following{/other_user}","gists_url":"https://api.github.com/users/kaggis/gists{/gist_id}","starred_url":"https://api.github.com/users/kaggis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaggis/subscriptions","organizations_url":"https://api.github.com/users/kaggis/orgs","repos_url":"https://api.github.com/users/kaggis/repos","events_url":"https://api.github.com/users/kaggis/events{/privacy}","received_events_url":"https://api.github.com/users/kaggis/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22/commits","review_comments_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22/comments","review_comment_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/issues/22/comments","statuses_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/statuses/a47185f71613dc97b42baea95989c25ce05e2e6b","head":{"label":"agelostsal:users-script","ref":"users-script","sha":"a47185f71613dc97b42baea95989c25ce05e2e6b","user":{"login":"agelostsal","id":15677505,"node_id":"MDQ6VXNlcjE1Njc3NTA1","avatar_url":"https://avatars1.githubusercontent.com/u/15677505?v=4","gravatar_id":"","url":"https://api.github.com/users/agelostsal","html_url":"https://github.com/agelostsal","followers_url":"https://api.github.com/users/agelostsal/followers","following_url":"https://api.github.com/users/agelostsal/following{/other_user}","gists_url":"https://api.github.com/users/agelostsal/gists{/gist_id}","starred_url":"https://api.github.com/users/agelostsal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agelostsal/subscriptions","organizations_url":"https://api.github.com/users/agelostsal/orgs","repos_url":"https://api.github.com/users/agelostsal/repos","events_url":"https://api.github.com/users/agelostsal/events{/privacy}","received_events_url":"https://api.github.com/users/agelostsal/received_events","type":"User","site_admin":false},"repo":{"id":132900693,"node_id":"MDEwOlJlcG9zaXRvcnkxMzI5MDA2OTM=","name":"argo-api-authn","full_name":"agelostsal/argo-api-authn","owner":{"login":"agelostsal","id":15677505,"node_id":"MDQ6VXNlcjE1Njc3NTA1","avatar_url":"https://avatars1.githubusercontent.com/u/15677505?v=4","gravatar_id":"","url":"https://api.github.com/users/agelostsal","html_url":"https://github.com/agelostsal","followers_url":"https://api.github.com/users/agelostsal/followers","following_url":"https://api.github.com/users/agelostsal/following{/other_user}","gists_url":"https://api.github.com/users/agelostsal/gists{/gist_id}","starred_url":"https://api.github.com/users/agelostsal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agelostsal/subscriptions","organizations_url":"https://api.github.com/users/agelostsal/orgs","repos_url":"https://api.github.com/users/agelostsal/repos","events_url":"https://api.github.com/users/agelostsal/events{/privacy}","received_events_url":"https://api.github.com/users/agelostsal/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/agelostsal/argo-api-authn","description":"Authentication Server for ARGO apis","fork":true,"url":"https://api.github.com/repos/agelostsal/argo-api-authn","forks_url":"https://api.github.com/repos/agelostsal/argo-api-authn/forks","keys_url":"https://api.github.com/repos/agelostsal/argo-api-authn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/agelostsal/argo-api-authn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/agelostsal/argo-api-authn/teams","hooks_url":"https://api.github.com/repos/agelostsal/argo-api-authn/hooks","issue_events_url":"https://api.github.com/repos/agelostsal/argo-api-authn/issues/events{/number}","events_url":"https://api.github.com/repos/agelostsal/argo-api-authn/events","assignees_url":"https://api.github.com/repos/agelostsal/argo-api-authn/assignees{/user}","branches_url":"https://api.github.com/repos/agelostsal/argo-api-authn/branches{/branch}","tags_url":"https://api.github.com/repos/agelostsal/argo-api-authn/tags","blobs_url":"https://api.github.com/repos/agelostsal/argo-api-authn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/agelostsal/argo-api-authn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/agelostsal/argo-api-authn/git/refs{/sha}","trees_url":"https://api.github.com/repos/agelostsal/argo-api-authn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/agelostsal/argo-api-authn/statuses/{sha}","languages_url":"https://api.github.com/repos/agelostsal/argo-api-authn/languages","stargazers_url":"https://api.github.com/repos/agelostsal/argo-api-authn/stargazers","contributors_url":"https://api.github.com/repos/agelostsal/argo-api-authn/contributors","subscribers_url":"https://api.github.com/repos/agelostsal/argo-api-authn/subscribers","subscription_url":"https://api.github.com/repos/agelostsal/argo-api-authn/subscription","commits_url":"https://api.github.com/repos/agelostsal/argo-api-authn/commits{/sha}","git_commits_url":"https://api.github.com/repos/agelostsal/argo-api-authn/git/commits{/sha}","comments_url":"https://api.github.com/repos/agelostsal/argo-api-authn/comments{/number}","issue_comment_url":"https://api.github.com/repos/agelostsal/argo-api-authn/issues/comments{/number}","contents_url":"https://api.github.com/repos/agelostsal/argo-api-authn/contents/{+path}","compare_url":"https://api.github.com/repos/agelostsal/argo-api-authn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/agelostsal/argo-api-authn/merges","archive_url":"https://api.github.com/repos/agelostsal/argo-api-authn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/agelostsal/argo-api-authn/downloads","issues_url":"https://api.github.com/repos/agelostsal/argo-api-authn/issues{/number}","pulls_url":"https://api.github.com/repos/agelostsal/argo-api-authn/pulls{/number}","milestones_url":"https://api.github.com/repos/agelostsal/argo-api-authn/milestones{/number}","notifications_url":"https://api.github.com/repos/agelostsal/argo-api-authn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/agelostsal/argo-api-authn/labels{/name}","releases_url":"https://api.github.com/repos/agelostsal/argo-api-authn/releases{/id}","deployments_url":"https://api.github.com/repos/agelostsal/argo-api-authn/deployments","created_at":"2018-05-10T12:58:35Z","updated_at":"2018-05-10T12:58:37Z","pushed_at":"2018-06-12T12:20:41Z","git_url":"git://github.com/agelostsal/argo-api-authn.git","ssh_url":"git@github.com:agelostsal/argo-api-authn.git","clone_url":"https://github.com/agelostsal/argo-api-authn.git","svn_url":"https://github.com/agelostsal/argo-api-authn","homepage":null,"size":1203,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ARGOeu:devel","ref":"devel","sha":"abe11efc05e4b4397b44b7786711cfd85bcf19ba","user":{"login":"ARGOeu","id":6882712,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4ODI3MTI=","avatar_url":"https://avatars2.githubusercontent.com/u/6882712?v=4","gravatar_id":"","url":"https://api.github.com/users/ARGOeu","html_url":"https://github.com/ARGOeu","followers_url":"https://api.github.com/users/ARGOeu/followers","following_url":"https://api.github.com/users/ARGOeu/following{/other_user}","gists_url":"https://api.github.com/users/ARGOeu/gists{/gist_id}","starred_url":"https://api.github.com/users/ARGOeu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARGOeu/subscriptions","organizations_url":"https://api.github.com/users/ARGOeu/orgs","repos_url":"https://api.github.com/users/ARGOeu/repos","events_url":"https://api.github.com/users/ARGOeu/events{/privacy}","received_events_url":"https://api.github.com/users/ARGOeu/received_events","type":"Organization","site_admin":false},"repo":{"id":132732018,"node_id":"MDEwOlJlcG9zaXRvcnkxMzI3MzIwMTg=","name":"argo-api-authn","full_name":"ARGOeu/argo-api-authn","owner":{"login":"ARGOeu","id":6882712,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4ODI3MTI=","avatar_url":"https://avatars2.githubusercontent.com/u/6882712?v=4","gravatar_id":"","url":"https://api.github.com/users/ARGOeu","html_url":"https://github.com/ARGOeu","followers_url":"https://api.github.com/users/ARGOeu/followers","following_url":"https://api.github.com/users/ARGOeu/following{/other_user}","gists_url":"https://api.github.com/users/ARGOeu/gists{/gist_id}","starred_url":"https://api.github.com/users/ARGOeu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARGOeu/subscriptions","organizations_url":"https://api.github.com/users/ARGOeu/orgs","repos_url":"https://api.github.com/users/ARGOeu/repos","events_url":"https://api.github.com/users/ARGOeu/events{/privacy}","received_events_url":"https://api.github.com/users/ARGOeu/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ARGOeu/argo-api-authn","description":"Authentication Server for ARGO apis","fork":false,"url":"https://api.github.com/repos/ARGOeu/argo-api-authn","forks_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/forks","keys_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/teams","hooks_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/hooks","issue_events_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/issues/events{/number}","events_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/events","assignees_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/assignees{/user}","branches_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/branches{/branch}","tags_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/tags","blobs_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/git/refs{/sha}","trees_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/statuses/{sha}","languages_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/languages","stargazers_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/stargazers","contributors_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/contributors","subscribers_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/subscribers","subscription_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/subscription","commits_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/commits{/sha}","git_commits_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/git/commits{/sha}","comments_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/comments{/number}","issue_comment_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/issues/comments{/number}","contents_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/contents/{+path}","compare_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/merges","archive_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/downloads","issues_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/issues{/number}","pulls_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls{/number}","milestones_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/milestones{/number}","notifications_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/labels{/name}","releases_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/releases{/id}","deployments_url":"https://api.github.com/repos/ARGOeu/argo-api-authn/deployments","created_at":"2018-05-09T09:14:59Z","updated_at":"2018-05-11T14:26:25Z","pushed_at":"2018-06-12T12:20:42Z","git_url":"git://github.com/ARGOeu/argo-api-authn.git","ssh_url":"git@github.com:ARGOeu/argo-api-authn.git","clone_url":"https://github.com/ARGOeu/argo-api-authn.git","svn_url":"https://github.com/ARGOeu/argo-api-authn","homepage":null,"size":1164,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"archived":false,"open_issues_count":6,"license":null,"forks":3,"open_issues":6,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22"},"html":{"href":"https://github.com/ARGOeu/argo-api-authn/pull/22"},"issue":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/issues/22"},"comments":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/issues/22/comments"},"review_comments":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22/comments"},"review_comment":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/pulls/22/commits"},"statuses":{"href":"https://api.github.com/repos/ARGOeu/argo-api-authn/statuses/a47185f71613dc97b42baea95989c25ce05e2e6b"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"agelostsal"}}