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 }