{"action":"created","comment":{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/comments/235176742","pull_request_review_id":176984113,"id":235176742,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNTE3Njc0Mg==","diff_hunk":"@@ -51,21 +70,73 @@\n  * @since 1.1\n  */\n @Configuration\n-@ConditionalOnProperty(\"spring.cloud.gcp.security.iap.enabled\")\n-@ConditionalOnClass({NimbusJwtDecoderJwkSupport.class})\n+@ConditionalOnProperty(value = \"spring.cloud.gcp.security.iap.enabled\", matchIfMissing = true)\n+@ConditionalOnClass({AudienceValidator.class})\n @AutoConfigureBefore(OAuth2ResourceServerAutoConfiguration.class)\n+@AutoConfigureAfter(GcpContextAutoConfiguration.class)\n @EnableConfigurationProperties(IapAuthenticationProperties.class)\n public class IapAuthenticationAutoConfiguration {\n \n \t@Bean\n \t@ConditionalOnMissingBean\n-\tpublic JwtDecoder iapJwtDecoder(IapAuthenticationProperties properties) {\n+\tpublic JwtDecoder iapJwtDecoder(IapAuthenticationProperties properties, GcpProjectIdProvider projectIdProvider,\n+\t\t\t\t\t\t\t\t\t@Qualifier(\"jwtValidators\") List<OAuth2TokenValidator<Jwt>> validators) {\n+\n+\t\tSystem.out.println(\"============================= GCP Environment diagnostics; \");\n+\t\tfor (GcpEnvironment env : GcpEnvironment.values()) {\n+\t\t\tSystem.out.println(\"======================= \" + env + (env.matches() ? \" YES\" : \" NO\"));\n+\t\t}\n+\t\tSystem.out.println(\"============================= /GCP Environment diagnostics; \");\n+\n+\n \t\tNimbusJwtDecoderJwkSupport jwkSupport\n \t\t\t\t= new NimbusJwtDecoderJwkSupport(properties.getRegistry(), properties.getAlgorithm());\n-\t\tjwkSupport.setJwtValidator(JwtValidators.createDefaultWithIssuer(properties.getIssuer()));\n+\t\tjwkSupport.setJwtValidator(new DelegatingOAuth2TokenValidator(validators));\n+\n \t\treturn jwkSupport;\n \t}\n \n+\t@Bean\n+\t@ConditionalOnMissingBean(name = \"jwtValidators\")\n+\tList<OAuth2TokenValidator<Jwt>> jwtValidators(IapAuthenticationProperties properties,\n+\t\t\t\t\t\t\t\t\t\t\t\t\tObjectProvider<AudienceValidator> audienceVerifier) {\n+\t\tList<OAuth2TokenValidator<Jwt>> validators = new ArrayList();\n+\t\tvalidators.add(new JwtTimestampValidator());\n+\t\tvalidators.add(new JwtIssuerValidator(properties.getIssuer()));\n+\t\taudienceVerifier.ifAvailable(audienceValidator -> validators.add(audienceValidator));\n+\n+\t\tSystem.out.println(\"Validators list: \" + validators);","path":"spring-cloud-gcp-autoconfigure/src/main/java/org/springframework/cloud/gcp/autoconfigure/security/IapAuthenticationAutoConfiguration.java","position":81,"original_position":81,"commit_id":"ef31932d328782243fa4abe5841858d4df47e1b6","original_commit_id":"ef31932d328782243fa4abe5841858d4df47e1b6","user":{"login":"sonarcloud[bot]","id":39514782,"node_id":"MDM6Qm90Mzk1MTQ3ODI=","avatar_url":"https://avatars2.githubusercontent.com/in/12526?v=4","gravatar_id":"","url":"https://api.github.com/users/sonarcloud%5Bbot%5D","html_url":"https://github.com/apps/sonarcloud","followers_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/followers","following_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/repos","events_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"![Code Smell](https://sonarsource.github.io/sonar-github/code_smell.png 'Code Smell') Code Smell: Replace this use of System.out or System.err by a logger. ([squid:S106](https://sonarcloud.io/organizations/spring-cloud-gcp/rules#rule_key=squid%3AS106))\n\n[See it in SonarCloud](https://sonarcloud.io/project/issues?id=SC-GCP&pullRequest=1243&issues=AWcxnLVx0POp3YizAwzT&open=AWcxnLVx0POp3YizAwzT)\n\n[ISSUE_KEY]: AWcxnLVx0POp3YizAwzT","created_at":"2018-11-20T21:32:52Z","updated_at":"2018-11-20T21:32:54Z","html_url":"https://github.com/spring-cloud/spring-cloud-gcp/pull/1243#discussion_r235176742","pull_request_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/comments/235176742"},"html":{"href":"https://github.com/spring-cloud/spring-cloud-gcp/pull/1243#discussion_r235176742"},"pull_request":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243"}}},"pull_request":{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243","id":232102064,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMyMTAyMDY0","html_url":"https://github.com/spring-cloud/spring-cloud-gcp/pull/1243","diff_url":"https://github.com/spring-cloud/spring-cloud-gcp/pull/1243.diff","patch_url":"https://github.com/spring-cloud/spring-cloud-gcp/pull/1243.patch","issue_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/1243","number":1243,"state":"open","locked":false,"title":"WIP: Iap audience validator","user":{"login":"elefeint","id":41136058,"node_id":"MDQ6VXNlcjQxMTM2MDU4","avatar_url":"https://avatars1.githubusercontent.com/u/41136058?v=4","gravatar_id":"","url":"https://api.github.com/users/elefeint","html_url":"https://github.com/elefeint","followers_url":"https://api.github.com/users/elefeint/followers","following_url":"https://api.github.com/users/elefeint/following{/other_user}","gists_url":"https://api.github.com/users/elefeint/gists{/gist_id}","starred_url":"https://api.github.com/users/elefeint/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elefeint/subscriptions","organizations_url":"https://api.github.com/users/elefeint/orgs","repos_url":"https://api.github.com/users/elefeint/repos","events_url":"https://api.github.com/users/elefeint/events{/privacy}","received_events_url":"https://api.github.com/users/elefeint/received_events","type":"User","site_admin":false},"body":"* New conditional rule `@ConditionalOnGcpEnvironment` (if you review, pay attention to this one -- I took the logic from [google-cloud-java](https://github.com/googleapis/google-cloud-java/blob/27c90f1298bb27a618ff59b3cd17321c577f3a6b/google-cloud-clients/google-cloud-logging/src/main/java/com/google/cloud/logging/MonitoredResourceUtil.java#L169) but in the old code, first condition wins, while the new conditional annotation could be invoked standalone). I tested logic only on AppEngine Flexible so far, and had to add an exclusion for \"App Engine but not Compute Engine\" already.\r\n* Two separate verification patterns, one for AppEngine Flex and AppEngine Standard; the other for Compute Engine and Kubernetes Engine.\r\n\r\nTODO: tests, docs.","created_at":"2018-11-19T20:28:11Z","updated_at":"2018-11-20T21:32:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f07ac47136825660f53111a92c71112a139e1d2a","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243/commits","review_comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243/comments","review_comment_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/1243/comments","statuses_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/statuses/ef31932d328782243fa4abe5841858d4df47e1b6","head":{"label":"spring-cloud:iap-audience-validator","ref":"iap-audience-validator","sha":"ef31932d328782243fa4abe5841858d4df47e1b6","user":{"login":"spring-cloud","id":7815877,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MTU4Nzc=","avatar_url":"https://avatars0.githubusercontent.com/u/7815877?v=4","gravatar_id":"","url":"https://api.github.com/users/spring-cloud","html_url":"https://github.com/spring-cloud","followers_url":"https://api.github.com/users/spring-cloud/followers","following_url":"https://api.github.com/users/spring-cloud/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud/orgs","repos_url":"https://api.github.com/users/spring-cloud/repos","events_url":"https://api.github.com/users/spring-cloud/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud/received_events","type":"Organization","site_admin":false},"repo":{"id":86105877,"node_id":"MDEwOlJlcG9zaXRvcnk4NjEwNTg3Nw==","name":"spring-cloud-gcp","full_name":"spring-cloud/spring-cloud-gcp","private":false,"owner":{"login":"spring-cloud","id":7815877,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MTU4Nzc=","avatar_url":"https://avatars0.githubusercontent.com/u/7815877?v=4","gravatar_id":"","url":"https://api.github.com/users/spring-cloud","html_url":"https://github.com/spring-cloud","followers_url":"https://api.github.com/users/spring-cloud/followers","following_url":"https://api.github.com/users/spring-cloud/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud/orgs","repos_url":"https://api.github.com/users/spring-cloud/repos","events_url":"https://api.github.com/users/spring-cloud/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/spring-cloud/spring-cloud-gcp","description":"Integration for Google Cloud Platform APIs with Spring","fork":false,"url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp","forks_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/forks","keys_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/teams","hooks_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/hooks","issue_events_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/events{/number}","events_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/events","assignees_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/assignees{/user}","branches_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/branches{/branch}","tags_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/tags","blobs_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/refs{/sha}","trees_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/statuses/{sha}","languages_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/languages","stargazers_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/stargazers","contributors_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/contributors","subscribers_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/subscribers","subscription_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/subscription","commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/commits{/sha}","git_commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/commits{/sha}","comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/comments{/number}","issue_comment_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/comments{/number}","contents_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/contents/{+path}","compare_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/merges","archive_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/downloads","issues_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues{/number}","pulls_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls{/number}","milestones_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/milestones{/number}","notifications_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/labels{/name}","releases_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/releases{/id}","deployments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/deployments","created_at":"2017-03-24T19:58:20Z","updated_at":"2018-11-20T19:32:43Z","pushed_at":"2018-11-20T21:25:48Z","git_url":"git://github.com/spring-cloud/spring-cloud-gcp.git","ssh_url":"git@github.com:spring-cloud/spring-cloud-gcp.git","clone_url":"https://github.com/spring-cloud/spring-cloud-gcp.git","svn_url":"https://github.com/spring-cloud/spring-cloud-gcp","homepage":null,"size":4672,"stargazers_count":213,"watchers_count":213,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":116,"mirror_url":null,"archived":false,"open_issues_count":82,"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":116,"open_issues":82,"watchers":213,"default_branch":"master"}},"base":{"label":"spring-cloud:master","ref":"master","sha":"b4a1188f8facfa502963b849e63b1a0bb87b0634","user":{"login":"spring-cloud","id":7815877,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MTU4Nzc=","avatar_url":"https://avatars0.githubusercontent.com/u/7815877?v=4","gravatar_id":"","url":"https://api.github.com/users/spring-cloud","html_url":"https://github.com/spring-cloud","followers_url":"https://api.github.com/users/spring-cloud/followers","following_url":"https://api.github.com/users/spring-cloud/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud/orgs","repos_url":"https://api.github.com/users/spring-cloud/repos","events_url":"https://api.github.com/users/spring-cloud/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud/received_events","type":"Organization","site_admin":false},"repo":{"id":86105877,"node_id":"MDEwOlJlcG9zaXRvcnk4NjEwNTg3Nw==","name":"spring-cloud-gcp","full_name":"spring-cloud/spring-cloud-gcp","private":false,"owner":{"login":"spring-cloud","id":7815877,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MTU4Nzc=","avatar_url":"https://avatars0.githubusercontent.com/u/7815877?v=4","gravatar_id":"","url":"https://api.github.com/users/spring-cloud","html_url":"https://github.com/spring-cloud","followers_url":"https://api.github.com/users/spring-cloud/followers","following_url":"https://api.github.com/users/spring-cloud/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud/orgs","repos_url":"https://api.github.com/users/spring-cloud/repos","events_url":"https://api.github.com/users/spring-cloud/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/spring-cloud/spring-cloud-gcp","description":"Integration for Google Cloud Platform APIs with Spring","fork":false,"url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp","forks_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/forks","keys_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/teams","hooks_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/hooks","issue_events_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/events{/number}","events_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/events","assignees_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/assignees{/user}","branches_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/branches{/branch}","tags_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/tags","blobs_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/refs{/sha}","trees_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/statuses/{sha}","languages_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/languages","stargazers_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/stargazers","contributors_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/contributors","subscribers_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/subscribers","subscription_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/subscription","commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/commits{/sha}","git_commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/git/commits{/sha}","comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/comments{/number}","issue_comment_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/comments{/number}","contents_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/contents/{+path}","compare_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/merges","archive_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/downloads","issues_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues{/number}","pulls_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls{/number}","milestones_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/milestones{/number}","notifications_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/labels{/name}","releases_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/releases{/id}","deployments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/deployments","created_at":"2017-03-24T19:58:20Z","updated_at":"2018-11-20T19:32:43Z","pushed_at":"2018-11-20T21:25:48Z","git_url":"git://github.com/spring-cloud/spring-cloud-gcp.git","ssh_url":"git@github.com:spring-cloud/spring-cloud-gcp.git","clone_url":"https://github.com/spring-cloud/spring-cloud-gcp.git","svn_url":"https://github.com/spring-cloud/spring-cloud-gcp","homepage":null,"size":4672,"stargazers_count":213,"watchers_count":213,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":116,"mirror_url":null,"archived":false,"open_issues_count":82,"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":116,"open_issues":82,"watchers":213,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243"},"html":{"href":"https://github.com/spring-cloud/spring-cloud-gcp/pull/1243"},"issue":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/1243"},"comments":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/issues/1243/comments"},"review_comments":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243/comments"},"review_comment":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/pulls/1243/commits"},"statuses":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-gcp/statuses/ef31932d328782243fa4abe5841858d4df47e1b6"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"sonarcloud"}}