{"action":"created","comment":{"url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/comments/207678963","pull_request_review_id":143348808,"id":207678963,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzY3ODk2Mw==","diff_hunk":"@@ -0,0 +1,171 @@\n+/*-\n+ * ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\n+ * Autonomic Proprietary 1.0\n+ * ——————————————————————————————————————————————————————————————————————————————\n+ * Copyright (C) 2018 Autonomic, LLC - All rights reserved\n+ * ——————————————————————————————————————————————————————————————————————————————\n+ * Proprietary and confidential.\n+ * \n+ * NOTICE:  All information contained herein is, and remains the property of\n+ * Autonomic, LLC and its suppliers, if any.  The intellectual and technical\n+ * concepts contained herein are proprietary to Autonomic, LLC and its suppliers\n+ * and may be covered by U.S. and Foreign Patents, patents in process, and are\n+ * protected by trade secret or copyright law. Dissemination of this information\n+ * or reproduction of this material is strictly forbidden unless prior written\n+ * permission is obtained from Autonomic, LLC.\n+ * \n+ * Unauthorized copy of this file, via any medium is strictly prohibited.\n+ * ______________________________________________________________________________\n+ */\n+package com.autonomic.actuation.frontend.kafka.consumer;\n+\n+import com.autonomic.actuation.frontend.data.ActuationRecord;\n+import com.autonomic.actuation.frontend.v1.ActuationRepository;\n+import com.autonomic.fabric.FabricEnvelope;\n+import com.autonomic.fabric.StateTransition;\n+import java.util.Arrays;\n+import java.util.Collection;\n+import java.util.Date;\n+import java.util.List;\n+import java.util.Objects;\n+import java.util.Observable;\n+import java.util.UUID;\n+import java.util.stream.Collectors;\n+import org.apache.kafka.clients.consumer.Consumer;\n+import org.apache.kafka.clients.consumer.ConsumerRecord;\n+import org.apache.kafka.clients.consumer.ConsumerRecords;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+public class ConsumerTask extends Observable implements Runnable {\n+\n+    private static final Logger logger = LoggerFactory.getLogger(ConsumerTask.class);\n+    private ActuationRepository repository;\n+    private final int numRetries = 10;\n+    private final int abortRetryBackoffMs = 1000;\n+    private int pollMs;\n+    private Consumer<String, FabricEnvelope> consumer;\n+    private final List<String> SUCCEEDED_STATE = Arrays.asList(\"unlock\");\n+    private final List<String> FAILED_STATE = Arrays.asList(\"unlock_failed\");\n+\n+    public ConsumerTask(Consumer consumer, ActuationRepository repository, int pollMs) {\n+        this.consumer = consumer;\n+        this.repository = repository;\n+        this.pollMs = pollMs;\n+    }\n+\n+    public void run() {\n+        while (true) {\n+            process();\n+        }\n+    }\n+\n+    public void process() {\n+        // Consume up to ConsumerConfig.MAX_POLL_RECORDS_CONFIG records or pollTimeout is reached\n+        ConsumerRecords<String, FabricEnvelope> records = consumer.poll(pollMs);\n+        if (records.count() == 0) {\n+            return;\n+        }\n+\n+        for (int retries = 0; retries < numRetries; retries++) {\n+            try {\n+                process(records);\n+            } catch (RuntimeException e) {\n+                if (retries < numRetries - 1) {\n+                    long backOffMillis = abortRetryBackoffMs * retries;\n+                    logger.info(\"Sleep \" + backOffMillis + \" before retry \" + retries);\n+                    try {\n+                        Thread.sleep(backOffMillis);\n+                    } catch (InterruptedException ie) {\n+                        logger.error(ie.getMessage());\n+                    }\n+                    continue;\n+                }\n+            }\n+            break;\n+        }\n+    }\n+\n+    private void process(ConsumerRecords<String, FabricEnvelope> records) {\n+        List<ActuationRecord> result = records.partitions().stream()\n+                // Map to list of records for each partition\n+                .map(records::records)\n+                .filter(list -> !list.isEmpty())\n+                // flapMap the lists to individual ConsumerRecords\n+                .flatMap(Collection::stream)\n+                .filter(Objects::nonNull)","path":"src/main/java/com/autonomic/actuation/frontend/kafka/consumer/ConsumerTask.java","position":96,"original_position":96,"commit_id":"c6177e06a03bed872241158bf9b0c9c314e956ed","original_commit_id":"c6177e06a03bed872241158bf9b0c9c314e956ed","user":{"login":"elalonde","id":4856652,"node_id":"MDQ6VXNlcjQ4NTY2NTI=","avatar_url":"https://avatars0.githubusercontent.com/u/4856652?v=4","gravatar_id":"","url":"https://api.github.com/users/elalonde","html_url":"https://github.com/elalonde","followers_url":"https://api.github.com/users/elalonde/followers","following_url":"https://api.github.com/users/elalonde/following{/other_user}","gists_url":"https://api.github.com/users/elalonde/gists{/gist_id}","starred_url":"https://api.github.com/users/elalonde/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elalonde/subscriptions","organizations_url":"https://api.github.com/users/elalonde/orgs","repos_url":"https://api.github.com/users/elalonde/repos","events_url":"https://api.github.com/users/elalonde/events{/privacy}","received_events_url":"https://api.github.com/users/elalonde/received_events","type":"User","site_admin":false},"body":"Probably want a prometheus metric when you get null","created_at":"2018-08-03T22:09:44Z","updated_at":"2018-08-03T22:09:44Z","html_url":"https://github.com/autonomic-ai/actuation-frontend/pull/3#discussion_r207678963","pull_request_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/comments/207678963"},"html":{"href":"https://github.com/autonomic-ai/actuation-frontend/pull/3#discussion_r207678963"},"pull_request":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3"}}},"pull_request":{"url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3","id":206146607,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MTQ2NjA3","html_url":"https://github.com/autonomic-ai/actuation-frontend/pull/3","diff_url":"https://github.com/autonomic-ai/actuation-frontend/pull/3.diff","patch_url":"https://github.com/autonomic-ai/actuation-frontend/pull/3.patch","issue_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/3","number":3,"state":"open","locked":false,"title":"consume state transition update and update the entry in db","user":{"login":"ning2008wisc","id":32080381,"node_id":"MDQ6VXNlcjMyMDgwMzgx","avatar_url":"https://avatars1.githubusercontent.com/u/32080381?v=4","gravatar_id":"","url":"https://api.github.com/users/ning2008wisc","html_url":"https://github.com/ning2008wisc","followers_url":"https://api.github.com/users/ning2008wisc/followers","following_url":"https://api.github.com/users/ning2008wisc/following{/other_user}","gists_url":"https://api.github.com/users/ning2008wisc/gists{/gist_id}","starred_url":"https://api.github.com/users/ning2008wisc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ning2008wisc/subscriptions","organizations_url":"https://api.github.com/users/ning2008wisc/orgs","repos_url":"https://api.github.com/users/ning2008wisc/repos","events_url":"https://api.github.com/users/ning2008wisc/events{/privacy}","received_events_url":"https://api.github.com/users/ning2008wisc/received_events","type":"User","site_admin":false},"body":"when receives a state transition event (e.g. car unlock) in Fabric Envelope, fetch `toState` (e.g. unlock) from the event and update the corresponding row in the actuation table.\r\n\r\nThe consumption of state transition event and update the entry in database are done in a \"transactional\" manner, so that only after the database write is successful, the consumer commits the offset\r\n\r\nTested locally, see below for an example","created_at":"2018-08-03T21:49:05Z","updated_at":"2018-08-03T22:09:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1f7d6adb2e7f49252aecd9f53ad0c1dd71cfb11f","assignee":{"login":"dakotamcnealy","id":40366118,"node_id":"MDQ6VXNlcjQwMzY2MTE4","avatar_url":"https://avatars1.githubusercontent.com/u/40366118?v=4","gravatar_id":"","url":"https://api.github.com/users/dakotamcnealy","html_url":"https://github.com/dakotamcnealy","followers_url":"https://api.github.com/users/dakotamcnealy/followers","following_url":"https://api.github.com/users/dakotamcnealy/following{/other_user}","gists_url":"https://api.github.com/users/dakotamcnealy/gists{/gist_id}","starred_url":"https://api.github.com/users/dakotamcnealy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dakotamcnealy/subscriptions","organizations_url":"https://api.github.com/users/dakotamcnealy/orgs","repos_url":"https://api.github.com/users/dakotamcnealy/repos","events_url":"https://api.github.com/users/dakotamcnealy/events{/privacy}","received_events_url":"https://api.github.com/users/dakotamcnealy/received_events","type":"User","site_admin":false},"assignees":[{"login":"dakotamcnealy","id":40366118,"node_id":"MDQ6VXNlcjQwMzY2MTE4","avatar_url":"https://avatars1.githubusercontent.com/u/40366118?v=4","gravatar_id":"","url":"https://api.github.com/users/dakotamcnealy","html_url":"https://github.com/dakotamcnealy","followers_url":"https://api.github.com/users/dakotamcnealy/followers","following_url":"https://api.github.com/users/dakotamcnealy/following{/other_user}","gists_url":"https://api.github.com/users/dakotamcnealy/gists{/gist_id}","starred_url":"https://api.github.com/users/dakotamcnealy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dakotamcnealy/subscriptions","organizations_url":"https://api.github.com/users/dakotamcnealy/orgs","repos_url":"https://api.github.com/users/dakotamcnealy/repos","events_url":"https://api.github.com/users/dakotamcnealy/events{/privacy}","received_events_url":"https://api.github.com/users/dakotamcnealy/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"dbryson","id":31545,"node_id":"MDQ6VXNlcjMxNTQ1","avatar_url":"https://avatars0.githubusercontent.com/u/31545?v=4","gravatar_id":"","url":"https://api.github.com/users/dbryson","html_url":"https://github.com/dbryson","followers_url":"https://api.github.com/users/dbryson/followers","following_url":"https://api.github.com/users/dbryson/following{/other_user}","gists_url":"https://api.github.com/users/dbryson/gists{/gist_id}","starred_url":"https://api.github.com/users/dbryson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbryson/subscriptions","organizations_url":"https://api.github.com/users/dbryson/orgs","repos_url":"https://api.github.com/users/dbryson/repos","events_url":"https://api.github.com/users/dbryson/events{/privacy}","received_events_url":"https://api.github.com/users/dbryson/received_events","type":"User","site_admin":false},{"login":"maxnewbould","id":100380,"node_id":"MDQ6VXNlcjEwMDM4MA==","avatar_url":"https://avatars1.githubusercontent.com/u/100380?v=4","gravatar_id":"","url":"https://api.github.com/users/maxnewbould","html_url":"https://github.com/maxnewbould","followers_url":"https://api.github.com/users/maxnewbould/followers","following_url":"https://api.github.com/users/maxnewbould/following{/other_user}","gists_url":"https://api.github.com/users/maxnewbould/gists{/gist_id}","starred_url":"https://api.github.com/users/maxnewbould/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxnewbould/subscriptions","organizations_url":"https://api.github.com/users/maxnewbould/orgs","repos_url":"https://api.github.com/users/maxnewbould/repos","events_url":"https://api.github.com/users/maxnewbould/events{/privacy}","received_events_url":"https://api.github.com/users/maxnewbould/received_events","type":"User","site_admin":false},{"login":"cramja","id":5708822,"node_id":"MDQ6VXNlcjU3MDg4MjI=","avatar_url":"https://avatars1.githubusercontent.com/u/5708822?v=4","gravatar_id":"","url":"https://api.github.com/users/cramja","html_url":"https://github.com/cramja","followers_url":"https://api.github.com/users/cramja/followers","following_url":"https://api.github.com/users/cramja/following{/other_user}","gists_url":"https://api.github.com/users/cramja/gists{/gist_id}","starred_url":"https://api.github.com/users/cramja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cramja/subscriptions","organizations_url":"https://api.github.com/users/cramja/orgs","repos_url":"https://api.github.com/users/cramja/repos","events_url":"https://api.github.com/users/cramja/events{/privacy}","received_events_url":"https://api.github.com/users/cramja/received_events","type":"User","site_admin":false},{"login":"yulongqiao","id":21297031,"node_id":"MDQ6VXNlcjIxMjk3MDMx","avatar_url":"https://avatars2.githubusercontent.com/u/21297031?v=4","gravatar_id":"","url":"https://api.github.com/users/yulongqiao","html_url":"https://github.com/yulongqiao","followers_url":"https://api.github.com/users/yulongqiao/followers","following_url":"https://api.github.com/users/yulongqiao/following{/other_user}","gists_url":"https://api.github.com/users/yulongqiao/gists{/gist_id}","starred_url":"https://api.github.com/users/yulongqiao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yulongqiao/subscriptions","organizations_url":"https://api.github.com/users/yulongqiao/orgs","repos_url":"https://api.github.com/users/yulongqiao/repos","events_url":"https://api.github.com/users/yulongqiao/events{/privacy}","received_events_url":"https://api.github.com/users/yulongqiao/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3/commits","review_comments_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3/comments","review_comment_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/comments{/number}","comments_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/3/comments","statuses_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/statuses/c6177e06a03bed872241158bf9b0c9c314e956ed","head":{"label":"autonomic-ai:trans_consumer","ref":"trans_consumer","sha":"c6177e06a03bed872241158bf9b0c9c314e956ed","user":{"login":"autonomic-ai","id":20615105,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNjE1MTA1","avatar_url":"https://avatars3.githubusercontent.com/u/20615105?v=4","gravatar_id":"","url":"https://api.github.com/users/autonomic-ai","html_url":"https://github.com/autonomic-ai","followers_url":"https://api.github.com/users/autonomic-ai/followers","following_url":"https://api.github.com/users/autonomic-ai/following{/other_user}","gists_url":"https://api.github.com/users/autonomic-ai/gists{/gist_id}","starred_url":"https://api.github.com/users/autonomic-ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/autonomic-ai/subscriptions","organizations_url":"https://api.github.com/users/autonomic-ai/orgs","repos_url":"https://api.github.com/users/autonomic-ai/repos","events_url":"https://api.github.com/users/autonomic-ai/events{/privacy}","received_events_url":"https://api.github.com/users/autonomic-ai/received_events","type":"Organization","site_admin":false},"repo":{"id":142049772,"node_id":"MDEwOlJlcG9zaXRvcnkxNDIwNDk3NzI=","name":"actuation-frontend","full_name":"autonomic-ai/actuation-frontend","owner":{"login":"autonomic-ai","id":20615105,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNjE1MTA1","avatar_url":"https://avatars3.githubusercontent.com/u/20615105?v=4","gravatar_id":"","url":"https://api.github.com/users/autonomic-ai","html_url":"https://github.com/autonomic-ai","followers_url":"https://api.github.com/users/autonomic-ai/followers","following_url":"https://api.github.com/users/autonomic-ai/following{/other_user}","gists_url":"https://api.github.com/users/autonomic-ai/gists{/gist_id}","starred_url":"https://api.github.com/users/autonomic-ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/autonomic-ai/subscriptions","organizations_url":"https://api.github.com/users/autonomic-ai/orgs","repos_url":"https://api.github.com/users/autonomic-ai/repos","events_url":"https://api.github.com/users/autonomic-ai/events{/privacy}","received_events_url":"https://api.github.com/users/autonomic-ai/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/autonomic-ai/actuation-frontend","description":null,"fork":false,"url":"https://api.github.com/repos/autonomic-ai/actuation-frontend","forks_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/forks","keys_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/keys{/key_id}","collaborators_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/teams","hooks_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/hooks","issue_events_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/events{/number}","events_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/events","assignees_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/assignees{/user}","branches_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/branches{/branch}","tags_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/tags","blobs_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/refs{/sha}","trees_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/trees{/sha}","statuses_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/statuses/{sha}","languages_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/languages","stargazers_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/stargazers","contributors_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/contributors","subscribers_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/subscribers","subscription_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/subscription","commits_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/commits{/sha}","git_commits_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/commits{/sha}","comments_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/comments{/number}","issue_comment_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/comments{/number}","contents_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/contents/{+path}","compare_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/compare/{base}...{head}","merges_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/merges","archive_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/downloads","issues_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues{/number}","pulls_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls{/number}","milestones_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/milestones{/number}","notifications_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/labels{/name}","releases_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/releases{/id}","deployments_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/deployments","created_at":"2018-07-23T17:55:18Z","updated_at":"2018-07-30T19:54:34Z","pushed_at":"2018-08-03T22:03:10Z","git_url":"git://github.com/autonomic-ai/actuation-frontend.git","ssh_url":"git@github.com:autonomic-ai/actuation-frontend.git","clone_url":"https://github.com/autonomic-ai/actuation-frontend.git","svn_url":"https://github.com/autonomic-ai/actuation-frontend","homepage":null,"size":51,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"autonomic-ai:master","ref":"master","sha":"0ac6b43f095d152a98a7734f11a0191171b52586","user":{"login":"autonomic-ai","id":20615105,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNjE1MTA1","avatar_url":"https://avatars3.githubusercontent.com/u/20615105?v=4","gravatar_id":"","url":"https://api.github.com/users/autonomic-ai","html_url":"https://github.com/autonomic-ai","followers_url":"https://api.github.com/users/autonomic-ai/followers","following_url":"https://api.github.com/users/autonomic-ai/following{/other_user}","gists_url":"https://api.github.com/users/autonomic-ai/gists{/gist_id}","starred_url":"https://api.github.com/users/autonomic-ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/autonomic-ai/subscriptions","organizations_url":"https://api.github.com/users/autonomic-ai/orgs","repos_url":"https://api.github.com/users/autonomic-ai/repos","events_url":"https://api.github.com/users/autonomic-ai/events{/privacy}","received_events_url":"https://api.github.com/users/autonomic-ai/received_events","type":"Organization","site_admin":false},"repo":{"id":142049772,"node_id":"MDEwOlJlcG9zaXRvcnkxNDIwNDk3NzI=","name":"actuation-frontend","full_name":"autonomic-ai/actuation-frontend","owner":{"login":"autonomic-ai","id":20615105,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNjE1MTA1","avatar_url":"https://avatars3.githubusercontent.com/u/20615105?v=4","gravatar_id":"","url":"https://api.github.com/users/autonomic-ai","html_url":"https://github.com/autonomic-ai","followers_url":"https://api.github.com/users/autonomic-ai/followers","following_url":"https://api.github.com/users/autonomic-ai/following{/other_user}","gists_url":"https://api.github.com/users/autonomic-ai/gists{/gist_id}","starred_url":"https://api.github.com/users/autonomic-ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/autonomic-ai/subscriptions","organizations_url":"https://api.github.com/users/autonomic-ai/orgs","repos_url":"https://api.github.com/users/autonomic-ai/repos","events_url":"https://api.github.com/users/autonomic-ai/events{/privacy}","received_events_url":"https://api.github.com/users/autonomic-ai/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/autonomic-ai/actuation-frontend","description":null,"fork":false,"url":"https://api.github.com/repos/autonomic-ai/actuation-frontend","forks_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/forks","keys_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/keys{/key_id}","collaborators_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/teams","hooks_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/hooks","issue_events_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/events{/number}","events_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/events","assignees_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/assignees{/user}","branches_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/branches{/branch}","tags_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/tags","blobs_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/refs{/sha}","trees_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/trees{/sha}","statuses_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/statuses/{sha}","languages_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/languages","stargazers_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/stargazers","contributors_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/contributors","subscribers_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/subscribers","subscription_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/subscription","commits_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/commits{/sha}","git_commits_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/git/commits{/sha}","comments_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/comments{/number}","issue_comment_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/comments{/number}","contents_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/contents/{+path}","compare_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/compare/{base}...{head}","merges_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/merges","archive_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/downloads","issues_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues{/number}","pulls_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls{/number}","milestones_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/milestones{/number}","notifications_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/labels{/name}","releases_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/releases{/id}","deployments_url":"https://api.github.com/repos/autonomic-ai/actuation-frontend/deployments","created_at":"2018-07-23T17:55:18Z","updated_at":"2018-07-30T19:54:34Z","pushed_at":"2018-08-03T22:03:10Z","git_url":"git://github.com/autonomic-ai/actuation-frontend.git","ssh_url":"git@github.com:autonomic-ai/actuation-frontend.git","clone_url":"https://github.com/autonomic-ai/actuation-frontend.git","svn_url":"https://github.com/autonomic-ai/actuation-frontend","homepage":null,"size":51,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3"},"html":{"href":"https://github.com/autonomic-ai/actuation-frontend/pull/3"},"issue":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/3"},"comments":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/autonomic-ai/actuation-frontend/statuses/c6177e06a03bed872241158bf9b0c9c314e956ed"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"elalonde"}}