xref: /aosp_15_r20/external/googleapis/google/cloud/scheduler/v1/job.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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