diff --git a/design/design.go b/design/design.go
index 19bce998ec88c06dcd99234fa87b4ca34afb399f..f45c623c174bc345c7962ee523d1fefb796895fe 100644
--- a/design/design.go
+++ b/design/design.go
@@ -71,6 +71,25 @@ var _ = Service("taskList", func() {
 			Response(StatusOK)
 		})
 	})
+
+	Method("TaskListResult", func() {
+		Description("TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.")
+		Payload(TaskListResultRequest)
+		Result(TaskListStatus)
+		HTTP(func() {
+			GET("/v1/taskListResult/{taskListID}")
+			Response(StatusOK)
+			Response(StatusCreated, func() {
+				Tag("status", "created")
+			})
+			Response(StatusAccepted, func() {
+				Tag("status", "pending")
+			})
+			Response(StatusMultiStatus, func() {
+				Tag("status", "failed")
+			})
+		})
+	})
 })
 
 var _ = Service("health", func() {
diff --git a/design/types.go b/design/types.go
index 7178a145f82034751203139cd631fcca56bdbf0d..d8ee8780c205483ce9efa38dab5c5517c17cc5aa 100644
--- a/design/types.go
+++ b/design/types.go
@@ -33,3 +33,38 @@ var CreateTaskListResult = Type("CreateTaskListResult", func() {
 	Field(1, "taskListID", String, "Unique taskList identifier.")
 	Required("taskListID")
 })
+
+var TaskListResultRequest = Type("TaskListResultRequest", func() {
+	Field(1, "taskListID", String, "Unique taskList identifier.")
+	Required("taskListID")
+})
+
+var TaskListStatus = Type("TaskListStatus", func() {
+	Field(1, "id", String, "Unique taskList identifier.", func() {
+		Example("9cc9f504-2b7f-4e24-ac59-653e9533840a")
+	})
+	Field(2, "status", String, "Current status of the taskList", func() {
+		Example("done")
+	})
+	Field(3, "groups", ArrayOf(GroupStatus), "Array of GroupStatus")
+	Required("id", "status")
+})
+
+var GroupStatus = Type("GroupStatus", func() {
+	Field(1, "id", String, "Unique group identifier.", func() {
+		Example("a7d1349d-34b5-4c65-b671-d1aa362fc446")
+	})
+	Field(2, "status", String, "Current status of the group", func() {
+		Example("done")
+	})
+	Field(3, "tasks", ArrayOf(TaskStatus), "Array of TaskStatus")
+})
+
+var TaskStatus = Type("TaskStatus", func() {
+	Field(1, "id", String, "Unique task identifier.", func() {
+		Example("d16996cd-1977-42a9-90b2-b4548a35c1b4")
+	})
+	Field(2, "status", String, "Current status of the task", func() {
+		Example("done")
+	})
+})
diff --git a/gen/http/cli/task/cli.go b/gen/http/cli/task/cli.go
index e125d9bae7407f0fabda3324cb9c3d1966b29ed4..6b3a3f3d5d37ba1cb804e2c2ac470f682bb05d76 100644
--- a/gen/http/cli/task/cli.go
+++ b/gen/http/cli/task/cli.go
@@ -27,15 +27,15 @@ import (
 func UsageCommands() string {
 	return `health (liveness|readiness)
 task (create|task-result)
-task-list create
+task-list (create|task-list-result)
 `
 }
 
 // UsageExamples produces an example of a valid invocation of the CLI tool.
 func UsageExamples() string {
 	return os.Args[0] + ` health liveness` + "\n" +
-		os.Args[0] + ` task create --body "Ipsam et est accusantium." --task-name "Corrupti quia autem dolorum sunt aperiam quaerat." --cache-namespace "Eveniet et eligendi sint quibusdam quia maxime." --cache-scope "Et ipsa voluptate."` + "\n" +
-		os.Args[0] + ` task-list create --body "Rerum quod error est esse nisi." --task-list-name "Sapiente et." --cache-namespace "Delectus natus eos." --cache-scope "Quae ut dolores ab."` + "\n" +
+		os.Args[0] + ` task create --body "Vel odio et doloribus est quod laborum." --task-name "Eveniet et eligendi sint quibusdam quia maxime." --cache-namespace "Et ipsa voluptate." --cache-scope "Quo qui fuga impedit eos fuga et."` + "\n" +
+		os.Args[0] + ` task-list create --body "Quaerat ut fugit voluptatem dolores deserunt in." --task-list-name "Delectus natus eos." --cache-namespace "Quae ut dolores ab." --cache-scope "Omnis commodi reiciendis eum non."` + "\n" +
 		""
 }
 
@@ -73,6 +73,9 @@ func ParseEndpoint(
 		taskListCreateTaskListNameFlag   = taskListCreateFlags.String("task-list-name", "REQUIRED", "TaskList name.")
 		taskListCreateCacheNamespaceFlag = taskListCreateFlags.String("cache-namespace", "", "")
 		taskListCreateCacheScopeFlag     = taskListCreateFlags.String("cache-scope", "", "")
+
+		taskListTaskListResultFlags          = flag.NewFlagSet("task-list-result", flag.ExitOnError)
+		taskListTaskListResultTaskListIDFlag = taskListTaskListResultFlags.String("task-list-id", "REQUIRED", "Unique taskList identifier.")
 	)
 	healthFlags.Usage = healthUsage
 	healthLivenessFlags.Usage = healthLivenessUsage
@@ -84,6 +87,7 @@ func ParseEndpoint(
 
 	taskListFlags.Usage = taskListUsage
 	taskListCreateFlags.Usage = taskListCreateUsage
+	taskListTaskListResultFlags.Usage = taskListTaskListResultUsage
 
 	if err := flag.CommandLine.Parse(os.Args[1:]); err != nil {
 		return nil, nil, err
@@ -146,6 +150,9 @@ func ParseEndpoint(
 			case "create":
 				epf = taskListCreateFlags
 
+			case "task-list-result":
+				epf = taskListTaskListResultFlags
+
 			}
 
 		}
@@ -194,6 +201,9 @@ func ParseEndpoint(
 			case "create":
 				endpoint = c.Create()
 				data, err = tasklistc.BuildCreatePayload(*taskListCreateBodyFlag, *taskListCreateTaskListNameFlag, *taskListCreateCacheNamespaceFlag, *taskListCreateCacheScopeFlag)
+			case "task-list-result":
+				endpoint = c.TaskListResult()
+				data, err = tasklistc.BuildTaskListResultPayload(*taskListTaskListResultTaskListIDFlag)
 			}
 		}
 	}
@@ -262,7 +272,7 @@ Create a task and put it in a queue for execution.
     -cache-scope STRING: 
 
 Example:
-    %[1]s task create --body "Ipsam et est accusantium." --task-name "Corrupti quia autem dolorum sunt aperiam quaerat." --cache-namespace "Eveniet et eligendi sint quibusdam quia maxime." --cache-scope "Et ipsa voluptate."
+    %[1]s task create --body "Vel odio et doloribus est quod laborum." --task-name "Eveniet et eligendi sint quibusdam quia maxime." --cache-namespace "Et ipsa voluptate." --cache-scope "Quo qui fuga impedit eos fuga et."
 `, os.Args[0])
 }
 
@@ -273,7 +283,7 @@ TaskResult retrieves task result from the Cache service.
     -task-id STRING: Unique task identifier.
 
 Example:
-    %[1]s task task-result --task-id "Excepturi aut consequatur animi rerum."
+    %[1]s task task-result --task-id "Dolores atque error ab."
 `, os.Args[0])
 }
 
@@ -285,7 +295,8 @@ Usage:
     %[1]s [globalflags] task-list COMMAND [flags]
 
 COMMAND:
-    create: Create a task list, corresponding groups and tasks and put them in respective queues for execution.
+    create: Create a task list and corresponding tasks and put them in respective queues for execution.
+    task-list-result: TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.
 
 Additional help:
     %[1]s task-list COMMAND --help
@@ -294,13 +305,24 @@ Additional help:
 func taskListCreateUsage() {
 	fmt.Fprintf(os.Stderr, `%[1]s [flags] task-list create -body JSON -task-list-name STRING -cache-namespace STRING -cache-scope STRING
 
-Create a task list, corresponding groups and tasks and put them in respective queues for execution.
+Create a task list and corresponding tasks and put them in respective queues for execution.
     -body JSON: 
     -task-list-name STRING: TaskList name.
     -cache-namespace STRING: 
     -cache-scope STRING: 
 
 Example:
-    %[1]s task-list create --body "Rerum quod error est esse nisi." --task-list-name "Sapiente et." --cache-namespace "Delectus natus eos." --cache-scope "Quae ut dolores ab."
+    %[1]s task-list create --body "Quaerat ut fugit voluptatem dolores deserunt in." --task-list-name "Delectus natus eos." --cache-namespace "Quae ut dolores ab." --cache-scope "Omnis commodi reiciendis eum non."
+`, os.Args[0])
+}
+
+func taskListTaskListResultUsage() {
+	fmt.Fprintf(os.Stderr, `%[1]s [flags] task-list task-list-result -task-list-id STRING
+
+TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.
+    -task-list-id STRING: Unique taskList identifier.
+
+Example:
+    %[1]s task-list task-list-result --task-list-id "Deserunt dolor et autem quidem fugiat sint."
 `, os.Args[0])
 }
diff --git a/gen/http/openapi.json b/gen/http/openapi.json
index 13e4956be85c69bb6664de4204a7dfbcf60f9db0..43127d6b53da9be51a4b015bc4a72d551923e9f9 100644
--- a/gen/http/openapi.json
+++ b/gen/http/openapi.json
@@ -1 +1 @@
-{"swagger":"2.0","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":""},"host":"localhost:8082","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for task execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskCreateResponseBody","required":["taskID"]}}},"schemes":["http"]}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list, corresponding groups and tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for taskList execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListCreateResponseBody","required":["taskListID"]}}},"schemes":["http"]}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"type":"string","format":"binary"}}},"schemes":["http"]}}},"definitions":{"TaskCreateResponseBody":{"title":"TaskCreateResponseBody","type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Et officiis aut."}},"example":{"taskID":"Atque veritatis."},"required":["taskID"]},"TaskListCreateResponseBody":{"title":"TaskListCreateResponseBody","type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Deserunt dolor et autem quidem fugiat sint."}},"example":{"taskListID":"Aut voluptas possimus quia aliquam sit."},"required":["taskListID"]}}}
\ No newline at end of file
+{"swagger":"2.0","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":""},"host":"localhost:8082","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for task execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskCreateResponseBody","required":["taskID"]}}},"schemes":["http"]}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list and corresponding tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for taskList execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListCreateResponseBody","required":["taskListID"]}}},"schemes":["http"]}},"/v1/taskListResult/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListResult taskList","description":"TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListResult","parameters":[{"name":"taskListID","in":"path","description":"Unique taskList identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListTaskListResultOKResponseBody","required":["id","status"]}},"201":{"description":"Created response.","schema":{"$ref":"#/definitions/TaskListTaskListResultCreatedResponseBody","required":["id","status"]}},"202":{"description":"Accepted response.","schema":{"$ref":"#/definitions/TaskListTaskListResultAcceptedResponseBody","required":["id","status"]}},"207":{"description":"Multi-Status response.","schema":{"$ref":"#/definitions/TaskListTaskListResultMultiStatusResponseBody","required":["id","status"]}}},"schemes":["http"]}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"type":"string","format":"binary"}}},"schemes":["http"]}}},"definitions":{"GroupStatusResponseBody":{"title":"GroupStatusResponseBody","type":"object","properties":{"id":{"type":"string","description":"Unique group identifier.","example":"a7d1349d-34b5-4c65-b671-d1aa362fc446"},"status":{"type":"string","description":"Current status of the group","example":"done"},"tasks":{"type":"array","items":{"$ref":"#/definitions/TaskStatusResponseBody"},"description":"Array of TaskStatus","example":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"example":{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"TaskCreateResponseBody":{"title":"TaskCreateResponseBody","type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Sit asperiores."}},"example":{"taskID":"Iste suscipit exercitationem facilis distinctio asperiores ut."},"required":["taskID"]},"TaskListCreateResponseBody":{"title":"TaskListCreateResponseBody","type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Ducimus velit."}},"example":{"taskListID":"Et occaecati placeat."},"required":["taskListID"]},"TaskListTaskListResultAcceptedResponseBody":{"title":"TaskListTaskListResultAcceptedResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskListTaskListResultCreatedResponseBody":{"title":"TaskListTaskListResultCreatedResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskListTaskListResultMultiStatusResponseBody":{"title":"TaskListTaskListResultMultiStatusResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskListTaskListResultOKResponseBody":{"title":"TaskListTaskListResultOKResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskStatusResponseBody":{"title":"TaskStatusResponseBody","type":"object","properties":{"id":{"type":"string","description":"Unique task identifier.","example":"d16996cd-1977-42a9-90b2-b4548a35c1b4"},"status":{"type":"string","description":"Current status of the task","example":"done"}},"example":{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}}}}
\ No newline at end of file
diff --git a/gen/http/openapi.yaml b/gen/http/openapi.yaml
index b9008d5a089c97a647cc5fb22c831bd7c86a9d92..2a2676a5ee016aff4baa7de4b048349146d199a9 100644
--- a/gen/http/openapi.yaml
+++ b/gen/http/openapi.yaml
@@ -79,8 +79,8 @@ paths:
       tags:
       - taskList
       summary: Create taskList
-      description: Create a task list, corresponding groups and tasks and put them
-        in respective queues for execution.
+      description: Create a task list and corresponding tasks and put them in respective
+        queues for execution.
       operationId: taskList#Create
       parameters:
       - name: taskListName
@@ -114,6 +114,51 @@ paths:
             - taskListID
       schemes:
       - http
+  /v1/taskListResult/{taskListID}:
+    get:
+      tags:
+      - taskList
+      summary: TaskListResult taskList
+      description: TaskListResult retrieves a taskList result containing all tasks'
+        unique IDs and statuses from the Cache service.
+      operationId: taskList#TaskListResult
+      parameters:
+      - name: taskListID
+        in: path
+        description: Unique taskList identifier.
+        required: true
+        type: string
+      responses:
+        "200":
+          description: OK response.
+          schema:
+            $ref: '#/definitions/TaskListTaskListResultOKResponseBody'
+            required:
+            - id
+            - status
+        "201":
+          description: Created response.
+          schema:
+            $ref: '#/definitions/TaskListTaskListResultCreatedResponseBody'
+            required:
+            - id
+            - status
+        "202":
+          description: Accepted response.
+          schema:
+            $ref: '#/definitions/TaskListTaskListResultAcceptedResponseBody'
+            required:
+            - id
+            - status
+        "207":
+          description: Multi-Status response.
+          schema:
+            $ref: '#/definitions/TaskListTaskListResultMultiStatusResponseBody'
+            required:
+            - id
+            - status
+      schemes:
+      - http
   /v1/taskResult/{taskID}:
     get:
       tags:
@@ -136,6 +181,40 @@ paths:
       schemes:
       - http
 definitions:
+  GroupStatusResponseBody:
+    title: GroupStatusResponseBody
+    type: object
+    properties:
+      id:
+        type: string
+        description: Unique group identifier.
+        example: a7d1349d-34b5-4c65-b671-d1aa362fc446
+      status:
+        type: string
+        description: Current status of the group
+        example: done
+      tasks:
+        type: array
+        items:
+          $ref: '#/definitions/TaskStatusResponseBody'
+        description: Array of TaskStatus
+        example:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+    example:
+      id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+      status: done
+      tasks:
+      - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+        status: done
+      - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+        status: done
   TaskCreateResponseBody:
     title: TaskCreateResponseBody
     type: object
@@ -143,9 +222,9 @@ definitions:
       taskID:
         type: string
         description: Unique task identifier.
-        example: Et officiis aut.
+        example: Sit asperiores.
     example:
-      taskID: Atque veritatis.
+      taskID: Iste suscipit exercitationem facilis distinctio asperiores ut.
     required:
     - taskID
   TaskListCreateResponseBody:
@@ -155,8 +234,303 @@ definitions:
       taskListID:
         type: string
         description: Unique taskList identifier.
-        example: Deserunt dolor et autem quidem fugiat sint.
+        example: Ducimus velit.
     example:
-      taskListID: Aut voluptas possimus quia aliquam sit.
+      taskListID: Et occaecati placeat.
     required:
     - taskListID
+  TaskListTaskListResultAcceptedResponseBody:
+    title: TaskListTaskListResultAcceptedResponseBody
+    type: object
+    properties:
+      groups:
+        type: array
+        items:
+          $ref: '#/definitions/GroupStatusResponseBody'
+        description: Array of GroupStatus
+        example:
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+      id:
+        type: string
+        description: Unique taskList identifier.
+        example: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status:
+        type: string
+        description: Current status of the taskList
+        example: done
+    example:
+      groups:
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status: done
+    required:
+    - id
+    - status
+  TaskListTaskListResultCreatedResponseBody:
+    title: TaskListTaskListResultCreatedResponseBody
+    type: object
+    properties:
+      groups:
+        type: array
+        items:
+          $ref: '#/definitions/GroupStatusResponseBody'
+        description: Array of GroupStatus
+        example:
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+      id:
+        type: string
+        description: Unique taskList identifier.
+        example: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status:
+        type: string
+        description: Current status of the taskList
+        example: done
+    example:
+      groups:
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status: done
+    required:
+    - id
+    - status
+  TaskListTaskListResultMultiStatusResponseBody:
+    title: TaskListTaskListResultMultiStatusResponseBody
+    type: object
+    properties:
+      groups:
+        type: array
+        items:
+          $ref: '#/definitions/GroupStatusResponseBody'
+        description: Array of GroupStatus
+        example:
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+      id:
+        type: string
+        description: Unique taskList identifier.
+        example: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status:
+        type: string
+        description: Current status of the taskList
+        example: done
+    example:
+      groups:
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status: done
+    required:
+    - id
+    - status
+  TaskListTaskListResultOKResponseBody:
+    title: TaskListTaskListResultOKResponseBody
+    type: object
+    properties:
+      groups:
+        type: array
+        items:
+          $ref: '#/definitions/GroupStatusResponseBody'
+        description: Array of GroupStatus
+        example:
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+      id:
+        type: string
+        description: Unique taskList identifier.
+        example: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status:
+        type: string
+        description: Current status of the taskList
+        example: done
+    example:
+      groups:
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+      id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+      status: done
+    required:
+    - id
+    - status
+  TaskStatusResponseBody:
+    title: TaskStatusResponseBody
+    type: object
+    properties:
+      id:
+        type: string
+        description: Unique task identifier.
+        example: d16996cd-1977-42a9-90b2-b4548a35c1b4
+      status:
+        type: string
+        description: Current status of the task
+        example: done
+    example:
+      id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+      status: done
diff --git a/gen/http/openapi3.json b/gen/http/openapi3.json
index 4a39db1b50f4e6ac9185165a43d3ae6c3b14c9f6..5ab27ada65fefff93d33a6ca0cbc68755f771907 100644
--- a/gen/http/openapi3.json
+++ b/gen/http/openapi3.json
@@ -1 +1 @@
-{"openapi":"3.0.3","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":"1.0"},"servers":[{"url":"http://localhost:8082","description":"Task Server"}],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}}}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}}}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"schema":{"type":"string","description":"Task name.","example":"Voluptatem iure qui facilis aut."},"example":"Excepturi non."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for task execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for task execution.","example":"Impedit iste suscipit.","format":"binary"},"example":"Excepturi in ex ratione."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskResult"},"example":{"taskID":"Vel odio et doloribus est quod laborum."}}}}}}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list, corresponding groups and tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"schema":{"type":"string","description":"TaskList name.","example":"Incidunt autem eaque."},"example":"Fugit ut eius sint earum."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for taskList execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for taskList execution.","example":"Reiciendis numquam.","format":"binary"},"example":"At consequatur nulla praesentium totam dolores voluptas."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskListResult"},"example":{"taskListID":"Quaerat ut fugit voluptatem dolores deserunt in."}}}}}}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"schema":{"type":"string","description":"Unique task identifier.","example":"Ut et est aut quae magnam."},"example":"Amet sapiente qui non."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","example":"Placeat molestias praesentium necessitatibus sed.","format":"binary"},"example":"Sint nulla."}}}}}}},"components":{"schemas":{"CreateTaskListResult":{"type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Doloribus ullam voluptas quos aut tempore."}},"example":{"taskListID":"Porro perspiciatis qui vitae totam eligendi officiis."},"required":["taskListID"]},"CreateTaskResult":{"type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Facilis distinctio asperiores ut architecto ducimus."}},"example":{"taskID":"Omnis et."},"required":["taskID"]}}},"tags":[{"name":"health","description":"Health service provides health check endpoints."},{"name":"task","description":"Task service provides endpoints to work with tasks."},{"name":"taskList","description":"TaskList service provides endpoints to work with task lists."}]}
\ No newline at end of file
+{"openapi":"3.0.3","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":"1.0"},"servers":[{"url":"http://localhost:8082","description":"Task Server"}],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}}}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}}}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"schema":{"type":"string","description":"Task name.","example":"Voluptas laudantium incidunt autem eaque."},"example":"Fugit ut eius sint earum."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for task execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for task execution.","example":"Quos aut tempore enim porro.","format":"binary"},"example":"Consequatur nulla praesentium totam."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskResult"},"example":{"taskID":"Harum aut autem aliquam dolorem non soluta."}}}}}}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list and corresponding tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"schema":{"type":"string","description":"TaskList name.","example":"Earum laborum accusamus id nihil."},"example":"Est eveniet dolores."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for taskList execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for taskList execution.","example":"Excepturi non.","format":"binary"},"example":"Laboriosam cumque."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskListResult"},"example":{"taskListID":"Et officiis aut."}}}}}}},"/v1/taskListResult/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListResult taskList","description":"TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListResult","parameters":[{"name":"taskListID","in":"path","description":"Unique taskList identifier.","required":true,"schema":{"type":"string","description":"Unique taskList identifier.","example":"Omnis optio magni sunt aliquid et."},"example":"Dignissimos doloribus rerum occaecati quia ut."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}},"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}},"202":{"description":"Accepted response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}},"207":{"description":"Multi-Status response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}}}}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"schema":{"type":"string","description":"Unique task identifier.","example":"Doloremque earum aliquid ipsa."},"example":"Voluptas odit voluptate nobis nam quia quae."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","example":"Voluptatem iure qui facilis aut.","format":"binary"},"example":"Maxime facilis."}}}}}}},"components":{"schemas":{"CreateTaskListResult":{"type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Ut et est aut quae magnam."}},"example":{"taskListID":"Amet sapiente qui non."},"required":["taskListID"]},"CreateTaskResult":{"type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Qui vitae."}},"example":{"taskID":"Eligendi officiis repudiandae excepturi in ex ratione."},"required":["taskID"]},"GroupStatus":{"type":"object","properties":{"id":{"type":"string","description":"Unique group identifier.","example":"a7d1349d-34b5-4c65-b671-d1aa362fc446"},"status":{"type":"string","description":"Current status of the group","example":"done"},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/TaskStatus"},"description":"Array of TaskStatus","example":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"example":{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"TaskListStatus":{"type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupStatus"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskStatus":{"type":"object","properties":{"id":{"type":"string","description":"Unique task identifier.","example":"d16996cd-1977-42a9-90b2-b4548a35c1b4"},"status":{"type":"string","description":"Current status of the task","example":"done"}},"example":{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}}}},"tags":[{"name":"health","description":"Health service provides health check endpoints."},{"name":"task","description":"Task service provides endpoints to work with tasks."},{"name":"taskList","description":"TaskList service provides endpoints to work with task lists."}]}
\ No newline at end of file
diff --git a/gen/http/openapi3.yaml b/gen/http/openapi3.yaml
index 3b234d0b2694c25ae7b41a466c4a52329a6b48d7..5f2410bff1140b90b9871ea7af5fd284be6f8cf1 100644
--- a/gen/http/openapi3.yaml
+++ b/gen/http/openapi3.yaml
@@ -40,8 +40,8 @@ paths:
         schema:
           type: string
           description: Task name.
-          example: Voluptatem iure qui facilis aut.
-        example: Excepturi non.
+          example: Voluptas laudantium incidunt autem eaque.
+        example: Fugit ut eius sint earum.
       - name: x-cache-namespace
         in: header
         description: Cache key namespace
@@ -68,9 +68,9 @@ paths:
             schema:
               type: string
               description: Data contains JSON payload that will be used for task execution.
-              example: Impedit iste suscipit.
+              example: Quos aut tempore enim porro.
               format: binary
-            example: Excepturi in ex ratione.
+            example: Consequatur nulla praesentium totam.
       responses:
         "200":
           description: OK response.
@@ -79,14 +79,14 @@ paths:
               schema:
                 $ref: '#/components/schemas/CreateTaskResult'
               example:
-                taskID: Vel odio et doloribus est quod laborum.
+                taskID: Harum aut autem aliquam dolorem non soluta.
   /v1/taskList/{taskListName}:
     post:
       tags:
       - taskList
       summary: Create taskList
-      description: Create a task list, corresponding groups and tasks and put them
-        in respective queues for execution.
+      description: Create a task list and corresponding tasks and put them in respective
+        queues for execution.
       operationId: taskList#Create
       parameters:
       - name: taskListName
@@ -96,8 +96,8 @@ paths:
         schema:
           type: string
           description: TaskList name.
-          example: Incidunt autem eaque.
-        example: Fugit ut eius sint earum.
+          example: Earum laborum accusamus id nihil.
+        example: Est eveniet dolores.
       - name: x-cache-namespace
         in: header
         description: Cache key namespace
@@ -125,9 +125,9 @@ paths:
               type: string
               description: Data contains JSON payload that will be used for taskList
                 execution.
-              example: Reiciendis numquam.
+              example: Excepturi non.
               format: binary
-            example: At consequatur nulla praesentium totam dolores voluptas.
+            example: Laboriosam cumque.
       responses:
         "200":
           description: OK response.
@@ -136,7 +136,174 @@ paths:
               schema:
                 $ref: '#/components/schemas/CreateTaskListResult'
               example:
-                taskListID: Quaerat ut fugit voluptatem dolores deserunt in.
+                taskListID: Et officiis aut.
+  /v1/taskListResult/{taskListID}:
+    get:
+      tags:
+      - taskList
+      summary: TaskListResult taskList
+      description: TaskListResult retrieves a taskList result containing all tasks'
+        unique IDs and statuses from the Cache service.
+      operationId: taskList#TaskListResult
+      parameters:
+      - name: taskListID
+        in: path
+        description: Unique taskList identifier.
+        required: true
+        schema:
+          type: string
+          description: Unique taskList identifier.
+          example: Omnis optio magni sunt aliquid et.
+        example: Dignissimos doloribus rerum occaecati quia ut.
+      responses:
+        "200":
+          description: OK response.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TaskListStatus'
+              example:
+                groups:
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+                status: done
+        "201":
+          description: Created response.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TaskListStatus'
+              example:
+                groups:
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+                status: done
+        "202":
+          description: Accepted response.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TaskListStatus'
+              example:
+                groups:
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+                status: done
+        "207":
+          description: Multi-Status response.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TaskListStatus'
+              example:
+                groups:
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+                  status: done
+                  tasks:
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                  - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                    status: done
+                id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+                status: done
   /v1/taskResult/{taskID}:
     get:
       tags:
@@ -152,8 +319,8 @@ paths:
         schema:
           type: string
           description: Unique task identifier.
-          example: Ut et est aut quae magnam.
-        example: Amet sapiente qui non.
+          example: Doloremque earum aliquid ipsa.
+        example: Voluptas odit voluptate nobis nam quia quae.
       responses:
         "200":
           description: OK response.
@@ -161,9 +328,9 @@ paths:
             application/json:
               schema:
                 type: string
-                example: Placeat molestias praesentium necessitatibus sed.
+                example: Voluptatem iure qui facilis aut.
                 format: binary
-              example: Sint nulla.
+              example: Maxime facilis.
 components:
   schemas:
     CreateTaskListResult:
@@ -172,9 +339,9 @@ components:
         taskListID:
           type: string
           description: Unique taskList identifier.
-          example: Doloribus ullam voluptas quos aut tempore.
+          example: Ut et est aut quae magnam.
       example:
-        taskListID: Porro perspiciatis qui vitae totam eligendi officiis.
+        taskListID: Amet sapiente qui non.
       required:
       - taskListID
     CreateTaskResult:
@@ -183,11 +350,147 @@ components:
         taskID:
           type: string
           description: Unique task identifier.
-          example: Facilis distinctio asperiores ut architecto ducimus.
+          example: Qui vitae.
       example:
-        taskID: Omnis et.
+        taskID: Eligendi officiis repudiandae excepturi in ex ratione.
       required:
       - taskID
+    GroupStatus:
+      type: object
+      properties:
+        id:
+          type: string
+          description: Unique group identifier.
+          example: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status:
+          type: string
+          description: Current status of the group
+          example: done
+        tasks:
+          type: array
+          items:
+            $ref: '#/components/schemas/TaskStatus'
+          description: Array of TaskStatus
+          example:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+      example:
+        id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+        status: done
+        tasks:
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+        - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+          status: done
+    TaskListStatus:
+      type: object
+      properties:
+        groups:
+          type: array
+          items:
+            $ref: '#/components/schemas/GroupStatus'
+          description: Array of GroupStatus
+          example:
+          - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+            status: done
+            tasks:
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+          - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+            status: done
+            tasks:
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+          - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+            status: done
+            tasks:
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+          - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+            status: done
+            tasks:
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+            - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+              status: done
+        id:
+          type: string
+          description: Unique taskList identifier.
+          example: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+        status:
+          type: string
+          description: Current status of the taskList
+          example: done
+      example:
+        groups:
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        - id: a7d1349d-34b5-4c65-b671-d1aa362fc446
+          status: done
+          tasks:
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+          - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+            status: done
+        id: 9cc9f504-2b7f-4e24-ac59-653e9533840a
+        status: done
+      required:
+      - id
+      - status
+    TaskStatus:
+      type: object
+      properties:
+        id:
+          type: string
+          description: Unique task identifier.
+          example: d16996cd-1977-42a9-90b2-b4548a35c1b4
+        status:
+          type: string
+          description: Current status of the task
+          example: done
+      example:
+        id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+        status: done
 tags:
 - name: health
   description: Health service provides health check endpoints.
diff --git a/gen/http/task/client/cli.go b/gen/http/task/client/cli.go
index 3080e4ebc945b6f4f29af532b072a18c0ad3094c..bf05073b6f41fa01db203999926e83d941fbe037 100644
--- a/gen/http/task/client/cli.go
+++ b/gen/http/task/client/cli.go
@@ -22,7 +22,7 @@ func BuildCreatePayload(taskCreateBody string, taskCreateTaskName string, taskCr
 	{
 		err = json.Unmarshal([]byte(taskCreateBody), &body)
 		if err != nil {
-			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Ipsam et est accusantium.\"")
+			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Vel odio et doloribus est quod laborum.\"")
 		}
 	}
 	var taskName string
diff --git a/gen/http/task_list/client/cli.go b/gen/http/task_list/client/cli.go
index a46f7e6b65abf426b31ebafbdd65df0c52b216a8..b3fea488aa37bcc93f8967c8c44a776705ab9787 100644
--- a/gen/http/task_list/client/cli.go
+++ b/gen/http/task_list/client/cli.go
@@ -22,7 +22,7 @@ func BuildCreatePayload(taskListCreateBody string, taskListCreateTaskListName st
 	{
 		err = json.Unmarshal([]byte(taskListCreateBody), &body)
 		if err != nil {
-			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Rerum quod error est esse nisi.\"")
+			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Quaerat ut fugit voluptatem dolores deserunt in.\"")
 		}
 	}
 	var taskListName string
@@ -51,3 +51,16 @@ func BuildCreatePayload(taskListCreateBody string, taskListCreateTaskListName st
 
 	return res, nil
 }
+
+// BuildTaskListResultPayload builds the payload for the taskList
+// TaskListResult endpoint from CLI flags.
+func BuildTaskListResultPayload(taskListTaskListResultTaskListID string) (*tasklist.TaskListResultRequest, error) {
+	var taskListID string
+	{
+		taskListID = taskListTaskListResultTaskListID
+	}
+	v := &tasklist.TaskListResultRequest{}
+	v.TaskListID = taskListID
+
+	return v, nil
+}
diff --git a/gen/http/task_list/client/client.go b/gen/http/task_list/client/client.go
index 7beb029b37d637bc6fc7ca2249ee7a84e2d100fe..85ce0ec093f453b75b89dbc8f0f51cc0a91893ad 100644
--- a/gen/http/task_list/client/client.go
+++ b/gen/http/task_list/client/client.go
@@ -20,6 +20,10 @@ type Client struct {
 	// Create Doer is the HTTP client used to make requests to the Create endpoint.
 	CreateDoer goahttp.Doer
 
+	// TaskListResult Doer is the HTTP client used to make requests to the
+	// TaskListResult endpoint.
+	TaskListResultDoer goahttp.Doer
+
 	// RestoreResponseBody controls whether the response bodies are reset after
 	// decoding so they can be read again.
 	RestoreResponseBody bool
@@ -41,6 +45,7 @@ func NewClient(
 ) *Client {
 	return &Client{
 		CreateDoer:          doer,
+		TaskListResultDoer:  doer,
 		RestoreResponseBody: restoreBody,
 		scheme:              scheme,
 		host:                host,
@@ -72,3 +77,22 @@ func (c *Client) Create() goa.Endpoint {
 		return decodeResponse(resp)
 	}
 }
+
+// TaskListResult returns an endpoint that makes HTTP requests to the taskList
+// service TaskListResult server.
+func (c *Client) TaskListResult() goa.Endpoint {
+	var (
+		decodeResponse = DecodeTaskListResultResponse(c.decoder, c.RestoreResponseBody)
+	)
+	return func(ctx context.Context, v interface{}) (interface{}, error) {
+		req, err := c.BuildTaskListResultRequest(ctx, v)
+		if err != nil {
+			return nil, err
+		}
+		resp, err := c.TaskListResultDoer.Do(req)
+		if err != nil {
+			return nil, goahttp.ErrRequestError("taskList", "TaskListResult", err)
+		}
+		return decodeResponse(resp)
+	}
+}
diff --git a/gen/http/task_list/client/encode_decode.go b/gen/http/task_list/client/encode_decode.go
index a8c5892c07ad6acdd709ff1f6875b1138eba762a..039233fa76cca534b124596950649d188223c455 100644
--- a/gen/http/task_list/client/encode_decode.go
+++ b/gen/http/task_list/client/encode_decode.go
@@ -106,3 +106,150 @@ func DecodeCreateResponse(decoder func(*http.Response) goahttp.Decoder, restoreB
 		}
 	}
 }
+
+// BuildTaskListResultRequest instantiates a HTTP request object with method
+// and path set to call the "taskList" service "TaskListResult" endpoint
+func (c *Client) BuildTaskListResultRequest(ctx context.Context, v interface{}) (*http.Request, error) {
+	var (
+		taskListID string
+	)
+	{
+		p, ok := v.(*tasklist.TaskListResultRequest)
+		if !ok {
+			return nil, goahttp.ErrInvalidType("taskList", "TaskListResult", "*tasklist.TaskListResultRequest", v)
+		}
+		taskListID = p.TaskListID
+	}
+	u := &url.URL{Scheme: c.scheme, Host: c.host, Path: TaskListResultTaskListPath(taskListID)}
+	req, err := http.NewRequest("GET", u.String(), nil)
+	if err != nil {
+		return nil, goahttp.ErrInvalidURL("taskList", "TaskListResult", u.String(), err)
+	}
+	if ctx != nil {
+		req = req.WithContext(ctx)
+	}
+
+	return req, nil
+}
+
+// DecodeTaskListResultResponse returns a decoder for responses returned by the
+// taskList TaskListResult endpoint. restoreBody controls whether the response
+// body should be restored after having been read.
+func DecodeTaskListResultResponse(decoder func(*http.Response) goahttp.Decoder, restoreBody bool) func(*http.Response) (interface{}, error) {
+	return func(resp *http.Response) (interface{}, error) {
+		if restoreBody {
+			b, err := ioutil.ReadAll(resp.Body)
+			if err != nil {
+				return nil, err
+			}
+			resp.Body = ioutil.NopCloser(bytes.NewBuffer(b))
+			defer func() {
+				resp.Body = ioutil.NopCloser(bytes.NewBuffer(b))
+			}()
+		} else {
+			defer resp.Body.Close()
+		}
+		switch resp.StatusCode {
+		case http.StatusMultiStatus:
+			var (
+				body TaskListResultMultiStatusResponseBody
+				err  error
+			)
+			err = decoder(resp).Decode(&body)
+			if err != nil {
+				return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err)
+			}
+			err = ValidateTaskListResultMultiStatusResponseBody(&body)
+			if err != nil {
+				return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err)
+			}
+			res := NewTaskListResultTaskListStatusMultiStatus(&body)
+			res.Status = "failed"
+			return res, nil
+		case http.StatusCreated:
+			var (
+				body TaskListResultCreatedResponseBody
+				err  error
+			)
+			err = decoder(resp).Decode(&body)
+			if err != nil {
+				return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err)
+			}
+			err = ValidateTaskListResultCreatedResponseBody(&body)
+			if err != nil {
+				return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err)
+			}
+			res := NewTaskListResultTaskListStatusCreated(&body)
+			res.Status = "created"
+			return res, nil
+		case http.StatusAccepted:
+			var (
+				body TaskListResultAcceptedResponseBody
+				err  error
+			)
+			err = decoder(resp).Decode(&body)
+			if err != nil {
+				return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err)
+			}
+			err = ValidateTaskListResultAcceptedResponseBody(&body)
+			if err != nil {
+				return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err)
+			}
+			res := NewTaskListResultTaskListStatusAccepted(&body)
+			res.Status = "pending"
+			return res, nil
+		case http.StatusOK:
+			var (
+				body TaskListResultOKResponseBody
+				err  error
+			)
+			err = decoder(resp).Decode(&body)
+			if err != nil {
+				return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err)
+			}
+			err = ValidateTaskListResultOKResponseBody(&body)
+			if err != nil {
+				return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err)
+			}
+			res := NewTaskListResultTaskListStatusOK(&body)
+			return res, nil
+		default:
+			body, _ := ioutil.ReadAll(resp.Body)
+			return nil, goahttp.ErrInvalidResponse("taskList", "TaskListResult", resp.StatusCode, string(body))
+		}
+	}
+}
+
+// unmarshalGroupStatusResponseBodyToTasklistGroupStatus builds a value of type
+// *tasklist.GroupStatus from a value of type *GroupStatusResponseBody.
+func unmarshalGroupStatusResponseBodyToTasklistGroupStatus(v *GroupStatusResponseBody) *tasklist.GroupStatus {
+	if v == nil {
+		return nil
+	}
+	res := &tasklist.GroupStatus{
+		ID:     v.ID,
+		Status: v.Status,
+	}
+	if v.Tasks != nil {
+		res.Tasks = make([]*tasklist.TaskStatus, len(v.Tasks))
+		for i, val := range v.Tasks {
+			res.Tasks[i] = unmarshalTaskStatusResponseBodyToTasklistTaskStatus(val)
+		}
+	}
+
+	return res
+}
+
+// unmarshalTaskStatusResponseBodyToTasklistTaskStatus builds a value of type
+// *tasklist.TaskStatus from a value of type *TaskStatusResponseBody.
+func unmarshalTaskStatusResponseBodyToTasklistTaskStatus(v *TaskStatusResponseBody) *tasklist.TaskStatus {
+	if v == nil {
+		return nil
+	}
+	res := &tasklist.TaskStatus{
+		ID:     v.ID,
+		Status: v.Status,
+	}
+
+	return res
+}
diff --git a/gen/http/task_list/client/paths.go b/gen/http/task_list/client/paths.go
index ce764600818ffe4a5a0df13ee8cdd75e3db92428..ffe9998cace94691d4b97e2d7c5c8debd708cc1e 100644
--- a/gen/http/task_list/client/paths.go
+++ b/gen/http/task_list/client/paths.go
@@ -15,3 +15,8 @@ import (
 func CreateTaskListPath(taskListName string) string {
 	return fmt.Sprintf("/v1/taskList/%v", taskListName)
 }
+
+// TaskListResultTaskListPath returns the URL path to the taskList service TaskListResult HTTP endpoint.
+func TaskListResultTaskListPath(taskListID string) string {
+	return fmt.Sprintf("/v1/taskListResult/%v", taskListID)
+}
diff --git a/gen/http/task_list/client/types.go b/gen/http/task_list/client/types.go
index 902273026c2e1b2237fc0b70252f96669b7e42c1..0aac928cea6267732c3a6ffb0cf3d481e38cdcfb 100644
--- a/gen/http/task_list/client/types.go
+++ b/gen/http/task_list/client/types.go
@@ -19,6 +19,68 @@ type CreateResponseBody struct {
 	TaskListID *string `form:"taskListID,omitempty" json:"taskListID,omitempty" xml:"taskListID,omitempty"`
 }
 
+// TaskListResultMultiStatusResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultMultiStatusResponseBody struct {
+	// Unique taskList identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the taskList
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// TaskListResultCreatedResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultCreatedResponseBody struct {
+	// Unique taskList identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the taskList
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// TaskListResultAcceptedResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultAcceptedResponseBody struct {
+	// Unique taskList identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the taskList
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// TaskListResultOKResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultOKResponseBody struct {
+	// Unique taskList identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the taskList
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// GroupStatusResponseBody is used to define fields on response body types.
+type GroupStatusResponseBody struct {
+	// Unique group identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the group
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Array of TaskStatus
+	Tasks []*TaskStatusResponseBody `form:"tasks,omitempty" json:"tasks,omitempty" xml:"tasks,omitempty"`
+}
+
+// TaskStatusResponseBody is used to define fields on response body types.
+type TaskStatusResponseBody struct {
+	// Unique task identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the task
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+}
+
 // NewCreateTaskListResultOK builds a "taskList" service "Create" endpoint
 // result from a HTTP "OK" response.
 func NewCreateTaskListResultOK(body *CreateResponseBody) *tasklist.CreateTaskListResult {
@@ -29,6 +91,74 @@ func NewCreateTaskListResultOK(body *CreateResponseBody) *tasklist.CreateTaskLis
 	return v
 }
 
+// NewTaskListResultTaskListStatusMultiStatus builds a "taskList" service
+// "TaskListResult" endpoint result from a HTTP "MultiStatus" response.
+func NewTaskListResultTaskListStatusMultiStatus(body *TaskListResultMultiStatusResponseBody) *tasklist.TaskListStatus {
+	v := &tasklist.TaskListStatus{
+		ID:     *body.ID,
+		Status: *body.Status,
+	}
+	if body.Groups != nil {
+		v.Groups = make([]*tasklist.GroupStatus, len(body.Groups))
+		for i, val := range body.Groups {
+			v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val)
+		}
+	}
+
+	return v
+}
+
+// NewTaskListResultTaskListStatusCreated builds a "taskList" service
+// "TaskListResult" endpoint result from a HTTP "Created" response.
+func NewTaskListResultTaskListStatusCreated(body *TaskListResultCreatedResponseBody) *tasklist.TaskListStatus {
+	v := &tasklist.TaskListStatus{
+		ID:     *body.ID,
+		Status: *body.Status,
+	}
+	if body.Groups != nil {
+		v.Groups = make([]*tasklist.GroupStatus, len(body.Groups))
+		for i, val := range body.Groups {
+			v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val)
+		}
+	}
+
+	return v
+}
+
+// NewTaskListResultTaskListStatusAccepted builds a "taskList" service
+// "TaskListResult" endpoint result from a HTTP "Accepted" response.
+func NewTaskListResultTaskListStatusAccepted(body *TaskListResultAcceptedResponseBody) *tasklist.TaskListStatus {
+	v := &tasklist.TaskListStatus{
+		ID:     *body.ID,
+		Status: *body.Status,
+	}
+	if body.Groups != nil {
+		v.Groups = make([]*tasklist.GroupStatus, len(body.Groups))
+		for i, val := range body.Groups {
+			v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val)
+		}
+	}
+
+	return v
+}
+
+// NewTaskListResultTaskListStatusOK builds a "taskList" service
+// "TaskListResult" endpoint result from a HTTP "OK" response.
+func NewTaskListResultTaskListStatusOK(body *TaskListResultOKResponseBody) *tasklist.TaskListStatus {
+	v := &tasklist.TaskListStatus{
+		ID:     *body.ID,
+		Status: *body.Status,
+	}
+	if body.Groups != nil {
+		v.Groups = make([]*tasklist.GroupStatus, len(body.Groups))
+		for i, val := range body.Groups {
+			v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val)
+		}
+	}
+
+	return v
+}
+
 // ValidateCreateResponseBody runs the validations defined on CreateResponseBody
 func ValidateCreateResponseBody(body *CreateResponseBody) (err error) {
 	if body.TaskListID == nil {
@@ -36,3 +166,51 @@ func ValidateCreateResponseBody(body *CreateResponseBody) (err error) {
 	}
 	return
 }
+
+// ValidateTaskListResultMultiStatusResponseBody runs the validations defined
+// on TaskListResultMulti-StatusResponseBody
+func ValidateTaskListResultMultiStatusResponseBody(body *TaskListResultMultiStatusResponseBody) (err error) {
+	if body.ID == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("id", "body"))
+	}
+	if body.Status == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("status", "body"))
+	}
+	return
+}
+
+// ValidateTaskListResultCreatedResponseBody runs the validations defined on
+// TaskListResultCreatedResponseBody
+func ValidateTaskListResultCreatedResponseBody(body *TaskListResultCreatedResponseBody) (err error) {
+	if body.ID == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("id", "body"))
+	}
+	if body.Status == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("status", "body"))
+	}
+	return
+}
+
+// ValidateTaskListResultAcceptedResponseBody runs the validations defined on
+// TaskListResultAcceptedResponseBody
+func ValidateTaskListResultAcceptedResponseBody(body *TaskListResultAcceptedResponseBody) (err error) {
+	if body.ID == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("id", "body"))
+	}
+	if body.Status == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("status", "body"))
+	}
+	return
+}
+
+// ValidateTaskListResultOKResponseBody runs the validations defined on
+// TaskListResultOKResponseBody
+func ValidateTaskListResultOKResponseBody(body *TaskListResultOKResponseBody) (err error) {
+	if body.ID == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("id", "body"))
+	}
+	if body.Status == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("status", "body"))
+	}
+	return
+}
diff --git a/gen/http/task_list/server/encode_decode.go b/gen/http/task_list/server/encode_decode.go
index be27fbb71c3e3e8a5cfc1859b3aabb3352be4fab..1766a79f08acf5abe52d05512c8746c6f98b2ec4 100644
--- a/gen/http/task_list/server/encode_decode.go
+++ b/gen/http/task_list/server/encode_decode.go
@@ -66,3 +66,83 @@ func DecodeCreateRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.
 		return payload, nil
 	}
 }
+
+// EncodeTaskListResultResponse returns an encoder for responses returned by
+// the taskList TaskListResult endpoint.
+func EncodeTaskListResultResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error {
+	return func(ctx context.Context, w http.ResponseWriter, v interface{}) error {
+		res, _ := v.(*tasklist.TaskListStatus)
+		if res.Status == "failed" {
+			enc := encoder(ctx, w)
+			body := NewTaskListResultMultiStatusResponseBody(res)
+			w.WriteHeader(http.StatusMultiStatus)
+			return enc.Encode(body)
+		}
+		if res.Status == "created" {
+			enc := encoder(ctx, w)
+			body := NewTaskListResultCreatedResponseBody(res)
+			w.WriteHeader(http.StatusCreated)
+			return enc.Encode(body)
+		}
+		if res.Status == "pending" {
+			enc := encoder(ctx, w)
+			body := NewTaskListResultAcceptedResponseBody(res)
+			w.WriteHeader(http.StatusAccepted)
+			return enc.Encode(body)
+		}
+		enc := encoder(ctx, w)
+		body := NewTaskListResultOKResponseBody(res)
+		w.WriteHeader(http.StatusOK)
+		return enc.Encode(body)
+	}
+}
+
+// DecodeTaskListResultRequest returns a decoder for requests sent to the
+// taskList TaskListResult endpoint.
+func DecodeTaskListResultRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error) {
+	return func(r *http.Request) (interface{}, error) {
+		var (
+			taskListID string
+
+			params = mux.Vars(r)
+		)
+		taskListID = params["taskListID"]
+		payload := NewTaskListResultRequest(taskListID)
+
+		return payload, nil
+	}
+}
+
+// marshalTasklistGroupStatusToGroupStatusResponseBody builds a value of type
+// *GroupStatusResponseBody from a value of type *tasklist.GroupStatus.
+func marshalTasklistGroupStatusToGroupStatusResponseBody(v *tasklist.GroupStatus) *GroupStatusResponseBody {
+	if v == nil {
+		return nil
+	}
+	res := &GroupStatusResponseBody{
+		ID:     v.ID,
+		Status: v.Status,
+	}
+	if v.Tasks != nil {
+		res.Tasks = make([]*TaskStatusResponseBody, len(v.Tasks))
+		for i, val := range v.Tasks {
+			res.Tasks[i] = marshalTasklistTaskStatusToTaskStatusResponseBody(val)
+		}
+	}
+
+	return res
+}
+
+// marshalTasklistTaskStatusToTaskStatusResponseBody builds a value of type
+// *TaskStatusResponseBody from a value of type *tasklist.TaskStatus.
+func marshalTasklistTaskStatusToTaskStatusResponseBody(v *tasklist.TaskStatus) *TaskStatusResponseBody {
+	if v == nil {
+		return nil
+	}
+	res := &TaskStatusResponseBody{
+		ID:     v.ID,
+		Status: v.Status,
+	}
+
+	return res
+}
diff --git a/gen/http/task_list/server/paths.go b/gen/http/task_list/server/paths.go
index 80662ac5bb501534cf2f22138127b98eb86bcece..d00af8a7ef452988e0e7caec0e51d8035b499b5f 100644
--- a/gen/http/task_list/server/paths.go
+++ b/gen/http/task_list/server/paths.go
@@ -15,3 +15,8 @@ import (
 func CreateTaskListPath(taskListName string) string {
 	return fmt.Sprintf("/v1/taskList/%v", taskListName)
 }
+
+// TaskListResultTaskListPath returns the URL path to the taskList service TaskListResult HTTP endpoint.
+func TaskListResultTaskListPath(taskListID string) string {
+	return fmt.Sprintf("/v1/taskListResult/%v", taskListID)
+}
diff --git a/gen/http/task_list/server/server.go b/gen/http/task_list/server/server.go
index 4d4d72dcec6b49130f5823ceb8148687eb4ccab0..0689f32a88bdad16b1000185e1998c02a1415558 100644
--- a/gen/http/task_list/server/server.go
+++ b/gen/http/task_list/server/server.go
@@ -18,8 +18,9 @@ import (
 
 // Server lists the taskList service endpoint HTTP handlers.
 type Server struct {
-	Mounts []*MountPoint
-	Create http.Handler
+	Mounts         []*MountPoint
+	Create         http.Handler
+	TaskListResult http.Handler
 }
 
 // ErrorNamer is an interface implemented by generated error structs that
@@ -56,8 +57,10 @@ func New(
 	return &Server{
 		Mounts: []*MountPoint{
 			{"Create", "POST", "/v1/taskList/{taskListName}"},
+			{"TaskListResult", "GET", "/v1/taskListResult/{taskListID}"},
 		},
-		Create: NewCreateHandler(e.Create, mux, decoder, encoder, errhandler, formatter),
+		Create:         NewCreateHandler(e.Create, mux, decoder, encoder, errhandler, formatter),
+		TaskListResult: NewTaskListResultHandler(e.TaskListResult, mux, decoder, encoder, errhandler, formatter),
 	}
 }
 
@@ -67,11 +70,13 @@ func (s *Server) Service() string { return "taskList" }
 // Use wraps the server handlers with the given middleware.
 func (s *Server) Use(m func(http.Handler) http.Handler) {
 	s.Create = m(s.Create)
+	s.TaskListResult = m(s.TaskListResult)
 }
 
 // Mount configures the mux to serve the taskList endpoints.
 func Mount(mux goahttp.Muxer, h *Server) {
 	MountCreateHandler(mux, h.Create)
+	MountTaskListResultHandler(mux, h.TaskListResult)
 }
 
 // Mount configures the mux to serve the taskList endpoints.
@@ -129,3 +134,54 @@ func NewCreateHandler(
 		}
 	})
 }
+
+// MountTaskListResultHandler configures the mux to serve the "taskList"
+// service "TaskListResult" endpoint.
+func MountTaskListResultHandler(mux goahttp.Muxer, h http.Handler) {
+	f, ok := h.(http.HandlerFunc)
+	if !ok {
+		f = func(w http.ResponseWriter, r *http.Request) {
+			h.ServeHTTP(w, r)
+		}
+	}
+	mux.Handle("GET", "/v1/taskListResult/{taskListID}", f)
+}
+
+// NewTaskListResultHandler creates a HTTP handler which loads the HTTP request
+// and calls the "taskList" service "TaskListResult" endpoint.
+func NewTaskListResultHandler(
+	endpoint goa.Endpoint,
+	mux goahttp.Muxer,
+	decoder func(*http.Request) goahttp.Decoder,
+	encoder func(context.Context, http.ResponseWriter) goahttp.Encoder,
+	errhandler func(context.Context, http.ResponseWriter, error),
+	formatter func(err error) goahttp.Statuser,
+) http.Handler {
+	var (
+		decodeRequest  = DecodeTaskListResultRequest(mux, decoder)
+		encodeResponse = EncodeTaskListResultResponse(encoder)
+		encodeError    = goahttp.ErrorEncoder(encoder, formatter)
+	)
+	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		ctx := context.WithValue(r.Context(), goahttp.AcceptTypeKey, r.Header.Get("Accept"))
+		ctx = context.WithValue(ctx, goa.MethodKey, "TaskListResult")
+		ctx = context.WithValue(ctx, goa.ServiceKey, "taskList")
+		payload, err := decodeRequest(r)
+		if err != nil {
+			if err := encodeError(ctx, w, err); err != nil {
+				errhandler(ctx, w, err)
+			}
+			return
+		}
+		res, err := endpoint(ctx, payload)
+		if err != nil {
+			if err := encodeError(ctx, w, err); err != nil {
+				errhandler(ctx, w, err)
+			}
+			return
+		}
+		if err := encodeResponse(ctx, w, res); err != nil {
+			errhandler(ctx, w, err)
+		}
+	})
+}
diff --git a/gen/http/task_list/server/types.go b/gen/http/task_list/server/types.go
index 879b0a1fa38948d6d92357413004176b75adea8c..3b4aefe5ac4ddb025a2762244e38266c3fba179c 100644
--- a/gen/http/task_list/server/types.go
+++ b/gen/http/task_list/server/types.go
@@ -18,6 +18,68 @@ type CreateResponseBody struct {
 	TaskListID string `form:"taskListID" json:"taskListID" xml:"taskListID"`
 }
 
+// TaskListResultMultiStatusResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultMultiStatusResponseBody struct {
+	// Unique taskList identifier.
+	ID string `form:"id" json:"id" xml:"id"`
+	// Current status of the taskList
+	Status string `form:"status" json:"status" xml:"status"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// TaskListResultCreatedResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultCreatedResponseBody struct {
+	// Unique taskList identifier.
+	ID string `form:"id" json:"id" xml:"id"`
+	// Current status of the taskList
+	Status string `form:"status" json:"status" xml:"status"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// TaskListResultAcceptedResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultAcceptedResponseBody struct {
+	// Unique taskList identifier.
+	ID string `form:"id" json:"id" xml:"id"`
+	// Current status of the taskList
+	Status string `form:"status" json:"status" xml:"status"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// TaskListResultOKResponseBody is the type of the "taskList" service
+// "TaskListResult" endpoint HTTP response body.
+type TaskListResultOKResponseBody struct {
+	// Unique taskList identifier.
+	ID string `form:"id" json:"id" xml:"id"`
+	// Current status of the taskList
+	Status string `form:"status" json:"status" xml:"status"`
+	// Array of GroupStatus
+	Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"`
+}
+
+// GroupStatusResponseBody is used to define fields on response body types.
+type GroupStatusResponseBody struct {
+	// Unique group identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the group
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Array of TaskStatus
+	Tasks []*TaskStatusResponseBody `form:"tasks,omitempty" json:"tasks,omitempty" xml:"tasks,omitempty"`
+}
+
+// TaskStatusResponseBody is used to define fields on response body types.
+type TaskStatusResponseBody struct {
+	// Unique task identifier.
+	ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"`
+	// Current status of the task
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+}
+
 // NewCreateResponseBody builds the HTTP response body from the result of the
 // "Create" endpoint of the "taskList" service.
 func NewCreateResponseBody(res *tasklist.CreateTaskListResult) *CreateResponseBody {
@@ -27,6 +89,70 @@ func NewCreateResponseBody(res *tasklist.CreateTaskListResult) *CreateResponseBo
 	return body
 }
 
+// NewTaskListResultMultiStatusResponseBody builds the HTTP response body from
+// the result of the "TaskListResult" endpoint of the "taskList" service.
+func NewTaskListResultMultiStatusResponseBody(res *tasklist.TaskListStatus) *TaskListResultMultiStatusResponseBody {
+	body := &TaskListResultMultiStatusResponseBody{
+		ID:     res.ID,
+		Status: res.Status,
+	}
+	if res.Groups != nil {
+		body.Groups = make([]*GroupStatusResponseBody, len(res.Groups))
+		for i, val := range res.Groups {
+			body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val)
+		}
+	}
+	return body
+}
+
+// NewTaskListResultCreatedResponseBody builds the HTTP response body from the
+// result of the "TaskListResult" endpoint of the "taskList" service.
+func NewTaskListResultCreatedResponseBody(res *tasklist.TaskListStatus) *TaskListResultCreatedResponseBody {
+	body := &TaskListResultCreatedResponseBody{
+		ID:     res.ID,
+		Status: res.Status,
+	}
+	if res.Groups != nil {
+		body.Groups = make([]*GroupStatusResponseBody, len(res.Groups))
+		for i, val := range res.Groups {
+			body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val)
+		}
+	}
+	return body
+}
+
+// NewTaskListResultAcceptedResponseBody builds the HTTP response body from the
+// result of the "TaskListResult" endpoint of the "taskList" service.
+func NewTaskListResultAcceptedResponseBody(res *tasklist.TaskListStatus) *TaskListResultAcceptedResponseBody {
+	body := &TaskListResultAcceptedResponseBody{
+		ID:     res.ID,
+		Status: res.Status,
+	}
+	if res.Groups != nil {
+		body.Groups = make([]*GroupStatusResponseBody, len(res.Groups))
+		for i, val := range res.Groups {
+			body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val)
+		}
+	}
+	return body
+}
+
+// NewTaskListResultOKResponseBody builds the HTTP response body from the
+// result of the "TaskListResult" endpoint of the "taskList" service.
+func NewTaskListResultOKResponseBody(res *tasklist.TaskListStatus) *TaskListResultOKResponseBody {
+	body := &TaskListResultOKResponseBody{
+		ID:     res.ID,
+		Status: res.Status,
+	}
+	if res.Groups != nil {
+		body.Groups = make([]*GroupStatusResponseBody, len(res.Groups))
+		for i, val := range res.Groups {
+			body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val)
+		}
+	}
+	return body
+}
+
 // NewCreateTaskListRequest builds a taskList service Create endpoint payload.
 func NewCreateTaskListRequest(body interface{}, taskListName string, cacheNamespace *string, cacheScope *string) *tasklist.CreateTaskListRequest {
 	v := body
@@ -39,3 +165,12 @@ func NewCreateTaskListRequest(body interface{}, taskListName string, cacheNamesp
 
 	return res
 }
+
+// NewTaskListResultRequest builds a taskList service TaskListResult endpoint
+// payload.
+func NewTaskListResultRequest(taskListID string) *tasklist.TaskListResultRequest {
+	v := &tasklist.TaskListResultRequest{}
+	v.TaskListID = taskListID
+
+	return v
+}
diff --git a/gen/task_list/client.go b/gen/task_list/client.go
index dcaf4ef0bdab346d90e25b0f4773756a72c10f42..72bb221fcd4488da8b6a33abd31996d26e399453 100644
--- a/gen/task_list/client.go
+++ b/gen/task_list/client.go
@@ -15,13 +15,15 @@ import (
 
 // Client is the "taskList" service client.
 type Client struct {
-	CreateEndpoint goa.Endpoint
+	CreateEndpoint         goa.Endpoint
+	TaskListResultEndpoint goa.Endpoint
 }
 
 // NewClient initializes a "taskList" service client given the endpoints.
-func NewClient(create goa.Endpoint) *Client {
+func NewClient(create, taskListResult goa.Endpoint) *Client {
 	return &Client{
-		CreateEndpoint: create,
+		CreateEndpoint:         create,
+		TaskListResultEndpoint: taskListResult,
 	}
 }
 
@@ -34,3 +36,13 @@ func (c *Client) Create(ctx context.Context, p *CreateTaskListRequest) (res *Cre
 	}
 	return ires.(*CreateTaskListResult), nil
 }
+
+// TaskListResult calls the "TaskListResult" endpoint of the "taskList" service.
+func (c *Client) TaskListResult(ctx context.Context, p *TaskListResultRequest) (res *TaskListStatus, err error) {
+	var ires interface{}
+	ires, err = c.TaskListResultEndpoint(ctx, p)
+	if err != nil {
+		return
+	}
+	return ires.(*TaskListStatus), nil
+}
diff --git a/gen/task_list/endpoints.go b/gen/task_list/endpoints.go
index 0a2bc0e4b32a0704d6cf429df56fd1c5823cf708..7af1fef229827f5d823f5848edbb4274dbd77e00 100644
--- a/gen/task_list/endpoints.go
+++ b/gen/task_list/endpoints.go
@@ -15,19 +15,22 @@ import (
 
 // Endpoints wraps the "taskList" service endpoints.
 type Endpoints struct {
-	Create goa.Endpoint
+	Create         goa.Endpoint
+	TaskListResult goa.Endpoint
 }
 
 // NewEndpoints wraps the methods of the "taskList" service with endpoints.
 func NewEndpoints(s Service) *Endpoints {
 	return &Endpoints{
-		Create: NewCreateEndpoint(s),
+		Create:         NewCreateEndpoint(s),
+		TaskListResult: NewTaskListResultEndpoint(s),
 	}
 }
 
 // Use applies the given middleware to all the "taskList" service endpoints.
 func (e *Endpoints) Use(m func(goa.Endpoint) goa.Endpoint) {
 	e.Create = m(e.Create)
+	e.TaskListResult = m(e.TaskListResult)
 }
 
 // NewCreateEndpoint returns an endpoint function that calls the method
@@ -38,3 +41,12 @@ func NewCreateEndpoint(s Service) goa.Endpoint {
 		return s.Create(ctx, p)
 	}
 }
+
+// NewTaskListResultEndpoint returns an endpoint function that calls the method
+// "TaskListResult" of service "taskList".
+func NewTaskListResultEndpoint(s Service) goa.Endpoint {
+	return func(ctx context.Context, req interface{}) (interface{}, error) {
+		p := req.(*TaskListResultRequest)
+		return s.TaskListResult(ctx, p)
+	}
+}
diff --git a/gen/task_list/service.go b/gen/task_list/service.go
index e7dbf3ae62c41719450b9ba97002b00c184f3fce..7d8d7f7d82c20b6578c598c6d55ccbcaf486319d 100644
--- a/gen/task_list/service.go
+++ b/gen/task_list/service.go
@@ -13,9 +13,12 @@ import (
 
 // TaskList service provides endpoints to work with task lists.
 type Service interface {
-	// Create a task list, corresponding groups and tasks and put them in
-	// respective queues for execution.
+	// Create a task list and corresponding tasks and put them in respective queues
+	// for execution.
 	Create(context.Context, *CreateTaskListRequest) (res *CreateTaskListResult, err error)
+	// TaskListResult retrieves a taskList result containing all tasks' unique IDs
+	// and statuses from the Cache service.
+	TaskListResult(context.Context, *TaskListResultRequest) (res *TaskListStatus, err error)
 }
 
 // ServiceName is the name of the service as defined in the design. This is the
@@ -26,7 +29,7 @@ const ServiceName = "taskList"
 // MethodNames lists the service method names as defined in the design. These
 // are the same values that are set in the endpoint request contexts under the
 // MethodKey key.
-var MethodNames = [1]string{"Create"}
+var MethodNames = [2]string{"Create", "TaskListResult"}
 
 // CreateTaskListRequest is the payload type of the taskList service Create
 // method.
@@ -47,3 +50,37 @@ type CreateTaskListResult struct {
 	// Unique taskList identifier.
 	TaskListID string
 }
+
+type GroupStatus struct {
+	// Unique group identifier.
+	ID *string
+	// Current status of the group
+	Status *string
+	// Array of TaskStatus
+	Tasks []*TaskStatus
+}
+
+// TaskListResultRequest is the payload type of the taskList service
+// TaskListResult method.
+type TaskListResultRequest struct {
+	// Unique taskList identifier.
+	TaskListID string
+}
+
+// TaskListStatus is the result type of the taskList service TaskListResult
+// method.
+type TaskListStatus struct {
+	// Unique taskList identifier.
+	ID string
+	// Current status of the taskList
+	Status string
+	// Array of GroupStatus
+	Groups []*GroupStatus
+}
+
+type TaskStatus struct {
+	// Unique task identifier.
+	ID *string
+	// Current status of the task
+	Status *string
+}