1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.run.v2; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/annotations.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/api/client.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 23*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/run/v2/condition.proto"; 24*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/run/v2/k8s.min.proto"; 25*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/run/v2/vendor_settings.proto"; 26*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto"; 27*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 28*d5c09012SAndroid Build Coastguard Workerimport "google/rpc/status.proto"; 29*d5c09012SAndroid Build Coastguard Worker 30*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/run/apiv2/runpb;runpb"; 31*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 32*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "TaskProto"; 33*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.run.v2"; 34*d5c09012SAndroid Build Coastguard Worker 35*d5c09012SAndroid Build Coastguard Worker// Cloud Run Task Control Plane API. 36*d5c09012SAndroid Build Coastguard Workerservice Tasks { 37*d5c09012SAndroid Build Coastguard Worker option (google.api.default_host) = "run.googleapis.com"; 38*d5c09012SAndroid Build Coastguard Worker option (google.api.oauth_scopes) = 39*d5c09012SAndroid Build Coastguard Worker "https://www.googleapis.com/auth/cloud-platform"; 40*d5c09012SAndroid Build Coastguard Worker 41*d5c09012SAndroid Build Coastguard Worker // Gets information about a Task. 42*d5c09012SAndroid Build Coastguard Worker rpc GetTask(GetTaskRequest) returns (Task) { 43*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 44*d5c09012SAndroid Build Coastguard Worker get: "/v2/{name=projects/*/locations/*/jobs/*/executions/*/tasks/*}" 45*d5c09012SAndroid Build Coastguard Worker }; 46*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name"; 47*d5c09012SAndroid Build Coastguard Worker } 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker // Lists Tasks from an Execution of a Job. 50*d5c09012SAndroid Build Coastguard Worker rpc ListTasks(ListTasksRequest) returns (ListTasksResponse) { 51*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 52*d5c09012SAndroid Build Coastguard Worker get: "/v2/{parent=projects/*/locations/*/jobs/*/executions/*}/tasks" 53*d5c09012SAndroid Build Coastguard Worker }; 54*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "parent"; 55*d5c09012SAndroid Build Coastguard Worker } 56*d5c09012SAndroid Build Coastguard Worker} 57*d5c09012SAndroid Build Coastguard Worker 58*d5c09012SAndroid Build Coastguard Worker// Request message for obtaining a Task by its full name. 59*d5c09012SAndroid Build Coastguard Workermessage GetTaskRequest { 60*d5c09012SAndroid Build Coastguard Worker // Required. The full name of the Task. 61*d5c09012SAndroid Build Coastguard Worker // Format: 62*d5c09012SAndroid Build Coastguard Worker // projects/{project}/locations/{location}/jobs/{job}/executions/{execution}/tasks/{task} 63*d5c09012SAndroid Build Coastguard Worker string name = 1 [ 64*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 65*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { type: "run.googleapis.com/Task" } 66*d5c09012SAndroid Build Coastguard Worker ]; 67*d5c09012SAndroid Build Coastguard Worker} 68*d5c09012SAndroid Build Coastguard Worker 69*d5c09012SAndroid Build Coastguard Worker// Request message for retrieving a list of Tasks. 70*d5c09012SAndroid Build Coastguard Workermessage ListTasksRequest { 71*d5c09012SAndroid Build Coastguard Worker // Required. The Execution from which the Tasks should be listed. 72*d5c09012SAndroid Build Coastguard Worker // To list all Tasks across Executions of a Job, use "-" instead of Execution 73*d5c09012SAndroid Build Coastguard Worker // name. To list all Tasks across Jobs, use "-" instead of Job name. Format: 74*d5c09012SAndroid Build Coastguard Worker // projects/{project}/locations/{location}/jobs/{job}/executions/{execution} 75*d5c09012SAndroid Build Coastguard Worker string parent = 1 [ 76*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 77*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { child_type: "run.googleapis.com/Task" } 78*d5c09012SAndroid Build Coastguard Worker ]; 79*d5c09012SAndroid Build Coastguard Worker 80*d5c09012SAndroid Build Coastguard Worker // Maximum number of Tasks to return in this call. 81*d5c09012SAndroid Build Coastguard Worker int32 page_size = 2; 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker // A page token received from a previous call to ListTasks. 84*d5c09012SAndroid Build Coastguard Worker // All other parameters must match. 85*d5c09012SAndroid Build Coastguard Worker string page_token = 3; 86*d5c09012SAndroid Build Coastguard Worker 87*d5c09012SAndroid Build Coastguard Worker // If true, returns deleted (but unexpired) resources along with active ones. 88*d5c09012SAndroid Build Coastguard Worker bool show_deleted = 4; 89*d5c09012SAndroid Build Coastguard Worker} 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker// Response message containing a list of Tasks. 92*d5c09012SAndroid Build Coastguard Workermessage ListTasksResponse { 93*d5c09012SAndroid Build Coastguard Worker // The resulting list of Tasks. 94*d5c09012SAndroid Build Coastguard Worker repeated Task tasks = 1; 95*d5c09012SAndroid Build Coastguard Worker 96*d5c09012SAndroid Build Coastguard Worker // A token indicating there are more items than page_size. Use it in the next 97*d5c09012SAndroid Build Coastguard Worker // ListTasks request to continue. 98*d5c09012SAndroid Build Coastguard Worker string next_page_token = 2; 99*d5c09012SAndroid Build Coastguard Worker} 100*d5c09012SAndroid Build Coastguard Worker 101*d5c09012SAndroid Build Coastguard Worker// Task represents a single run of a container to completion. 102*d5c09012SAndroid Build Coastguard Workermessage Task { 103*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 104*d5c09012SAndroid Build Coastguard Worker type: "run.googleapis.com/Task" 105*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/jobs/{job}/executions/{execution}/tasks/{task}" 106*d5c09012SAndroid Build Coastguard Worker style: DECLARATIVE_FRIENDLY 107*d5c09012SAndroid Build Coastguard Worker }; 108*d5c09012SAndroid Build Coastguard Worker 109*d5c09012SAndroid Build Coastguard Worker // Output only. The unique name of this Task. 110*d5c09012SAndroid Build Coastguard Worker string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 111*d5c09012SAndroid Build Coastguard Worker 112*d5c09012SAndroid Build Coastguard Worker // Output only. Server assigned unique identifier for the Task. The value is a 113*d5c09012SAndroid Build Coastguard Worker // UUID4 string and guaranteed to remain unchanged until the resource is 114*d5c09012SAndroid Build Coastguard Worker // deleted. 115*d5c09012SAndroid Build Coastguard Worker string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; 116*d5c09012SAndroid Build Coastguard Worker 117*d5c09012SAndroid Build Coastguard Worker // Output only. A number that monotonically increases every time the user 118*d5c09012SAndroid Build Coastguard Worker // modifies the desired state. 119*d5c09012SAndroid Build Coastguard Worker int64 generation = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; 120*d5c09012SAndroid Build Coastguard Worker 121*d5c09012SAndroid Build Coastguard Worker // Output only. Unstructured key value map that can be used to organize and 122*d5c09012SAndroid Build Coastguard Worker // categorize objects. User-provided labels are shared with Google's billing 123*d5c09012SAndroid Build Coastguard Worker // system, so they can be used to filter, or break down billing charges by 124*d5c09012SAndroid Build Coastguard Worker // team, component, environment, state, etc. For more information, visit 125*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/resource-manager/docs/creating-managing-labels or 126*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/run/docs/configuring/labels 127*d5c09012SAndroid Build Coastguard Worker map<string, string> labels = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; 128*d5c09012SAndroid Build Coastguard Worker 129*d5c09012SAndroid Build Coastguard Worker // Output only. Unstructured key value map that may 130*d5c09012SAndroid Build Coastguard Worker // be set by external tools to store and arbitrary metadata. 131*d5c09012SAndroid Build Coastguard Worker // They are not queryable and should be preserved 132*d5c09012SAndroid Build Coastguard Worker // when modifying objects. 133*d5c09012SAndroid Build Coastguard Worker map<string, string> annotations = 5 134*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 135*d5c09012SAndroid Build Coastguard Worker 136*d5c09012SAndroid Build Coastguard Worker // Output only. Represents time when the task was created by the system. 137*d5c09012SAndroid Build Coastguard Worker // It is not guaranteed to be set in happens-before order across separate 138*d5c09012SAndroid Build Coastguard Worker // operations. 139*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp create_time = 6 140*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 141*d5c09012SAndroid Build Coastguard Worker 142*d5c09012SAndroid Build Coastguard Worker // Output only. Represents time when the task was scheduled to run by the 143*d5c09012SAndroid Build Coastguard Worker // system. It is not guaranteed to be set in happens-before order across 144*d5c09012SAndroid Build Coastguard Worker // separate operations. 145*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp scheduled_time = 34 146*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 147*d5c09012SAndroid Build Coastguard Worker 148*d5c09012SAndroid Build Coastguard Worker // Output only. Represents time when the task started to run. 149*d5c09012SAndroid Build Coastguard Worker // It is not guaranteed to be set in happens-before order across separate 150*d5c09012SAndroid Build Coastguard Worker // operations. 151*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp start_time = 27 152*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 153*d5c09012SAndroid Build Coastguard Worker 154*d5c09012SAndroid Build Coastguard Worker // Output only. Represents time when the Task was completed. It is not 155*d5c09012SAndroid Build Coastguard Worker // guaranteed to be set in happens-before order across separate operations. 156*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp completion_time = 7 157*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 158*d5c09012SAndroid Build Coastguard Worker 159*d5c09012SAndroid Build Coastguard Worker // Output only. The last-modified time. 160*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp update_time = 8 161*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 162*d5c09012SAndroid Build Coastguard Worker 163*d5c09012SAndroid Build Coastguard Worker // Output only. For a deleted resource, the deletion time. It is only 164*d5c09012SAndroid Build Coastguard Worker // populated as a response to a Delete request. 165*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp delete_time = 9 166*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 167*d5c09012SAndroid Build Coastguard Worker 168*d5c09012SAndroid Build Coastguard Worker // Output only. For a deleted resource, the time after which it will be 169*d5c09012SAndroid Build Coastguard Worker // permamently deleted. It is only populated as a response to a Delete 170*d5c09012SAndroid Build Coastguard Worker // request. 171*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp expire_time = 10 172*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 173*d5c09012SAndroid Build Coastguard Worker 174*d5c09012SAndroid Build Coastguard Worker // Output only. The name of the parent Job. 175*d5c09012SAndroid Build Coastguard Worker string job = 12 [ 176*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = OUTPUT_ONLY, 177*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { type: "run.googleapis.com/Job" } 178*d5c09012SAndroid Build Coastguard Worker ]; 179*d5c09012SAndroid Build Coastguard Worker 180*d5c09012SAndroid Build Coastguard Worker // Output only. The name of the parent Execution. 181*d5c09012SAndroid Build Coastguard Worker string execution = 13 [ 182*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = OUTPUT_ONLY, 183*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { type: "run.googleapis.com/Execution" } 184*d5c09012SAndroid Build Coastguard Worker ]; 185*d5c09012SAndroid Build Coastguard Worker 186*d5c09012SAndroid Build Coastguard Worker // Holds the single container that defines the unit of execution for this 187*d5c09012SAndroid Build Coastguard Worker // task. 188*d5c09012SAndroid Build Coastguard Worker repeated Container containers = 14; 189*d5c09012SAndroid Build Coastguard Worker 190*d5c09012SAndroid Build Coastguard Worker // A list of Volumes to make available to containers. 191*d5c09012SAndroid Build Coastguard Worker repeated Volume volumes = 15; 192*d5c09012SAndroid Build Coastguard Worker 193*d5c09012SAndroid Build Coastguard Worker // Number of retries allowed per Task, before marking this Task failed. 194*d5c09012SAndroid Build Coastguard Worker int32 max_retries = 16; 195*d5c09012SAndroid Build Coastguard Worker 196*d5c09012SAndroid Build Coastguard Worker // Max allowed time duration the Task may be active before the system will 197*d5c09012SAndroid Build Coastguard Worker // actively try to mark it failed and kill associated containers. This applies 198*d5c09012SAndroid Build Coastguard Worker // per attempt of a task, meaning each retry can run for the full timeout. 199*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration timeout = 17; 200*d5c09012SAndroid Build Coastguard Worker 201*d5c09012SAndroid Build Coastguard Worker // Email address of the IAM service account associated with the Task of a 202*d5c09012SAndroid Build Coastguard Worker // Job. The service account represents the identity of the 203*d5c09012SAndroid Build Coastguard Worker // running task, and determines what permissions the task has. If 204*d5c09012SAndroid Build Coastguard Worker // not provided, the task will use the project's default service account. 205*d5c09012SAndroid Build Coastguard Worker string service_account = 18; 206*d5c09012SAndroid Build Coastguard Worker 207*d5c09012SAndroid Build Coastguard Worker // The execution environment being used to host this Task. 208*d5c09012SAndroid Build Coastguard Worker ExecutionEnvironment execution_environment = 20; 209*d5c09012SAndroid Build Coastguard Worker 210*d5c09012SAndroid Build Coastguard Worker // Output only. Indicates whether the resource's reconciliation is still in 211*d5c09012SAndroid Build Coastguard Worker // progress. See comments in `Job.reconciling` for additional information on 212*d5c09012SAndroid Build Coastguard Worker // reconciliation process in Cloud Run. 213*d5c09012SAndroid Build Coastguard Worker bool reconciling = 21 [(google.api.field_behavior) = OUTPUT_ONLY]; 214*d5c09012SAndroid Build Coastguard Worker 215*d5c09012SAndroid Build Coastguard Worker // Output only. The Condition of this Task, containing its readiness status, 216*d5c09012SAndroid Build Coastguard Worker // and detailed error information in case it did not reach the desired state. 217*d5c09012SAndroid Build Coastguard Worker repeated Condition conditions = 22 218*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 219*d5c09012SAndroid Build Coastguard Worker 220*d5c09012SAndroid Build Coastguard Worker // Output only. The generation of this Task. See comments in `Job.reconciling` 221*d5c09012SAndroid Build Coastguard Worker // for additional information on reconciliation process in Cloud Run. 222*d5c09012SAndroid Build Coastguard Worker int64 observed_generation = 23 [(google.api.field_behavior) = OUTPUT_ONLY]; 223*d5c09012SAndroid Build Coastguard Worker 224*d5c09012SAndroid Build Coastguard Worker // Output only. Index of the Task, unique per execution, and beginning at 0. 225*d5c09012SAndroid Build Coastguard Worker int32 index = 24 [(google.api.field_behavior) = OUTPUT_ONLY]; 226*d5c09012SAndroid Build Coastguard Worker 227*d5c09012SAndroid Build Coastguard Worker // Output only. The number of times this Task was retried. 228*d5c09012SAndroid Build Coastguard Worker // Tasks are retried when they fail up to the maxRetries limit. 229*d5c09012SAndroid Build Coastguard Worker int32 retried = 25 [(google.api.field_behavior) = OUTPUT_ONLY]; 230*d5c09012SAndroid Build Coastguard Worker 231*d5c09012SAndroid Build Coastguard Worker // Output only. Result of the last attempt of this Task. 232*d5c09012SAndroid Build Coastguard Worker TaskAttemptResult last_attempt_result = 26 233*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 234*d5c09012SAndroid Build Coastguard Worker 235*d5c09012SAndroid Build Coastguard Worker // Output only. A reference to a customer managed encryption key (CMEK) to use 236*d5c09012SAndroid Build Coastguard Worker // to encrypt this container image. For more information, go to 237*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/run/docs/securing/using-cmek 238*d5c09012SAndroid Build Coastguard Worker string encryption_key = 28 [ 239*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = OUTPUT_ONLY, 240*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 241*d5c09012SAndroid Build Coastguard Worker type: "cloudkms.googleapis.com/CryptoKey" 242*d5c09012SAndroid Build Coastguard Worker } 243*d5c09012SAndroid Build Coastguard Worker ]; 244*d5c09012SAndroid Build Coastguard Worker 245*d5c09012SAndroid Build Coastguard Worker // Output only. VPC Access configuration to use for this Task. For more 246*d5c09012SAndroid Build Coastguard Worker // information, visit 247*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/run/docs/configuring/connecting-vpc. 248*d5c09012SAndroid Build Coastguard Worker VpcAccess vpc_access = 29 [(google.api.field_behavior) = OUTPUT_ONLY]; 249*d5c09012SAndroid Build Coastguard Worker 250*d5c09012SAndroid Build Coastguard Worker // Output only. URI where logs for this execution can be found in Cloud 251*d5c09012SAndroid Build Coastguard Worker // Console. 252*d5c09012SAndroid Build Coastguard Worker string log_uri = 32 [(google.api.field_behavior) = OUTPUT_ONLY]; 253*d5c09012SAndroid Build Coastguard Worker 254*d5c09012SAndroid Build Coastguard Worker // Output only. Reserved for future use. 255*d5c09012SAndroid Build Coastguard Worker bool satisfies_pzs = 33 [(google.api.field_behavior) = OUTPUT_ONLY]; 256*d5c09012SAndroid Build Coastguard Worker 257*d5c09012SAndroid Build Coastguard Worker // Output only. A system-generated fingerprint for this version of the 258*d5c09012SAndroid Build Coastguard Worker // resource. May be used to detect modification conflict during updates. 259*d5c09012SAndroid Build Coastguard Worker string etag = 99 [(google.api.field_behavior) = OUTPUT_ONLY]; 260*d5c09012SAndroid Build Coastguard Worker} 261*d5c09012SAndroid Build Coastguard Worker 262*d5c09012SAndroid Build Coastguard Worker// Result of a task attempt. 263*d5c09012SAndroid Build Coastguard Workermessage TaskAttemptResult { 264*d5c09012SAndroid Build Coastguard Worker // Output only. The status of this attempt. 265*d5c09012SAndroid Build Coastguard Worker // If the status code is OK, then the attempt succeeded. 266*d5c09012SAndroid Build Coastguard Worker google.rpc.Status status = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 267*d5c09012SAndroid Build Coastguard Worker 268*d5c09012SAndroid Build Coastguard Worker // Output only. The exit code of this attempt. 269*d5c09012SAndroid Build Coastguard Worker // This may be unset if the container was unable to exit cleanly with a code 270*d5c09012SAndroid Build Coastguard Worker // due to some other failure. 271*d5c09012SAndroid Build Coastguard Worker // See status field for possible failure details. 272*d5c09012SAndroid Build Coastguard Worker int32 exit_code = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; 273*d5c09012SAndroid Build Coastguard Worker} 274