1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
|
// Copyright 2022 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.run.v2;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/launch_stage.proto";
import "google/api/resource.proto";
import "google/api/routing.proto";
import "google/cloud/run/v2/condition.proto";
import "google/cloud/run/v2/revision_template.proto";
import "google/cloud/run/v2/traffic_target.proto";
import "google/cloud/run/v2/vendor_settings.proto";
import "google/iam/v1/iam_policy.proto";
import "google/iam/v1/policy.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/timestamp.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/run/v2;run";
option java_multiple_files = true;
option java_outer_classname = "ServiceProto";
option java_package = "com.google.cloud.run.v2";
// Cloud Run Service Control Plane API
service Services {
option (google.api.default_host) = "run.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
// Creates a new Service in a given project and location.
rpc CreateService(CreateServiceRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v2/{parent=projects/*/locations/*}/services"
body: "service"
};
option (google.api.routing) = {
routing_parameters {
field: "parent"
path_template: "projects/*/locations/{location=*}"
}
};
option (google.api.method_signature) = "parent,service,service_id";
option (google.longrunning.operation_info) = {
response_type: "Service"
metadata_type: "Service"
};
}
// Gets information about a Service.
rpc GetService(GetServiceRequest) returns (Service) {
option (google.api.http) = {
get: "/v2/{name=projects/*/locations/*/services/*}"
};
option (google.api.routing) = {
routing_parameters {
field: "name"
path_template: "projects/*/locations/{location=*}/**"
}
};
option (google.api.method_signature) = "name";
}
// List Services.
rpc ListServices(ListServicesRequest) returns (ListServicesResponse) {
option (google.api.http) = {
get: "/v2/{parent=projects/*/locations/*}/services"
};
option (google.api.routing) = {
routing_parameters {
field: "parent"
path_template: "projects/*/locations/{location=*}"
}
};
option (google.api.method_signature) = "parent";
}
// Updates a Service.
rpc UpdateService(UpdateServiceRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v2/{service.name=projects/*/locations/*/services/*}"
body: "service"
};
option (google.api.routing) = {
routing_parameters {
field: "service.name"
path_template: "projects/*/locations/{location=*}/**"
}
};
option (google.api.method_signature) = "service";
option (google.longrunning.operation_info) = {
response_type: "Service"
metadata_type: "Service"
};
}
// Deletes a Service.
// This will cause the Service to stop serving traffic and will delete all
// revisions.
rpc DeleteService(DeleteServiceRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v2/{name=projects/*/locations/*/services/*}"
};
option (google.api.routing) = {
routing_parameters {
field: "name"
path_template: "projects/*/locations/{location=*}/**"
}
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "Service"
metadata_type: "Service"
};
}
// Get the IAM Access Control policy currently in effect for the given
// Cloud Run Service. This result does not include any inherited policies.
rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) returns (google.iam.v1.Policy) {
option (google.api.http) = {
get: "/v2/{resource=projects/*/locations/*/services/*}:getIamPolicy"
};
}
// Sets the IAM Access control policy for the specified Service. Overwrites
// any existing policy.
rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) {
option (google.api.http) = {
post: "/v2/{resource=projects/*/locations/*/services/*}:setIamPolicy"
body: "*"
};
}
// Returns permissions that a caller has on the specified Project.
//
// There are no permissions required for making this API call.
rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) {
option (google.api.http) = {
post: "/v2/{resource=projects/*/locations/*/services/*}:testIamPermissions"
body: "*"
};
}
}
// Request message for creating a Service.
message CreateServiceRequest {
// Required. The location and project in which this service should be created.
// Format: projects/{projectnumber}/locations/{location}
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "run.googleapis.com/Service"
}
];
// Required. The Service instance to create.
Service service = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The unique identifier for the Service. The name of the service becomes
// {parent}/services/{service_id}.
string service_id = 3 [(google.api.field_behavior) = REQUIRED];
// Indicates that the request should be validated and default values
// populated, without persisting the request or creating any resources.
bool validate_only = 4;
}
// Request message for updating a service.
message UpdateServiceRequest {
// Required. The Service to be updated.
Service service = 1 [(google.api.field_behavior) = REQUIRED];
// Indicates that the request should be validated and default values
// populated, without persisting the request or updating any resources.
bool validate_only = 3;
// If set to true, and if the Service does not exist, it will create a new
// one. Caller must have both create and update permissions for this call if
// this is set to true.
bool allow_missing = 4;
}
// Request message for retrieving a list of Services.
message ListServicesRequest {
// Required. The location and project to list resources on.
// Location must be a valid GCP region, and may not be the "-" wildcard.
// Format: projects/{projectnumber}/locations/{location}
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "run.googleapis.com/Service"
}
];
// Maximum number of Services to return in this call.
int32 page_size = 2;
// A page token received from a previous call to ListServices.
// All other parameters must match.
string page_token = 3;
// If true, returns deleted (but unexpired) resources along with active ones.
bool show_deleted = 4;
}
// Response message containing a list of Services.
message ListServicesResponse {
// The resulting list of Services.
repeated Service services = 1;
// A token indicating there are more items than page_size. Use it in the next
// ListServices request to continue.
string next_page_token = 2;
}
// Request message for obtaining a Service by its full name.
message GetServiceRequest {
// Required. The full name of the Service.
// Format: projects/{projectnumber}/locations/{location}/services/{service}
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "run.googleapis.com/Service"
}
];
}
// Request message to delete a Service by its full name.
message DeleteServiceRequest {
// Required. The full name of the Service.
// Format: projects/{projectnumber}/locations/{location}/services/{service}
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "run.googleapis.com/Service"
}
];
// Indicates that the request should be validated without actually
// deleting any resources.
bool validate_only = 2;
// A system-generated fingerprint for this version of the
// resource. May be used to detect modification conflict during updates.
string etag = 3;
}
// Service acts as a top-level container that manages a set of
// configurations and revision templates which implement a network service.
// Service exists to provide a singular abstraction which can be access
// controlled, reasoned about, and which encapsulates software lifecycle
// decisions such as rollout policy and team resource ownership.
message Service {
option (google.api.resource) = {
type: "run.googleapis.com/Service"
pattern: "projects/{project}/locations/{location}/services/{service}"
style: DECLARATIVE_FRIENDLY
};
// The fully qualified name of this Service. In CreateServiceRequest, this
// field is ignored, and instead composed from CreateServiceRequest.parent and
// CreateServiceRequest.service_id.
//
// Format:
// projects/{project}/locations/{location}/services/{service_id}
string name = 1;
// User-provided description of the Service. This field currently has a
// 512-character limit.
string description = 2;
// Output only. Server assigned unique identifier for the trigger. The value is a UUID4
// string and guaranteed to remain unchanged until the resource is deleted.
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. A number that monotonically increases every time the user
// modifies the desired state.
// Please note that unlike v1, this is an int64 value. As with most Google
// APIs, its JSON representation will be a `string` instead of an `integer`.
int64 generation = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Map of string keys and values that can be used to organize and categorize
// objects.
// User-provided labels are shared with Google's billing system, so they can
// be used to filter, or break down billing charges by team, component,
// environment, state, etc. For more information, visit
// https://cloud.google.com/resource-manager/docs/creating-managing-labels or
// https://cloud.google.com/run/docs/configuring/labels
// Cloud Run will populate some labels with 'run.googleapis.com' or
// 'serving.knative.dev' namespaces. Those labels are read-only, and user
// changes will not be preserved.
map<string, string> labels = 5;
// Unstructured key value map that may be set by external tools to store and
// arbitrary metadata. They are not queryable and should be preserved
// when modifying objects. Cloud Run will populate some annotations using
// 'run.googleapis.com' or 'serving.knative.dev' namespaces. This field
// follows Kubernetes annotations' namespacing, limits, and rules. More info:
// https://kubernetes.io/docs/user-guide/annotations
map<string, string> annotations = 6;
// Output only. The creation time.
google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The last-modified time.
google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The deletion time.
google.protobuf.Timestamp delete_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. For a deleted resource, the time after which it will be
// permamently deleted.
google.protobuf.Timestamp expire_time = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Email address of the authenticated creator.
string creator = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Email address of the last authenticated modifier.
string last_modifier = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
// Arbitrary identifier for the API client.
string client = 13;
// Arbitrary version identifier for the API client.
string client_version = 14;
// Provides the ingress settings for this Service. On output, returns the
// currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no
// revision is active.
IngressTraffic ingress = 15;
// The launch stage as defined by [Google Cloud Platform
// Launch Stages](https://cloud.google.com/terms/launch-stages).
// Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA
// is assumed.
google.api.LaunchStage launch_stage = 16;
// Settings for the Binary Authorization feature.
BinaryAuthorization binary_authorization = 17;
// Required. The template used to create revisions for this Service.
RevisionTemplate template = 18 [(google.api.field_behavior) = REQUIRED];
// Specifies how to distribute traffic over a collection of Revisions
// belonging to the Service. If traffic is empty or not provided, defaults to
// 100% traffic to the latest `Ready` Revision.
repeated TrafficTarget traffic = 19;
// Output only. The generation of this Service currently serving traffic. See comments in
// `reconciling` for additional information on reconciliation process in Cloud
// Run.
// Please note that unlike v1, this is an int64 value. As with most Google
// APIs, its JSON representation will be a `string` instead of an `integer`.
int64 observed_generation = 30 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The Condition of this Service, containing its readiness status, and
// detailed error information in case it did not reach a serving state. See
// comments in `reconciling` for additional information on reconciliation
// process in Cloud Run.
Condition terminal_condition = 31 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The Conditions of all other associated sub-resources. They contain
// additional diagnostics information in case the Service does not reach its
// Serving state. See comments in `reconciling` for additional information on
// reconciliation process in Cloud Run.
repeated Condition conditions = 32 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Name of the latest revision that is serving traffic. See comments in
// `reconciling` for additional information on reconciliation process in Cloud
// Run.
string latest_ready_revision = 33 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "run.googleapis.com/Revision"
}
];
// Output only. Name of the last created revision. See comments in `reconciling` for
// additional information on reconciliation process in Cloud Run.
string latest_created_revision = 34 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "run.googleapis.com/Revision"
}
];
// Output only. Detailed status information for corresponding traffic targets. See comments
// in `reconciling` for additional information on reconciliation process in
// Cloud Run.
repeated TrafficTargetStatus traffic_statuses = 35 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The main URI in which this Service is serving traffic.
string uri = 36 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Returns true if the Service is currently being acted upon by the system to
// bring it into the desired state.
//
// When a new Service is created, or an existing one is updated, Cloud Run
// will asynchronously perform all necessary steps to bring the Service to the
// desired serving state. This process is called reconciliation.
// While reconciliation is in process, `observed_generation`,
// `latest_ready_revison`, `traffic_statuses`, and `uri` will have transient
// values that might mismatch the intended state: Once reconciliation is over
// (and this field is false), there are two possible outcomes: reconciliation
// succeeded and the serving state matches the Service, or there was an error,
// and reconciliation failed. This state can be found in
// `terminal_condition.state`.
//
// If reconciliation succeeded, the following fields will match: `traffic` and
// `traffic_statuses`, `observed_generation` and `generation`,
// `latest_ready_revision` and `latest_created_revision`.
//
// If reconciliation failed, `traffic_statuses`, `observed_generation`, and
// `latest_ready_revision` will have the state of the last serving revision,
// or empty for newly created Services. Additional information on the failure
// can be found in `terminal_condition` and `conditions`.
bool reconciling = 98 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. A system-generated fingerprint for this version of the
// resource. May be used to detect modification conflict during updates.
string etag = 99 [(google.api.field_behavior) = OUTPUT_ONLY];
}
|