diff --git a/cmd/task/main.go b/cmd/task/main.go
index 73bf5e8e6713977bc6141813c2c629eba7217634..23eaec99e7c4429bdbdd5bc17c94c870c7cd962f 100644
--- a/cmd/task/main.go
+++ b/cmd/task/main.go
@@ -124,7 +124,7 @@ func main() {
 	{
 		taskSvc = task.New(storage, storage, cache, logger)
 		taskListSvc = tasklist.New(storage, storage, cache, logger)
-		healthSvc = health.New()
+		healthSvc = health.New(Version)
 	}
 
 	// create endpoints
diff --git a/design/design.go b/design/design.go
index 5d00d67e622e655271d7c4e1bb42298d64077604..54fd8b3bf933cf1c9a81087d94f4f781757467b9 100644
--- a/design/design.go
+++ b/design/design.go
@@ -97,7 +97,7 @@ var _ = Service("health", func() {
 
 	Method("Liveness", func() {
 		Payload(Empty)
-		Result(Empty)
+		Result(HealthResponse)
 		HTTP(func() {
 			GET("/liveness")
 			Response(StatusOK)
@@ -106,7 +106,7 @@ var _ = Service("health", func() {
 
 	Method("Readiness", func() {
 		Payload(Empty)
-		Result(Empty)
+		Result(HealthResponse)
 		HTTP(func() {
 			GET("/readiness")
 			Response(StatusOK)
diff --git a/design/types.go b/design/types.go
index 963958847a65f58e0ee6773e3f452cfec2ada48d..f1b3e67675cd887d876e8a81c387c4d863cbbbbc 100644
--- a/design/types.go
+++ b/design/types.go
@@ -68,3 +68,10 @@ var TaskStatus = Type("TaskStatus", func() {
 		Example("done")
 	})
 })
+
+var HealthResponse = Type("HealthResponse", func() {
+	Field(1, "service", String, "Service name.")
+	Field(2, "status", String, "Status message.")
+	Field(3, "version", String, "Service runtime version.")
+	Required("service", "status", "version")
+})
diff --git a/gen/health/client.go b/gen/health/client.go
index e5d40d487bdf88af75dd2564b71b0f2a45f3a368..d3f0cbb4999fc14a21a76d981d63af1b20b4e6ae 100644
--- a/gen/health/client.go
+++ b/gen/health/client.go
@@ -28,13 +28,21 @@ func NewClient(liveness, readiness goa.Endpoint) *Client {
 }
 
 // Liveness calls the "Liveness" endpoint of the "health" service.
-func (c *Client) Liveness(ctx context.Context) (err error) {
-	_, err = c.LivenessEndpoint(ctx, nil)
-	return
+func (c *Client) Liveness(ctx context.Context) (res *HealthResponse, err error) {
+	var ires any
+	ires, err = c.LivenessEndpoint(ctx, nil)
+	if err != nil {
+		return
+	}
+	return ires.(*HealthResponse), nil
 }
 
 // Readiness calls the "Readiness" endpoint of the "health" service.
-func (c *Client) Readiness(ctx context.Context) (err error) {
-	_, err = c.ReadinessEndpoint(ctx, nil)
-	return
+func (c *Client) Readiness(ctx context.Context) (res *HealthResponse, err error) {
+	var ires any
+	ires, err = c.ReadinessEndpoint(ctx, nil)
+	if err != nil {
+		return
+	}
+	return ires.(*HealthResponse), nil
 }
diff --git a/gen/health/endpoints.go b/gen/health/endpoints.go
index 49c67a2e4bc2e31949d9e2631704b1561a94aaf7..c9c0f38effe0395ee3d865f57c54d52812eef2bf 100644
--- a/gen/health/endpoints.go
+++ b/gen/health/endpoints.go
@@ -37,7 +37,7 @@ func (e *Endpoints) Use(m func(goa.Endpoint) goa.Endpoint) {
 // "Liveness" of service "health".
 func NewLivenessEndpoint(s Service) goa.Endpoint {
 	return func(ctx context.Context, req any) (any, error) {
-		return nil, s.Liveness(ctx)
+		return s.Liveness(ctx)
 	}
 }
 
@@ -45,6 +45,6 @@ func NewLivenessEndpoint(s Service) goa.Endpoint {
 // "Readiness" of service "health".
 func NewReadinessEndpoint(s Service) goa.Endpoint {
 	return func(ctx context.Context, req any) (any, error) {
-		return nil, s.Readiness(ctx)
+		return s.Readiness(ctx)
 	}
 }
diff --git a/gen/health/service.go b/gen/health/service.go
index 555dd0d83fadb18ecc5ab14329b40b7c07f67ac9..a26aaaf724ea2abb8704effbfd74def7617e3fc9 100644
--- a/gen/health/service.go
+++ b/gen/health/service.go
@@ -14,9 +14,9 @@ import (
 // Health service provides health check endpoints.
 type Service interface {
 	// Liveness implements Liveness.
-	Liveness(context.Context) (err error)
+	Liveness(context.Context) (res *HealthResponse, err error)
 	// Readiness implements Readiness.
-	Readiness(context.Context) (err error)
+	Readiness(context.Context) (res *HealthResponse, err error)
 }
 
 // ServiceName is the name of the service as defined in the design. This is the
@@ -28,3 +28,13 @@ const ServiceName = "health"
 // are the same values that are set in the endpoint request contexts under the
 // MethodKey key.
 var MethodNames = [2]string{"Liveness", "Readiness"}
+
+// HealthResponse is the result type of the health service Liveness method.
+type HealthResponse struct {
+	// Service name.
+	Service string
+	// Status message.
+	Status string
+	// Service runtime version.
+	Version string
+}
diff --git a/gen/http/cli/task/cli.go b/gen/http/cli/task/cli.go
index a2fd6c7ddb780e98c504aac597cfd33824e82537..2e690bc4a909ebb7f175e69e02ff315ea5e94180 100644
--- a/gen/http/cli/task/cli.go
+++ b/gen/http/cli/task/cli.go
@@ -24,17 +24,17 @@ import (
 //
 //	command (subcommand1|subcommand2|...)
 func UsageCommands() string {
-	return `health (liveness|readiness)
-task (create|task-result)
+	return `task (create|task-result)
 task-list (create|task-list-status)
+health (liveness|readiness)
 `
 }
 
 // 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 "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" +
+	return os.Args[0] + ` task create --body "Dolores atque error ab." --task-name "Ipsam et est accusantium." --cache-namespace "Vel odio et doloribus est quod laborum." --cache-scope "Harum aut autem aliquam dolorem non soluta."` + "\n" +
+		os.Args[0] + ` task-list create --body "Deserunt dolor et autem quidem fugiat sint." --task-list-name "Rerum quod error est esse nisi." --cache-namespace "Quaerat ut fugit voluptatem dolores deserunt in." --cache-scope "Et officiis aut."` + "\n" +
+		os.Args[0] + ` health liveness` + "\n" +
 		""
 }
 
@@ -48,12 +48,6 @@ func ParseEndpoint(
 	restore bool,
 ) (goa.Endpoint, any, error) {
 	var (
-		healthFlags = flag.NewFlagSet("health", flag.ContinueOnError)
-
-		healthLivenessFlags = flag.NewFlagSet("liveness", flag.ExitOnError)
-
-		healthReadinessFlags = flag.NewFlagSet("readiness", flag.ExitOnError)
-
 		taskFlags = flag.NewFlagSet("task", flag.ContinueOnError)
 
 		taskCreateFlags              = flag.NewFlagSet("create", flag.ExitOnError)
@@ -75,11 +69,13 @@ func ParseEndpoint(
 
 		taskListTaskListStatusFlags          = flag.NewFlagSet("task-list-status", flag.ExitOnError)
 		taskListTaskListStatusTaskListIDFlag = taskListTaskListStatusFlags.String("task-list-id", "REQUIRED", "Unique taskList identifier.")
-	)
-	healthFlags.Usage = healthUsage
-	healthLivenessFlags.Usage = healthLivenessUsage
-	healthReadinessFlags.Usage = healthReadinessUsage
 
+		healthFlags = flag.NewFlagSet("health", flag.ContinueOnError)
+
+		healthLivenessFlags = flag.NewFlagSet("liveness", flag.ExitOnError)
+
+		healthReadinessFlags = flag.NewFlagSet("readiness", flag.ExitOnError)
+	)
 	taskFlags.Usage = taskUsage
 	taskCreateFlags.Usage = taskCreateUsage
 	taskTaskResultFlags.Usage = taskTaskResultUsage
@@ -88,6 +84,10 @@ func ParseEndpoint(
 	taskListCreateFlags.Usage = taskListCreateUsage
 	taskListTaskListStatusFlags.Usage = taskListTaskListStatusUsage
 
+	healthFlags.Usage = healthUsage
+	healthLivenessFlags.Usage = healthLivenessUsage
+	healthReadinessFlags.Usage = healthReadinessUsage
+
 	if err := flag.CommandLine.Parse(os.Args[1:]); err != nil {
 		return nil, nil, err
 	}
@@ -103,12 +103,12 @@ func ParseEndpoint(
 	{
 		svcn = flag.Arg(0)
 		switch svcn {
-		case "health":
-			svcf = healthFlags
 		case "task":
 			svcf = taskFlags
 		case "task-list":
 			svcf = taskListFlags
+		case "health":
+			svcf = healthFlags
 		default:
 			return nil, nil, fmt.Errorf("unknown service %q", svcn)
 		}
@@ -124,16 +124,6 @@ func ParseEndpoint(
 	{
 		epn = svcf.Arg(0)
 		switch svcn {
-		case "health":
-			switch epn {
-			case "liveness":
-				epf = healthLivenessFlags
-
-			case "readiness":
-				epf = healthReadinessFlags
-
-			}
-
 		case "task":
 			switch epn {
 			case "create":
@@ -154,6 +144,16 @@ func ParseEndpoint(
 
 			}
 
+		case "health":
+			switch epn {
+			case "liveness":
+				epf = healthLivenessFlags
+
+			case "readiness":
+				epf = healthReadinessFlags
+
+			}
+
 		}
 	}
 	if epf == nil {
@@ -174,16 +174,6 @@ func ParseEndpoint(
 	)
 	{
 		switch svcn {
-		case "health":
-			c := healthc.NewClient(scheme, host, doer, enc, dec, restore)
-			switch epn {
-			case "liveness":
-				endpoint = c.Liveness()
-				data = nil
-			case "readiness":
-				endpoint = c.Readiness()
-				data = nil
-			}
 		case "task":
 			c := taskc.NewClient(scheme, host, doer, enc, dec, restore)
 			switch epn {
@@ -204,6 +194,16 @@ func ParseEndpoint(
 				endpoint = c.TaskListStatus()
 				data, err = tasklistc.BuildTaskListStatusPayload(*taskListTaskListStatusTaskListIDFlag)
 			}
+		case "health":
+			c := healthc.NewClient(scheme, host, doer, enc, dec, restore)
+			switch epn {
+			case "liveness":
+				endpoint = c.Liveness()
+				data = nil
+			case "readiness":
+				endpoint = c.Readiness()
+				data = nil
+			}
 		}
 	}
 	if err != nil {
@@ -213,40 +213,6 @@ func ParseEndpoint(
 	return endpoint, data, nil
 }
 
-// healthUsage displays the usage of the health command and its subcommands.
-func healthUsage() {
-	fmt.Fprintf(os.Stderr, `Health service provides health check endpoints.
-Usage:
-    %[1]s [globalflags] health COMMAND [flags]
-
-COMMAND:
-    liveness: Liveness implements Liveness.
-    readiness: Readiness implements Readiness.
-
-Additional help:
-    %[1]s health COMMAND --help
-`, os.Args[0])
-}
-func healthLivenessUsage() {
-	fmt.Fprintf(os.Stderr, `%[1]s [flags] health liveness
-
-Liveness implements Liveness.
-
-Example:
-    %[1]s health liveness
-`, os.Args[0])
-}
-
-func healthReadinessUsage() {
-	fmt.Fprintf(os.Stderr, `%[1]s [flags] health readiness
-
-Readiness implements Readiness.
-
-Example:
-    %[1]s health readiness
-`, os.Args[0])
-}
-
 // taskUsage displays the usage of the task command and its subcommands.
 func taskUsage() {
 	fmt.Fprintf(os.Stderr, `Task service provides endpoints to work with tasks.
@@ -271,7 +237,7 @@ Create a task and put it in a queue for execution.
     -cache-scope STRING: 
 
 Example:
-    %[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."
+    %[1]s task create --body "Dolores atque error ab." --task-name "Ipsam et est accusantium." --cache-namespace "Vel odio et doloribus est quod laborum." --cache-scope "Harum aut autem aliquam dolorem non soluta."
 `, os.Args[0])
 }
 
@@ -282,7 +248,7 @@ TaskResult retrieves task result from the Cache service.
     -task-id STRING: Unique task identifier.
 
 Example:
-    %[1]s task task-result --task-id "Dolores atque error ab."
+    %[1]s task task-result --task-id "Dolorem illo officiis ipsa impedit harum et."
 `, os.Args[0])
 }
 
@@ -311,7 +277,7 @@ Create a task list and corresponding tasks and put them in respective queues for
     -cache-scope STRING: 
 
 Example:
-    %[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."
+    %[1]s task-list create --body "Deserunt dolor et autem quidem fugiat sint." --task-list-name "Rerum quod error est esse nisi." --cache-namespace "Quaerat ut fugit voluptatem dolores deserunt in." --cache-scope "Et officiis aut."
 `, os.Args[0])
 }
 
@@ -322,6 +288,40 @@ TaskListStatus retrieves a taskList status containing all tasks' unique IDs and
     -task-list-id STRING: Unique taskList identifier.
 
 Example:
-    %[1]s task-list task-list-status --task-list-id "Deserunt dolor et autem quidem fugiat sint."
+    %[1]s task-list task-list-status --task-list-id "Facilis distinctio asperiores ut architecto ducimus."
+`, os.Args[0])
+}
+
+// healthUsage displays the usage of the health command and its subcommands.
+func healthUsage() {
+	fmt.Fprintf(os.Stderr, `Health service provides health check endpoints.
+Usage:
+    %[1]s [globalflags] health COMMAND [flags]
+
+COMMAND:
+    liveness: Liveness implements Liveness.
+    readiness: Readiness implements Readiness.
+
+Additional help:
+    %[1]s health COMMAND --help
+`, os.Args[0])
+}
+func healthLivenessUsage() {
+	fmt.Fprintf(os.Stderr, `%[1]s [flags] health liveness
+
+Liveness implements Liveness.
+
+Example:
+    %[1]s health liveness
+`, os.Args[0])
+}
+
+func healthReadinessUsage() {
+	fmt.Fprintf(os.Stderr, `%[1]s [flags] health readiness
+
+Readiness implements Readiness.
+
+Example:
+    %[1]s health readiness
 `, os.Args[0])
 }
diff --git a/gen/http/health/client/encode_decode.go b/gen/http/health/client/encode_decode.go
index f5eb8fe40c54244dec2340c71cf04d43c56143e8..6e347570719469054fd25dfa3c2115bb47e4805c 100644
--- a/gen/http/health/client/encode_decode.go
+++ b/gen/http/health/client/encode_decode.go
@@ -51,7 +51,20 @@ func DecodeLivenessResponse(decoder func(*http.Response) goahttp.Decoder, restor
 		}
 		switch resp.StatusCode {
 		case http.StatusOK:
-			return nil, nil
+			var (
+				body LivenessResponseBody
+				err  error
+			)
+			err = decoder(resp).Decode(&body)
+			if err != nil {
+				return nil, goahttp.ErrDecodingError("health", "Liveness", err)
+			}
+			err = ValidateLivenessResponseBody(&body)
+			if err != nil {
+				return nil, goahttp.ErrValidationError("health", "Liveness", err)
+			}
+			res := NewLivenessHealthResponseOK(&body)
+			return res, nil
 		default:
 			body, _ := io.ReadAll(resp.Body)
 			return nil, goahttp.ErrInvalidResponse("health", "Liveness", resp.StatusCode, string(body))
@@ -93,7 +106,20 @@ func DecodeReadinessResponse(decoder func(*http.Response) goahttp.Decoder, resto
 		}
 		switch resp.StatusCode {
 		case http.StatusOK:
-			return nil, nil
+			var (
+				body ReadinessResponseBody
+				err  error
+			)
+			err = decoder(resp).Decode(&body)
+			if err != nil {
+				return nil, goahttp.ErrDecodingError("health", "Readiness", err)
+			}
+			err = ValidateReadinessResponseBody(&body)
+			if err != nil {
+				return nil, goahttp.ErrValidationError("health", "Readiness", err)
+			}
+			res := NewReadinessHealthResponseOK(&body)
+			return res, nil
 		default:
 			body, _ := io.ReadAll(resp.Body)
 			return nil, goahttp.ErrInvalidResponse("health", "Readiness", resp.StatusCode, string(body))
diff --git a/gen/http/health/client/types.go b/gen/http/health/client/types.go
index 4ae1cb152c9667d8949b207ab6573039c1d379f6..3cf662b8e8162a9f6c3f1a3fce8301fcdcec39ea 100644
--- a/gen/http/health/client/types.go
+++ b/gen/http/health/client/types.go
@@ -6,3 +6,84 @@
 // $ goa gen gitlab.eclipse.org/eclipse/xfsc/tsa/task/design
 
 package client
+
+import (
+	health "gitlab.eclipse.org/eclipse/xfsc/tsa/task/gen/health"
+	goa "goa.design/goa/v3/pkg"
+)
+
+// LivenessResponseBody is the type of the "health" service "Liveness" endpoint
+// HTTP response body.
+type LivenessResponseBody struct {
+	// Service name.
+	Service *string `form:"service,omitempty" json:"service,omitempty" xml:"service,omitempty"`
+	// Status message.
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Service runtime version.
+	Version *string `form:"version,omitempty" json:"version,omitempty" xml:"version,omitempty"`
+}
+
+// ReadinessResponseBody is the type of the "health" service "Readiness"
+// endpoint HTTP response body.
+type ReadinessResponseBody struct {
+	// Service name.
+	Service *string `form:"service,omitempty" json:"service,omitempty" xml:"service,omitempty"`
+	// Status message.
+	Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"`
+	// Service runtime version.
+	Version *string `form:"version,omitempty" json:"version,omitempty" xml:"version,omitempty"`
+}
+
+// NewLivenessHealthResponseOK builds a "health" service "Liveness" endpoint
+// result from a HTTP "OK" response.
+func NewLivenessHealthResponseOK(body *LivenessResponseBody) *health.HealthResponse {
+	v := &health.HealthResponse{
+		Service: *body.Service,
+		Status:  *body.Status,
+		Version: *body.Version,
+	}
+
+	return v
+}
+
+// NewReadinessHealthResponseOK builds a "health" service "Readiness" endpoint
+// result from a HTTP "OK" response.
+func NewReadinessHealthResponseOK(body *ReadinessResponseBody) *health.HealthResponse {
+	v := &health.HealthResponse{
+		Service: *body.Service,
+		Status:  *body.Status,
+		Version: *body.Version,
+	}
+
+	return v
+}
+
+// ValidateLivenessResponseBody runs the validations defined on
+// LivenessResponseBody
+func ValidateLivenessResponseBody(body *LivenessResponseBody) (err error) {
+	if body.Service == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("service", "body"))
+	}
+	if body.Status == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("status", "body"))
+	}
+	if body.Version == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("version", "body"))
+	}
+	return
+}
+
+// ValidateReadinessResponseBody runs the validations defined on
+// ReadinessResponseBody
+func ValidateReadinessResponseBody(body *ReadinessResponseBody) (err error) {
+	if body.Service == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("service", "body"))
+	}
+	if body.Status == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("status", "body"))
+	}
+	if body.Version == nil {
+		err = goa.MergeErrors(err, goa.MissingFieldError("version", "body"))
+	}
+	return
+}
diff --git a/gen/http/health/server/encode_decode.go b/gen/http/health/server/encode_decode.go
index e2ec9c619ce6ccd786ce943fc2e74520cc580958..4b5925c7ad903d2e0489fde464b6f924c0ac9138 100644
--- a/gen/http/health/server/encode_decode.go
+++ b/gen/http/health/server/encode_decode.go
@@ -11,6 +11,7 @@ import (
 	"context"
 	"net/http"
 
+	health "gitlab.eclipse.org/eclipse/xfsc/tsa/task/gen/health"
 	goahttp "goa.design/goa/v3/http"
 )
 
@@ -18,8 +19,11 @@ import (
 // health Liveness endpoint.
 func EncodeLivenessResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, any) error {
 	return func(ctx context.Context, w http.ResponseWriter, v any) error {
+		res, _ := v.(*health.HealthResponse)
+		enc := encoder(ctx, w)
+		body := NewLivenessResponseBody(res)
 		w.WriteHeader(http.StatusOK)
-		return nil
+		return enc.Encode(body)
 	}
 }
 
@@ -27,7 +31,10 @@ func EncodeLivenessResponse(encoder func(context.Context, http.ResponseWriter) g
 // health Readiness endpoint.
 func EncodeReadinessResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, any) error {
 	return func(ctx context.Context, w http.ResponseWriter, v any) error {
+		res, _ := v.(*health.HealthResponse)
+		enc := encoder(ctx, w)
+		body := NewReadinessResponseBody(res)
 		w.WriteHeader(http.StatusOK)
-		return nil
+		return enc.Encode(body)
 	}
 }
diff --git a/gen/http/health/server/types.go b/gen/http/health/server/types.go
index b7048527018977d4ebc63aa83433d0602043fefa..ead7be124d67536b2e086f7f0da773d0a9308605 100644
--- a/gen/http/health/server/types.go
+++ b/gen/http/health/server/types.go
@@ -6,3 +6,51 @@
 // $ goa gen gitlab.eclipse.org/eclipse/xfsc/tsa/task/design
 
 package server
+
+import (
+	health "gitlab.eclipse.org/eclipse/xfsc/tsa/task/gen/health"
+)
+
+// LivenessResponseBody is the type of the "health" service "Liveness" endpoint
+// HTTP response body.
+type LivenessResponseBody struct {
+	// Service name.
+	Service string `form:"service" json:"service" xml:"service"`
+	// Status message.
+	Status string `form:"status" json:"status" xml:"status"`
+	// Service runtime version.
+	Version string `form:"version" json:"version" xml:"version"`
+}
+
+// ReadinessResponseBody is the type of the "health" service "Readiness"
+// endpoint HTTP response body.
+type ReadinessResponseBody struct {
+	// Service name.
+	Service string `form:"service" json:"service" xml:"service"`
+	// Status message.
+	Status string `form:"status" json:"status" xml:"status"`
+	// Service runtime version.
+	Version string `form:"version" json:"version" xml:"version"`
+}
+
+// NewLivenessResponseBody builds the HTTP response body from the result of the
+// "Liveness" endpoint of the "health" service.
+func NewLivenessResponseBody(res *health.HealthResponse) *LivenessResponseBody {
+	body := &LivenessResponseBody{
+		Service: res.Service,
+		Status:  res.Status,
+		Version: res.Version,
+	}
+	return body
+}
+
+// NewReadinessResponseBody builds the HTTP response body from the result of
+// the "Readiness" endpoint of the "health" service.
+func NewReadinessResponseBody(res *health.HealthResponse) *ReadinessResponseBody {
+	body := &ReadinessResponseBody{
+		Service: res.Service,
+		Status:  res.Status,
+		Version: res.Version,
+	}
+	return body
+}
diff --git a/gen/http/openapi.json b/gen/http/openapi.json
index 601af302016673200a7a0a9579f49f0f789ffbf7..b2afb98d9c9efe9a427a2f24f71e83ec5822b3fb 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 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/taskListStatus/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListStatus taskList","description":"TaskListStatus retrieves a taskList status containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListStatus","parameters":[{"name":"taskListID","in":"path","description":"Unique taskList identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusOKResponseBody","required":["id","status"]}},"201":{"description":"Created response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusCreatedResponseBody","required":["id","status"]}},"202":{"description":"Accepted response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusAcceptedResponseBody","required":["id","status"]}},"207":{"description":"Multi-Status response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusMultiStatusResponseBody","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"]},"TaskListTaskListStatusAcceptedResponseBody":{"title":"TaskListTaskListStatusAcceptedResponseBody","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"]},"TaskListTaskListStatusCreatedResponseBody":{"title":"TaskListTaskListStatusCreatedResponseBody","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"]},"TaskListTaskListStatusMultiStatusResponseBody":{"title":"TaskListTaskListStatusMultiStatusResponseBody","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"]},"TaskListTaskListStatusOKResponseBody":{"title":"TaskListTaskListStatusOKResponseBody","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
+{"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.","schema":{"$ref":"#/definitions/HealthLivenessResponseBody","required":["service","status","version"]}}},"schemes":["http"]}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/HealthReadinessResponseBody","required":["service","status","version"]}}},"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/taskListStatus/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListStatus taskList","description":"TaskListStatus retrieves a taskList status containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListStatus","parameters":[{"name":"taskListID","in":"path","description":"Unique taskList identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusOKResponseBody","required":["id","status"]}},"201":{"description":"Created response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusCreatedResponseBody","required":["id","status"]}},"202":{"description":"Accepted response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusAcceptedResponseBody","required":["id","status"]}},"207":{"description":"Multi-Status response.","schema":{"$ref":"#/definitions/TaskListTaskListStatusMultiStatusResponseBody","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"}]}},"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"}]}},"HealthLivenessResponseBody":{"title":"HealthLivenessResponseBody","type":"object","properties":{"service":{"type":"string","description":"Service name.","example":"Eaque velit fugit ut eius sint earum."},"status":{"type":"string","description":"Status message.","example":"Doloremque earum aliquid ipsa."},"version":{"type":"string","description":"Service runtime version.","example":"Voluptas odit voluptate nobis nam quia quae."}},"example":{"service":"Maxime facilis.","status":"Laboriosam cumque.","version":"Earum laborum accusamus id nihil."},"required":["service","status","version"]},"HealthReadinessResponseBody":{"title":"HealthReadinessResponseBody","type":"object","properties":{"service":{"type":"string","description":"Service name.","example":"Est eveniet dolores."},"status":{"type":"string","description":"Status message.","example":"Omnis optio magni sunt aliquid et."},"version":{"type":"string","description":"Service runtime version.","example":"Dignissimos doloribus rerum occaecati quia ut."}},"example":{"service":"Error officiis dolor voluptatem vel.","status":"Nostrum distinctio et.","version":"Excepturi ratione et dolore aut fuga."},"required":["service","status","version"]},"TaskCreateResponseBody":{"title":"TaskCreateResponseBody","type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Excepturi non."}},"example":{"taskID":"Ut et est aut quae magnam."},"required":["taskID"]},"TaskListCreateResponseBody":{"title":"TaskListCreateResponseBody","type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Amet sapiente qui non."}},"example":{"taskListID":"Sint nulla."},"required":["taskListID"]},"TaskListTaskListStatusAcceptedResponseBody":{"title":"TaskListTaskListStatusAcceptedResponseBody","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":"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"]},"TaskListTaskListStatusCreatedResponseBody":{"title":"TaskListTaskListStatusCreatedResponseBody","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":"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"]},"TaskListTaskListStatusMultiStatusResponseBody":{"title":"TaskListTaskListStatusMultiStatusResponseBody","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":"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"]},"TaskListTaskListStatusOKResponseBody":{"title":"TaskListTaskListStatusOKResponseBody","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":"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 d2fa2439a75ae9edcdb95612911a3a7296928280..012dd2830769b92fbdf3e5e2936447ae87473407 100644
--- a/gen/http/openapi.yaml
+++ b/gen/http/openapi.yaml
@@ -22,6 +22,12 @@ paths:
             responses:
                 "200":
                     description: OK response.
+                    schema:
+                        $ref: '#/definitions/HealthLivenessResponseBody'
+                        required:
+                            - service
+                            - status
+                            - version
             schemes:
                 - http
     /readiness:
@@ -33,6 +39,12 @@ paths:
             responses:
                 "200":
                     description: OK response.
+                    schema:
+                        $ref: '#/definitions/HealthReadinessResponseBody'
+                        required:
+                            - service
+                            - status
+                            - version
             schemes:
                 - http
     /v1/task/{taskName}:
@@ -203,8 +215,6 @@ definitions:
                       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
@@ -213,6 +223,56 @@ definitions:
                   status: done
                 - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
                   status: done
+                - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
+                  status: done
+    HealthLivenessResponseBody:
+        title: HealthLivenessResponseBody
+        type: object
+        properties:
+            service:
+                type: string
+                description: Service name.
+                example: Eaque velit fugit ut eius sint earum.
+            status:
+                type: string
+                description: Status message.
+                example: Doloremque earum aliquid ipsa.
+            version:
+                type: string
+                description: Service runtime version.
+                example: Voluptas odit voluptate nobis nam quia quae.
+        example:
+            service: Maxime facilis.
+            status: Laboriosam cumque.
+            version: Earum laborum accusamus id nihil.
+        required:
+            - service
+            - status
+            - version
+    HealthReadinessResponseBody:
+        title: HealthReadinessResponseBody
+        type: object
+        properties:
+            service:
+                type: string
+                description: Service name.
+                example: Est eveniet dolores.
+            status:
+                type: string
+                description: Status message.
+                example: Omnis optio magni sunt aliquid et.
+            version:
+                type: string
+                description: Service runtime version.
+                example: Dignissimos doloribus rerum occaecati quia ut.
+        example:
+            service: Error officiis dolor voluptatem vel.
+            status: Nostrum distinctio et.
+            version: Excepturi ratione et dolore aut fuga.
+        required:
+            - service
+            - status
+            - version
     TaskCreateResponseBody:
         title: TaskCreateResponseBody
         type: object
@@ -220,9 +280,9 @@ definitions:
             taskID:
                 type: string
                 description: Unique task identifier.
-                example: Sit asperiores.
+                example: Excepturi non.
         example:
-            taskID: Iste suscipit exercitationem facilis distinctio asperiores ut.
+            taskID: Ut et est aut quae magnam.
         required:
             - taskID
     TaskListCreateResponseBody:
@@ -232,9 +292,9 @@ definitions:
             taskListID:
                 type: string
                 description: Unique taskList identifier.
-                example: Ducimus velit.
+                example: Amet sapiente qui non.
         example:
-            taskListID: Et occaecati placeat.
+            taskListID: Sint nulla.
         required:
             - taskListID
     TaskListTaskListStatusAcceptedResponseBody:
@@ -265,6 +325,24 @@ definitions:
                           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.
@@ -293,6 +371,15 @@ definitions:
                       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:
@@ -335,6 +422,15 @@ definitions:
                           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.
@@ -433,6 +529,15 @@ definitions:
                       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:
@@ -475,6 +580,15 @@ definitions:
                           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.
diff --git a/gen/http/openapi3.json b/gen/http/openapi3.json
index 8f5099289b24b762f05dc73a122416f2638d3d9e..981c04f6b711f4d6c73dde873cb3e96772b5fdc2 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":"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/taskListStatus/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListStatus taskList","description":"TaskListStatus retrieves a taskList status containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListStatus","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/TaskListStatusResponse"},"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/TaskListStatusResponse"},"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/TaskListStatusResponse"},"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/TaskListStatusResponse"},"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"}]}},"TaskListStatusResponse":{"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
+{"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.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"},"example":{"service":"Praesentium necessitatibus.","status":"Dolores reiciendis numquam ut.","version":"Ullam voluptas quos aut tempore."}}}}}}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"},"example":{"service":"Porro perspiciatis qui vitae totam eligendi officiis.","status":"Excepturi in ex ratione.","version":"Voluptatem iure qui facilis aut."}}}}}}},"/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":"A error quia esse."},"example":"Accusantium et rerum consectetur aut."},{"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":"Ea ea facilis molestias vitae repellat.","format":"binary"},"example":"Eligendi facilis."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskResult"},"example":{"taskID":"Laboriosam perspiciatis vitae numquam."}}}}}}},"/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":"Qui velit neque nihil itaque adipisci."},"example":"Dolores tempora sed accusamus."},{"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":"Facilis deserunt dolore animi nobis.","format":"binary"},"example":"Itaque tempore voluptatem."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskListResult"},"example":{"taskListID":"Aut voluptas possimus quia aliquam sit."}}}}}}},"/v1/taskListStatus/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListStatus taskList","description":"TaskListStatus retrieves a taskList status containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListStatus","parameters":[{"name":"taskListID","in":"path","description":"Unique taskList identifier.","required":true,"schema":{"type":"string","description":"Unique taskList identifier.","example":"Atque odio."},"example":"Optio consequatur eos animi cupiditate impedit harum."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatusResponse"},"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"}}}},"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatusResponse"},"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/TaskListStatusResponse"},"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"}}}},"207":{"description":"Multi-Status response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatusResponse"},"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"}}}}}}},"/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":"Corporis sint voluptatem sint."},"example":"Cum tempora veritatis."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","example":"Voluptatem recusandae ut qui ut eos.","format":"binary"},"example":"Debitis tempore voluptatem officiis est omnis a."}}}}}}},"components":{"schemas":{"CreateTaskListResult":{"type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Quam doloremque."}},"example":{"taskListID":"Suscipit aperiam quod alias numquam."},"required":["taskListID"]},"CreateTaskResult":{"type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Corrupti amet itaque a eius."}},"example":{"taskID":"Dolorem molestiae laborum quod ipsam perspiciatis culpa."},"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"},{"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"}]}},"HealthResponse":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","example":"Sed sed rem."},"status":{"type":"string","description":"Status message.","example":"Maxime id labore quisquam."},"version":{"type":"string","description":"Service runtime version.","example":"Quia facere consequuntur inventore."}},"example":{"service":"Corporis aut at et aut debitis.","status":"Reprehenderit et tenetur et nulla perspiciatis.","version":"Cupiditate qui."},"required":["service","status","version"]},"TaskListStatusResponse":{"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":{"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":"task","description":"Task service provides endpoints to work with tasks."},{"name":"taskList","description":"TaskList service provides endpoints to work with task lists."},{"name":"health","description":"Health service provides health check endpoints."}]}
\ No newline at end of file
diff --git a/gen/http/openapi3.yaml b/gen/http/openapi3.yaml
index 2f5208f4ebbb01c6ff73c255c61103ce373fb051..8dd5d6f76e76b18fa0d29598c726c59b1d36665a 100644
--- a/gen/http/openapi3.yaml
+++ b/gen/http/openapi3.yaml
@@ -16,6 +16,14 @@ paths:
             responses:
                 "200":
                     description: OK response.
+                    content:
+                        application/json:
+                            schema:
+                                $ref: '#/components/schemas/HealthResponse'
+                            example:
+                                service: Praesentium necessitatibus.
+                                status: Dolores reiciendis numquam ut.
+                                version: Ullam voluptas quos aut tempore.
     /readiness:
         get:
             tags:
@@ -25,6 +33,14 @@ paths:
             responses:
                 "200":
                     description: OK response.
+                    content:
+                        application/json:
+                            schema:
+                                $ref: '#/components/schemas/HealthResponse'
+                            example:
+                                service: Porro perspiciatis qui vitae totam eligendi officiis.
+                                status: Excepturi in ex ratione.
+                                version: Voluptatem iure qui facilis aut.
     /v1/task/{taskName}:
         post:
             tags:
@@ -40,8 +56,8 @@ paths:
                   schema:
                     type: string
                     description: Task name.
-                    example: Voluptas laudantium incidunt autem eaque.
-                  example: Fugit ut eius sint earum.
+                    example: A error quia esse.
+                  example: Accusantium et rerum consectetur aut.
                 - name: x-cache-namespace
                   in: header
                   description: Cache key namespace
@@ -68,9 +84,9 @@ paths:
                         schema:
                             type: string
                             description: Data contains JSON payload that will be used for task execution.
-                            example: Quos aut tempore enim porro.
+                            example: Ea ea facilis molestias vitae repellat.
                             format: binary
-                        example: Consequatur nulla praesentium totam.
+                        example: Eligendi facilis.
             responses:
                 "200":
                     description: OK response.
@@ -79,7 +95,7 @@ paths:
                             schema:
                                 $ref: '#/components/schemas/CreateTaskResult'
                             example:
-                                taskID: Harum aut autem aliquam dolorem non soluta.
+                                taskID: Laboriosam perspiciatis vitae numquam.
     /v1/taskList/{taskListName}:
         post:
             tags:
@@ -95,8 +111,8 @@ paths:
                   schema:
                     type: string
                     description: TaskList name.
-                    example: Earum laborum accusamus id nihil.
-                  example: Est eveniet dolores.
+                    example: Qui velit neque nihil itaque adipisci.
+                  example: Dolores tempora sed accusamus.
                 - name: x-cache-namespace
                   in: header
                   description: Cache key namespace
@@ -123,9 +139,9 @@ paths:
                         schema:
                             type: string
                             description: Data contains JSON payload that will be used for taskList execution.
-                            example: Excepturi non.
+                            example: Facilis deserunt dolore animi nobis.
                             format: binary
-                        example: Laboriosam cumque.
+                        example: Itaque tempore voluptatem.
             responses:
                 "200":
                     description: OK response.
@@ -134,7 +150,7 @@ paths:
                             schema:
                                 $ref: '#/components/schemas/CreateTaskListResult'
                             example:
-                                taskListID: Et officiis aut.
+                                taskListID: Aut voluptas possimus quia aliquam sit.
     /v1/taskListStatus/{taskListID}:
         get:
             tags:
@@ -150,8 +166,8 @@ paths:
                   schema:
                     type: string
                     description: Unique taskList identifier.
-                    example: Omnis optio magni sunt aliquid et.
-                  example: Dignissimos doloribus rerum occaecati quia ut.
+                    example: Atque odio.
+                  example: Optio consequatur eos animi cupiditate impedit harum.
             responses:
                 "200":
                     description: OK response.
@@ -179,6 +195,15 @@ paths:
                                           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":
@@ -235,24 +260,6 @@ paths:
                                           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":
@@ -290,15 +297,6 @@ paths:
                                           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}:
@@ -316,8 +314,8 @@ paths:
                   schema:
                     type: string
                     description: Unique task identifier.
-                    example: Doloremque earum aliquid ipsa.
-                  example: Voluptas odit voluptate nobis nam quia quae.
+                    example: Corporis sint voluptatem sint.
+                  example: Cum tempora veritatis.
             responses:
                 "200":
                     description: OK response.
@@ -325,9 +323,9 @@ paths:
                         application/json:
                             schema:
                                 type: string
-                                example: Voluptatem iure qui facilis aut.
+                                example: Voluptatem recusandae ut qui ut eos.
                                 format: binary
-                            example: Maxime facilis.
+                            example: Debitis tempore voluptatem officiis est omnis a.
 components:
     schemas:
         CreateTaskListResult:
@@ -336,9 +334,9 @@ components:
                 taskListID:
                     type: string
                     description: Unique taskList identifier.
-                    example: Ut et est aut quae magnam.
+                    example: Quam doloremque.
             example:
-                taskListID: Amet sapiente qui non.
+                taskListID: Suscipit aperiam quod alias numquam.
             required:
                 - taskListID
         CreateTaskResult:
@@ -347,9 +345,9 @@ components:
                 taskID:
                     type: string
                     description: Unique task identifier.
-                    example: Qui vitae.
+                    example: Corrupti amet itaque a eius.
             example:
-                taskID: Eligendi officiis repudiandae excepturi in ex ratione.
+                taskID: Dolorem molestiae laborum quod ipsam perspiciatis culpa.
             required:
                 - taskID
         GroupStatus:
@@ -375,6 +373,8 @@ components:
                           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
@@ -385,8 +385,29 @@ components:
                       status: done
                     - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
                       status: done
-                    - id: d16996cd-1977-42a9-90b2-b4548a35c1b4
-                      status: done
+        HealthResponse:
+            type: object
+            properties:
+                service:
+                    type: string
+                    description: Service name.
+                    example: Sed sed rem.
+                status:
+                    type: string
+                    description: Status message.
+                    example: Maxime id labore quisquam.
+                version:
+                    type: string
+                    description: Service runtime version.
+                    example: Quia facere consequuntur inventore.
+            example:
+                service: Corporis aut at et aut debitis.
+                status: Reprehenderit et tenetur et nulla perspiciatis.
+                version: Cupiditate qui.
+            required:
+                - service
+                - status
+                - version
         TaskListStatusResponse:
             type: object
             properties:
@@ -423,15 +444,6 @@ components:
                               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.
@@ -489,9 +501,9 @@ components:
                 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.
+    - 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 3d461d227ed70d78060725b6a1714cd9f37fa396..36ac3eb8f8cc13eb8d5d90eb35b732529cc1227d 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, "\"Vel odio et doloribus est quod laborum.\"")
+			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Dolores atque error ab.\"")
 		}
 	}
 	var taskName string
diff --git a/gen/http/task_list/client/cli.go b/gen/http/task_list/client/cli.go
index 624809c94e72f0b6ead966793e4a15d221fcbd60..220b54883b86d4fff2a38069d7796e9f6a2a6cae 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, "\"Quaerat ut fugit voluptatem dolores deserunt in.\"")
+			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Deserunt dolor et autem quidem fugiat sint.\"")
 		}
 	}
 	var taskListName string
diff --git a/internal/listexecutor/listexecutor.go b/internal/listexecutor/listexecutor.go
index 8bcb1b639596787130a6ce6186e441060a650faf..18d0b2a3cccc3b212e60fa7ea31adbf45d4b0ffe 100644
--- a/internal/listexecutor/listexecutor.go
+++ b/internal/listexecutor/listexecutor.go
@@ -198,6 +198,7 @@ func (l *ListExecutor) executeSequential(ctx context.Context, group *tasklist.Gr
 
 	req := group.Request
 	for _, task := range tasks {
+		task := task
 		taskState := goatasklist.TaskStatus{ID: &task.ID}
 
 		logger := l.logger.With(
diff --git a/internal/service/health/service.go b/internal/service/health/service.go
index ffa6d9af3d67b8681ce5464bc555ca38aa6b801e..822bd43712b022cc26562773663510574aa1083f 100644
--- a/internal/service/health/service.go
+++ b/internal/service/health/service.go
@@ -1,17 +1,31 @@
 package health
 
-import "context"
+import (
+	"context"
 
-type Service struct{}
+	"gitlab.eclipse.org/eclipse/xfsc/tsa/task/gen/health"
+)
 
-func New() *Service {
-	return &Service{}
+type Service struct {
+	version string
 }
 
-func (s *Service) Liveness(ctx context.Context) error {
-	return nil
+func New(version string) *Service {
+	return &Service{version: version}
 }
 
-func (s *Service) Readiness(ctx context.Context) error {
-	return nil
+func (s *Service) Liveness(_ context.Context) (*health.HealthResponse, error) {
+	return &health.HealthResponse{
+		Service: "task",
+		Status:  "up",
+		Version: s.version,
+	}, nil
+}
+
+func (s *Service) Readiness(_ context.Context) (*health.HealthResponse, error) {
+	return &health.HealthResponse{
+		Service: "task",
+		Status:  "up",
+		Version: s.version,
+	}, nil
 }