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