aboutsummaryrefslogtreecommitdiff
path: root/google/cloud/scheduler
diff options
context:
space:
mode:
Diffstat (limited to 'google/cloud/scheduler')
-rw-r--r--google/cloud/scheduler/BUILD.bazel1
-rw-r--r--google/cloud/scheduler/artman_cloudscheduler_v1.yaml34
-rw-r--r--google/cloud/scheduler/artman_cloudscheduler_v1beta1.yaml34
-rw-r--r--google/cloud/scheduler/cloudscheduler_v1.yaml36
-rw-r--r--google/cloud/scheduler/cloudscheduler_v1beta1.yaml22
-rw-r--r--google/cloud/scheduler/v1/cloudscheduler.proto237
-rw-r--r--google/cloud/scheduler/v1/cloudscheduler_gapic.yaml259
-rw-r--r--google/cloud/scheduler/v1/job.proto220
-rw-r--r--google/cloud/scheduler/v1/target.proto291
-rw-r--r--google/cloud/scheduler/v1beta1/BUILD.bazel143
-rw-r--r--google/cloud/scheduler/v1beta1/cloudscheduler.proto237
-rw-r--r--google/cloud/scheduler/v1beta1/cloudscheduler_gapic.yaml258
-rw-r--r--google/cloud/scheduler/v1beta1/job.proto234
-rw-r--r--google/cloud/scheduler/v1beta1/target.proto348
14 files changed, 2354 insertions, 0 deletions
diff --git a/google/cloud/scheduler/BUILD.bazel b/google/cloud/scheduler/BUILD.bazel
new file mode 100644
index 000000000..1e5b8c2af
--- /dev/null
+++ b/google/cloud/scheduler/BUILD.bazel
@@ -0,0 +1 @@
+exports_files(glob(["*.yaml"])) \ No newline at end of file
diff --git a/google/cloud/scheduler/artman_cloudscheduler_v1.yaml b/google/cloud/scheduler/artman_cloudscheduler_v1.yaml
new file mode 100644
index 000000000..ab2c4fa10
--- /dev/null
+++ b/google/cloud/scheduler/artman_cloudscheduler_v1.yaml
@@ -0,0 +1,34 @@
+common:
+ api_name: cloudscheduler
+ api_version: v1
+ organization_name: google-cloud
+ proto_deps:
+ - name: google-common-protos
+ src_proto_paths:
+ - v1
+ service_yaml: cloudscheduler_v1.yaml
+ gapic_yaml: v1/cloudscheduler_gapic.yaml
+artifacts:
+- name: gapic_config
+ type: GAPIC_CONFIG
+- name: java_gapic
+ type: GAPIC
+ language: JAVA
+- name: python_gapic
+ type: GAPIC
+ language: PYTHON
+- name: nodejs_gapic
+ type: GAPIC
+ language: NODEJS
+- name: php_gapic
+ type: GAPIC
+ language: PHP
+- name: go_gapic
+ type: GAPIC
+ language: GO
+- name: ruby_gapic
+ type: GAPIC
+ language: RUBY
+- name: csharp_gapic
+ type: GAPIC
+ language: CSHARP
diff --git a/google/cloud/scheduler/artman_cloudscheduler_v1beta1.yaml b/google/cloud/scheduler/artman_cloudscheduler_v1beta1.yaml
new file mode 100644
index 000000000..44313ae1b
--- /dev/null
+++ b/google/cloud/scheduler/artman_cloudscheduler_v1beta1.yaml
@@ -0,0 +1,34 @@
+common:
+ api_name: cloudscheduler
+ api_version: v1beta1
+ organization_name: google-cloud
+ proto_deps:
+ - name: google-common-protos
+ src_proto_paths:
+ - v1beta1
+ service_yaml: cloudscheduler_v1beta1.yaml
+ gapic_yaml: v1beta1/cloudscheduler_gapic.yaml
+artifacts:
+- name: gapic_config
+ type: GAPIC_CONFIG
+- name: java_gapic
+ type: GAPIC
+ language: JAVA
+- name: python_gapic
+ type: GAPIC
+ language: PYTHON
+- name: nodejs_gapic
+ type: GAPIC
+ language: NODEJS
+- name: php_gapic
+ type: GAPIC
+ language: PHP
+- name: go_gapic
+ type: GAPIC
+ language: GO
+- name: ruby_gapic
+ type: GAPIC
+ language: RUBY
+- name: csharp_gapic
+ type: GAPIC
+ language: CSHARP
diff --git a/google/cloud/scheduler/cloudscheduler_v1.yaml b/google/cloud/scheduler/cloudscheduler_v1.yaml
new file mode 100644
index 000000000..0ed2ecd80
--- /dev/null
+++ b/google/cloud/scheduler/cloudscheduler_v1.yaml
@@ -0,0 +1,36 @@
+type: google.api.Service
+config_version: 3
+name: cloudscheduler.googleapis.com
+title: Cloud Scheduler API
+
+apis:
+ - name: google.cloud.scheduler.v1.CloudScheduler
+
+documentation:
+ summary: Creates and manages jobs run on a regular recurring schedule.
+
+backend:
+ rules:
+ - selector: google.cloud.scheduler.v1.CloudScheduler.ListJobs
+ deadline: 30.0
+ - selector: google.cloud.scheduler.v1.CloudScheduler.GetJob
+ deadline: 30.0
+ - selector: google.cloud.scheduler.v1.CloudScheduler.CreateJob
+ deadline: 30.0
+ - selector: google.cloud.scheduler.v1.CloudScheduler.UpdateJob
+ deadline: 30.0
+ - selector: google.cloud.scheduler.v1.CloudScheduler.DeleteJob
+ deadline: 30.0
+ - selector: google.cloud.scheduler.v1.CloudScheduler.PauseJob
+ deadline: 30.0
+ - selector: google.cloud.scheduler.v1.CloudScheduler.ResumeJob
+ deadline: 30.0
+ - selector: google.cloud.scheduler.v1.CloudScheduler.RunJob
+ deadline: 30.0
+
+authentication:
+ rules:
+ - selector: '*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
diff --git a/google/cloud/scheduler/cloudscheduler_v1beta1.yaml b/google/cloud/scheduler/cloudscheduler_v1beta1.yaml
new file mode 100644
index 000000000..8b9fdadca
--- /dev/null
+++ b/google/cloud/scheduler/cloudscheduler_v1beta1.yaml
@@ -0,0 +1,22 @@
+type: google.api.Service
+config_version: 3
+name: cloudscheduler.googleapis.com
+title: Cloud Scheduler API
+
+apis:
+- name: google.cloud.scheduler.v1beta1.CloudScheduler
+
+documentation:
+ summary: Creates and manages jobs run on a regular recurring schedule.
+
+backend:
+ rules:
+ - selector: 'google.cloud.scheduler.v1beta1.CloudScheduler.*'
+ deadline: 30.0
+
+authentication:
+ rules:
+ - selector: 'google.cloud.scheduler.v1beta1.CloudScheduler.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
diff --git a/google/cloud/scheduler/v1/cloudscheduler.proto b/google/cloud/scheduler/v1/cloudscheduler.proto
new file mode 100644
index 000000000..d12027a72
--- /dev/null
+++ b/google/cloud/scheduler/v1/cloudscheduler.proto
@@ -0,0 +1,237 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.scheduler.v1;
+
+import "google/api/annotations.proto";
+import "google/cloud/scheduler/v1/job.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/scheduler/v1;scheduler";
+option java_multiple_files = true;
+option java_outer_classname = "SchedulerProto";
+option java_package = "com.google.cloud.scheduler.v1";
+option objc_class_prefix = "SCHEDULER";
+
+
+// The Cloud Scheduler API allows external entities to reliably
+// schedule asynchronous jobs.
+service CloudScheduler {
+ // Lists jobs.
+ rpc ListJobs(ListJobsRequest) returns (ListJobsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=projects/*/locations/*}/jobs"
+ };
+ }
+
+ // Gets a job.
+ rpc GetJob(GetJobRequest) returns (Job) {
+ option (google.api.http) = {
+ get: "/v1/{name=projects/*/locations/*/jobs/*}"
+ };
+ }
+
+ // Creates a job.
+ rpc CreateJob(CreateJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1/{parent=projects/*/locations/*}/jobs"
+ body: "job"
+ };
+ }
+
+ // Updates a job.
+ //
+ // If successful, the updated [Job][google.cloud.scheduler.v1.Job] is returned. If the job does
+ // not exist, `NOT_FOUND` is returned.
+ //
+ // If UpdateJob does not successfully return, it is possible for the
+ // job to be in an [Job.State.UPDATE_FAILED][google.cloud.scheduler.v1.Job.State.UPDATE_FAILED] state. A job in this state may
+ // not be executed. If this happens, retry the UpdateJob request
+ // until a successful response is received.
+ rpc UpdateJob(UpdateJobRequest) returns (Job) {
+ option (google.api.http) = {
+ patch: "/v1/{job.name=projects/*/locations/*/jobs/*}"
+ body: "job"
+ };
+ }
+
+ // Deletes a job.
+ rpc DeleteJob(DeleteJobRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v1/{name=projects/*/locations/*/jobs/*}"
+ };
+ }
+
+ // Pauses a job.
+ //
+ // If a job is paused then the system will stop executing the job
+ // until it is re-enabled via [ResumeJob][google.cloud.scheduler.v1.CloudScheduler.ResumeJob]. The
+ // state of the job is stored in [state][google.cloud.scheduler.v1.Job.state]; if paused it
+ // will be set to [Job.State.PAUSED][google.cloud.scheduler.v1.Job.State.PAUSED]. A job must be in [Job.State.ENABLED][google.cloud.scheduler.v1.Job.State.ENABLED]
+ // to be paused.
+ rpc PauseJob(PauseJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1/{name=projects/*/locations/*/jobs/*}:pause"
+ body: "*"
+ };
+ }
+
+ // Resume a job.
+ //
+ // This method reenables a job after it has been [Job.State.PAUSED][google.cloud.scheduler.v1.Job.State.PAUSED]. The
+ // state of a job is stored in [Job.state][google.cloud.scheduler.v1.Job.state]; after calling this method it
+ // will be set to [Job.State.ENABLED][google.cloud.scheduler.v1.Job.State.ENABLED]. A job must be in
+ // [Job.State.PAUSED][google.cloud.scheduler.v1.Job.State.PAUSED] to be resumed.
+ rpc ResumeJob(ResumeJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1/{name=projects/*/locations/*/jobs/*}:resume"
+ body: "*"
+ };
+ }
+
+ // Forces a job to run now.
+ //
+ // When this method is called, Cloud Scheduler will dispatch the job, even
+ // if the job is already running.
+ rpc RunJob(RunJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1/{name=projects/*/locations/*/jobs/*}:run"
+ body: "*"
+ };
+ }
+}
+
+// Request message for listing jobs using [ListJobs][google.cloud.scheduler.v1.CloudScheduler.ListJobs].
+message ListJobsRequest {
+ // Required.
+ //
+ // The location name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID`.
+ string parent = 1;
+
+ // Requested page size.
+ //
+ // The maximum page size is 500. If unspecified, the page size will
+ // be the maximum. Fewer jobs than requested might be returned,
+ // even if more jobs exist; use next_page_token to determine if more
+ // jobs exist.
+ int32 page_size = 5;
+
+ // A token identifying a page of results the server will return. To
+ // request the first page results, page_token must be empty. To
+ // request the next page of results, page_token must be the value of
+ // [next_page_token][google.cloud.scheduler.v1.ListJobsResponse.next_page_token] returned from
+ // the previous call to [ListJobs][google.cloud.scheduler.v1.CloudScheduler.ListJobs]. It is an error to
+ // switch the value of [filter][google.cloud.scheduler.v1.ListJobsRequest.filter] or
+ // [order_by][google.cloud.scheduler.v1.ListJobsRequest.order_by] while iterating through pages.
+ string page_token = 6;
+}
+
+// Response message for listing jobs using [ListJobs][google.cloud.scheduler.v1.CloudScheduler.ListJobs].
+message ListJobsResponse {
+ // The list of jobs.
+ repeated Job jobs = 1;
+
+ // A token to retrieve next page of results. Pass this value in the
+ // [page_token][google.cloud.scheduler.v1.ListJobsRequest.page_token] field in the subsequent call to
+ // [ListJobs][google.cloud.scheduler.v1.CloudScheduler.ListJobs] to retrieve the next page of results.
+ // If this is empty it indicates that there are no more results
+ // through which to paginate.
+ //
+ // The page token is valid for only 2 hours.
+ string next_page_token = 2;
+}
+
+// Request message for [GetJob][google.cloud.scheduler.v1.CloudScheduler.GetJob].
+message GetJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for [CreateJob][google.cloud.scheduler.v1.CloudScheduler.CreateJob].
+message CreateJobRequest {
+ // Required.
+ //
+ // The location name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID`.
+ string parent = 1;
+
+ // Required.
+ //
+ // The job to add. The user can optionally specify a name for the
+ // job in [name][google.cloud.scheduler.v1.Job.name]. [name][google.cloud.scheduler.v1.Job.name] cannot be the same as an
+ // existing job. If a name is not specified then the system will
+ // generate a random unique name that will be returned
+ // ([name][google.cloud.scheduler.v1.Job.name]) in the response.
+ Job job = 2;
+}
+
+// Request message for [UpdateJob][google.cloud.scheduler.v1.CloudScheduler.UpdateJob].
+message UpdateJobRequest {
+ // Required.
+ //
+ // The new job properties. [name][google.cloud.scheduler.v1.Job.name] must be specified.
+ //
+ // Output only fields cannot be modified using UpdateJob.
+ // Any value specified for an output only field will be ignored.
+ Job job = 1;
+
+ // A mask used to specify which fields of the job are being updated.
+ google.protobuf.FieldMask update_mask = 2;
+}
+
+// Request message for deleting a job using
+// [DeleteJob][google.cloud.scheduler.v1.CloudScheduler.DeleteJob].
+message DeleteJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for [PauseJob][google.cloud.scheduler.v1.CloudScheduler.PauseJob].
+message PauseJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for [ResumeJob][google.cloud.scheduler.v1.CloudScheduler.ResumeJob].
+message ResumeJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for forcing a job to run now using
+// [RunJob][google.cloud.scheduler.v1.CloudScheduler.RunJob].
+message RunJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
diff --git a/google/cloud/scheduler/v1/cloudscheduler_gapic.yaml b/google/cloud/scheduler/v1/cloudscheduler_gapic.yaml
new file mode 100644
index 000000000..51856eda4
--- /dev/null
+++ b/google/cloud/scheduler/v1/cloudscheduler_gapic.yaml
@@ -0,0 +1,259 @@
+type: com.google.api.codegen.ConfigProto
+config_schema_version: 1.0.0
+# The settings of generated code in a specific language.
+language_settings:
+ java:
+ package_name: com.google.cloud.scheduler.v1
+ python:
+ package_name: google.cloud.scheduler_v1.gapic
+ go:
+ package_name: cloud.google.com/go/scheduler/apiv1
+ csharp:
+ package_name: Google.Cloud.Scheduler.V1
+ ruby:
+ package_name: Google::Cloud::Scheduler::V1
+ php:
+ package_name: Google\Cloud\Scheduler\V1
+ nodejs:
+ package_name: scheduler.v1
+ domain_layer_location: google-cloud
+# A list of API interface configurations.
+interfaces:
+ # The fully qualified name of the API interface.
+- name: google.cloud.scheduler.v1.CloudScheduler
+ # A list of resource collection configurations.
+ # Consists of a name_pattern and an entity_name.
+ # The name_pattern is a pattern to describe the names of the resources of this
+ # collection, using the platform's conventions for URI patterns. A generator
+ # may use this to generate methods to compose and decompose such names. The
+ # pattern should use named placeholders as in `shelves/{shelf}/books/{book}`;
+ # those will be taken as hints for the parameter names of the generated
+ # methods. If empty, no name methods are generated.
+ # The entity_name is the name to be used as a basis for generated methods and
+ # classes.
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ language_overrides:
+ - language: csharp
+ common_resource_name: Google.Api.Gax.ResourceNames.ProjectName
+ - name_pattern: projects/{project}/locations/{location}
+ entity_name: location
+ - name_pattern: projects/{project}/locations/{location}/jobs/{job}
+ entity_name: job
+ # Definition for retryable codes.
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - DEADLINE_EXCEEDED
+ - UNAVAILABLE
+ - name: non_idempotent
+ retry_codes: []
+ # Definition for retry/backoff parameters.
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ # A list of method configurations.
+ # Common properties:
+ #
+ # name - The simple name of the method.
+ #
+ # flattening - Specifies the configuration for parameter flattening.
+ # Describes the parameter groups for which a generator should produce method
+ # overloads which allow a client to directly pass request message fields as
+ # method parameters. This information may or may not be used, depending on
+ # the target language.
+ # Consists of groups, which each represent a list of parameters to be
+ # flattened. Each parameter listed must be a field of the request message.
+ #
+ # required_fields - Fields that are always required for a request to be
+ # valid.
+ #
+ # resource_name_treatment - An enum that specifies how to treat the resource
+ # name formats defined in the field_name_patterns and
+ # response_field_name_patterns fields.
+ # UNSET: default value
+ # NONE: the collection configs will not be used by the generated code.
+ # VALIDATE: string fields will be validated by the client against the
+ # specified resource name formats.
+ # STATIC_TYPES: the client will use generated types for resource names.
+ #
+ # page_streaming - Specifies the configuration for paging.
+ # Describes information for generating a method which transforms a paging
+ # list RPC into a stream of resources.
+ # Consists of a request and a response.
+ # The request specifies request information of the list method. It defines
+ # which fields match the paging pattern in the request. The request consists
+ # of a page_size_field and a token_field. The page_size_field is the name of
+ # the optional field specifying the maximum number of elements to be
+ # returned in the response. The token_field is the name of the field in the
+ # request containing the page token.
+ # The response specifies response information of the list method. It defines
+ # which fields match the paging pattern in the response. The response
+ # consists of a token_field and a resources_field. The token_field is the
+ # name of the field in the response containing the next page token. The
+ # resources_field is the name of the field in the response containing the
+ # list of resources belonging to the page.
+ #
+ # retry_codes_name - Specifies the configuration for retryable codes. The
+ # name must be defined in interfaces.retry_codes_def.
+ #
+ # retry_params_name - Specifies the configuration for retry/backoff
+ # parameters. The name must be defined in interfaces.retry_params_def.
+ #
+ # field_name_patterns - Maps the field name of the request type to
+ # entity_name of interfaces.collections.
+ # Specifies the string pattern that the field must follow.
+ #
+ # timeout_millis - Specifies the default timeout for a non-retrying call. If
+ # the call is retrying, refer to retry_params_name instead.
+ methods:
+ - name: ListJobs
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: jobs
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: location
+ timeout_millis: 30000
+ - name: GetJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 30000
+ - name: CreateJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - job
+ required_fields:
+ - parent
+ - job
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: location
+ timeout_millis: 30000
+ - name: UpdateJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - job
+ - update_mask
+ required_fields:
+ - job
+ - update_mask
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ job.name: job
+ timeout_millis: 30000
+ - name: DeleteJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 30000
+ - name: PauseJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 30000
+ - name: ResumeJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 30000
+ - name: RunJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 30000
+resource_name_generation:
+- message_name: Job
+ field_entity_map:
+ name: job
+- message_name: ListJobsRequest
+ field_entity_map:
+ parent: location
+- message_name: GetJobRequest
+ field_entity_map:
+ name: job
+- message_name: CreateJobRequest
+ field_entity_map:
+ parent: location
+- message_name: UpdateJobRequest
+ field_entity_map:
+ job.name: job
+- message_name: DeleteJobRequest
+ field_entity_map:
+ name: job
+- message_name: PauseJobRequest
+ field_entity_map:
+ name: job
+- message_name: ResumeJobRequest
+ field_entity_map:
+ name: job
+- message_name: RunJobRequest
+ field_entity_map:
+ name: job
diff --git a/google/cloud/scheduler/v1/job.proto b/google/cloud/scheduler/v1/job.proto
new file mode 100644
index 000000000..8cf36c4d2
--- /dev/null
+++ b/google/cloud/scheduler/v1/job.proto
@@ -0,0 +1,220 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.scheduler.v1;
+
+import "google/api/annotations.proto";
+import "google/cloud/scheduler/v1/target.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+import "google/rpc/status.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/scheduler/v1;scheduler";
+option java_multiple_files = true;
+option java_outer_classname = "JobProto";
+option java_package = "com.google.cloud.scheduler.v1";
+
+
+// Configuration for a job.
+// The maximum allowed size for a job is 100KB.
+message Job {
+ // State of the job.
+ enum State {
+ // Unspecified state.
+ STATE_UNSPECIFIED = 0;
+
+ // The job is executing normally.
+ ENABLED = 1;
+
+ // The job is paused by the user. It will not execute. A user can
+ // intentionally pause the job using
+ // [PauseJobRequest][google.cloud.scheduler.v1.PauseJobRequest].
+ PAUSED = 2;
+
+ // The job is disabled by the system due to error. The user
+ // cannot directly set a job to be disabled.
+ DISABLED = 3;
+
+ // The job state resulting from a failed [CloudScheduler.UpdateJob][google.cloud.scheduler.v1.CloudScheduler.UpdateJob]
+ // operation. To recover a job from this state, retry
+ // [CloudScheduler.UpdateJob][google.cloud.scheduler.v1.CloudScheduler.UpdateJob] until a successful response is received.
+ UPDATE_FAILED = 4;
+ }
+
+ // Optionally caller-specified in [CreateJob][google.cloud.scheduler.v1.CloudScheduler.CreateJob], after
+ // which it becomes output only.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ //
+ // * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),
+ // hyphens (-), colons (:), or periods (.).
+ // For more information, see
+ // [Identifying
+ // projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects)
+ // * `LOCATION_ID` is the canonical ID for the job's location.
+ // The list of available locations can be obtained by calling
+ // [ListLocations][google.cloud.location.Locations.ListLocations].
+ // For more information, see https://cloud.google.com/about/locations/.
+ // * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]),
+ // hyphens (-), or underscores (_). The maximum length is 500 characters.
+ string name = 1;
+
+ // Optionally caller-specified in [CreateJob][google.cloud.scheduler.v1.CloudScheduler.CreateJob] or
+ // [UpdateJob][google.cloud.scheduler.v1.CloudScheduler.UpdateJob].
+ //
+ // A human-readable description for the job. This string must not contain
+ // more than 500 characters.
+ string description = 2;
+
+ // Required.
+ //
+ // Delivery settings containing destination and parameters.
+ oneof target {
+ // Pub/Sub target.
+ PubsubTarget pubsub_target = 4;
+
+ // App Engine HTTP target.
+ AppEngineHttpTarget app_engine_http_target = 5;
+
+ // HTTP target.
+ HttpTarget http_target = 6;
+ }
+
+ // Required, except when used with [UpdateJob][google.cloud.scheduler.v1.CloudScheduler.UpdateJob].
+ //
+ // Describes the schedule on which the job will be executed.
+ //
+ // The schedule can be either of the following types:
+ //
+ // * [Crontab](http://en.wikipedia.org/wiki/Cron#Overview)
+ // * English-like
+ // [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules)
+ //
+ // As a general rule, execution `n + 1` of a job will not begin
+ // until execution `n` has finished. Cloud Scheduler will never
+ // allow two simultaneously outstanding executions. For example,
+ // this implies that if the `n+1`th execution is scheduled to run at
+ // 16:00 but the `n`th execution takes until 16:15, the `n+1`th
+ // execution will not start until `16:15`.
+ // A scheduled start time will be delayed if the previous
+ // execution has not ended when its scheduled time occurs.
+ //
+ // If [retry_count][google.cloud.scheduler.v1.RetryConfig.retry_count] > 0 and a job attempt fails,
+ // the job will be tried a total of [retry_count][google.cloud.scheduler.v1.RetryConfig.retry_count]
+ // times, with exponential backoff, until the next scheduled start
+ // time.
+ string schedule = 20;
+
+ // Specifies the time zone to be used in interpreting
+ // [schedule][google.cloud.scheduler.v1.Job.schedule]. The value of this field must be a time
+ // zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database).
+ //
+ // Note that some time zones include a provision for
+ // daylight savings time. The rules for daylight saving time are
+ // determined by the chosen tz. For UTC use the string "utc". If a
+ // time zone is not specified, the default will be in UTC (also known
+ // as GMT).
+ string time_zone = 21;
+
+ // Output only. The creation time of the job.
+ google.protobuf.Timestamp user_update_time = 9;
+
+ // Output only. State of the job.
+ State state = 10;
+
+ // Output only. The response from the target for the last attempted execution.
+ google.rpc.Status status = 11;
+
+ // Output only. The next time the job is scheduled. Note that this may be a
+ // retry of a previously failed attempt or the next execution time
+ // according to the schedule.
+ google.protobuf.Timestamp schedule_time = 17;
+
+ // Output only. The time the last job attempt started.
+ google.protobuf.Timestamp last_attempt_time = 18;
+
+ // Settings that determine the retry behavior.
+ RetryConfig retry_config = 19;
+}
+
+// Settings that determine the retry behavior.
+//
+// By default, if a job does not complete successfully (meaning that
+// an acknowledgement is not received from the handler, then it will be retried
+// with exponential backoff according to the settings in [RetryConfig][google.cloud.scheduler.v1.RetryConfig].
+message RetryConfig {
+ // The number of attempts that the system will make to run a job using the
+ // exponential backoff procedure described by
+ // [max_doublings][google.cloud.scheduler.v1.RetryConfig.max_doublings].
+ //
+ // The default value of retry_count is zero.
+ //
+ // If retry_count is zero, a job attempt will *not* be retried if
+ // it fails. Instead the Cloud Scheduler system will wait for the
+ // next scheduled execution time.
+ //
+ // If retry_count is set to a non-zero number then Cloud Scheduler
+ // will retry failed attempts, using exponential backoff,
+ // retry_count times, or until the next scheduled execution time,
+ // whichever comes first.
+ //
+ // Values greater than 5 and negative values are not allowed.
+ int32 retry_count = 1;
+
+ // The time limit for retrying a failed job, measured from time when an
+ // execution was first attempted. If specified with
+ // [retry_count][google.cloud.scheduler.v1.RetryConfig.retry_count], the job will be retried until both
+ // limits are reached.
+ //
+ // The default value for max_retry_duration is zero, which means retry
+ // duration is unlimited.
+ google.protobuf.Duration max_retry_duration = 2;
+
+ // The minimum amount of time to wait before retrying a job after
+ // it fails.
+ //
+ // The default value of this field is 5 seconds.
+ google.protobuf.Duration min_backoff_duration = 3;
+
+ // The maximum amount of time to wait before retrying a job after
+ // it fails.
+ //
+ // The default value of this field is 1 hour.
+ google.protobuf.Duration max_backoff_duration = 4;
+
+ // The time between retries will double `max_doublings` times.
+ //
+ // A job's retry interval starts at
+ // [min_backoff_duration][google.cloud.scheduler.v1.RetryConfig.min_backoff_duration], then doubles
+ // `max_doublings` times, then increases linearly, and finally
+ // retries retries at intervals of
+ // [max_backoff_duration][google.cloud.scheduler.v1.RetryConfig.max_backoff_duration] up to
+ // [retry_count][google.cloud.scheduler.v1.RetryConfig.retry_count] times.
+ //
+ // For example, if [min_backoff_duration][google.cloud.scheduler.v1.RetryConfig.min_backoff_duration] is
+ // 10s, [max_backoff_duration][google.cloud.scheduler.v1.RetryConfig.max_backoff_duration] is 300s, and
+ // `max_doublings` is 3, then the a job will first be retried in 10s. The
+ // retry interval will double three times, and then increase linearly by
+ // 2^3 * 10s. Finally, the job will retry at intervals of
+ // [max_backoff_duration][google.cloud.scheduler.v1.RetryConfig.max_backoff_duration] until the job has
+ // been attempted [retry_count][google.cloud.scheduler.v1.RetryConfig.retry_count] times. Thus, the
+ // requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, ....
+ //
+ // The default value of this field is 5.
+ int32 max_doublings = 5;
+}
diff --git a/google/cloud/scheduler/v1/target.proto b/google/cloud/scheduler/v1/target.proto
new file mode 100644
index 000000000..56de3b737
--- /dev/null
+++ b/google/cloud/scheduler/v1/target.proto
@@ -0,0 +1,291 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.scheduler.v1;
+
+import "google/api/annotations.proto";
+import "google/protobuf/any.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/scheduler/v1;scheduler";
+option java_multiple_files = true;
+option java_outer_classname = "TargetProto";
+option java_package = "com.google.cloud.scheduler.v1";
+
+
+// Http target. The job will be pushed to the job handler by means of
+// an HTTP request via an [http_method][google.cloud.scheduler.v1.HttpTarget.http_method] such as HTTP
+// POST, HTTP GET, etc. The job is acknowledged by means of an HTTP
+// response code in the range [200 - 299]. A failure to receive a response
+// constitutes a failed execution. For a redirected request, the response
+// returned by the redirected request is considered.
+message HttpTarget {
+ // Required.
+ //
+ // The full URI path that the request will be sent to. This string
+ // must begin with either "http://" or "https://". Some examples of
+ // valid values for [uri][google.cloud.scheduler.v1.HttpTarget.uri] are:
+ // `http://acme.com` and `https://acme.com/sales:8080`. Cloud Scheduler will
+ // encode some characters for safety and compatibility. The maximum allowed
+ // URL length is 2083 characters after encoding.
+ string uri = 1;
+
+ // Which HTTP method to use for the request.
+ HttpMethod http_method = 2;
+
+ // The user can specify HTTP request headers to send with the job's
+ // HTTP request. This map contains the header field names and
+ // values. Repeated headers are not supported, but a header value can
+ // contain commas. These headers represent a subset of the headers
+ // that will accompany the job's HTTP request. Some HTTP request
+ // headers will be ignored or replaced. A partial list of headers that
+ // will be ignored or replaced is below:
+ // - Host: This will be computed by Cloud Scheduler and derived from
+ // [uri][google.cloud.scheduler.v1.HttpTarget.uri].
+ // * `Content-Length`: This will be computed by Cloud Scheduler.
+ // * `User-Agent`: This will be set to `"Google-Cloud-Scheduler"`.
+ // * `X-Google-*`: Google internal use only.
+ // * `X-AppEngine-*`: Google internal use only.
+ //
+ // The total size of headers must be less than 80KB.
+ map<string, string> headers = 3;
+
+ // HTTP request body. A request body is allowed only if the HTTP
+ // method is POST, PUT, or PATCH. It is an error to set body on a job with an
+ // incompatible [HttpMethod][google.cloud.scheduler.v1.HttpMethod].
+ bytes body = 4;
+}
+
+// App Engine target. The job will be pushed to a job handler by means
+// of an HTTP request via an [http_method][google.cloud.scheduler.v1.AppEngineHttpTarget.http_method] such
+// as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an
+// HTTP response code in the range [200 - 299]. Error 503 is
+// considered an App Engine system error instead of an application
+// error. Requests returning error 503 will be retried regardless of
+// retry configuration and not counted against retry counts. Any other
+// response code, or a failure to receive a response before the
+// deadline, constitutes a failed attempt.
+message AppEngineHttpTarget {
+ // The HTTP method to use for the request. PATCH and OPTIONS are not
+ // permitted.
+ HttpMethod http_method = 1;
+
+ // App Engine Routing setting for the job.
+ AppEngineRouting app_engine_routing = 2;
+
+ // The relative URI.
+ //
+ // The relative URL must begin with "/" and must be a valid HTTP relative URL.
+ // It can contain a path, query string arguments, and `#` fragments.
+ // If the relative URL is empty, then the root path "/" will be used.
+ // No spaces are allowed, and the maximum length allowed is 2083 characters.
+ string relative_uri = 3;
+
+ // HTTP request headers.
+ //
+ // This map contains the header field names and values. Headers can be set
+ // when the job is created.
+ //
+ // Cloud Scheduler sets some headers to default values:
+ //
+ // * `User-Agent`: By default, this header is
+ // `"AppEngine-Google; (+http://code.google.com/appengine)"`.
+ // This header can be modified, but Cloud Scheduler will append
+ // `"AppEngine-Google; (+http://code.google.com/appengine)"` to the
+ // modified `User-Agent`.
+ // * `X-CloudScheduler`: This header will be set to true.
+ //
+ // If the job has an [body][google.cloud.scheduler.v1.AppEngineHttpTarget.body], Cloud Scheduler sets
+ // the following headers:
+ //
+ // * `Content-Type`: By default, the `Content-Type` header is set to
+ // `"application/octet-stream"`. The default can be overridden by explictly
+ // setting `Content-Type` to a particular media type when the job is
+ // created.
+ // For example, `Content-Type` can be set to `"application/json"`.
+ // * `Content-Length`: This is computed by Cloud Scheduler. This value is
+ // output only. It cannot be changed.
+ //
+ // The headers below are output only. They cannot be set or overridden:
+ //
+ // * `X-Google-*`: For Google internal use only.
+ // * `X-AppEngine-*`: For Google internal use only.
+ //
+ // In addition, some App Engine headers, which contain
+ // job-specific information, are also be sent to the job handler.
+ map<string, string> headers = 4;
+
+ // Body.
+ //
+ // HTTP request body. A request body is allowed only if the HTTP method is
+ // POST or PUT. It will result in invalid argument error to set a body on a
+ // job with an incompatible [HttpMethod][google.cloud.scheduler.v1.HttpMethod].
+ bytes body = 5;
+}
+
+// Pub/Sub target. The job will be delivered by publishing a message to
+// the given Pub/Sub topic.
+message PubsubTarget {
+ // Required.
+ //
+ // The name of the Cloud Pub/Sub topic to which messages will
+ // be published when a job is delivered. The topic name must be in the
+ // same format as required by PubSub's
+ // [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest),
+ // for example `projects/PROJECT_ID/topics/TOPIC_ID`.
+ //
+ // The topic must be in the same project as the Cloud Scheduler job.
+ string topic_name = 1;
+
+ // The message payload for PubsubMessage.
+ //
+ // Pubsub message must contain either non-empty data, or at least one
+ // attribute.
+ bytes data = 3;
+
+ // Attributes for PubsubMessage.
+ //
+ // Pubsub message must contain either non-empty data, or at least one
+ // attribute.
+ map<string, string> attributes = 4;
+}
+
+// App Engine Routing.
+//
+// For more information about services, versions, and instances see
+// [An Overview of App
+// Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine),
+// [Microservices Architecture on Google App
+// Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine),
+// [App Engine Standard request
+// routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed),
+// and [App Engine Flex request
+// routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).
+message AppEngineRouting {
+ // App service.
+ //
+ // By default, the job is sent to the service which is the default
+ // service when the job is attempted.
+ string service = 1;
+
+ // App version.
+ //
+ // By default, the job is sent to the version which is the default
+ // version when the job is attempted.
+ string version = 2;
+
+ // App instance.
+ //
+ // By default, the job is sent to an instance which is available when
+ // the job is attempted.
+ //
+ // Requests can only be sent to a specific instance if
+ // [manual scaling is used in App Engine
+ // Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).
+ // App Engine Flex does not support instances. For more information, see
+ // [App Engine Standard request
+ // routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed)
+ // and [App Engine Flex request
+ // routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).
+ string instance = 3;
+
+ // Output only. The host that the job is sent to.
+ //
+ // For more information about how App Engine requests are routed, see
+ // [here](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed).
+ //
+ // The host is constructed as:
+ //
+ //
+ // * `host = [application_domain_name]`</br>
+ // `| [service] + '.' + [application_domain_name]`</br>
+ // `| [version] + '.' + [application_domain_name]`</br>
+ // `| [version_dot_service]+ '.' + [application_domain_name]`</br>
+ // `| [instance] + '.' + [application_domain_name]`</br>
+ // `| [instance_dot_service] + '.' + [application_domain_name]`</br>
+ // `| [instance_dot_version] + '.' + [application_domain_name]`</br>
+ // `| [instance_dot_version_dot_service] + '.' + [application_domain_name]`
+ //
+ // * `application_domain_name` = The domain name of the app, for
+ // example <app-id>.appspot.com, which is associated with the
+ // job's project ID.
+ //
+ // * `service =` [service][google.cloud.scheduler.v1.AppEngineRouting.service]
+ //
+ // * `version =` [version][google.cloud.scheduler.v1.AppEngineRouting.version]
+ //
+ // * `version_dot_service =`
+ // [version][google.cloud.scheduler.v1.AppEngineRouting.version] `+ '.' +`
+ // [service][google.cloud.scheduler.v1.AppEngineRouting.service]
+ //
+ // * `instance =` [instance][google.cloud.scheduler.v1.AppEngineRouting.instance]
+ //
+ // * `instance_dot_service =`
+ // [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] `+ '.' +`
+ // [service][google.cloud.scheduler.v1.AppEngineRouting.service]
+ //
+ // * `instance_dot_version =`
+ // [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] `+ '.' +`
+ // [version][google.cloud.scheduler.v1.AppEngineRouting.version]
+ //
+ // * `instance_dot_version_dot_service =`
+ // [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] `+ '.' +`
+ // [version][google.cloud.scheduler.v1.AppEngineRouting.version] `+ '.' +`
+ // [service][google.cloud.scheduler.v1.AppEngineRouting.service]
+ //
+ //
+ // If [service][google.cloud.scheduler.v1.AppEngineRouting.service] is empty, then the job will be sent
+ // to the service which is the default service when the job is attempted.
+ //
+ // If [version][google.cloud.scheduler.v1.AppEngineRouting.version] is empty, then the job will be sent
+ // to the version which is the default version when the job is attempted.
+ //
+ // If [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] is empty, then the job will be
+ // sent to an instance which is available when the job is attempted.
+ //
+ // If [service][google.cloud.scheduler.v1.AppEngineRouting.service],
+ // [version][google.cloud.scheduler.v1.AppEngineRouting.version], or
+ // [instance][google.cloud.scheduler.v1.AppEngineRouting.instance] is invalid, then the job will be sent
+ // to the default version of the default service when the job is attempted.
+ string host = 4;
+}
+
+// The HTTP method used to execute the job.
+enum HttpMethod {
+ // HTTP method unspecified. Defaults to POST.
+ HTTP_METHOD_UNSPECIFIED = 0;
+
+ // HTTP POST
+ POST = 1;
+
+ // HTTP GET
+ GET = 2;
+
+ // HTTP HEAD
+ HEAD = 3;
+
+ // HTTP PUT
+ PUT = 4;
+
+ // HTTP DELETE
+ DELETE = 5;
+
+ // HTTP PATCH
+ PATCH = 6;
+
+ // HTTP OPTIONS
+ OPTIONS = 7;
+}
diff --git a/google/cloud/scheduler/v1beta1/BUILD.bazel b/google/cloud/scheduler/v1beta1/BUILD.bazel
new file mode 100644
index 000000000..4a304bfae
--- /dev/null
+++ b/google/cloud/scheduler/v1beta1/BUILD.bazel
@@ -0,0 +1,143 @@
+# This is an API workspace, having public visibility by default makes perfect sense.
+package(default_visibility = ["//visibility:public"])
+
+##############################################################################
+# Common
+##############################################################################
+load("@com_google_api_codegen//rules_gapic:gapic.bzl", "proto_library_with_info")
+
+proto_library(
+ name = "scheduler_proto",
+ srcs = [
+ "cloudscheduler.proto",
+ "job.proto",
+ "target.proto",
+ ],
+ deps = [
+ "//google/api:annotations_proto",
+ "//google/rpc:status_proto",
+ "@com_google_protobuf//:any_proto",
+ "@com_google_protobuf//:duration_proto",
+ "@com_google_protobuf//:empty_proto",
+ "@com_google_protobuf//:field_mask_proto",
+ "@com_google_protobuf//:timestamp_proto",
+ ],
+)
+
+proto_library_with_info(
+ name = "scheduler_proto_with_info",
+ deps = [":scheduler_proto"],
+)
+
+##############################################################################
+# Java
+##############################################################################
+load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library")
+load(
+ "@com_google_api_codegen//rules_gapic/java:java_gapic.bzl",
+ "java_gapic_library",
+ "java_resource_name_proto_library",
+)
+load("@com_google_api_codegen//rules_gapic/java:java_gapic_pkg.bzl", "java_gapic_assembly_gradle_pkg")
+
+_JAVA_GRPC_DEPS = [
+ "@com_google_api_grpc_proto_google_common_protos//jar",
+]
+
+java_proto_library(
+ name = "scheduler_java_proto",
+ deps = [":scheduler_proto"],
+)
+
+java_grpc_library(
+ name = "scheduler_java_grpc",
+ srcs = [":scheduler_proto"],
+ deps = [":scheduler_java_proto"] + _JAVA_GRPC_DEPS,
+)
+
+java_resource_name_proto_library(
+ name = "scheduler_resource_name_java_proto",
+ gapic_yaml = "cloudscheduler_gapic.yaml",
+ deps = [":scheduler_proto"],
+)
+
+java_gapic_library(
+ name = "scheduler_java_gapic",
+ src = ":scheduler_proto_with_info",
+ gapic_yaml = "cloudscheduler_gapic.yaml",
+ service_yaml = "//google/cloud/scheduler:cloudscheduler_v1beta1.yaml",
+ test_deps = [":scheduler_java_grpc"],
+ deps = [
+ ":scheduler_java_proto",
+ "scheduler_resource_name_java_proto",
+ ] + _JAVA_GRPC_DEPS,
+)
+
+[java_test(
+ name = test_name,
+ test_class = test_name,
+ runtime_deps = [":scheduler_java_gapic_test"],
+) for test_name in [
+ "com.google.cloud.scheduler.v1beta1.CloudSchedulerClientTest",
+]]
+
+# Opensource Packages
+java_gapic_assembly_gradle_pkg(
+ name = "google-cloud-scheduler-v1beta1-java",
+ client_deps = [":scheduler_java_gapic"],
+ client_group = "com.google.cloud",
+ client_test_deps = [":scheduler_java_gapic_test"],
+ grpc_deps = [":scheduler_java_grpc"],
+ grpc_group = "com.google.api.grpc",
+ proto_deps = [
+ ":scheduler_java_proto",
+ ":scheduler_proto",
+ ] + _JAVA_GRPC_DEPS,
+ version = "0.0.0-SNAPSHOT",
+)
+
+##############################################################################
+# Go
+##############################################################################
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+load("@com_google_api_codegen//rules_gapic/go:go_gapic.bzl", "go_gapic_srcjar", "go_gapic_library")
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+load("@com_google_api_codegen//rules_gapic/go:go_gapic_pkg.bzl", "go_gapic_assembly_pkg")
+
+go_proto_library(
+ name = "scheduler_go_proto",
+ compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+ importpath = "google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1",
+ protos = [":scheduler_proto_with_info"],
+ deps = [
+ "//google/api:annotations_go_proto",
+ "//google/rpc:status_go_proto",
+ ],
+)
+
+go_gapic_library(
+ name = "scheduler_go_gapic",
+ src = ":scheduler_proto_with_info",
+ gapic_yaml = "cloudscheduler_gapic.yaml",
+ importpath = "cloud.google.com/go/scheduler/apiv1beta1",
+ service_yaml = "//google/cloud/scheduler:cloudscheduler_v1beta1.yaml",
+ deps = [":scheduler_go_proto"],
+)
+
+go_test(
+ name = "scheduler_go_gapic_test",
+ srcs = [":scheduler_go_gapic_srcjar_test"],
+ embed = [":scheduler_go_gapic"],
+ importpath = "cloud.google.com/go/scheduler/apiv1beta1",
+)
+
+# Opensource Packages
+go_gapic_assembly_pkg(
+ name = "gapi-cloud-scheduler-v1beta1-go",
+ deps = [
+ ":scheduler_go_gapic",
+ ":scheduler_go_gapic_srcjar-smoke-test.srcjar",
+ ":scheduler_go_gapic_srcjar-test.srcjar",
+ ":scheduler_go_proto",
+ ],
+)
diff --git a/google/cloud/scheduler/v1beta1/cloudscheduler.proto b/google/cloud/scheduler/v1beta1/cloudscheduler.proto
new file mode 100644
index 000000000..4c1d96618
--- /dev/null
+++ b/google/cloud/scheduler/v1beta1/cloudscheduler.proto
@@ -0,0 +1,237 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.scheduler.v1beta1;
+
+import "google/api/annotations.proto";
+import "google/api/resource.proto";
+import "google/cloud/scheduler/v1beta1/job.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1;scheduler";
+option java_multiple_files = true;
+option java_outer_classname = "SchedulerProto";
+option java_package = "com.google.cloud.scheduler.v1beta1";
+option objc_class_prefix = "SCHEDULER";
+
+// The Cloud Scheduler API allows external entities to reliably
+// schedule asynchronous jobs.
+service CloudScheduler {
+ // Lists jobs.
+ rpc ListJobs(ListJobsRequest) returns (ListJobsResponse) {
+ option (google.api.http) = {
+ get: "/v1beta1/{parent=projects/*/locations/*}/jobs"
+ };
+ }
+
+ // Gets a job.
+ rpc GetJob(GetJobRequest) returns (Job) {
+ option (google.api.http) = {
+ get: "/v1beta1/{name=projects/*/locations/*/jobs/*}"
+ };
+ }
+
+ // Creates a job.
+ rpc CreateJob(CreateJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1beta1/{parent=projects/*/locations/*}/jobs"
+ body: "job"
+ };
+ }
+
+ // Updates a job.
+ //
+ // If successful, the updated [Job][google.cloud.scheduler.v1beta1.Job] is returned. If the job does
+ // not exist, `NOT_FOUND` is returned.
+ //
+ // If UpdateJob does not successfully return, it is possible for the
+ // job to be in an [Job.State.UPDATE_FAILED][google.cloud.scheduler.v1beta1.Job.State.UPDATE_FAILED] state. A job in this state may
+ // not be executed. If this happens, retry the UpdateJob request
+ // until a successful response is received.
+ rpc UpdateJob(UpdateJobRequest) returns (Job) {
+ option (google.api.http) = {
+ patch: "/v1beta1/{job.name=projects/*/locations/*/jobs/*}"
+ body: "job"
+ };
+ }
+
+ // Deletes a job.
+ rpc DeleteJob(DeleteJobRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v1beta1/{name=projects/*/locations/*/jobs/*}"
+ };
+ }
+
+ // Pauses a job.
+ //
+ // If a job is paused then the system will stop executing the job
+ // until it is re-enabled via [ResumeJob][google.cloud.scheduler.v1beta1.CloudScheduler.ResumeJob]. The
+ // state of the job is stored in [state][google.cloud.scheduler.v1beta1.Job.state]; if paused it
+ // will be set to [Job.State.PAUSED][google.cloud.scheduler.v1beta1.Job.State.PAUSED]. A job must be in [Job.State.ENABLED][google.cloud.scheduler.v1beta1.Job.State.ENABLED]
+ // to be paused.
+ rpc PauseJob(PauseJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1beta1/{name=projects/*/locations/*/jobs/*}:pause"
+ body: "*"
+ };
+ }
+
+ // Resume a job.
+ //
+ // This method reenables a job after it has been [Job.State.PAUSED][google.cloud.scheduler.v1beta1.Job.State.PAUSED]. The
+ // state of a job is stored in [Job.state][google.cloud.scheduler.v1beta1.Job.state]; after calling this method it
+ // will be set to [Job.State.ENABLED][google.cloud.scheduler.v1beta1.Job.State.ENABLED]. A job must be in
+ // [Job.State.PAUSED][google.cloud.scheduler.v1beta1.Job.State.PAUSED] to be resumed.
+ rpc ResumeJob(ResumeJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1beta1/{name=projects/*/locations/*/jobs/*}:resume"
+ body: "*"
+ };
+ }
+
+ // Forces a job to run now.
+ //
+ // When this method is called, Cloud Scheduler will dispatch the job, even
+ // if the job is already running.
+ rpc RunJob(RunJobRequest) returns (Job) {
+ option (google.api.http) = {
+ post: "/v1beta1/{name=projects/*/locations/*/jobs/*}:run"
+ body: "*"
+ };
+ }
+}
+
+// Request message for listing jobs using [ListJobs][google.cloud.scheduler.v1beta1.CloudScheduler.ListJobs].
+message ListJobsRequest {
+ // Required.
+ //
+ // The location name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID`.
+ string parent = 1;
+
+ // Requested page size.
+ //
+ // The maximum page size is 500. If unspecified, the page size will
+ // be the maximum. Fewer jobs than requested might be returned,
+ // even if more jobs exist; use next_page_token to determine if more
+ // jobs exist.
+ int32 page_size = 5;
+
+ // A token identifying a page of results the server will return. To
+ // request the first page results, page_token must be empty. To
+ // request the next page of results, page_token must be the value of
+ // [next_page_token][google.cloud.scheduler.v1beta1.ListJobsResponse.next_page_token] returned from
+ // the previous call to [ListJobs][google.cloud.scheduler.v1beta1.CloudScheduler.ListJobs]. It is an error to
+ // switch the value of [filter][google.cloud.scheduler.v1beta1.ListJobsRequest.filter] or
+ // [order_by][google.cloud.scheduler.v1beta1.ListJobsRequest.order_by] while iterating through pages.
+ string page_token = 6;
+}
+
+// Response message for listing jobs using [ListJobs][google.cloud.scheduler.v1beta1.CloudScheduler.ListJobs].
+message ListJobsResponse {
+ // The list of jobs.
+ repeated Job jobs = 1;
+
+ // A token to retrieve next page of results. Pass this value in the
+ // [page_token][google.cloud.scheduler.v1beta1.ListJobsRequest.page_token] field in the subsequent call to
+ // [ListJobs][google.cloud.scheduler.v1beta1.CloudScheduler.ListJobs] to retrieve the next page of results.
+ // If this is empty it indicates that there are no more results
+ // through which to paginate.
+ //
+ // The page token is valid for only 2 hours.
+ string next_page_token = 2;
+}
+
+// Request message for [GetJob][google.cloud.scheduler.v1beta1.CloudScheduler.GetJob].
+message GetJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for [CreateJob][google.cloud.scheduler.v1beta1.CloudScheduler.CreateJob].
+message CreateJobRequest {
+ // Required.
+ //
+ // The location name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID`.
+ string parent = 1;
+
+ // Required.
+ //
+ // The job to add. The user can optionally specify a name for the
+ // job in [name][google.cloud.scheduler.v1beta1.Job.name]. [name][google.cloud.scheduler.v1beta1.Job.name] cannot be the same as an
+ // existing job. If a name is not specified then the system will
+ // generate a random unique name that will be returned
+ // ([name][google.cloud.scheduler.v1beta1.Job.name]) in the response.
+ Job job = 2;
+}
+
+// Request message for [UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob].
+message UpdateJobRequest {
+ // Required.
+ //
+ // The new job properties. [name][google.cloud.scheduler.v1beta1.Job.name] must be specified.
+ //
+ // Output only fields cannot be modified using UpdateJob.
+ // Any value specified for an output only field will be ignored.
+ Job job = 1;
+
+ // A mask used to specify which fields of the job are being updated.
+ google.protobuf.FieldMask update_mask = 2;
+}
+
+// Request message for deleting a job using
+// [DeleteJob][google.cloud.scheduler.v1beta1.CloudScheduler.DeleteJob].
+message DeleteJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for [PauseJob][google.cloud.scheduler.v1beta1.CloudScheduler.PauseJob].
+message PauseJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for [ResumeJob][google.cloud.scheduler.v1beta1.CloudScheduler.ResumeJob].
+message ResumeJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
+
+// Request message for forcing a job to run now using
+// [RunJob][google.cloud.scheduler.v1beta1.CloudScheduler.RunJob].
+message RunJobRequest {
+ // Required.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ string name = 1;
+}
diff --git a/google/cloud/scheduler/v1beta1/cloudscheduler_gapic.yaml b/google/cloud/scheduler/v1beta1/cloudscheduler_gapic.yaml
new file mode 100644
index 000000000..abc706b61
--- /dev/null
+++ b/google/cloud/scheduler/v1beta1/cloudscheduler_gapic.yaml
@@ -0,0 +1,258 @@
+type: com.google.api.codegen.ConfigProto
+config_schema_version: 1.0.0
+# The settings of generated code in a specific language.
+language_settings:
+ java:
+ package_name: com.google.cloud.scheduler.v1beta1
+ python:
+ package_name: google.cloud.scheduler_v1beta1.gapic
+ go:
+ package_name: cloud.google.com/go/scheduler/apiv1beta1
+ csharp:
+ package_name: Google.Cloud.Scheduler.V1Beta1
+ ruby:
+ package_name: Google::Cloud::Scheduler::V1beta1
+ php:
+ package_name: Google\Cloud\Scheduler\V1beta1
+ nodejs:
+ package_name: scheduler.v1beta1
+ domain_layer_location: google-cloud
+# A list of API interface configurations.
+interfaces:
+ # The fully qualified name of the API interface.
+- name: google.cloud.scheduler.v1beta1.CloudScheduler
+ # A list of resource collection configurations.
+ # Consists of a name_pattern and an entity_name.
+ # The name_pattern is a pattern to describe the names of the resources of this
+ # collection, using the platform's conventions for URI patterns. A generator
+ # may use this to generate methods to compose and decompose such names. The
+ # pattern should use named placeholders as in `shelves/{shelf}/books/{book}`;
+ # those will be taken as hints for the parameter names of the generated
+ # methods. If empty, no name methods are generated.
+ # The entity_name is the name to be used as a basis for generated methods and
+ # classes.
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ language_overrides:
+ - language: csharp
+ common_resource_name: Google.Api.Gax.ResourceNames.ProjectName
+ - name_pattern: projects/{project}/locations/{location}
+ entity_name: location
+ - name_pattern: projects/{project}/locations/{location}/jobs/{job}
+ entity_name: job
+ # Definition for retryable codes.
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - DEADLINE_EXCEEDED
+ - UNAVAILABLE
+ - name: non_idempotent
+ retry_codes: []
+ # Definition for retry/backoff parameters.
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ # A list of method configurations.
+ # Common properties:
+ #
+ # name - The simple name of the method.
+ #
+ # flattening - Specifies the configuration for parameter flattening.
+ # Describes the parameter groups for which a generator should produce method
+ # overloads which allow a client to directly pass request message fields as
+ # method parameters. This information may or may not be used, depending on
+ # the target language.
+ # Consists of groups, which each represent a list of parameters to be
+ # flattened. Each parameter listed must be a field of the request message.
+ #
+ # required_fields - Fields that are always required for a request to be
+ # valid.
+ #
+ # resource_name_treatment - An enum that specifies how to treat the resource
+ # name formats defined in the field_name_patterns and
+ # response_field_name_patterns fields.
+ # UNSET: default value
+ # NONE: the collection configs will not be used by the generated code.
+ # VALIDATE: string fields will be validated by the client against the
+ # specified resource name formats.
+ # STATIC_TYPES: the client will use generated types for resource names.
+ #
+ # page_streaming - Specifies the configuration for paging.
+ # Describes information for generating a method which transforms a paging
+ # list RPC into a stream of resources.
+ # Consists of a request and a response.
+ # The request specifies request information of the list method. It defines
+ # which fields match the paging pattern in the request. The request consists
+ # of a page_size_field and a token_field. The page_size_field is the name of
+ # the optional field specifying the maximum number of elements to be
+ # returned in the response. The token_field is the name of the field in the
+ # request containing the page token.
+ # The response specifies response information of the list method. It defines
+ # which fields match the paging pattern in the response. The response
+ # consists of a token_field and a resources_field. The token_field is the
+ # name of the field in the response containing the next page token. The
+ # resources_field is the name of the field in the response containing the
+ # list of resources belonging to the page.
+ #
+ # retry_codes_name - Specifies the configuration for retryable codes. The
+ # name must be defined in interfaces.retry_codes_def.
+ #
+ # retry_params_name - Specifies the configuration for retry/backoff
+ # parameters. The name must be defined in interfaces.retry_params_def.
+ #
+ # field_name_patterns - Maps the field name of the request type to
+ # entity_name of interfaces.collections.
+ # Specifies the string pattern that the field must follow.
+ #
+ # timeout_millis - Specifies the default timeout for a non-retrying call. If
+ # the call is retrying, refer to retry_params_name instead.
+ methods:
+ - name: ListJobs
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: jobs
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: location
+ timeout_millis: 10000
+ - name: GetJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 10000
+ - name: CreateJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - job
+ required_fields:
+ - parent
+ - job
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: location
+ timeout_millis: 10000
+ - name: UpdateJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - job
+ - update_mask
+ required_fields:
+ - job
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ job.name: job
+ timeout_millis: 10000
+ - name: DeleteJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 10000
+ - name: PauseJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 10000
+ - name: ResumeJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 10000
+ - name: RunJob
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: job
+ timeout_millis: 10000
+resource_name_generation:
+- message_name: Job
+ field_entity_map:
+ name: job
+- message_name: ListJobsRequest
+ field_entity_map:
+ parent: location
+- message_name: GetJobRequest
+ field_entity_map:
+ name: job
+- message_name: CreateJobRequest
+ field_entity_map:
+ parent: location
+- message_name: UpdateJobRequest
+ field_entity_map:
+ job.name: job
+- message_name: DeleteJobRequest
+ field_entity_map:
+ name: job
+- message_name: PauseJobRequest
+ field_entity_map:
+ name: job
+- message_name: ResumeJobRequest
+ field_entity_map:
+ name: job
+- message_name: RunJobRequest
+ field_entity_map:
+ name: job
diff --git a/google/cloud/scheduler/v1beta1/job.proto b/google/cloud/scheduler/v1beta1/job.proto
new file mode 100644
index 000000000..ddf910b03
--- /dev/null
+++ b/google/cloud/scheduler/v1beta1/job.proto
@@ -0,0 +1,234 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.scheduler.v1beta1;
+
+import "google/api/annotations.proto";
+import "google/api/resource.proto";
+import "google/cloud/scheduler/v1beta1/target.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+import "google/rpc/status.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1;scheduler";
+option java_multiple_files = true;
+option java_outer_classname = "JobProto";
+option java_package = "com.google.cloud.scheduler.v1beta1";
+
+// Configuration for a job.
+// The maximum allowed size for a job is 100KB.
+message Job {
+ // State of the job.
+ enum State {
+ // Unspecified state.
+ STATE_UNSPECIFIED = 0;
+
+ // The job is executing normally.
+ ENABLED = 1;
+
+ // The job is paused by the user. It will not execute. A user can
+ // intentionally pause the job using
+ // [PauseJobRequest][google.cloud.scheduler.v1beta1.PauseJobRequest].
+ PAUSED = 2;
+
+ // The job is disabled by the system due to error. The user
+ // cannot directly set a job to be disabled.
+ DISABLED = 3;
+
+ // The job state resulting from a failed [CloudScheduler.UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob]
+ // operation. To recover a job from this state, retry
+ // [CloudScheduler.UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob] until a successful response is received.
+ UPDATE_FAILED = 4;
+ }
+
+ // Optionally caller-specified in [CreateJob][google.cloud.scheduler.v1beta1.CloudScheduler.CreateJob], after
+ // which it becomes output only.
+ //
+ // The job name. For example:
+ // `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`.
+ //
+ // * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),
+ // hyphens (-), colons (:), or periods (.).
+ // For more information, see
+ // [Identifying
+ // projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects)
+ // * `LOCATION_ID` is the canonical ID for the job's location.
+ // The list of available locations can be obtained by calling
+ // [ListLocations][google.cloud.location.Locations.ListLocations].
+ // For more information, see https://cloud.google.com/about/locations/.
+ // * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]),
+ // hyphens (-), or underscores (_). The maximum length is 500 characters.
+ string name = 1;
+
+ // Optionally caller-specified in [CreateJob][google.cloud.scheduler.v1beta1.CloudScheduler.CreateJob] or
+ // [UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob].
+ //
+ // A human-readable description for the job. This string must not contain
+ // more than 500 characters.
+ string description = 2;
+
+ // Required.
+ //
+ // Delivery settings containing destination and parameters.
+ oneof target {
+ // Pub/Sub target.
+ PubsubTarget pubsub_target = 4;
+
+ // App Engine HTTP target.
+ AppEngineHttpTarget app_engine_http_target = 5;
+
+ // HTTP target.
+ HttpTarget http_target = 6;
+ }
+
+ // Required, except when used with [UpdateJob][google.cloud.scheduler.v1beta1.CloudScheduler.UpdateJob].
+ //
+ // Describes the schedule on which the job will be executed.
+ //
+ // The schedule can be either of the following types:
+ //
+ // * [Crontab](http://en.wikipedia.org/wiki/Cron#Overview)
+ // * English-like
+ // [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules)
+ //
+ // As a general rule, execution `n + 1` of a job will not begin
+ // until execution `n` has finished. Cloud Scheduler will never
+ // allow two simultaneously outstanding executions. For example,
+ // this implies that if the `n+1`th execution is scheduled to run at
+ // 16:00 but the `n`th execution takes until 16:15, the `n+1`th
+ // execution will not start until `16:15`.
+ // A scheduled start time will be delayed if the previous
+ // execution has not ended when its scheduled time occurs.
+ //
+ // If [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count] > 0 and a job attempt fails,
+ // the job will be tried a total of [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count]
+ // times, with exponential backoff, until the next scheduled start
+ // time.
+ string schedule = 20;
+
+ // Specifies the time zone to be used in interpreting
+ // [schedule][google.cloud.scheduler.v1beta1.Job.schedule]. The value of this field must be a time
+ // zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database).
+ //
+ // Note that some time zones include a provision for
+ // daylight savings time. The rules for daylight saving time are
+ // determined by the chosen tz. For UTC use the string "utc". If a
+ // time zone is not specified, the default will be in UTC (also known
+ // as GMT).
+ string time_zone = 21;
+
+ // Output only. The creation time of the job.
+ google.protobuf.Timestamp user_update_time = 9;
+
+ // Output only. State of the job.
+ State state = 10;
+
+ // Output only. The response from the target for the last attempted execution.
+ google.rpc.Status status = 11;
+
+ // Output only. The next time the job is scheduled. Note that this may be a
+ // retry of a previously failed attempt or the next execution time
+ // according to the schedule.
+ google.protobuf.Timestamp schedule_time = 17;
+
+ // Output only. The time the last job attempt started.
+ google.protobuf.Timestamp last_attempt_time = 18;
+
+ // Settings that determine the retry behavior.
+ RetryConfig retry_config = 19;
+
+ // The deadline for job attempts. If the request handler does not respond by
+ // this deadline then the request is cancelled and the attempt is marked as a
+ // `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in
+ // execution logs. Cloud Scheduler will retry the job according
+ // to the [RetryConfig][google.cloud.scheduler.v1beta1.RetryConfig].
+ //
+ // The allowed duration for this deadline is:
+ //
+ // * For [HTTP targets][google.cloud.scheduler.v1beta1.Job.http_target], between 15 seconds and 30 minutes.
+ // * For [App Engine HTTP targets][google.cloud.scheduler.v1beta1.Job.app_engine_http_target], between 15
+ // seconds and 24 hours.
+ // * For [PubSub targets][google.cloud.scheduler.v1beta1.Job.pubsub_target], this field is ignored.
+ google.protobuf.Duration attempt_deadline = 22;
+}
+
+// Settings that determine the retry behavior.
+//
+// By default, if a job does not complete successfully (meaning that
+// an acknowledgement is not received from the handler, then it will be retried
+// with exponential backoff according to the settings in [RetryConfig][google.cloud.scheduler.v1beta1.RetryConfig].
+message RetryConfig {
+ // The number of attempts that the system will make to run a job using the
+ // exponential backoff procedure described by
+ // [max_doublings][google.cloud.scheduler.v1beta1.RetryConfig.max_doublings].
+ //
+ // The default value of retry_count is zero.
+ //
+ // If retry_count is zero, a job attempt will *not* be retried if
+ // it fails. Instead the Cloud Scheduler system will wait for the
+ // next scheduled execution time.
+ //
+ // If retry_count is set to a non-zero number then Cloud Scheduler
+ // will retry failed attempts, using exponential backoff,
+ // retry_count times, or until the next scheduled execution time,
+ // whichever comes first.
+ //
+ // Values greater than 5 and negative values are not allowed.
+ int32 retry_count = 1;
+
+ // The time limit for retrying a failed job, measured from time when an
+ // execution was first attempted. If specified with
+ // [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count], the job will be retried until both
+ // limits are reached.
+ //
+ // The default value for max_retry_duration is zero, which means retry
+ // duration is unlimited.
+ google.protobuf.Duration max_retry_duration = 2;
+
+ // The minimum amount of time to wait before retrying a job after
+ // it fails.
+ //
+ // The default value of this field is 5 seconds.
+ google.protobuf.Duration min_backoff_duration = 3;
+
+ // The maximum amount of time to wait before retrying a job after
+ // it fails.
+ //
+ // The default value of this field is 1 hour.
+ google.protobuf.Duration max_backoff_duration = 4;
+
+ // The time between retries will double `max_doublings` times.
+ //
+ // A job's retry interval starts at
+ // [min_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.min_backoff_duration], then doubles
+ // `max_doublings` times, then increases linearly, and finally
+ // retries retries at intervals of
+ // [max_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.max_backoff_duration] up to
+ // [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count] times.
+ //
+ // For example, if [min_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.min_backoff_duration] is
+ // 10s, [max_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.max_backoff_duration] is 300s, and
+ // `max_doublings` is 3, then the a job will first be retried in 10s. The
+ // retry interval will double three times, and then increase linearly by
+ // 2^3 * 10s. Finally, the job will retry at intervals of
+ // [max_backoff_duration][google.cloud.scheduler.v1beta1.RetryConfig.max_backoff_duration] until the job has
+ // been attempted [retry_count][google.cloud.scheduler.v1beta1.RetryConfig.retry_count] times. Thus, the
+ // requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, ....
+ //
+ // The default value of this field is 5.
+ int32 max_doublings = 5;
+}
diff --git a/google/cloud/scheduler/v1beta1/target.proto b/google/cloud/scheduler/v1beta1/target.proto
new file mode 100644
index 000000000..3bb44a1fb
--- /dev/null
+++ b/google/cloud/scheduler/v1beta1/target.proto
@@ -0,0 +1,348 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.scheduler.v1beta1;
+
+import "google/api/annotations.proto";
+import "google/protobuf/any.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1;scheduler";
+option java_multiple_files = true;
+option java_outer_classname = "TargetProto";
+option java_package = "com.google.cloud.scheduler.v1beta1";
+
+// Http target. The job will be pushed to the job handler by means of
+// an HTTP request via an [http_method][google.cloud.scheduler.v1beta1.HttpTarget.http_method] such as HTTP
+// POST, HTTP GET, etc. The job is acknowledged by means of an HTTP
+// response code in the range [200 - 299]. A failure to receive a response
+// constitutes a failed execution. For a redirected request, the response
+// returned by the redirected request is considered.
+message HttpTarget {
+ // Required.
+ //
+ // The full URI path that the request will be sent to. This string
+ // must begin with either "http://" or "https://". Some examples of
+ // valid values for [uri][google.cloud.scheduler.v1beta1.HttpTarget.uri] are:
+ // `http://acme.com` and `https://acme.com/sales:8080`. Cloud Scheduler will
+ // encode some characters for safety and compatibility. The maximum allowed
+ // URL length is 2083 characters after encoding.
+ string uri = 1;
+
+ // Which HTTP method to use for the request.
+ HttpMethod http_method = 2;
+
+ // The user can specify HTTP request headers to send with the job's
+ // HTTP request. This map contains the header field names and
+ // values. Repeated headers are not supported, but a header value can
+ // contain commas. These headers represent a subset of the headers
+ // that will accompany the job's HTTP request. Some HTTP request
+ // headers will be ignored or replaced. A partial list of headers that
+ // will be ignored or replaced is below:
+ // - Host: This will be computed by Cloud Scheduler and derived from
+ // [uri][google.cloud.scheduler.v1beta1.HttpTarget.uri].
+ // * `Content-Length`: This will be computed by Cloud Scheduler.
+ // * `User-Agent`: This will be set to `"Google-Cloud-Scheduler"`.
+ // * `X-Google-*`: Google internal use only.
+ // * `X-AppEngine-*`: Google internal use only.
+ //
+ // The total size of headers must be less than 80KB.
+ map<string, string> headers = 3;
+
+ // HTTP request body. A request body is allowed only if the HTTP
+ // method is POST, PUT, or PATCH. It is an error to set body on a job with an
+ // incompatible [HttpMethod][google.cloud.scheduler.v1beta1.HttpMethod].
+ bytes body = 4;
+
+ // The mode for generating an `Authorization` header for HTTP requests.
+ //
+ // If specified, all `Authorization` headers in the [HttpTarget.headers][google.cloud.scheduler.v1beta1.HttpTarget.headers]
+ // field will be overridden.
+ oneof authorization_header {
+ // If specified, an
+ // [OAuth token](https://developers.google.com/identity/protocols/OAuth2)
+ // will be generated and attached as an `Authorization` header in the HTTP
+ // request.
+ //
+ // This type of authorization should be used when sending requests to a GCP
+ // endpoint.
+ OAuthToken oauth_token = 5;
+
+ // If specified, an
+ // [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect)
+ // token will be generated and attached as an `Authorization` header in the
+ // HTTP request.
+ //
+ // This type of authorization should be used when sending requests to third
+ // party endpoints.
+ OidcToken oidc_token = 6;
+ }
+}
+
+// App Engine target. The job will be pushed to a job handler by means
+// of an HTTP request via an [http_method][google.cloud.scheduler.v1beta1.AppEngineHttpTarget.http_method] such
+// as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an
+// HTTP response code in the range [200 - 299]. Error 503 is
+// considered an App Engine system error instead of an application
+// error. Requests returning error 503 will be retried regardless of
+// retry configuration and not counted against retry counts. Any other
+// response code, or a failure to receive a response before the
+// deadline, constitutes a failed attempt.
+message AppEngineHttpTarget {
+ // The HTTP method to use for the request. PATCH and OPTIONS are not
+ // permitted.
+ HttpMethod http_method = 1;
+
+ // App Engine Routing setting for the job.
+ AppEngineRouting app_engine_routing = 2;
+
+ // The relative URI.
+ //
+ // The relative URL must begin with "/" and must be a valid HTTP relative URL.
+ // It can contain a path, query string arguments, and `#` fragments.
+ // If the relative URL is empty, then the root path "/" will be used.
+ // No spaces are allowed, and the maximum length allowed is 2083 characters.
+ string relative_uri = 3;
+
+ // HTTP request headers.
+ //
+ // This map contains the header field names and values. Headers can be set
+ // when the job is created.
+ //
+ // Cloud Scheduler sets some headers to default values:
+ //
+ // * `User-Agent`: By default, this header is
+ // `"AppEngine-Google; (+http://code.google.com/appengine)"`.
+ // This header can be modified, but Cloud Scheduler will append
+ // `"AppEngine-Google; (+http://code.google.com/appengine)"` to the
+ // modified `User-Agent`.
+ // * `X-CloudScheduler`: This header will be set to true.
+ //
+ // If the job has an [body][google.cloud.scheduler.v1beta1.AppEngineHttpTarget.body], Cloud Scheduler sets
+ // the following headers:
+ //
+ // * `Content-Type`: By default, the `Content-Type` header is set to
+ // `"application/octet-stream"`. The default can be overridden by explictly
+ // setting `Content-Type` to a particular media type when the job is
+ // created.
+ // For example, `Content-Type` can be set to `"application/json"`.
+ // * `Content-Length`: This is computed by Cloud Scheduler. This value is
+ // output only. It cannot be changed.
+ //
+ // The headers below are output only. They cannot be set or overridden:
+ //
+ // * `X-Google-*`: For Google internal use only.
+ // * `X-AppEngine-*`: For Google internal use only.
+ //
+ // In addition, some App Engine headers, which contain
+ // job-specific information, are also be sent to the job handler.
+ map<string, string> headers = 4;
+
+ // Body.
+ //
+ // HTTP request body. A request body is allowed only if the HTTP method is
+ // POST or PUT. It will result in invalid argument error to set a body on a
+ // job with an incompatible [HttpMethod][google.cloud.scheduler.v1beta1.HttpMethod].
+ bytes body = 5;
+}
+
+// Pub/Sub target. The job will be delivered by publishing a message to
+// the given Pub/Sub topic.
+message PubsubTarget {
+ // Required.
+ //
+ // The name of the Cloud Pub/Sub topic to which messages will
+ // be published when a job is delivered. The topic name must be in the
+ // same format as required by PubSub's
+ // [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest),
+ // for example `projects/PROJECT_ID/topics/TOPIC_ID`.
+ //
+ // The topic must be in the same project as the Cloud Scheduler job.
+ string topic_name = 1;
+
+ // The message payload for PubsubMessage.
+ //
+ // Pubsub message must contain either non-empty data, or at least one
+ // attribute.
+ bytes data = 3;
+
+ // Attributes for PubsubMessage.
+ //
+ // Pubsub message must contain either non-empty data, or at least one
+ // attribute.
+ map<string, string> attributes = 4;
+}
+
+// App Engine Routing.
+//
+// For more information about services, versions, and instances see
+// [An Overview of App
+// Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine),
+// [Microservices Architecture on Google App
+// Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine),
+// [App Engine Standard request
+// routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed),
+// and [App Engine Flex request
+// routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).
+message AppEngineRouting {
+ // App service.
+ //
+ // By default, the job is sent to the service which is the default
+ // service when the job is attempted.
+ string service = 1;
+
+ // App version.
+ //
+ // By default, the job is sent to the version which is the default
+ // version when the job is attempted.
+ string version = 2;
+
+ // App instance.
+ //
+ // By default, the job is sent to an instance which is available when
+ // the job is attempted.
+ //
+ // Requests can only be sent to a specific instance if
+ // [manual scaling is used in App Engine
+ // Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).
+ // App Engine Flex does not support instances. For more information, see
+ // [App Engine Standard request
+ // routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed)
+ // and [App Engine Flex request
+ // routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).
+ string instance = 3;
+
+ // Output only. The host that the job is sent to.
+ //
+ // For more information about how App Engine requests are routed, see
+ // [here](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed).
+ //
+ // The host is constructed as:
+ //
+ //
+ // * `host = [application_domain_name]`</br>
+ // `| [service] + '.' + [application_domain_name]`</br>
+ // `| [version] + '.' + [application_domain_name]`</br>
+ // `| [version_dot_service]+ '.' + [application_domain_name]`</br>
+ // `| [instance] + '.' + [application_domain_name]`</br>
+ // `| [instance_dot_service] + '.' + [application_domain_name]`</br>
+ // `| [instance_dot_version] + '.' + [application_domain_name]`</br>
+ // `| [instance_dot_version_dot_service] + '.' + [application_domain_name]`
+ //
+ // * `application_domain_name` = The domain name of the app, for
+ // example <app-id>.appspot.com, which is associated with the
+ // job's project ID.
+ //
+ // * `service =` [service][google.cloud.scheduler.v1beta1.AppEngineRouting.service]
+ //
+ // * `version =` [version][google.cloud.scheduler.v1beta1.AppEngineRouting.version]
+ //
+ // * `version_dot_service =`
+ // [version][google.cloud.scheduler.v1beta1.AppEngineRouting.version] `+ '.' +`
+ // [service][google.cloud.scheduler.v1beta1.AppEngineRouting.service]
+ //
+ // * `instance =` [instance][google.cloud.scheduler.v1beta1.AppEngineRouting.instance]
+ //
+ // * `instance_dot_service =`
+ // [instance][google.cloud.scheduler.v1beta1.AppEngineRouting.instance] `+ '.' +`
+ // [service][google.cloud.scheduler.v1beta1.AppEngineRouting.service]
+ //
+ // * `instance_dot_version =`
+ // [instance][google.cloud.scheduler.v1beta1.AppEngineRouting.instance] `+ '.' +`
+ // [version][google.cloud.scheduler.v1beta1.AppEngineRouting.version]
+ //
+ // * `instance_dot_version_dot_service =`
+ // [instance][google.cloud.scheduler.v1beta1.AppEngineRouting.instance] `+ '.' +`
+ // [version][google.cloud.scheduler.v1beta1.AppEngineRouting.version] `+ '.' +`
+ // [service][google.cloud.scheduler.v1beta1.AppEngineRouting.service]
+ //
+ //
+ // If [service][google.cloud.scheduler.v1beta1.AppEngineRouting.service] is empty, then the job will be sent
+ // to the service which is the default service when the job is attempted.
+ //
+ // If [version][google.cloud.scheduler.v1beta1.AppEngineRouting.version] is empty, then the job will be sent
+ // to the version which is the default version when the job is attempted.
+ //
+ // If [instance][google.cloud.scheduler.v1beta1.AppEngineRouting.instance] is empty, then the job will be
+ // sent to an instance which is available when the job is attempted.
+ //
+ // If [service][google.cloud.scheduler.v1beta1.AppEngineRouting.service],
+ // [version][google.cloud.scheduler.v1beta1.AppEngineRouting.version], or
+ // [instance][google.cloud.scheduler.v1beta1.AppEngineRouting.instance] is invalid, then the job will be sent
+ // to the default version of the default service when the job is attempted.
+ string host = 4;
+}
+
+// The HTTP method used to execute the job.
+enum HttpMethod {
+ // HTTP method unspecified. Defaults to POST.
+ HTTP_METHOD_UNSPECIFIED = 0;
+
+ // HTTP POST
+ POST = 1;
+
+ // HTTP GET
+ GET = 2;
+
+ // HTTP HEAD
+ HEAD = 3;
+
+ // HTTP PUT
+ PUT = 4;
+
+ // HTTP DELETE
+ DELETE = 5;
+
+ // HTTP PATCH
+ PATCH = 6;
+
+ // HTTP OPTIONS
+ OPTIONS = 7;
+}
+
+// Contains information needed for generating an
+// [OAuth token](https://developers.google.com/identity/protocols/OAuth2).
+// This type of authorization should be used when sending requests to a GCP
+// endpoint.
+message OAuthToken {
+ // [Service account email](https://cloud.google.com/iam/docs/service-accounts)
+ // to be used for generating OAuth token.
+ // The service account must be within the same project as the job. The caller
+ // must have iam.serviceAccounts.actAs permission for the service account.
+ string service_account_email = 1;
+
+ // OAuth scope to be used for generating OAuth access token.
+ // If not specified, "https://www.googleapis.com/auth/cloud-platform"
+ // will be used.
+ string scope = 2;
+}
+
+// Contains information needed for generating an
+// [OpenID Connect
+// token](https://developers.google.com/identity/protocols/OpenIDConnect). This
+// type of authorization should be used when sending requests to third party
+// endpoints.
+message OidcToken {
+ // [Service account email](https://cloud.google.com/iam/docs/service-accounts)
+ // to be used for generating OIDC token.
+ // The service account must be within the same project as the job. The caller
+ // must have iam.serviceAccounts.actAs permission for the service account.
+ string service_account_email = 1;
+
+ // Audience to be used when generating OIDC token. If not specified, the URI
+ // specified in target will be used.
+ string audience = 2;
+}