1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 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.scheduler.v1beta1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/scheduler/v1beta1/target.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto"; 23*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 24*d5c09012SAndroid Build Coastguard Workerimport "google/rpc/status.proto"; 25*d5c09012SAndroid Build Coastguard Worker 26*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/scheduler/apiv1beta1/schedulerpb;schedulerpb"; 27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "JobProto"; 29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.scheduler.v1beta1"; 30*d5c09012SAndroid Build Coastguard Worker 31*d5c09012SAndroid Build Coastguard Worker// Configuration for a job. 32*d5c09012SAndroid Build Coastguard Worker// The maximum allowed size for a job is 1MB. 33*d5c09012SAndroid Build Coastguard Workermessage Job { 34*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 35*d5c09012SAndroid Build Coastguard Worker type: "cloudscheduler.googleapis.com/Job" 36*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/jobs/{job}" 37*d5c09012SAndroid Build Coastguard Worker }; 38*d5c09012SAndroid Build Coastguard Worker 39*d5c09012SAndroid Build Coastguard Worker // State of the job. 40*d5c09012SAndroid Build Coastguard Worker enum State { 41*d5c09012SAndroid Build Coastguard Worker // Unspecified state. 42*d5c09012SAndroid Build Coastguard Worker STATE_UNSPECIFIED = 0; 43*d5c09012SAndroid Build Coastguard Worker 44*d5c09012SAndroid Build Coastguard Worker // The job is executing normally. 45*d5c09012SAndroid Build Coastguard Worker ENABLED = 1; 46*d5c09012SAndroid Build Coastguard Worker 47*d5c09012SAndroid Build Coastguard Worker // The job is paused by the user. It will not execute. A user can 48*d5c09012SAndroid Build Coastguard Worker // intentionally pause the job using 49*d5c09012SAndroid Build Coastguard Worker // [PauseJobRequest][google.cloud.scheduler.v1beta1.PauseJobRequest]. 50*d5c09012SAndroid Build Coastguard Worker PAUSED = 2; 51*d5c09012SAndroid Build Coastguard Worker 52*d5c09012SAndroid Build Coastguard Worker // The job is disabled by the system due to error. The user 53*d5c09012SAndroid Build Coastguard Worker // cannot directly set a job to be disabled. 54*d5c09012SAndroid Build Coastguard Worker DISABLED = 3; 55*d5c09012SAndroid Build Coastguard Worker 56*d5c09012SAndroid Build Coastguard Worker // The job state resulting from a failed 57*d5c09012SAndroid Build Coastguard Worker // [CloudScheduler.UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob] 58*d5c09012SAndroid Build Coastguard Worker // operation. To recover a job from this state, retry 59*d5c09012SAndroid Build Coastguard Worker // [CloudScheduler.UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob] 60*d5c09012SAndroid Build Coastguard Worker // until a successful response is received. 61*d5c09012SAndroid Build Coastguard Worker UPDATE_FAILED = 4; 62*d5c09012SAndroid Build Coastguard Worker } 63*d5c09012SAndroid Build Coastguard Worker 64*d5c09012SAndroid Build Coastguard Worker // Optionally caller-specified in 65*d5c09012SAndroid Build Coastguard Worker // [CreateJob][google.cloud.scheduler.v1beta1.CloudScheduler.CreateJob], after 66*d5c09012SAndroid Build Coastguard Worker // which it becomes output only. 67*d5c09012SAndroid Build Coastguard Worker // 68*d5c09012SAndroid Build Coastguard Worker // The job name. For example: 69*d5c09012SAndroid Build Coastguard Worker // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`. 70*d5c09012SAndroid Build Coastguard Worker // 71*d5c09012SAndroid Build Coastguard Worker // * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), 72*d5c09012SAndroid Build Coastguard Worker // hyphens (-), colons (:), or periods (.). 73*d5c09012SAndroid Build Coastguard Worker // For more information, see 74*d5c09012SAndroid Build Coastguard Worker // [Identifying 75*d5c09012SAndroid Build Coastguard Worker // projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) 76*d5c09012SAndroid Build Coastguard Worker // * `LOCATION_ID` is the canonical ID for the job's location. 77*d5c09012SAndroid Build Coastguard Worker // The list of available locations can be obtained by calling 78*d5c09012SAndroid Build Coastguard Worker // [ListLocations][google.cloud.location.Locations.ListLocations]. 79*d5c09012SAndroid Build Coastguard Worker // For more information, see https://cloud.google.com/about/locations/. 80*d5c09012SAndroid Build Coastguard Worker // * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), 81*d5c09012SAndroid Build Coastguard Worker // hyphens (-), or underscores (_). The maximum length is 500 characters. 82*d5c09012SAndroid Build Coastguard Worker string name = 1; 83*d5c09012SAndroid Build Coastguard Worker 84*d5c09012SAndroid Build Coastguard Worker // Optionally caller-specified in 85*d5c09012SAndroid Build Coastguard Worker // [CreateJob][google.cloud.scheduler.v1beta1.CloudScheduler.CreateJob] or 86*d5c09012SAndroid Build Coastguard Worker // [UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob]. 87*d5c09012SAndroid Build Coastguard Worker // 88*d5c09012SAndroid Build Coastguard Worker // A human-readable description for the job. This string must not contain 89*d5c09012SAndroid Build Coastguard Worker // more than 500 characters. 90*d5c09012SAndroid Build Coastguard Worker string description = 2; 91*d5c09012SAndroid Build Coastguard Worker 92*d5c09012SAndroid Build Coastguard Worker // Required. 93*d5c09012SAndroid Build Coastguard Worker // 94*d5c09012SAndroid Build Coastguard Worker // Delivery settings containing destination and parameters. 95*d5c09012SAndroid Build Coastguard Worker oneof target { 96*d5c09012SAndroid Build Coastguard Worker // Pub/Sub target. 97*d5c09012SAndroid Build Coastguard Worker PubsubTarget pubsub_target = 4; 98*d5c09012SAndroid Build Coastguard Worker 99*d5c09012SAndroid Build Coastguard Worker // App Engine HTTP target. 100*d5c09012SAndroid Build Coastguard Worker AppEngineHttpTarget app_engine_http_target = 5; 101*d5c09012SAndroid Build Coastguard Worker 102*d5c09012SAndroid Build Coastguard Worker // HTTP target. 103*d5c09012SAndroid Build Coastguard Worker HttpTarget http_target = 6; 104*d5c09012SAndroid Build Coastguard Worker } 105*d5c09012SAndroid Build Coastguard Worker 106*d5c09012SAndroid Build Coastguard Worker // Required, except when used with 107*d5c09012SAndroid Build Coastguard Worker // [UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob]. 108*d5c09012SAndroid Build Coastguard Worker // 109*d5c09012SAndroid Build Coastguard Worker // Describes the schedule on which the job will be executed. 110*d5c09012SAndroid Build Coastguard Worker // 111*d5c09012SAndroid Build Coastguard Worker // The schedule can be either of the following types: 112*d5c09012SAndroid Build Coastguard Worker // 113*d5c09012SAndroid Build Coastguard Worker // * [Crontab](https://en.wikipedia.org/wiki/Cron#Overview) 114*d5c09012SAndroid Build Coastguard Worker // * English-like 115*d5c09012SAndroid Build Coastguard Worker // [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) 116*d5c09012SAndroid Build Coastguard Worker // 117*d5c09012SAndroid Build Coastguard Worker // As a general rule, execution `n + 1` of a job will not begin 118*d5c09012SAndroid Build Coastguard Worker // until execution `n` has finished. Cloud Scheduler will never 119*d5c09012SAndroid Build Coastguard Worker // allow two simultaneously outstanding executions. For example, 120*d5c09012SAndroid Build Coastguard Worker // this implies that if the `n+1`th execution is scheduled to run at 121*d5c09012SAndroid Build Coastguard Worker // 16:00 but the `n`th execution takes until 16:15, the `n+1`th 122*d5c09012SAndroid Build Coastguard Worker // execution will not start until `16:15`. 123*d5c09012SAndroid Build Coastguard Worker // A scheduled start time will be delayed if the previous 124*d5c09012SAndroid Build Coastguard Worker // execution has not ended when its scheduled time occurs. 125*d5c09012SAndroid Build Coastguard Worker // 126*d5c09012SAndroid Build Coastguard Worker // If [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count] > 127*d5c09012SAndroid Build Coastguard Worker // 0 and a job attempt fails, the job will be tried a total of 128*d5c09012SAndroid Build Coastguard Worker // [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count] 129*d5c09012SAndroid Build Coastguard Worker // times, with exponential backoff, until the next scheduled start 130*d5c09012SAndroid Build Coastguard Worker // time. 131*d5c09012SAndroid Build Coastguard Worker string schedule = 20; 132*d5c09012SAndroid Build Coastguard Worker 133*d5c09012SAndroid Build Coastguard Worker // Specifies the time zone to be used in interpreting 134*d5c09012SAndroid Build Coastguard Worker // [schedule][google.cloud.scheduler.v1beta1.Job.schedule]. The value of this 135*d5c09012SAndroid Build Coastguard Worker // field must be a time zone name from the [tz 136*d5c09012SAndroid Build Coastguard Worker // database](http://en.wikipedia.org/wiki/Tz_database). 137*d5c09012SAndroid Build Coastguard Worker // 138*d5c09012SAndroid Build Coastguard Worker // Note that some time zones include a provision for 139*d5c09012SAndroid Build Coastguard Worker // daylight savings time. The rules for daylight saving time are 140*d5c09012SAndroid Build Coastguard Worker // determined by the chosen tz. For UTC use the string "utc". If a 141*d5c09012SAndroid Build Coastguard Worker // time zone is not specified, the default will be in UTC (also known 142*d5c09012SAndroid Build Coastguard Worker // as GMT). 143*d5c09012SAndroid Build Coastguard Worker string time_zone = 21; 144*d5c09012SAndroid Build Coastguard Worker 145*d5c09012SAndroid Build Coastguard Worker // Output only. The creation time of the job. 146*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp user_update_time = 9; 147*d5c09012SAndroid Build Coastguard Worker 148*d5c09012SAndroid Build Coastguard Worker // Output only. State of the job. 149*d5c09012SAndroid Build Coastguard Worker State state = 10; 150*d5c09012SAndroid Build Coastguard Worker 151*d5c09012SAndroid Build Coastguard Worker // Output only. The response from the target for the last attempted execution. 152*d5c09012SAndroid Build Coastguard Worker google.rpc.Status status = 11; 153*d5c09012SAndroid Build Coastguard Worker 154*d5c09012SAndroid Build Coastguard Worker // Output only. The next time the job is scheduled. Note that this may be a 155*d5c09012SAndroid Build Coastguard Worker // retry of a previously failed attempt or the next execution time 156*d5c09012SAndroid Build Coastguard Worker // according to the schedule. 157*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp schedule_time = 17; 158*d5c09012SAndroid Build Coastguard Worker 159*d5c09012SAndroid Build Coastguard Worker // Output only. The time the last job attempt started. 160*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp last_attempt_time = 18; 161*d5c09012SAndroid Build Coastguard Worker 162*d5c09012SAndroid Build Coastguard Worker // Settings that determine the retry behavior. 163*d5c09012SAndroid Build Coastguard Worker RetryConfig retry_config = 19; 164*d5c09012SAndroid Build Coastguard Worker 165*d5c09012SAndroid Build Coastguard Worker // The deadline for job attempts. If the request handler does not respond by 166*d5c09012SAndroid Build Coastguard Worker // this deadline then the request is cancelled and the attempt is marked as a 167*d5c09012SAndroid Build Coastguard Worker // `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in 168*d5c09012SAndroid Build Coastguard Worker // execution logs. Cloud Scheduler will retry the job according 169*d5c09012SAndroid Build Coastguard Worker // to the [RetryConfig][google.cloud.scheduler.v1beta1.RetryConfig]. 170*d5c09012SAndroid Build Coastguard Worker // 171*d5c09012SAndroid Build Coastguard Worker // The default and the allowed values depend on the type of target: 172*d5c09012SAndroid Build Coastguard Worker // 173*d5c09012SAndroid Build Coastguard Worker // * For [HTTP targets][google.cloud.scheduler.v1beta1.Job.http_target], the 174*d5c09012SAndroid Build Coastguard Worker // default is 3 minutes. The deadline must be in the interval [15 seconds, 30 175*d5c09012SAndroid Build Coastguard Worker // minutes]. 176*d5c09012SAndroid Build Coastguard Worker // 177*d5c09012SAndroid Build Coastguard Worker // * For [App Engine HTTP 178*d5c09012SAndroid Build Coastguard Worker // targets][google.cloud.scheduler.v1beta1.Job.app_engine_http_target], 0 179*d5c09012SAndroid Build Coastguard Worker // indicates that the request has the default deadline. The default deadline 180*d5c09012SAndroid Build Coastguard Worker // depends on the scaling type of the service: 10 minutes for standard apps 181*d5c09012SAndroid Build Coastguard Worker // with automatic scaling, 24 hours for standard apps with manual and basic 182*d5c09012SAndroid Build Coastguard Worker // scaling, and 60 minutes for flex apps. If the request deadline is set, it 183*d5c09012SAndroid Build Coastguard Worker // must be in the interval [15 seconds, 24 hours 15 seconds]. 184*d5c09012SAndroid Build Coastguard Worker // 185*d5c09012SAndroid Build Coastguard Worker // * For [Pub/Sub targets][google.cloud.scheduler.v1beta1.Job.pubsub_target], 186*d5c09012SAndroid Build Coastguard Worker // this field is ignored. 187*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration attempt_deadline = 22; 188*d5c09012SAndroid Build Coastguard Worker 189*d5c09012SAndroid Build Coastguard Worker // Immutable. This field is used to manage the legacy App Engine Cron jobs 190*d5c09012SAndroid Build Coastguard Worker // using the Cloud Scheduler API. If the field is set to true, the job will be 191*d5c09012SAndroid Build Coastguard Worker // considered a legacy job. Note that App Engine Cron jobs have fewer 192*d5c09012SAndroid Build Coastguard Worker // features than Cloud Scheduler jobs, e.g., are only limited to App Engine 193*d5c09012SAndroid Build Coastguard Worker // targets. 194*d5c09012SAndroid Build Coastguard Worker bool legacy_app_engine_cron = 23 [(google.api.field_behavior) = IMMUTABLE]; 195*d5c09012SAndroid Build Coastguard Worker} 196*d5c09012SAndroid Build Coastguard Worker 197*d5c09012SAndroid Build Coastguard Worker// Settings that determine the retry behavior. 198*d5c09012SAndroid Build Coastguard Worker// 199*d5c09012SAndroid Build Coastguard Worker// By default, if a job does not complete successfully (meaning that 200*d5c09012SAndroid Build Coastguard Worker// an acknowledgement is not received from the handler, then it will be retried 201*d5c09012SAndroid Build Coastguard Worker// with exponential backoff according to the settings in 202*d5c09012SAndroid Build Coastguard Worker// [RetryConfig][google.cloud.scheduler.v1beta1.RetryConfig]. 203*d5c09012SAndroid Build Coastguard Workermessage RetryConfig { 204*d5c09012SAndroid Build Coastguard Worker // The number of attempts that the system will make to run a job using the 205*d5c09012SAndroid Build Coastguard Worker // exponential backoff procedure described by 206*d5c09012SAndroid Build Coastguard Worker // [max_doublings][google.cloud.scheduler.v1beta1.RetryConfig.max_doublings]. 207*d5c09012SAndroid Build Coastguard Worker // 208*d5c09012SAndroid Build Coastguard Worker // The default value of retry_count is zero. 209*d5c09012SAndroid Build Coastguard Worker // 210*d5c09012SAndroid Build Coastguard Worker // If retry_count is zero, a job attempt will *not* be retried if 211*d5c09012SAndroid Build Coastguard Worker // it fails. Instead the Cloud Scheduler system will wait for the 212*d5c09012SAndroid Build Coastguard Worker // next scheduled execution time. 213*d5c09012SAndroid Build Coastguard Worker // 214*d5c09012SAndroid Build Coastguard Worker // If retry_count is set to a non-zero number then Cloud Scheduler 215*d5c09012SAndroid Build Coastguard Worker // will retry failed attempts, using exponential backoff, 216*d5c09012SAndroid Build Coastguard Worker // retry_count times, or until the next scheduled execution time, 217*d5c09012SAndroid Build Coastguard Worker // whichever comes first. 218*d5c09012SAndroid Build Coastguard Worker // 219*d5c09012SAndroid Build Coastguard Worker // Values greater than 5 and negative values are not allowed. 220*d5c09012SAndroid Build Coastguard Worker int32 retry_count = 1; 221*d5c09012SAndroid Build Coastguard Worker 222*d5c09012SAndroid Build Coastguard Worker // The time limit for retrying a failed job, measured from time when an 223*d5c09012SAndroid Build Coastguard Worker // execution was first attempted. If specified with 224*d5c09012SAndroid Build Coastguard Worker // [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count], the 225*d5c09012SAndroid Build Coastguard Worker // job will be retried until both limits are reached. 226*d5c09012SAndroid Build Coastguard Worker // 227*d5c09012SAndroid Build Coastguard Worker // The default value for max_retry_duration is zero, which means retry 228*d5c09012SAndroid Build Coastguard Worker // duration is unlimited. 229*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration max_retry_duration = 2; 230*d5c09012SAndroid Build Coastguard Worker 231*d5c09012SAndroid Build Coastguard Worker // The minimum amount of time to wait before retrying a job after 232*d5c09012SAndroid Build Coastguard Worker // it fails. 233*d5c09012SAndroid Build Coastguard Worker // 234*d5c09012SAndroid Build Coastguard Worker // The default value of this field is 5 seconds. 235*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration min_backoff_duration = 3; 236*d5c09012SAndroid Build Coastguard Worker 237*d5c09012SAndroid Build Coastguard Worker // The maximum amount of time to wait before retrying a job after 238*d5c09012SAndroid Build Coastguard Worker // it fails. 239*d5c09012SAndroid Build Coastguard Worker // 240*d5c09012SAndroid Build Coastguard Worker // The default value of this field is 1 hour. 241*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration max_backoff_duration = 4; 242*d5c09012SAndroid Build Coastguard Worker 243*d5c09012SAndroid Build Coastguard Worker // The time between retries will double `max_doublings` times. 244*d5c09012SAndroid Build Coastguard Worker // 245*d5c09012SAndroid Build Coastguard Worker // A job's retry interval starts at 246*d5c09012SAndroid Build Coastguard Worker // [min_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.min_backoff_duration], 247*d5c09012SAndroid Build Coastguard Worker // then doubles `max_doublings` times, then increases linearly, and finally 248*d5c09012SAndroid Build Coastguard Worker // retries at intervals of 249*d5c09012SAndroid Build Coastguard Worker // [max_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.max_backoff_duration] 250*d5c09012SAndroid Build Coastguard Worker // up to [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count] 251*d5c09012SAndroid Build Coastguard Worker // times. 252*d5c09012SAndroid Build Coastguard Worker // 253*d5c09012SAndroid Build Coastguard Worker // For example, if 254*d5c09012SAndroid Build Coastguard Worker // [min_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.min_backoff_duration] 255*d5c09012SAndroid Build Coastguard Worker // is 10s, 256*d5c09012SAndroid Build Coastguard Worker // [max_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.max_backoff_duration] 257*d5c09012SAndroid Build Coastguard Worker // is 300s, and `max_doublings` is 3, then the a job will first be retried in 258*d5c09012SAndroid Build Coastguard Worker // 10s. The retry interval will double three times, and then increase linearly 259*d5c09012SAndroid Build Coastguard Worker // by 2^3 * 10s. Finally, the job will retry at intervals of 260*d5c09012SAndroid Build Coastguard Worker // [max_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.max_backoff_duration] 261*d5c09012SAndroid Build Coastguard Worker // until the job has been attempted 262*d5c09012SAndroid Build Coastguard Worker // [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count] 263*d5c09012SAndroid Build Coastguard Worker // times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 264*d5c09012SAndroid Build Coastguard Worker // 300s, 300s, .... 265*d5c09012SAndroid Build Coastguard Worker // 266*d5c09012SAndroid Build Coastguard Worker // The default value of this field is 5. 267*d5c09012SAndroid Build Coastguard Worker int32 max_doublings = 5; 268*d5c09012SAndroid Build Coastguard Worker} 269