{"action":"created","comment":{"url":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/comments/213606774","pull_request_review_id":150475989,"id":213606774,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMzYwNjc3NA==","diff_hunk":"@@ -0,0 +1,467 @@\n+package rules\n+\n+import (\n+\t\"context\"\n+\t\"encoding/json\"\n+\t\"github.com/fabric8-services/fabric8-wit/actions/change\"\n+\t\"github.com/fabric8-services/fabric8-wit/id\"\n+\n+\terrs \"github.com/pkg/errors\"\n+\tuuid \"github.com/satori/go.uuid\"\n+\n+\t\"github.com/fabric8-services/fabric8-wit/application\"\n+\t\"github.com/fabric8-services/fabric8-wit/workitem\"\n+)\n+\n+// ActionStateToMetaState implements the bidirectional mapping between state and column.\n+type ActionStateToMetaState struct {\n+\tDb     application.DB\n+\tCtx    context.Context\n+\tUserID *uuid.UUID\n+}\n+\n+// make sure the rule is implementing the interface.\n+var _ Action = ActionStateToMetaState{}\n+\n+func (act ActionStateToMetaState) contains(s []interface{}, e interface{}) bool {\n+\tfor _, a := range s {\n+\t\tif a == e {\n+\t\t\treturn true\n+\t\t}\n+\t}\n+\treturn false\n+}\n+\n+func (act ActionStateToMetaState) removeElement(s []interface{}, e interface{}) []interface{} {\n+\tfor idx, a := range s {\n+\t\tif a == e {\n+\t\t\tcopy(s[idx:], s[idx+1:])\n+\t\t\ts[len(s)-1] = nil\n+\t\t\ts = s[:len(s)-1]\n+\t\t\t// we don't return here as there may be multiple copies of e in s.\n+\t\t}\n+\t}\n+\treturn s\n+}\n+\n+// difference returns the differences between two slices. It returns two slices containing\n+// the added and removed elements compared from old and new arguments.\n+func (act ActionStateToMetaState) difference(old []interface{}, new []interface{}) ([]interface{}, []interface{}) {\n+\tvar added []interface{}\n+\tvar removed []interface{}\n+\t// added in slice2\n+\tfor _, elem := range new {\n+\t\tif !act.contains(old, elem) {\n+\t\t\tadded = append(added, elem)\n+\t\t}\n+\t}\n+\t// removed in slice2\n+\tfor _, elem := range old {\n+\t\tif !act.contains(new, elem) {\n+\t\t\tremoved = append(removed, elem)\n+\t\t}\n+\t}\n+\treturn added, removed\n+}\n+\n+func (act ActionStateToMetaState) loadWorkItemBoardsBySpaceID(spaceID uuid.UUID) ([]*workitem.Board, error) {\n+\tspace, err := act.Db.Spaces().Load(act.Ctx, spaceID)\n+\tif err != nil {\n+\t\treturn nil, errs.Wrap(err, \"error loading space: \"+err.Error())\n+\t}\n+\tboards, err := act.Db.Boards().List(act.Ctx, space.SpaceTemplateID)\n+\tif err != nil {\n+\t\treturn nil, errs.Wrap(err, \"error loading work item type: \"+err.Error())\n+\t}\n+\treturn boards, nil\n+}\n+\n+func (act ActionStateToMetaState) loadWorkItemByID(id uuid.UUID) (*workitem.WorkItem, error) {\n+\twi, err := act.Db.WorkItems().LoadByID(act.Ctx, id)\n+\tif err != nil {\n+\t\treturn nil, errs.Wrap(err, \"error loading work item: \"+err.Error())\n+\t}\n+\treturn wi, nil\n+}\n+\n+func (act ActionStateToMetaState) storeWorkItem(workitem *workitem.WorkItem) (*workitem.WorkItem, error) {\n+\terr := application.Transactional(act.Db, func(appl application.Application) error {\n+\t\tvar err error\n+\t\tworkitem, _, err = appl.WorkItems().Save(act.Ctx, workitem.SpaceID, *workitem, *act.UserID)\n+\t\tif err != nil {\n+\t\t\treturn errs.Wrap(err, \"error updating work item\")\n+\t\t}\n+\t\treturn nil\n+\t})\n+\tif err != nil {\n+\t\treturn nil, err\n+\t}\n+\treturn workitem, nil\n+}\n+\n+func (act ActionStateToMetaState) getValueListFromEnumField(wit *workitem.WorkItemType, fieldName string) ([]interface{}, error) {\n+\tenumFieldType := wit.Fields[fieldName].Type\n+\tswitch t := enumFieldType.(type) {\n+\tcase workitem.EnumType:\n+\t\treturn t.Values, nil\n+\t}\n+\treturn nil, errs.New(\"given field on workitemtype \" + wit.ID.String() + \" is not an enum field: \" + fieldName)\n+}\n+\n+// getStateToMetastateMap returns the mapping from state to metastate values read from the template.\n+func (act ActionStateToMetaState) getStateToMetastateMap(workitemTypeID uuid.UUID) (map[string]string, error) {\n+\twit, err := act.Db.WorkItemTypes().Load(act.Ctx, workitemTypeID)\n+\tif err != nil {\n+\t\treturn nil, err\n+\t}\n+\tstateList, err := act.getValueListFromEnumField(wit, workitem.SystemState)\n+\tif err != nil {\n+\t\treturn nil, err\n+\t}\n+\tmetastateList, err := act.getValueListFromEnumField(wit, workitem.SystemMetaState)\n+\tif err != nil {\n+\t\treturn nil, err\n+\t}\n+\tif len(stateList) != len(metastateList) {\n+\t\treturn nil, errs.Errorf(\"inconsistent number of states and metatstates in the current work item type (must be equal): %d states != %d metastates\", len(stateList), len(metastateList))\n+\t}\n+\tstateToMetastateMap := make(map[string]string)\n+\tfor idx := range stateList {\n+\t\tthisState, ok := stateList[idx].(string)\n+\t\tif !ok {\n+\t\t\treturn nil, errs.New(\"state value in value list is not of type string\")\n+\t\t}\n+\t\tthisMetastate, ok := metastateList[idx].(string)\n+\t\tif !ok {\n+\t\t\treturn nil, errs.New(\"metastate value in value list is not of type string\")\n+\t\t}\n+\t\t// only the first state<->metatstate mapping needs to be taken as\n+\t\t// per definition. So we're only adding a new entry here if there\n+\t\t// is not an entry already existing.\n+\t\tif _, ok := stateToMetastateMap[thisState]; !ok {\n+\t\t\tstateToMetastateMap[thisState] = thisMetastate\n+\t\t}\n+\t}\n+\treturn stateToMetastateMap, nil\n+}\n+\n+// getMetastateToStateMap returns the mapping from metastate to state values read from the template.\n+func (act ActionStateToMetaState) getMetastateToStateMap(workitemTypeID uuid.UUID) (map[string]string, error) {\n+\tstateToMetastate, err := act.getStateToMetastateMap(workitemTypeID)\n+\tif err != nil {\n+\t\treturn nil, err\n+\t}\n+\tmetastateToStateMap := make(map[string]string)\n+\tfor state, metastate := range stateToMetastate {\n+\t\t// this is important: we only add a new entry if there\n+\t\t// is not an entry already existing. Therefore, we're only\n+\t\t// using the first mapping, satisfying the req for getting the\n+\t\t// first matching state for a metastate.\n+\t\tif _, ok := metastateToStateMap[metastate]; !ok {\n+\t\t\tmetastateToStateMap[metastate] = state\n+\t\t}\n+\t}\n+\treturn metastateToStateMap, nil\n+}\n+\n+func (act ActionStateToMetaState) addOrUpdateChange(changes change.Set, attributeName string, oldValue interface{}, newValue interface{}) change.Set {","path":"actions/rules/action_state_to_metastate.go","position":167,"original_position":167,"commit_id":"7dafce4c888749769f60e83ae43b750d5a746389","original_commit_id":"f7585496797b753df8365f60d5822728019dba6b","user":{"login":"michaelkleinhenz","id":7101098,"node_id":"MDQ6VXNlcjcxMDEwOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/7101098?v=4","gravatar_id":"","url":"https://api.github.com/users/michaelkleinhenz","html_url":"https://github.com/michaelkleinhenz","followers_url":"https://api.github.com/users/michaelkleinhenz/followers","following_url":"https://api.github.com/users/michaelkleinhenz/following{/other_user}","gists_url":"https://api.github.com/users/michaelkleinhenz/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelkleinhenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelkleinhenz/subscriptions","organizations_url":"https://api.github.com/users/michaelkleinhenz/orgs","repos_url":"https://api.github.com/users/michaelkleinhenz/repos","events_url":"https://api.github.com/users/michaelkleinhenz/events{/privacy}","received_events_url":"https://api.github.com/users/michaelkleinhenz/received_events","type":"User","site_admin":false},"body":"Ok. Fixed in 7dafce4.","created_at":"2018-08-29T09:28:18Z","updated_at":"2018-08-29T09:28:19Z","html_url":"https://github.com/fabric8-services/fabric8-wit/pull/2249#discussion_r213606774","pull_request_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/comments/213606774"},"html":{"href":"https://github.com/fabric8-services/fabric8-wit/pull/2249#discussion_r213606774"},"pull_request":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249"}},"in_reply_to_id":213010376},"pull_request":{"url":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249","id":209488904,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA5NDg4OTA0","html_url":"https://github.com/fabric8-services/fabric8-wit/pull/2249","diff_url":"https://github.com/fabric8-services/fabric8-wit/pull/2249.diff","patch_url":"https://github.com/fabric8-services/fabric8-wit/pull/2249.patch","issue_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/issues/2249","number":2249,"state":"open","locked":false,"title":"Actions Board View Rule","user":{"login":"michaelkleinhenz","id":7101098,"node_id":"MDQ6VXNlcjcxMDEwOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/7101098?v=4","gravatar_id":"","url":"https://api.github.com/users/michaelkleinhenz","html_url":"https://github.com/michaelkleinhenz","followers_url":"https://api.github.com/users/michaelkleinhenz/followers","following_url":"https://api.github.com/users/michaelkleinhenz/following{/other_user}","gists_url":"https://api.github.com/users/michaelkleinhenz/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelkleinhenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelkleinhenz/subscriptions","organizations_url":"https://api.github.com/users/michaelkleinhenz/orgs","repos_url":"https://api.github.com/users/michaelkleinhenz/repos","events_url":"https://api.github.com/users/michaelkleinhenz/events{/privacy}","received_events_url":"https://api.github.com/users/michaelkleinhenz/received_events","type":"User","site_admin":false},"body":"This contains the state to metastate mapping action rule and the necessary changes to the existing templates.\r\n\r\nA thorough and complete description can be found here: https://docs.google.com/presentation/d/18xKQmkf3UKlGoP7qLqUnrIYiflza674n_paUZXKuepA/edit\r\n\r\nPlease note that this PR contains 2 new source files (the actual rule and the test) and minor changes to 3 existing files. The rest of the files in the PR are changes to golden files.","created_at":"2018-08-20T11:19:18Z","updated_at":"2018-08-29T09:28:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7ee3c9e0aa48b13ab5883699e15c78fa76598311","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249/commits","review_comments_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249/comments","review_comment_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/issues/2249/comments","statuses_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/statuses/7dafce4c888749769f60e83ae43b750d5a746389","head":{"label":"michaelkleinhenz:actions_staterule","ref":"actions_staterule","sha":"7dafce4c888749769f60e83ae43b750d5a746389","user":{"login":"michaelkleinhenz","id":7101098,"node_id":"MDQ6VXNlcjcxMDEwOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/7101098?v=4","gravatar_id":"","url":"https://api.github.com/users/michaelkleinhenz","html_url":"https://github.com/michaelkleinhenz","followers_url":"https://api.github.com/users/michaelkleinhenz/followers","following_url":"https://api.github.com/users/michaelkleinhenz/following{/other_user}","gists_url":"https://api.github.com/users/michaelkleinhenz/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelkleinhenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelkleinhenz/subscriptions","organizations_url":"https://api.github.com/users/michaelkleinhenz/orgs","repos_url":"https://api.github.com/users/michaelkleinhenz/repos","events_url":"https://api.github.com/users/michaelkleinhenz/events{/privacy}","received_events_url":"https://api.github.com/users/michaelkleinhenz/received_events","type":"User","site_admin":false},"repo":{"id":131597385,"node_id":"MDEwOlJlcG9zaXRvcnkxMzE1OTczODU=","name":"fabric8-wit","full_name":"michaelkleinhenz/fabric8-wit","owner":{"login":"michaelkleinhenz","id":7101098,"node_id":"MDQ6VXNlcjcxMDEwOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/7101098?v=4","gravatar_id":"","url":"https://api.github.com/users/michaelkleinhenz","html_url":"https://github.com/michaelkleinhenz","followers_url":"https://api.github.com/users/michaelkleinhenz/followers","following_url":"https://api.github.com/users/michaelkleinhenz/following{/other_user}","gists_url":"https://api.github.com/users/michaelkleinhenz/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelkleinhenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelkleinhenz/subscriptions","organizations_url":"https://api.github.com/users/michaelkleinhenz/orgs","repos_url":"https://api.github.com/users/michaelkleinhenz/repos","events_url":"https://api.github.com/users/michaelkleinhenz/events{/privacy}","received_events_url":"https://api.github.com/users/michaelkleinhenz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/michaelkleinhenz/fabric8-wit","description":null,"fork":true,"url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit","forks_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/forks","keys_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/teams","hooks_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/hooks","issue_events_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/issues/events{/number}","events_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/events","assignees_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/assignees{/user}","branches_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/branches{/branch}","tags_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/tags","blobs_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/git/refs{/sha}","trees_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/statuses/{sha}","languages_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/languages","stargazers_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/stargazers","contributors_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/contributors","subscribers_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/subscribers","subscription_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/subscription","commits_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/commits{/sha}","git_commits_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/git/commits{/sha}","comments_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/comments{/number}","issue_comment_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/issues/comments{/number}","contents_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/contents/{+path}","compare_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/merges","archive_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/downloads","issues_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/issues{/number}","pulls_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/pulls{/number}","milestones_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/milestones{/number}","notifications_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/labels{/name}","releases_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/releases{/id}","deployments_url":"https://api.github.com/repos/michaelkleinhenz/fabric8-wit/deployments","created_at":"2018-04-30T13:11:46Z","updated_at":"2018-08-03T07:09:24Z","pushed_at":"2018-08-28T13:45:45Z","git_url":"git://github.com/michaelkleinhenz/fabric8-wit.git","ssh_url":"git@github.com:michaelkleinhenz/fabric8-wit.git","clone_url":"https://github.com/michaelkleinhenz/fabric8-wit.git","svn_url":"https://github.com/michaelkleinhenz/fabric8-wit","homepage":"http://devdoc.almighty.io/","size":9246,"stargazers_count":0,"watchers_count":0,"language":"Go","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":"fabric8-services:master","ref":"master","sha":"d00f1960fdd4d67dd293ec2f62165b80275d5f54","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":54260706,"node_id":"MDEwOlJlcG9zaXRvcnk1NDI2MDcwNg==","name":"fabric8-wit","full_name":"fabric8-services/fabric8-wit","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},"private":false,"html_url":"https://github.com/fabric8-services/fabric8-wit","description":null,"fork":false,"url":"https://api.github.com/repos/fabric8-services/fabric8-wit","forks_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/forks","keys_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/teams","hooks_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/hooks","issue_events_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/issues/events{/number}","events_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/events","assignees_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/assignees{/user}","branches_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/branches{/branch}","tags_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/tags","blobs_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/git/refs{/sha}","trees_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/statuses/{sha}","languages_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/languages","stargazers_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/stargazers","contributors_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/contributors","subscribers_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/subscribers","subscription_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/subscription","commits_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/commits{/sha}","git_commits_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/git/commits{/sha}","comments_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/comments{/number}","issue_comment_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/issues/comments{/number}","contents_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/contents/{+path}","compare_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/merges","archive_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/downloads","issues_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/issues{/number}","pulls_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls{/number}","milestones_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/milestones{/number}","notifications_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/labels{/name}","releases_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/releases{/id}","deployments_url":"https://api.github.com/repos/fabric8-services/fabric8-wit/deployments","created_at":"2016-03-19T10:42:15Z","updated_at":"2018-08-28T15:37:53Z","pushed_at":"2018-08-28T13:45:48Z","git_url":"git://github.com/fabric8-services/fabric8-wit.git","ssh_url":"git@github.com:fabric8-services/fabric8-wit.git","clone_url":"https://github.com/fabric8-services/fabric8-wit.git","svn_url":"https://github.com/fabric8-services/fabric8-wit","homepage":"http://devdoc.almighty.io/","size":13374,"stargazers_count":39,"watchers_count":39,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":80,"mirror_url":null,"archived":false,"open_issues_count":199,"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":80,"open_issues":199,"watchers":39,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249"},"html":{"href":"https://github.com/fabric8-services/fabric8-wit/pull/2249"},"issue":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/issues/2249"},"comments":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/issues/2249/comments"},"review_comments":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249/comments"},"review_comment":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/pulls/2249/commits"},"statuses":{"href":"https://api.github.com/repos/fabric8-services/fabric8-wit/statuses/7dafce4c888749769f60e83ae43b750d5a746389"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"michaelkleinhenz"}}