{"action":"created","comment":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/225783263","pull_request_review_id":165458712,"id":225783263,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNTc4MzI2Mw==","diff_hunk":"@@ -0,0 +1,26 @@\n+/*\n+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n+ * or more contributor license agreements. Licensed under the Elastic License;\n+ * you may not use this file except in compliance with the Elastic License.\n+ */\n+package org.elasticsearch.xpack.core.security.user;\n+\n+import org.elasticsearch.Version;\n+import org.elasticsearch.xpack.core.security.support.MetadataUtils;\n+\n+/**\n+ * Built in user for remote monitoring: collection as well as indexing.\n+ */\n+public class RemoteMonitoringUser extends User {\n+\n+    public static final String NAME = UsernamesField.REMOTE_MONITORING_NAME;\n+    public static final String COLLECTION_ROLE_NAME = UsernamesField.REMOTE_MONITORING_COLLECTION_ROLE;\n+    public static final String INDEXING_ROLE_NAME = UsernamesField.REMOTE_MONITORING_INDEXING_ROLE;\n+\n+    public static final Version DEFINED_SINCE = Version.V_6_5_0;\n+    public static final BuiltinUserInfo USER_INFO = new BuiltinUserInfo(NAME, COLLECTION_ROLE_NAME+\",\"+INDEXING_ROLE_NAME, DEFINED_SINCE);","path":"x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/user/RemoteMonitoringUser.java","position":null,"original_position":21,"commit_id":"27c12fd747ff51c0a247067a5b9e9f4c09e24762","original_commit_id":"51ece0b07c5c59a176b7db8ae15a4f7ed5b994f8","user":{"login":"ycombinator","id":51061,"node_id":"MDQ6VXNlcjUxMDYx","avatar_url":"https://avatars2.githubusercontent.com/u/51061?v=4","gravatar_id":"","url":"https://api.github.com/users/ycombinator","html_url":"https://github.com/ycombinator","followers_url":"https://api.github.com/users/ycombinator/followers","following_url":"https://api.github.com/users/ycombinator/following{/other_user}","gists_url":"https://api.github.com/users/ycombinator/gists{/gist_id}","starred_url":"https://api.github.com/users/ycombinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ycombinator/subscriptions","organizations_url":"https://api.github.com/users/ycombinator/orgs","repos_url":"https://api.github.com/users/ycombinator/repos","events_url":"https://api.github.com/users/ycombinator/events{/privacy}","received_events_url":"https://api.github.com/users/ycombinator/received_events","type":"User","site_admin":false},"body":"Related: https://github.com/elastic/elasticsearch/pull/34541","created_at":"2018-10-17T05:17:55Z","updated_at":"2018-10-17T05:17:55Z","html_url":"https://github.com/elastic/elasticsearch/pull/34369#discussion_r225783263","pull_request_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/225783263"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/34369#discussion_r225783263"},"pull_request":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369"}},"in_reply_to_id":225659496},"pull_request":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369","id":221516825,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIxNTE2ODI1","html_url":"https://github.com/elastic/elasticsearch/pull/34369","diff_url":"https://github.com/elastic/elasticsearch/pull/34369.diff","patch_url":"https://github.com/elastic/elasticsearch/pull/34369.patch","issue_url":"https://api.github.com/repos/elastic/elasticsearch/issues/34369","number":34369,"state":"open","locked":false,"title":"Adding stack_monitoring_agent role","user":{"login":"ycombinator","id":51061,"node_id":"MDQ6VXNlcjUxMDYx","avatar_url":"https://avatars2.githubusercontent.com/u/51061?v=4","gravatar_id":"","url":"https://api.github.com/users/ycombinator","html_url":"https://github.com/ycombinator","followers_url":"https://api.github.com/users/ycombinator/followers","following_url":"https://api.github.com/users/ycombinator/following{/other_user}","gists_url":"https://api.github.com/users/ycombinator/gists{/gist_id}","starred_url":"https://api.github.com/users/ycombinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ycombinator/subscriptions","organizations_url":"https://api.github.com/users/ycombinator/orgs","repos_url":"https://api.github.com/users/ycombinator/repos","events_url":"https://api.github.com/users/ycombinator/events{/privacy}","received_events_url":"https://api.github.com/users/ycombinator/received_events","type":"User","site_admin":false},"body":"## Motivation\r\n\r\nStarting with 6.4.0 users have been able to monitor (in the x-pack sense) Kibana using Metricbeat. And starting with 6.5.0 users will be able to monitor Elasticsearch using Metricbeat as well.\r\n\r\nIf users are using more than a Basic license with security enabled in Elasticsearch (`xpack.security.enabled: true`), then Metricbeat will need to provide a username and password to connect to Elasticsearch. The username must belong to a user with a security role that has sufficient privileges for Metricbeat to **collect** monitoring data for the stack and **index** it into monitoring indices, `.monitoring-*`. For discussion purposes, let's call this role `stack_monitoring_agent`.\r\n\r\nMetricbeat needs to call APIs of each Elastic stack product that it's monitoring to **collect** metrics for these products. So the `stack_monitoring_agent` role must have sufficient privileges to call these APIs.\r\n\r\nAdditionally, Metricbeat needs to connect to the Elasticsearch monitoring cluster in order to **index** monitoring data collected from various Elastic stack products into `.monitoring-*` indices. So the `stack_monitoring_agent` role must have sufficient privileges to perform this indexing operation, including creating new time-based indices when necessary.\r\n\r\n### Access Granularity\r\n\r\nThe above section suggests that we have a single `stack_monitoring_agent` role to cover all privileges necessary for **collection** as well as **indexing** of monitoring data. This makes the `stack_monitoring_agent` role a very coarsely-grained role.\r\n\r\nThe benefit of a **coarse** level of granularity is that it is easier for users to get started with Metricbeat stack monitoring and security: at minimum, they need only create a single user having this single role and they are all set to use that user in their Metricbeat module configurations for Elastic stack modules (for collection purposes) as well as their Metricbeat `elasticsearch` output configuration (for indexing purposes). The other benefit of a single, coarse role is that it also provides abstraction: we may increase or reduce privileges behind this single role over time without requiring any changes from the user. The downside of this coarse level of granularity, of course, is lessened security due to broad access regardless of which specific product a single Metricbeat instance might be monitoring. \r\n\r\nAt the other end of the granularity spectrum is having a plethora of **fine-grained** roles for collecting monitoring data from specific Elastic stack products as well as for indexing monitoring data into specific monitoring indices (`.monitoring-es-*`, `.monitoring-kibana-*`, etc.). The benefit of this fine level of granularity is increased security because of the ability to provide fine-tuned access. The downside is the potential for a user to screw up their configuration in defining security users and associating the right roles with these users and further with setting up Metricbeat configuration to use the right security users in the right configuration files.\r\n\r\nAnd, of course, there are variations of access granularity in between the two ends of the spectrum mentioned above.\r\n\r\nAfter discussion with @ruflin, we decided to go with the **coarse granularity** approach in order to favor ease-of-use of of the box. Concretely, that means we will provide a _built-in_ `stack_monitoring_agent` security role.\r\n\r\nOf course, users who want to have finer-grained access may choose to create _their own custom_ roles with the desired access granularity. In order to do this, users may need to know about some lower-level details about stack monitoring, including details that might change over time (such as index names). We may consider documenting these details for such users, either publicly or as a support knowledge base article, probably based on demand.\r\n\r\n---\r\n\r\nThis PR implements this `stack_monitoring_agent` built-in role.","created_at":"2018-10-09T17:06:43Z","updated_at":"2018-10-17T05:17:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5246058eeac9bfb2574eddea2b6ea19de78e8903","assignee":null,"assignees":[],"requested_reviewers":[{"login":"tlrx","id":642733,"node_id":"MDQ6VXNlcjY0MjczMw==","avatar_url":"https://avatars1.githubusercontent.com/u/642733?v=4","gravatar_id":"","url":"https://api.github.com/users/tlrx","html_url":"https://github.com/tlrx","followers_url":"https://api.github.com/users/tlrx/followers","following_url":"https://api.github.com/users/tlrx/following{/other_user}","gists_url":"https://api.github.com/users/tlrx/gists{/gist_id}","starred_url":"https://api.github.com/users/tlrx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tlrx/subscriptions","organizations_url":"https://api.github.com/users/tlrx/orgs","repos_url":"https://api.github.com/users/tlrx/repos","events_url":"https://api.github.com/users/tlrx/events{/privacy}","received_events_url":"https://api.github.com/users/tlrx/received_events","type":"User","site_admin":false},{"login":"pickypg","id":1501235,"node_id":"MDQ6VXNlcjE1MDEyMzU=","avatar_url":"https://avatars2.githubusercontent.com/u/1501235?v=4","gravatar_id":"","url":"https://api.github.com/users/pickypg","html_url":"https://github.com/pickypg","followers_url":"https://api.github.com/users/pickypg/followers","following_url":"https://api.github.com/users/pickypg/following{/other_user}","gists_url":"https://api.github.com/users/pickypg/gists{/gist_id}","starred_url":"https://api.github.com/users/pickypg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pickypg/subscriptions","organizations_url":"https://api.github.com/users/pickypg/orgs","repos_url":"https://api.github.com/users/pickypg/repos","events_url":"https://api.github.com/users/pickypg/events{/privacy}","received_events_url":"https://api.github.com/users/pickypg/received_events","type":"User","site_admin":false},{"login":"jaymode","id":4339958,"node_id":"MDQ6VXNlcjQzMzk5NTg=","avatar_url":"https://avatars1.githubusercontent.com/u/4339958?v=4","gravatar_id":"","url":"https://api.github.com/users/jaymode","html_url":"https://github.com/jaymode","followers_url":"https://api.github.com/users/jaymode/followers","following_url":"https://api.github.com/users/jaymode/following{/other_user}","gists_url":"https://api.github.com/users/jaymode/gists{/gist_id}","starred_url":"https://api.github.com/users/jaymode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaymode/subscriptions","organizations_url":"https://api.github.com/users/jaymode/orgs","repos_url":"https://api.github.com/users/jaymode/repos","events_url":"https://api.github.com/users/jaymode/events{/privacy}","received_events_url":"https://api.github.com/users/jaymode/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":912834056,"node_id":"MDU6TGFiZWw5MTI4MzQwNTY=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/:Core/Monitoring","name":":Core/Monitoring","color":"0e8a16","default":false},{"id":912838209,"node_id":"MDU6TGFiZWw5MTI4MzgyMDk=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/:Security/Authorization","name":":Security/Authorization","color":"0e8a16","default":false},{"id":559032808,"node_id":"MDU6TGFiZWw1NTkwMzI4MDg=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/backport%20pending","name":"backport pending","color":"fbca04","default":false},{"id":962378555,"node_id":"MDU6TGFiZWw5NjIzNzg1NTU=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/v6.5.0","name":"v6.5.0","color":"Dddddd","default":false},{"id":484855464,"node_id":"MDU6TGFiZWw0ODQ4NTU0NjQ=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/v7.0.0","name":"v7.0.0","color":"dddddd","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369/commits","review_comments_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369/comments","review_comment_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/issues/34369/comments","statuses_url":"https://api.github.com/repos/elastic/elasticsearch/statuses/27c12fd747ff51c0a247067a5b9e9f4c09e24762","head":{"label":"ycombinator:security-role-stack-monitoring","ref":"security-role-stack-monitoring","sha":"27c12fd747ff51c0a247067a5b9e9f4c09e24762","user":{"login":"ycombinator","id":51061,"node_id":"MDQ6VXNlcjUxMDYx","avatar_url":"https://avatars2.githubusercontent.com/u/51061?v=4","gravatar_id":"","url":"https://api.github.com/users/ycombinator","html_url":"https://github.com/ycombinator","followers_url":"https://api.github.com/users/ycombinator/followers","following_url":"https://api.github.com/users/ycombinator/following{/other_user}","gists_url":"https://api.github.com/users/ycombinator/gists{/gist_id}","starred_url":"https://api.github.com/users/ycombinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ycombinator/subscriptions","organizations_url":"https://api.github.com/users/ycombinator/orgs","repos_url":"https://api.github.com/users/ycombinator/repos","events_url":"https://api.github.com/users/ycombinator/events{/privacy}","received_events_url":"https://api.github.com/users/ycombinator/received_events","type":"User","site_admin":false},"repo":{"id":33695648,"node_id":"MDEwOlJlcG9zaXRvcnkzMzY5NTY0OA==","name":"elasticsearch","full_name":"ycombinator/elasticsearch","private":false,"owner":{"login":"ycombinator","id":51061,"node_id":"MDQ6VXNlcjUxMDYx","avatar_url":"https://avatars2.githubusercontent.com/u/51061?v=4","gravatar_id":"","url":"https://api.github.com/users/ycombinator","html_url":"https://github.com/ycombinator","followers_url":"https://api.github.com/users/ycombinator/followers","following_url":"https://api.github.com/users/ycombinator/following{/other_user}","gists_url":"https://api.github.com/users/ycombinator/gists{/gist_id}","starred_url":"https://api.github.com/users/ycombinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ycombinator/subscriptions","organizations_url":"https://api.github.com/users/ycombinator/orgs","repos_url":"https://api.github.com/users/ycombinator/repos","events_url":"https://api.github.com/users/ycombinator/events{/privacy}","received_events_url":"https://api.github.com/users/ycombinator/received_events","type":"User","site_admin":false},"html_url":"https://github.com/ycombinator/elasticsearch","description":"Open Source, Distributed, RESTful Search Engine","fork":true,"url":"https://api.github.com/repos/ycombinator/elasticsearch","forks_url":"https://api.github.com/repos/ycombinator/elasticsearch/forks","keys_url":"https://api.github.com/repos/ycombinator/elasticsearch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ycombinator/elasticsearch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ycombinator/elasticsearch/teams","hooks_url":"https://api.github.com/repos/ycombinator/elasticsearch/hooks","issue_events_url":"https://api.github.com/repos/ycombinator/elasticsearch/issues/events{/number}","events_url":"https://api.github.com/repos/ycombinator/elasticsearch/events","assignees_url":"https://api.github.com/repos/ycombinator/elasticsearch/assignees{/user}","branches_url":"https://api.github.com/repos/ycombinator/elasticsearch/branches{/branch}","tags_url":"https://api.github.com/repos/ycombinator/elasticsearch/tags","blobs_url":"https://api.github.com/repos/ycombinator/elasticsearch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ycombinator/elasticsearch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ycombinator/elasticsearch/git/refs{/sha}","trees_url":"https://api.github.com/repos/ycombinator/elasticsearch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ycombinator/elasticsearch/statuses/{sha}","languages_url":"https://api.github.com/repos/ycombinator/elasticsearch/languages","stargazers_url":"https://api.github.com/repos/ycombinator/elasticsearch/stargazers","contributors_url":"https://api.github.com/repos/ycombinator/elasticsearch/contributors","subscribers_url":"https://api.github.com/repos/ycombinator/elasticsearch/subscribers","subscription_url":"https://api.github.com/repos/ycombinator/elasticsearch/subscription","commits_url":"https://api.github.com/repos/ycombinator/elasticsearch/commits{/sha}","git_commits_url":"https://api.github.com/repos/ycombinator/elasticsearch/git/commits{/sha}","comments_url":"https://api.github.com/repos/ycombinator/elasticsearch/comments{/number}","issue_comment_url":"https://api.github.com/repos/ycombinator/elasticsearch/issues/comments{/number}","contents_url":"https://api.github.com/repos/ycombinator/elasticsearch/contents/{+path}","compare_url":"https://api.github.com/repos/ycombinator/elasticsearch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ycombinator/elasticsearch/merges","archive_url":"https://api.github.com/repos/ycombinator/elasticsearch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ycombinator/elasticsearch/downloads","issues_url":"https://api.github.com/repos/ycombinator/elasticsearch/issues{/number}","pulls_url":"https://api.github.com/repos/ycombinator/elasticsearch/pulls{/number}","milestones_url":"https://api.github.com/repos/ycombinator/elasticsearch/milestones{/number}","notifications_url":"https://api.github.com/repos/ycombinator/elasticsearch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ycombinator/elasticsearch/labels{/name}","releases_url":"https://api.github.com/repos/ycombinator/elasticsearch/releases{/id}","deployments_url":"https://api.github.com/repos/ycombinator/elasticsearch/deployments","created_at":"2015-04-09T22:21:14Z","updated_at":"2018-09-18T08:23:15Z","pushed_at":"2018-10-17T05:16:33Z","git_url":"git://github.com/ycombinator/elasticsearch.git","ssh_url":"git@github.com:ycombinator/elasticsearch.git","clone_url":"https://github.com/ycombinator/elasticsearch.git","svn_url":"https://github.com/ycombinator/elasticsearch","homepage":"http://elasticsearch.org","size":442535,"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":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"elastic:master","ref":"master","sha":"92b2e1a2091ce30d6267029b7b7b19d4b6690d64","user":{"login":"elastic","id":6764390,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY3NjQzOTA=","avatar_url":"https://avatars0.githubusercontent.com/u/6764390?v=4","gravatar_id":"","url":"https://api.github.com/users/elastic","html_url":"https://github.com/elastic","followers_url":"https://api.github.com/users/elastic/followers","following_url":"https://api.github.com/users/elastic/following{/other_user}","gists_url":"https://api.github.com/users/elastic/gists{/gist_id}","starred_url":"https://api.github.com/users/elastic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elastic/subscriptions","organizations_url":"https://api.github.com/users/elastic/orgs","repos_url":"https://api.github.com/users/elastic/repos","events_url":"https://api.github.com/users/elastic/events{/privacy}","received_events_url":"https://api.github.com/users/elastic/received_events","type":"Organization","site_admin":false},"repo":{"id":507775,"node_id":"MDEwOlJlcG9zaXRvcnk1MDc3NzU=","name":"elasticsearch","full_name":"elastic/elasticsearch","private":false,"owner":{"login":"elastic","id":6764390,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY3NjQzOTA=","avatar_url":"https://avatars0.githubusercontent.com/u/6764390?v=4","gravatar_id":"","url":"https://api.github.com/users/elastic","html_url":"https://github.com/elastic","followers_url":"https://api.github.com/users/elastic/followers","following_url":"https://api.github.com/users/elastic/following{/other_user}","gists_url":"https://api.github.com/users/elastic/gists{/gist_id}","starred_url":"https://api.github.com/users/elastic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elastic/subscriptions","organizations_url":"https://api.github.com/users/elastic/orgs","repos_url":"https://api.github.com/users/elastic/repos","events_url":"https://api.github.com/users/elastic/events{/privacy}","received_events_url":"https://api.github.com/users/elastic/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/elastic/elasticsearch","description":"Open Source, Distributed, RESTful Search Engine","fork":false,"url":"https://api.github.com/repos/elastic/elasticsearch","forks_url":"https://api.github.com/repos/elastic/elasticsearch/forks","keys_url":"https://api.github.com/repos/elastic/elasticsearch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elastic/elasticsearch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elastic/elasticsearch/teams","hooks_url":"https://api.github.com/repos/elastic/elasticsearch/hooks","issue_events_url":"https://api.github.com/repos/elastic/elasticsearch/issues/events{/number}","events_url":"https://api.github.com/repos/elastic/elasticsearch/events","assignees_url":"https://api.github.com/repos/elastic/elasticsearch/assignees{/user}","branches_url":"https://api.github.com/repos/elastic/elasticsearch/branches{/branch}","tags_url":"https://api.github.com/repos/elastic/elasticsearch/tags","blobs_url":"https://api.github.com/repos/elastic/elasticsearch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elastic/elasticsearch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elastic/elasticsearch/git/refs{/sha}","trees_url":"https://api.github.com/repos/elastic/elasticsearch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elastic/elasticsearch/statuses/{sha}","languages_url":"https://api.github.com/repos/elastic/elasticsearch/languages","stargazers_url":"https://api.github.com/repos/elastic/elasticsearch/stargazers","contributors_url":"https://api.github.com/repos/elastic/elasticsearch/contributors","subscribers_url":"https://api.github.com/repos/elastic/elasticsearch/subscribers","subscription_url":"https://api.github.com/repos/elastic/elasticsearch/subscription","commits_url":"https://api.github.com/repos/elastic/elasticsearch/commits{/sha}","git_commits_url":"https://api.github.com/repos/elastic/elasticsearch/git/commits{/sha}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/comments{/number}","issue_comment_url":"https://api.github.com/repos/elastic/elasticsearch/issues/comments{/number}","contents_url":"https://api.github.com/repos/elastic/elasticsearch/contents/{+path}","compare_url":"https://api.github.com/repos/elastic/elasticsearch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elastic/elasticsearch/merges","archive_url":"https://api.github.com/repos/elastic/elasticsearch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elastic/elasticsearch/downloads","issues_url":"https://api.github.com/repos/elastic/elasticsearch/issues{/number}","pulls_url":"https://api.github.com/repos/elastic/elasticsearch/pulls{/number}","milestones_url":"https://api.github.com/repos/elastic/elasticsearch/milestones{/number}","notifications_url":"https://api.github.com/repos/elastic/elasticsearch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elastic/elasticsearch/labels{/name}","releases_url":"https://api.github.com/repos/elastic/elasticsearch/releases{/id}","deployments_url":"https://api.github.com/repos/elastic/elasticsearch/deployments","created_at":"2010-02-08T13:20:56Z","updated_at":"2018-10-17T04:58:40Z","pushed_at":"2018-10-17T05:16:36Z","git_url":"git://github.com/elastic/elasticsearch.git","ssh_url":"git@github.com:elastic/elasticsearch.git","clone_url":"https://github.com/elastic/elasticsearch.git","svn_url":"https://github.com/elastic/elasticsearch","homepage":"https://www.elastic.co/products/elasticsearch","size":519414,"stargazers_count":35284,"watchers_count":35284,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11929,"mirror_url":null,"archived":false,"open_issues_count":1755,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":11929,"open_issues":1755,"watchers":35284,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/34369"},"issue":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/34369"},"comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/34369/comments"},"review_comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369/comments"},"review_comment":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/34369/commits"},"statuses":{"href":"https://api.github.com/repos/elastic/elasticsearch/statuses/27c12fd747ff51c0a247067a5b9e9f4c09e24762"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"ycombinator"}}