{"action":"created","comment":{"url":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/comments/224822772","pull_request_review_id":164292002,"id":224822772,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNDgyMjc3Mg==","diff_hunk":"@@ -6,156 +6,157 @@ import (\n \t\"fmt\"\n \t\"net/http\"\n \n-\t\"github.com/dgrijalva/jwt-go\"\n-\tauthjwk \"github.com/fabric8-services/fabric8-auth/token/jwk\"\n-\t\"github.com/fabric8-services/fabric8-common/configuration\"\n+\t\"github.com/fabric8-services/fabric8-common/token/jwk\"\n+\t\"github.com/fabric8-services/fabric8-common/token/tokencontext\"\n+\terrs \"github.com/fabric8-services/fabric8-common/errors\"\n \t\"github.com/fabric8-services/fabric8-common/log\"\n-\t\"github.com/fabric8-services/fabric8-common/login/tokencontext\"\n-\t\"github.com/satori/go.uuid\"\n \n+\t\"github.com/dgrijalva/jwt-go\"\n \t\"github.com/goadesign/goa\"\n \tgoajwt \"github.com/goadesign/goa/middleware/security/jwt\"\n \t\"github.com/pkg/errors\"\n+\t\"github.com/satori/go.uuid\"\n )\n \n-// tokenManagerConfiguration represents configuration needed to construct a token manager\n-type tokenManagerConfiguration interface {\n+const (\n+\t// Service Account Names\n+\n+\tAuth         = \"fabric8-auth\"\n+\tWIT          = \"fabric8-wit\"\n+\tOsoProxy     = \"fabric8-oso-proxy\"\n+\tTenant       = \"fabric8-tenant\"\n+\tNotification = \"fabric8-notification\"\n+\tJenkinsIdler = \"fabric8-jenkins-idler\"\n+\tJenkinsProxy = \"fabric8-jenkins-proxy\"\n+\n+\tdevModeKeyID = \"test-key\"\n+)\n+\n+// configuration represents configuration needed to construct a token manager\n+type configuration interface {\n \tGetAuthServiceURL() string\n-\tGetKeysTokenPath() string\n-\tDeveloperModeEnabled() bool\n+\tGetAuthKeysPath() string\n+\tGetDevModePrivateKey() []byte\n }\n \n // TokenClaims represents access token claims\n type TokenClaims struct {\n-\tName          string                `json:\"name\"`\n-\tUsername      string                `json:\"preferred_username\"`\n-\tGivenName     string                `json:\"given_name\"`\n-\tFamilyName    string                `json:\"family_name\"`\n-\tEmail         string                `json:\"email\"`\n-\tCompany       string                `json:\"company\"`\n-\tSessionState  string                `json:\"session_state\"`\n-\tAuthorization *AuthorizationPayload `json:\"authorization\"`\n+\tName          string `json:\"name\"`\n+\tUsername      string `json:\"preferred_username\"`\n+\tGivenName     string `json:\"given_name\"`\n+\tFamilyName    string `json:\"family_name\"`\n+\tEmail         string `json:\"email\"`\n+\tEmailVerified bool   `json:\"email_verified\"`\n+\tCompany       string `json:\"company\"`\n \tjwt.StandardClaims\n }\n \n-// AuthorizationPayload represents an authz payload in the rpt token\n-type AuthorizationPayload struct {\n-\tPermissions []Permissions `json:\"permissions\"`\n-}\n-\n-// Permissions represents a \"permissions\" in the AuthorizationPayload\n-type Permissions struct {\n-\tResourceSetName *string `json:\"resource_set_name\"`\n-\tResourceSetID   *string `json:\"resource_set_id\"`\n-}\n-\n-type PublicKey struct {\n-\tKeyID string\n-\tKey   *rsa.PublicKey\n+// Parser parses a token and exposes the public keys for the Goa JWT middleware.\n+type Parser interface {\n+\tParse(ctx context.Context, tokenString string) (*jwt.Token, error)\n+\tPublicKeys() []*rsa.PublicKey\n }\n \n // Manager generate and find auth token information\n type Manager interface {\n+\tParser\n \tLocate(ctx context.Context) (uuid.UUID, error)\n \tParseToken(ctx context.Context, tokenString string) (*TokenClaims, error)\n-\tPublicKey(kid string) *rsa.PublicKey\n-\tPublicKeys() []*rsa.PublicKey\n-\tIsServiceAccount(ctx context.Context, serviceName string) bool\n+\tParseTokenWithMapClaims(ctx context.Context, tokenString string) (jwt.MapClaims, error)\n+\tPublicKey(keyID string) *rsa.PublicKey\n+\tAddLoginRequiredHeader(rw http.ResponseWriter)\n }\n \n type tokenManager struct {\n \tpublicKeysMap map[string]*rsa.PublicKey\n-\tpublicKeys    []*PublicKey\n+\tpublicKeys    []*jwk.PublicKey\n+\tconfig        configuration\n }\n \n // NewManager returns a new token Manager for handling tokens\n-func NewManager(config tokenManagerConfiguration) (Manager, error) {\n+func NewManager(config configuration) (Manager, error) {","path":"token/token.go","position":108,"original_position":108,"commit_id":"dcda993f56dee05f88fd63ff697e1bd9238e134d","original_commit_id":"dcda993f56dee05f88fd63ff697e1bd9238e134d","user":{"login":"alexeykazakov","id":620087,"node_id":"MDQ6VXNlcjYyMDA4Nw==","avatar_url":"https://avatars3.githubusercontent.com/u/620087?v=4","gravatar_id":"","url":"https://api.github.com/users/alexeykazakov","html_url":"https://github.com/alexeykazakov","followers_url":"https://api.github.com/users/alexeykazakov/followers","following_url":"https://api.github.com/users/alexeykazakov/following{/other_user}","gists_url":"https://api.github.com/users/alexeykazakov/gists{/gist_id}","starred_url":"https://api.github.com/users/alexeykazakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexeykazakov/subscriptions","organizations_url":"https://api.github.com/users/alexeykazakov/orgs","repos_url":"https://api.github.com/users/alexeykazakov/repos","events_url":"https://api.github.com/users/alexeykazakov/events{/privacy}","received_events_url":"https://api.github.com/users/alexeykazakov/received_events","type":"User","site_admin":false},"body":"@xcoulon everything which doesn't require account.Identity.\r\n`EmbedTokenInContext(sub, username string)`\r\n`GenerateToken(identityID string, identityUsername string)`\r\n`GenerateTokenWithClaims(claims map[string]interface{})`\r\netc.\r\nWe also can skip functions with generate refresh tokens.","created_at":"2018-10-12T15:24:16Z","updated_at":"2018-10-12T15:24:16Z","html_url":"https://github.com/fabric8-services/fabric8-common/pull/23#discussion_r224822772","pull_request_url":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/comments/224822772"},"html":{"href":"https://github.com/fabric8-services/fabric8-common/pull/23#discussion_r224822772"},"pull_request":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23"}},"in_reply_to_id":224635463},"pull_request":{"url":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23","id":222071127,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIyMDcxMTI3","html_url":"https://github.com/fabric8-services/fabric8-common/pull/23","diff_url":"https://github.com/fabric8-services/fabric8-common/pull/23.diff","patch_url":"https://github.com/fabric8-services/fabric8-common/pull/23.patch","issue_url":"https://api.github.com/repos/fabric8-services/fabric8-common/issues/23","number":23,"state":"open","locked":false,"title":"include token/jwk package from fabric8-auth","user":{"login":"xcoulon","id":178502,"node_id":"MDQ6VXNlcjE3ODUwMg==","avatar_url":"https://avatars2.githubusercontent.com/u/178502?v=4","gravatar_id":"","url":"https://api.github.com/users/xcoulon","html_url":"https://github.com/xcoulon","followers_url":"https://api.github.com/users/xcoulon/followers","following_url":"https://api.github.com/users/xcoulon/following{/other_user}","gists_url":"https://api.github.com/users/xcoulon/gists{/gist_id}","starred_url":"https://api.github.com/users/xcoulon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xcoulon/subscriptions","organizations_url":"https://api.github.com/users/xcoulon/orgs","repos_url":"https://api.github.com/users/xcoulon/repos","events_url":"https://api.github.com/users/xcoulon/events{/privacy}","received_events_url":"https://api.github.com/users/xcoulon/received_events","type":"User","site_admin":false},"body":"also, reorganize `rest`, `http` and `httpsupport`, moving\r\nall possible content in `httpsupport` to avoid the name\r\nconfusion/clash with `net/http`\r\n\r\nfixes #18\r\n\r\nSigned-off-by: Xavier Coulon <xcoulon@redhat.com>","created_at":"2018-10-11T09:42:29Z","updated_at":"2018-10-12T15:24:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4ea0167fb68f5802d17aa7b4ad9d7562554cf3c1","assignee":null,"assignees":[],"requested_reviewers":[{"login":"sbose78","id":545280,"node_id":"MDQ6VXNlcjU0NTI4MA==","avatar_url":"https://avatars3.githubusercontent.com/u/545280?v=4","gravatar_id":"","url":"https://api.github.com/users/sbose78","html_url":"https://github.com/sbose78","followers_url":"https://api.github.com/users/sbose78/followers","following_url":"https://api.github.com/users/sbose78/following{/other_user}","gists_url":"https://api.github.com/users/sbose78/gists{/gist_id}","starred_url":"https://api.github.com/users/sbose78/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbose78/subscriptions","organizations_url":"https://api.github.com/users/sbose78/orgs","repos_url":"https://api.github.com/users/sbose78/repos","events_url":"https://api.github.com/users/sbose78/events{/privacy}","received_events_url":"https://api.github.com/users/sbose78/received_events","type":"User","site_admin":false},{"login":"nurali-techie","id":35909407,"node_id":"MDQ6VXNlcjM1OTA5NDA3","avatar_url":"https://avatars0.githubusercontent.com/u/35909407?v=4","gravatar_id":"","url":"https://api.github.com/users/nurali-techie","html_url":"https://github.com/nurali-techie","followers_url":"https://api.github.com/users/nurali-techie/followers","following_url":"https://api.github.com/users/nurali-techie/following{/other_user}","gists_url":"https://api.github.com/users/nurali-techie/gists{/gist_id}","starred_url":"https://api.github.com/users/nurali-techie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nurali-techie/subscriptions","organizations_url":"https://api.github.com/users/nurali-techie/orgs","repos_url":"https://api.github.com/users/nurali-techie/repos","events_url":"https://api.github.com/users/nurali-techie/events{/privacy}","received_events_url":"https://api.github.com/users/nurali-techie/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23/commits","review_comments_url":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23/comments","review_comment_url":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fabric8-services/fabric8-common/issues/23/comments","statuses_url":"https://api.github.com/repos/fabric8-services/fabric8-common/statuses/dcda993f56dee05f88fd63ff697e1bd9238e134d","head":{"label":"xcoulon:Issue18_remove_dep_auth","ref":"Issue18_remove_dep_auth","sha":"dcda993f56dee05f88fd63ff697e1bd9238e134d","user":{"login":"xcoulon","id":178502,"node_id":"MDQ6VXNlcjE3ODUwMg==","avatar_url":"https://avatars2.githubusercontent.com/u/178502?v=4","gravatar_id":"","url":"https://api.github.com/users/xcoulon","html_url":"https://github.com/xcoulon","followers_url":"https://api.github.com/users/xcoulon/followers","following_url":"https://api.github.com/users/xcoulon/following{/other_user}","gists_url":"https://api.github.com/users/xcoulon/gists{/gist_id}","starred_url":"https://api.github.com/users/xcoulon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xcoulon/subscriptions","organizations_url":"https://api.github.com/users/xcoulon/orgs","repos_url":"https://api.github.com/users/xcoulon/repos","events_url":"https://api.github.com/users/xcoulon/events{/privacy}","received_events_url":"https://api.github.com/users/xcoulon/received_events","type":"User","site_admin":false},"repo":{"id":139611171,"node_id":"MDEwOlJlcG9zaXRvcnkxMzk2MTExNzE=","name":"fabric8-common","full_name":"xcoulon/fabric8-common","private":false,"owner":{"login":"xcoulon","id":178502,"node_id":"MDQ6VXNlcjE3ODUwMg==","avatar_url":"https://avatars2.githubusercontent.com/u/178502?v=4","gravatar_id":"","url":"https://api.github.com/users/xcoulon","html_url":"https://github.com/xcoulon","followers_url":"https://api.github.com/users/xcoulon/followers","following_url":"https://api.github.com/users/xcoulon/following{/other_user}","gists_url":"https://api.github.com/users/xcoulon/gists{/gist_id}","starred_url":"https://api.github.com/users/xcoulon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xcoulon/subscriptions","organizations_url":"https://api.github.com/users/xcoulon/orgs","repos_url":"https://api.github.com/users/xcoulon/repos","events_url":"https://api.github.com/users/xcoulon/events{/privacy}","received_events_url":"https://api.github.com/users/xcoulon/received_events","type":"User","site_admin":false},"html_url":"https://github.com/xcoulon/fabric8-common","description":"A repository for common go packages of the fabric8 services","fork":true,"url":"https://api.github.com/repos/xcoulon/fabric8-common","forks_url":"https://api.github.com/repos/xcoulon/fabric8-common/forks","keys_url":"https://api.github.com/repos/xcoulon/fabric8-common/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xcoulon/fabric8-common/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xcoulon/fabric8-common/teams","hooks_url":"https://api.github.com/repos/xcoulon/fabric8-common/hooks","issue_events_url":"https://api.github.com/repos/xcoulon/fabric8-common/issues/events{/number}","events_url":"https://api.github.com/repos/xcoulon/fabric8-common/events","assignees_url":"https://api.github.com/repos/xcoulon/fabric8-common/assignees{/user}","branches_url":"https://api.github.com/repos/xcoulon/fabric8-common/branches{/branch}","tags_url":"https://api.github.com/repos/xcoulon/fabric8-common/tags","blobs_url":"https://api.github.com/repos/xcoulon/fabric8-common/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xcoulon/fabric8-common/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xcoulon/fabric8-common/git/refs{/sha}","trees_url":"https://api.github.com/repos/xcoulon/fabric8-common/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xcoulon/fabric8-common/statuses/{sha}","languages_url":"https://api.github.com/repos/xcoulon/fabric8-common/languages","stargazers_url":"https://api.github.com/repos/xcoulon/fabric8-common/stargazers","contributors_url":"https://api.github.com/repos/xcoulon/fabric8-common/contributors","subscribers_url":"https://api.github.com/repos/xcoulon/fabric8-common/subscribers","subscription_url":"https://api.github.com/repos/xcoulon/fabric8-common/subscription","commits_url":"https://api.github.com/repos/xcoulon/fabric8-common/commits{/sha}","git_commits_url":"https://api.github.com/repos/xcoulon/fabric8-common/git/commits{/sha}","comments_url":"https://api.github.com/repos/xcoulon/fabric8-common/comments{/number}","issue_comment_url":"https://api.github.com/repos/xcoulon/fabric8-common/issues/comments{/number}","contents_url":"https://api.github.com/repos/xcoulon/fabric8-common/contents/{+path}","compare_url":"https://api.github.com/repos/xcoulon/fabric8-common/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xcoulon/fabric8-common/merges","archive_url":"https://api.github.com/repos/xcoulon/fabric8-common/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xcoulon/fabric8-common/downloads","issues_url":"https://api.github.com/repos/xcoulon/fabric8-common/issues{/number}","pulls_url":"https://api.github.com/repos/xcoulon/fabric8-common/pulls{/number}","milestones_url":"https://api.github.com/repos/xcoulon/fabric8-common/milestones{/number}","notifications_url":"https://api.github.com/repos/xcoulon/fabric8-common/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xcoulon/fabric8-common/labels{/name}","releases_url":"https://api.github.com/repos/xcoulon/fabric8-common/releases{/id}","deployments_url":"https://api.github.com/repos/xcoulon/fabric8-common/deployments","created_at":"2018-07-03T16:37:51Z","updated_at":"2018-07-03T16:37:53Z","pushed_at":"2018-10-11T15:16:03Z","git_url":"git://github.com/xcoulon/fabric8-common.git","ssh_url":"git@github.com:xcoulon/fabric8-common.git","clone_url":"https://github.com/xcoulon/fabric8-common.git","svn_url":"https://github.com/xcoulon/fabric8-common","homepage":null,"size":381,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"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":"fabric8-services:master","ref":"master","sha":"51e44b47e514721ddaa3fca99e5fb5bc1a6e7eb2","user":{"login":"fabric8-services","id":29751612,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI5NzUxNjEy","avatar_url":"https://avatars1.githubusercontent.com/u/29751612?v=4","gravatar_id":"","url":"https://api.github.com/users/fabric8-services","html_url":"https://github.com/fabric8-services","followers_url":"https://api.github.com/users/fabric8-services/followers","following_url":"https://api.github.com/users/fabric8-services/following{/other_user}","gists_url":"https://api.github.com/users/fabric8-services/gists{/gist_id}","starred_url":"https://api.github.com/users/fabric8-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fabric8-services/subscriptions","organizations_url":"https://api.github.com/users/fabric8-services/orgs","repos_url":"https://api.github.com/users/fabric8-services/repos","events_url":"https://api.github.com/users/fabric8-services/events{/privacy}","received_events_url":"https://api.github.com/users/fabric8-services/received_events","type":"Organization","site_admin":false},"repo":{"id":139610958,"node_id":"MDEwOlJlcG9zaXRvcnkxMzk2MTA5NTg=","name":"fabric8-common","full_name":"fabric8-services/fabric8-common","private":false,"owner":{"login":"fabric8-services","id":29751612,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI5NzUxNjEy","avatar_url":"https://avatars1.githubusercontent.com/u/29751612?v=4","gravatar_id":"","url":"https://api.github.com/users/fabric8-services","html_url":"https://github.com/fabric8-services","followers_url":"https://api.github.com/users/fabric8-services/followers","following_url":"https://api.github.com/users/fabric8-services/following{/other_user}","gists_url":"https://api.github.com/users/fabric8-services/gists{/gist_id}","starred_url":"https://api.github.com/users/fabric8-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fabric8-services/subscriptions","organizations_url":"https://api.github.com/users/fabric8-services/orgs","repos_url":"https://api.github.com/users/fabric8-services/repos","events_url":"https://api.github.com/users/fabric8-services/events{/privacy}","received_events_url":"https://api.github.com/users/fabric8-services/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/fabric8-services/fabric8-common","description":"A repository for the common go packages of the Fabric8 services","fork":false,"url":"https://api.github.com/repos/fabric8-services/fabric8-common","forks_url":"https://api.github.com/repos/fabric8-services/fabric8-common/forks","keys_url":"https://api.github.com/repos/fabric8-services/fabric8-common/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fabric8-services/fabric8-common/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fabric8-services/fabric8-common/teams","hooks_url":"https://api.github.com/repos/fabric8-services/fabric8-common/hooks","issue_events_url":"https://api.github.com/repos/fabric8-services/fabric8-common/issues/events{/number}","events_url":"https://api.github.com/repos/fabric8-services/fabric8-common/events","assignees_url":"https://api.github.com/repos/fabric8-services/fabric8-common/assignees{/user}","branches_url":"https://api.github.com/repos/fabric8-services/fabric8-common/branches{/branch}","tags_url":"https://api.github.com/repos/fabric8-services/fabric8-common/tags","blobs_url":"https://api.github.com/repos/fabric8-services/fabric8-common/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fabric8-services/fabric8-common/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fabric8-services/fabric8-common/git/refs{/sha}","trees_url":"https://api.github.com/repos/fabric8-services/fabric8-common/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fabric8-services/fabric8-common/statuses/{sha}","languages_url":"https://api.github.com/repos/fabric8-services/fabric8-common/languages","stargazers_url":"https://api.github.com/repos/fabric8-services/fabric8-common/stargazers","contributors_url":"https://api.github.com/repos/fabric8-services/fabric8-common/contributors","subscribers_url":"https://api.github.com/repos/fabric8-services/fabric8-common/subscribers","subscription_url":"https://api.github.com/repos/fabric8-services/fabric8-common/subscription","commits_url":"https://api.github.com/repos/fabric8-services/fabric8-common/commits{/sha}","git_commits_url":"https://api.github.com/repos/fabric8-services/fabric8-common/git/commits{/sha}","comments_url":"https://api.github.com/repos/fabric8-services/fabric8-common/comments{/number}","issue_comment_url":"https://api.github.com/repos/fabric8-services/fabric8-common/issues/comments{/number}","contents_url":"https://api.github.com/repos/fabric8-services/fabric8-common/contents/{+path}","compare_url":"https://api.github.com/repos/fabric8-services/fabric8-common/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fabric8-services/fabric8-common/merges","archive_url":"https://api.github.com/repos/fabric8-services/fabric8-common/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fabric8-services/fabric8-common/downloads","issues_url":"https://api.github.com/repos/fabric8-services/fabric8-common/issues{/number}","pulls_url":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls{/number}","milestones_url":"https://api.github.com/repos/fabric8-services/fabric8-common/milestones{/number}","notifications_url":"https://api.github.com/repos/fabric8-services/fabric8-common/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fabric8-services/fabric8-common/labels{/name}","releases_url":"https://api.github.com/repos/fabric8-services/fabric8-common/releases{/id}","deployments_url":"https://api.github.com/repos/fabric8-services/fabric8-common/deployments","created_at":"2018-07-03T16:36:03Z","updated_at":"2018-10-09T18:36:05Z","pushed_at":"2018-10-12T08:57:47Z","git_url":"git://github.com/fabric8-services/fabric8-common.git","ssh_url":"git@github.com:fabric8-services/fabric8-common.git","clone_url":"https://github.com/fabric8-services/fabric8-common.git","svn_url":"https://github.com/fabric8-services/fabric8-common","homepage":"","size":210,"stargazers_count":1,"watchers_count":1,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"archived":false,"open_issues_count":5,"license":null,"forks":7,"open_issues":5,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23"},"html":{"href":"https://github.com/fabric8-services/fabric8-common/pull/23"},"issue":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/issues/23"},"comments":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/issues/23/comments"},"review_comments":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23/comments"},"review_comment":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/pulls/23/commits"},"statuses":{"href":"https://api.github.com/repos/fabric8-services/fabric8-common/statuses/dcda993f56dee05f88fd63ff697e1bd9238e134d"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"alexeykazakov"}}