{"action":"created","comment":{"url":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/comments/216140853","pull_request_review_id":153564956,"id":216140853,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNjE0MDg1Mw==","diff_hunk":"@@ -914,4 +931,163 @@ else if(include.get(i).equals(SERVICEPOINTS_INCLUDE)) {\n     });\n   }\n \n+  /**\n+   *\n+   * @param locateUserFields - a list of fields to be used for search\n+   * @param value - a value to search\n+   * @return\n+   */\n+  private String buildQuery(List<String> locateUserFields, String value) {\n+    return locateUserFields.stream()\n+      .map(field -> new StringBuilder(field).append(\"==\\\"\").append(value).append(\"\\\"\").toString())\n+      .collect(Collectors.joining(\" or \"));\n+  }\n+\n+  /**\n+   * Maps aliases to configuration parameters\n+   * @param fieldAliasList - a list of aliases\n+   * @return a list of user fields to use for search\n+   */\n+  private io.vertx.core.Future<List<String>> getLocateUserFields(List<String> fieldAliasList, java.util.Map<String, String> okapiHeaders) {\n+    //TODO:\n+\n+    String okapiURL = okapiHeaders.get(OKAPI_URL_HEADER);\n+    String tenant = okapiHeaders.get(OKAPI_TENANT_HEADER);\n+    String token = okapiHeaders.get(OKAPI_TOKEN_HEADER);\n+\n+    Matcher matcher = HOST_PORT_PATTERN.matcher(okapiURL);\n+    if (!matcher.find()) {\n+      return io.vertx.core.Future.failedFuture(\"Could not parse okapiURL: \" + okapiURL);\n+    }\n+    io.vertx.core.Future<List<String>> future = io.vertx.core.Future.future();\n+\n+    String host = matcher.group(1);\n+    String port = matcher.group(2);\n+\n+    ConfigurationsClient configurationsClient = new ConfigurationsClient(host, StringUtils.isNotBlank(port) ? Integer.valueOf(port) : DEFAULT_PORT, tenant, token);\n+    StringBuilder query = new StringBuilder(\"module==USERSBL AND (\")\n+      .append(fieldAliasList.stream().map(f -> new StringBuilder(\"code==\").append(f)).collect(Collectors.joining(\" or \")))\n+      .append(\")\");\n+\n+    try {\n+      configurationsClient.getEntries(query.toString(), 0, 3, null, null, response ->\n+        response.bodyHandler(body -> {\n+          if (response.statusCode() != 200) {\n+            future.fail(\"Expected status code 200, got '\" + response.statusCode() +\n+              \"' :\" + body.toString());\n+            return;\n+          }\n+          JsonObject entries = body.toJsonObject();\n+\n+          future.complete(\n+            entries.getJsonArray(\"configs\").stream()\n+              .map(o -> ((JsonObject) o).getString(\"value\"))\n+              .flatMap(s -> Stream.of(s.split(\"[^\\\\w\\\\.]+\")))\n+              .collect(Collectors.toList()));\n+        })\n+      );\n+    } catch (UnsupportedEncodingException e) {\n+      future.fail(e);\n+    }\n+    return future;\n+  }\n+\n+  /**\n+   *\n+   * @param userToNotify\n+   * @return\n+   */\n+  private io.vertx.core.Future<Void> sendResetPasswordNotification(User userToNotify) {\n+    //TODO: should be implemented once notification functionality is completed.\n+    return io.vertx.core.Future.succeededFuture();\n+  }\n+\n+  /**\n+   *\n+   * @param fieldAliasList list of aliases to use [LOCATE_USER_USERNAME LOCATE_USER_PHONE_NUMBER LOCATE_USER_EMAIL]\n+   * @param entity - an identity with a value\n+   * @param okapiHeaders\n+   * @return\n+   */\n+  private io.vertx.core.Future<Void> doPostBlUsersForgotten(List<String> fieldAliasList, Identifier entity,\n+                                                            java.util.Map<String, String> okapiHeaders) {\n+    io.vertx.core.Future<Void> asyncResult = io.vertx.core.Future.future();\n+    getLocateUserFields(fieldAliasList, okapiHeaders).setHandler(locateUserFieldsAR -> {\n+      if (locateUserFieldsAR.succeeded()) {\n+        String query = buildQuery(locateUserFieldsAR.result(), entity.getId());\n+\n+        String tenant = okapiHeaders.get(OKAPI_TENANT_HEADER);\n+        String okapiURL = okapiHeaders.get(OKAPI_URL_HEADER);\n+\n+        HttpClientInterface client = HttpClientFactory.getHttpClient(okapiURL, tenant);\n+\n+        okapiHeaders.remove(OKAPI_URL_HEADER);\n+\n+        try {\n+          StringBuilder userUrl = new StringBuilder(\"/users?\").append(\"query=\").append(URLEncoder.encode(query, \"UTF-8\")).append(\"&\").append(\"offset=0&limit=2\");\n+\n+          client.request(userUrl.toString(), okapiHeaders).thenAccept(userResponse -> {\n+            String noUserFoundMessage = \"User is not found: \";\n+\n+            if(!responseOk(userResponse)) {\n+              asyncResult.fail(new NoSuchElementException(noUserFoundMessage + entity.getId()));\n+            } else {\n+              JsonArray users = userResponse.getBody().getJsonArray(\"users\");\n+              int arraySize = users.size();\n+              if (arraySize == 0 || arraySize > 1) {\n+                asyncResult.fail(new NoSuchElementException(noUserFoundMessage + entity.getId()));\n+              } else {\n+                try {\n+                  User user = (User) Response.convertToPojo(users.getJsonObject(0), User.class);\n+                  sendResetPasswordNotification(user).setHandler(asyncResult::handle);\n+                } catch (Exception e) {\n+                  asyncResult.fail(e);\n+                }\n+              }\n+            }\n+          });\n+\n+        } catch (Exception e) {\n+          asyncResult.fail(e);\n+        }\n+\n+      } else {\n+        asyncResult.fail(locateUserFieldsAR.cause());\n+      }\n+\n+    });\n+\n+    return asyncResult;\n+  }","path":"src/main/java/org/folio/rest/impl/BLUsersAPI.java","position":179,"original_position":179,"commit_id":"11c9933b7c3db58a7fecb0cf5526e6475850a45a","original_commit_id":"11c9933b7c3db58a7fecb0cf5526e6475850a45a","user":{"login":"julianladisch","id":533612,"node_id":"MDQ6VXNlcjUzMzYxMg==","avatar_url":"https://avatars2.githubusercontent.com/u/533612?v=4","gravatar_id":"","url":"https://api.github.com/users/julianladisch","html_url":"https://github.com/julianladisch","followers_url":"https://api.github.com/users/julianladisch/followers","following_url":"https://api.github.com/users/julianladisch/following{/other_user}","gists_url":"https://api.github.com/users/julianladisch/gists{/gist_id}","starred_url":"https://api.github.com/users/julianladisch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/julianladisch/subscriptions","organizations_url":"https://api.github.com/users/julianladisch/orgs","repos_url":"https://api.github.com/users/julianladisch/repos","events_url":"https://api.github.com/users/julianladisch/events{/privacy}","received_events_url":"https://api.github.com/users/julianladisch/received_events","type":"User","site_admin":false},"body":"You can reduce indentation and else clauses by inserting `return;` after `asyncResult.fail(...)`. For example\r\n```\r\nif (locateUserFieldsAR.failed()) {\r\n  asyncResult.fail(locateUserFieldsAR.cause());\r\n  return;\r\n}\r\n```\r\n```\r\nif(!responseOk(userResponse)) {\r\n  asyncResult.fail(new NoSuchElementException(noUserFoundMessage + entity.getId()));\r\n  return;\r\n}\r\n```","created_at":"2018-09-08T21:09:18Z","updated_at":"2018-09-08T21:09:18Z","html_url":"https://github.com/folio-org/mod-users-bl/pull/33#discussion_r216140853","pull_request_url":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/comments/216140853"},"html":{"href":"https://github.com/folio-org/mod-users-bl/pull/33#discussion_r216140853"},"pull_request":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33"}}},"pull_request":{"url":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33","id":211792913,"node_id":"MDExOlB1bGxSZXF1ZXN0MjExNzkyOTEz","html_url":"https://github.com/folio-org/mod-users-bl/pull/33","diff_url":"https://github.com/folio-org/mod-users-bl/pull/33.diff","patch_url":"https://github.com/folio-org/mod-users-bl/pull/33.patch","issue_url":"https://api.github.com/repos/folio-org/mod-users-bl/issues/33","number":33,"state":"open","locked":false,"title":"MODLOGIN-44-45","user":{"login":"TarasSpashchenko","id":41001394,"node_id":"MDQ6VXNlcjQxMDAxMzk0","avatar_url":"https://avatars0.githubusercontent.com/u/41001394?v=4","gravatar_id":"","url":"https://api.github.com/users/TarasSpashchenko","html_url":"https://github.com/TarasSpashchenko","followers_url":"https://api.github.com/users/TarasSpashchenko/followers","following_url":"https://api.github.com/users/TarasSpashchenko/following{/other_user}","gists_url":"https://api.github.com/users/TarasSpashchenko/gists{/gist_id}","starred_url":"https://api.github.com/users/TarasSpashchenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TarasSpashchenko/subscriptions","organizations_url":"https://api.github.com/users/TarasSpashchenko/orgs","repos_url":"https://api.github.com/users/TarasSpashchenko/repos","events_url":"https://api.github.com/users/TarasSpashchenko/events{/privacy}","received_events_url":"https://api.github.com/users/TarasSpashchenko/received_events","type":"User","site_admin":false},"body":"Implementation for MODLOGIN stories\r\nAssign the fields to locate Folio account when user forgets password\r\nAssign the fields to locate a Forgotten username","created_at":"2018-08-29T15:20:53Z","updated_at":"2018-09-08T21:09:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"129c4172c707df1956ba487f474c8b83108fdf88","assignee":{"login":"TarasSpashchenko","id":41001394,"node_id":"MDQ6VXNlcjQxMDAxMzk0","avatar_url":"https://avatars0.githubusercontent.com/u/41001394?v=4","gravatar_id":"","url":"https://api.github.com/users/TarasSpashchenko","html_url":"https://github.com/TarasSpashchenko","followers_url":"https://api.github.com/users/TarasSpashchenko/followers","following_url":"https://api.github.com/users/TarasSpashchenko/following{/other_user}","gists_url":"https://api.github.com/users/TarasSpashchenko/gists{/gist_id}","starred_url":"https://api.github.com/users/TarasSpashchenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TarasSpashchenko/subscriptions","organizations_url":"https://api.github.com/users/TarasSpashchenko/orgs","repos_url":"https://api.github.com/users/TarasSpashchenko/repos","events_url":"https://api.github.com/users/TarasSpashchenko/events{/privacy}","received_events_url":"https://api.github.com/users/TarasSpashchenko/received_events","type":"User","site_admin":false},"assignees":[{"login":"TarasSpashchenko","id":41001394,"node_id":"MDQ6VXNlcjQxMDAxMzk0","avatar_url":"https://avatars0.githubusercontent.com/u/41001394?v=4","gravatar_id":"","url":"https://api.github.com/users/TarasSpashchenko","html_url":"https://github.com/TarasSpashchenko","followers_url":"https://api.github.com/users/TarasSpashchenko/followers","following_url":"https://api.github.com/users/TarasSpashchenko/following{/other_user}","gists_url":"https://api.github.com/users/TarasSpashchenko/gists{/gist_id}","starred_url":"https://api.github.com/users/TarasSpashchenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TarasSpashchenko/subscriptions","organizations_url":"https://api.github.com/users/TarasSpashchenko/orgs","repos_url":"https://api.github.com/users/TarasSpashchenko/repos","events_url":"https://api.github.com/users/TarasSpashchenko/events{/privacy}","received_events_url":"https://api.github.com/users/TarasSpashchenko/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"kurtnordstrom","id":7594068,"node_id":"MDQ6VXNlcjc1OTQwNjg=","avatar_url":"https://avatars1.githubusercontent.com/u/7594068?v=4","gravatar_id":"","url":"https://api.github.com/users/kurtnordstrom","html_url":"https://github.com/kurtnordstrom","followers_url":"https://api.github.com/users/kurtnordstrom/followers","following_url":"https://api.github.com/users/kurtnordstrom/following{/other_user}","gists_url":"https://api.github.com/users/kurtnordstrom/gists{/gist_id}","starred_url":"https://api.github.com/users/kurtnordstrom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kurtnordstrom/subscriptions","organizations_url":"https://api.github.com/users/kurtnordstrom/orgs","repos_url":"https://api.github.com/users/kurtnordstrom/repos","events_url":"https://api.github.com/users/kurtnordstrom/events{/privacy}","received_events_url":"https://api.github.com/users/kurtnordstrom/received_events","type":"User","site_admin":false},{"login":"Igor-Gorchakov","id":40858461,"node_id":"MDQ6VXNlcjQwODU4NDYx","avatar_url":"https://avatars3.githubusercontent.com/u/40858461?v=4","gravatar_id":"","url":"https://api.github.com/users/Igor-Gorchakov","html_url":"https://github.com/Igor-Gorchakov","followers_url":"https://api.github.com/users/Igor-Gorchakov/followers","following_url":"https://api.github.com/users/Igor-Gorchakov/following{/other_user}","gists_url":"https://api.github.com/users/Igor-Gorchakov/gists{/gist_id}","starred_url":"https://api.github.com/users/Igor-Gorchakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Igor-Gorchakov/subscriptions","organizations_url":"https://api.github.com/users/Igor-Gorchakov/orgs","repos_url":"https://api.github.com/users/Igor-Gorchakov/repos","events_url":"https://api.github.com/users/Igor-Gorchakov/events{/privacy}","received_events_url":"https://api.github.com/users/Igor-Gorchakov/received_events","type":"User","site_admin":false},{"login":"oleksii-popov","id":40862238,"node_id":"MDQ6VXNlcjQwODYyMjM4","avatar_url":"https://avatars2.githubusercontent.com/u/40862238?v=4","gravatar_id":"","url":"https://api.github.com/users/oleksii-popov","html_url":"https://github.com/oleksii-popov","followers_url":"https://api.github.com/users/oleksii-popov/followers","following_url":"https://api.github.com/users/oleksii-popov/following{/other_user}","gists_url":"https://api.github.com/users/oleksii-popov/gists{/gist_id}","starred_url":"https://api.github.com/users/oleksii-popov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oleksii-popov/subscriptions","organizations_url":"https://api.github.com/users/oleksii-popov/orgs","repos_url":"https://api.github.com/users/oleksii-popov/repos","events_url":"https://api.github.com/users/oleksii-popov/events{/privacy}","received_events_url":"https://api.github.com/users/oleksii-popov/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33/commits","review_comments_url":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33/comments","review_comment_url":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/comments{/number}","comments_url":"https://api.github.com/repos/folio-org/mod-users-bl/issues/33/comments","statuses_url":"https://api.github.com/repos/folio-org/mod-users-bl/statuses/11c9933b7c3db58a7fecb0cf5526e6475850a45a","head":{"label":"TarasSpashchenko:feature/MODLOGIN-44-45","ref":"feature/MODLOGIN-44-45","sha":"11c9933b7c3db58a7fecb0cf5526e6475850a45a","user":{"login":"TarasSpashchenko","id":41001394,"node_id":"MDQ6VXNlcjQxMDAxMzk0","avatar_url":"https://avatars0.githubusercontent.com/u/41001394?v=4","gravatar_id":"","url":"https://api.github.com/users/TarasSpashchenko","html_url":"https://github.com/TarasSpashchenko","followers_url":"https://api.github.com/users/TarasSpashchenko/followers","following_url":"https://api.github.com/users/TarasSpashchenko/following{/other_user}","gists_url":"https://api.github.com/users/TarasSpashchenko/gists{/gist_id}","starred_url":"https://api.github.com/users/TarasSpashchenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TarasSpashchenko/subscriptions","organizations_url":"https://api.github.com/users/TarasSpashchenko/orgs","repos_url":"https://api.github.com/users/TarasSpashchenko/repos","events_url":"https://api.github.com/users/TarasSpashchenko/events{/privacy}","received_events_url":"https://api.github.com/users/TarasSpashchenko/received_events","type":"User","site_admin":false},"repo":{"id":144840232,"node_id":"MDEwOlJlcG9zaXRvcnkxNDQ4NDAyMzI=","name":"mod-users-bl","full_name":"TarasSpashchenko/mod-users-bl","owner":{"login":"TarasSpashchenko","id":41001394,"node_id":"MDQ6VXNlcjQxMDAxMzk0","avatar_url":"https://avatars0.githubusercontent.com/u/41001394?v=4","gravatar_id":"","url":"https://api.github.com/users/TarasSpashchenko","html_url":"https://github.com/TarasSpashchenko","followers_url":"https://api.github.com/users/TarasSpashchenko/followers","following_url":"https://api.github.com/users/TarasSpashchenko/following{/other_user}","gists_url":"https://api.github.com/users/TarasSpashchenko/gists{/gist_id}","starred_url":"https://api.github.com/users/TarasSpashchenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TarasSpashchenko/subscriptions","organizations_url":"https://api.github.com/users/TarasSpashchenko/orgs","repos_url":"https://api.github.com/users/TarasSpashchenko/repos","events_url":"https://api.github.com/users/TarasSpashchenko/events{/privacy}","received_events_url":"https://api.github.com/users/TarasSpashchenko/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/TarasSpashchenko/mod-users-bl","description":"Business logic \"join\" module to provide simple access to all user-centric data","fork":true,"url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl","forks_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/forks","keys_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/teams","hooks_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/hooks","issue_events_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/issues/events{/number}","events_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/events","assignees_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/assignees{/user}","branches_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/branches{/branch}","tags_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/tags","blobs_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/git/refs{/sha}","trees_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/statuses/{sha}","languages_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/languages","stargazers_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/stargazers","contributors_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/contributors","subscribers_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/subscribers","subscription_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/subscription","commits_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/commits{/sha}","git_commits_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/git/commits{/sha}","comments_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/comments{/number}","issue_comment_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/issues/comments{/number}","contents_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/contents/{+path}","compare_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/merges","archive_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/downloads","issues_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/issues{/number}","pulls_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/pulls{/number}","milestones_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/milestones{/number}","notifications_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/labels{/name}","releases_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/releases{/id}","deployments_url":"https://api.github.com/repos/TarasSpashchenko/mod-users-bl/deployments","created_at":"2018-08-15T10:37:27Z","updated_at":"2018-08-15T10:37:30Z","pushed_at":"2018-09-07T10:07:51Z","git_url":"git://github.com/TarasSpashchenko/mod-users-bl.git","ssh_url":"git@github.com:TarasSpashchenko/mod-users-bl.git","clone_url":"https://github.com/TarasSpashchenko/mod-users-bl.git","svn_url":"https://github.com/TarasSpashchenko/mod-users-bl","homepage":null,"size":263,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"folio-org:master","ref":"master","sha":"93e77a3bcc6a35220245b37010c0eaaaddd28628","user":{"login":"folio-org","id":16495055,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2NDk1MDU1","avatar_url":"https://avatars2.githubusercontent.com/u/16495055?v=4","gravatar_id":"","url":"https://api.github.com/users/folio-org","html_url":"https://github.com/folio-org","followers_url":"https://api.github.com/users/folio-org/followers","following_url":"https://api.github.com/users/folio-org/following{/other_user}","gists_url":"https://api.github.com/users/folio-org/gists{/gist_id}","starred_url":"https://api.github.com/users/folio-org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/folio-org/subscriptions","organizations_url":"https://api.github.com/users/folio-org/orgs","repos_url":"https://api.github.com/users/folio-org/repos","events_url":"https://api.github.com/users/folio-org/events{/privacy}","received_events_url":"https://api.github.com/users/folio-org/received_events","type":"Organization","site_admin":false},"repo":{"id":82345709,"node_id":"MDEwOlJlcG9zaXRvcnk4MjM0NTcwOQ==","name":"mod-users-bl","full_name":"folio-org/mod-users-bl","owner":{"login":"folio-org","id":16495055,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2NDk1MDU1","avatar_url":"https://avatars2.githubusercontent.com/u/16495055?v=4","gravatar_id":"","url":"https://api.github.com/users/folio-org","html_url":"https://github.com/folio-org","followers_url":"https://api.github.com/users/folio-org/followers","following_url":"https://api.github.com/users/folio-org/following{/other_user}","gists_url":"https://api.github.com/users/folio-org/gists{/gist_id}","starred_url":"https://api.github.com/users/folio-org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/folio-org/subscriptions","organizations_url":"https://api.github.com/users/folio-org/orgs","repos_url":"https://api.github.com/users/folio-org/repos","events_url":"https://api.github.com/users/folio-org/events{/privacy}","received_events_url":"https://api.github.com/users/folio-org/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/folio-org/mod-users-bl","description":"Business logic \"join\" module to provide simple access to all user-centric data","fork":false,"url":"https://api.github.com/repos/folio-org/mod-users-bl","forks_url":"https://api.github.com/repos/folio-org/mod-users-bl/forks","keys_url":"https://api.github.com/repos/folio-org/mod-users-bl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/folio-org/mod-users-bl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/folio-org/mod-users-bl/teams","hooks_url":"https://api.github.com/repos/folio-org/mod-users-bl/hooks","issue_events_url":"https://api.github.com/repos/folio-org/mod-users-bl/issues/events{/number}","events_url":"https://api.github.com/repos/folio-org/mod-users-bl/events","assignees_url":"https://api.github.com/repos/folio-org/mod-users-bl/assignees{/user}","branches_url":"https://api.github.com/repos/folio-org/mod-users-bl/branches{/branch}","tags_url":"https://api.github.com/repos/folio-org/mod-users-bl/tags","blobs_url":"https://api.github.com/repos/folio-org/mod-users-bl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/folio-org/mod-users-bl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/folio-org/mod-users-bl/git/refs{/sha}","trees_url":"https://api.github.com/repos/folio-org/mod-users-bl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/folio-org/mod-users-bl/statuses/{sha}","languages_url":"https://api.github.com/repos/folio-org/mod-users-bl/languages","stargazers_url":"https://api.github.com/repos/folio-org/mod-users-bl/stargazers","contributors_url":"https://api.github.com/repos/folio-org/mod-users-bl/contributors","subscribers_url":"https://api.github.com/repos/folio-org/mod-users-bl/subscribers","subscription_url":"https://api.github.com/repos/folio-org/mod-users-bl/subscription","commits_url":"https://api.github.com/repos/folio-org/mod-users-bl/commits{/sha}","git_commits_url":"https://api.github.com/repos/folio-org/mod-users-bl/git/commits{/sha}","comments_url":"https://api.github.com/repos/folio-org/mod-users-bl/comments{/number}","issue_comment_url":"https://api.github.com/repos/folio-org/mod-users-bl/issues/comments{/number}","contents_url":"https://api.github.com/repos/folio-org/mod-users-bl/contents/{+path}","compare_url":"https://api.github.com/repos/folio-org/mod-users-bl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/folio-org/mod-users-bl/merges","archive_url":"https://api.github.com/repos/folio-org/mod-users-bl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/folio-org/mod-users-bl/downloads","issues_url":"https://api.github.com/repos/folio-org/mod-users-bl/issues{/number}","pulls_url":"https://api.github.com/repos/folio-org/mod-users-bl/pulls{/number}","milestones_url":"https://api.github.com/repos/folio-org/mod-users-bl/milestones{/number}","notifications_url":"https://api.github.com/repos/folio-org/mod-users-bl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/folio-org/mod-users-bl/labels{/name}","releases_url":"https://api.github.com/repos/folio-org/mod-users-bl/releases{/id}","deployments_url":"https://api.github.com/repos/folio-org/mod-users-bl/deployments","created_at":"2017-02-17T23:04:46Z","updated_at":"2018-08-30T01:37:58Z","pushed_at":"2018-09-07T10:07:52Z","git_url":"git://github.com/folio-org/mod-users-bl.git","ssh_url":"git@github.com:folio-org/mod-users-bl.git","clone_url":"https://github.com/folio-org/mod-users-bl.git","svn_url":"https://github.com/folio-org/mod-users-bl","homepage":null,"size":257,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33"},"html":{"href":"https://github.com/folio-org/mod-users-bl/pull/33"},"issue":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/issues/33"},"comments":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/issues/33/comments"},"review_comments":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33/comments"},"review_comment":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/pulls/33/commits"},"statuses":{"href":"https://api.github.com/repos/folio-org/mod-users-bl/statuses/11c9933b7c3db58a7fecb0cf5526e6475850a45a"}},"author_association":"NONE"}}
{"actor":{"display_login":"julianladisch"}}