@google-cloud/logging-api 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +111 -0
  2. package/build/protos/google/logging/type/http_request.proto +95 -0
  3. package/build/protos/google/logging/type/log_severity.proto +71 -0
  4. package/build/protos/google/logging/v2/log_entry.proto +280 -0
  5. package/build/protos/google/logging/v2/logging.proto +483 -0
  6. package/build/protos/google/logging/v2/logging_config.proto +2317 -0
  7. package/build/protos/google/logging/v2/logging_metrics.proto +339 -0
  8. package/build/protos/protos.d.ts +19677 -0
  9. package/build/protos/protos.js +1 -0
  10. package/build/protos/protos.json +1 -0
  11. package/build/src/index.d.ts +17 -0
  12. package/build/src/index.js +32 -0
  13. package/build/src/index.js.map +1 -0
  14. package/build/src/v2/config_service_v2_client.d.ts +2879 -0
  15. package/build/src/v2/config_service_v2_client.js +3801 -0
  16. package/build/src/v2/config_service_v2_client.js.map +1 -0
  17. package/build/src/v2/config_service_v2_client_config.json +169 -0
  18. package/build/src/v2/config_service_v2_proto_list.json +8 -0
  19. package/build/src/v2/gapic_metadata.json +512 -0
  20. package/build/src/v2/index.d.ts +3 -0
  21. package/build/src/v2/index.js +27 -0
  22. package/build/src/v2/index.js.map +1 -0
  23. package/build/src/v2/logging_service_v2_client.d.ts +1617 -0
  24. package/build/src/v2/logging_service_v2_client.js +2177 -0
  25. package/build/src/v2/logging_service_v2_client.js.map +1 -0
  26. package/build/src/v2/logging_service_v2_client_config.json +61 -0
  27. package/build/src/v2/logging_service_v2_proto_list.json +8 -0
  28. package/build/src/v2/metrics_service_v2_client.d.ts +1249 -0
  29. package/build/src/v2/metrics_service_v2_client.js +1911 -0
  30. package/build/src/v2/metrics_service_v2_client.js.map +1 -0
  31. package/build/src/v2/metrics_service_v2_client_config.json +56 -0
  32. package/build/src/v2/metrics_service_v2_proto_list.json +8 -0
  33. package/package.json +67 -0
@@ -0,0 +1,2317 @@
1
+ // Copyright 2025 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.logging.v2;
18
+
19
+ import "google/api/annotations.proto";
20
+ import "google/api/client.proto";
21
+ import "google/api/field_behavior.proto";
22
+ import "google/api/resource.proto";
23
+ import "google/longrunning/operations.proto";
24
+ import "google/protobuf/empty.proto";
25
+ import "google/protobuf/field_mask.proto";
26
+ import "google/protobuf/timestamp.proto";
27
+
28
+ option cc_enable_arenas = true;
29
+ option csharp_namespace = "Google.Cloud.Logging.V2";
30
+ option go_package = "cloud.google.com/go/logging/apiv2/loggingpb;loggingpb";
31
+ option java_multiple_files = true;
32
+ option java_outer_classname = "LoggingConfigProto";
33
+ option java_package = "com.google.logging.v2";
34
+ option php_namespace = "Google\\Cloud\\Logging\\V2";
35
+ option ruby_package = "Google::Cloud::Logging::V2";
36
+ option (google.api.resource_definition) = {
37
+ type: "logging.googleapis.com/OrganizationLocation"
38
+ pattern: "organizations/{organization}/locations/{location}"
39
+ };
40
+ option (google.api.resource_definition) = {
41
+ type: "logging.googleapis.com/FolderLocation"
42
+ pattern: "folders/{folder}/locations/{location}"
43
+ };
44
+ option (google.api.resource_definition) = {
45
+ type: "logging.googleapis.com/BillingAccountLocation"
46
+ pattern: "billingAccounts/{billing_account}/locations/{location}"
47
+ };
48
+
49
+ // Service for configuring sinks used to route log entries.
50
+ service ConfigServiceV2 {
51
+ option (google.api.default_host) = "logging.googleapis.com";
52
+ option (google.api.oauth_scopes) =
53
+ "https://www.googleapis.com/auth/cloud-platform,"
54
+ "https://www.googleapis.com/auth/cloud-platform.read-only,"
55
+ "https://www.googleapis.com/auth/logging.admin,"
56
+ "https://www.googleapis.com/auth/logging.read";
57
+
58
+ // Lists log buckets.
59
+ rpc ListBuckets(ListBucketsRequest) returns (ListBucketsResponse) {
60
+ option (google.api.http) = {
61
+ get: "/v2/{parent=*/*/locations/*}/buckets"
62
+ additional_bindings { get: "/v2/{parent=projects/*/locations/*}/buckets" }
63
+ additional_bindings {
64
+ get: "/v2/{parent=organizations/*/locations/*}/buckets"
65
+ }
66
+ additional_bindings { get: "/v2/{parent=folders/*/locations/*}/buckets" }
67
+ additional_bindings {
68
+ get: "/v2/{parent=billingAccounts/*/locations/*}/buckets"
69
+ }
70
+ };
71
+ option (google.api.method_signature) = "parent";
72
+ }
73
+
74
+ // Gets a log bucket.
75
+ rpc GetBucket(GetBucketRequest) returns (LogBucket) {
76
+ option (google.api.http) = {
77
+ get: "/v2/{name=*/*/locations/*/buckets/*}"
78
+ additional_bindings { get: "/v2/{name=projects/*/locations/*/buckets/*}" }
79
+ additional_bindings {
80
+ get: "/v2/{name=organizations/*/locations/*/buckets/*}"
81
+ }
82
+ additional_bindings { get: "/v2/{name=folders/*/locations/*/buckets/*}" }
83
+ additional_bindings {
84
+ get: "/v2/{name=billingAccounts/*/locations/*/buckets/*}"
85
+ }
86
+ };
87
+ }
88
+
89
+ // Creates a log bucket asynchronously that can be used to store log entries.
90
+ //
91
+ // After a bucket has been created, the bucket's location cannot be changed.
92
+ rpc CreateBucketAsync(CreateBucketRequest)
93
+ returns (google.longrunning.Operation) {
94
+ option (google.api.http) = {
95
+ post: "/v2/{parent=*/*/locations/*}/buckets:createAsync"
96
+ body: "bucket"
97
+ additional_bindings {
98
+ post: "/v2/{parent=projects/*/locations/*}/buckets:createAsync"
99
+ body: "bucket"
100
+ }
101
+ additional_bindings {
102
+ post: "/v2/{parent=organizations/*/locations/*}/buckets:createAsync"
103
+ body: "bucket"
104
+ }
105
+ additional_bindings {
106
+ post: "/v2/{parent=folders/*/locations/*}/buckets:createAsync"
107
+ body: "bucket"
108
+ }
109
+ additional_bindings {
110
+ post: "/v2/{parent=billingAccounts/*/locations/*}/buckets:createAsync"
111
+ body: "bucket"
112
+ }
113
+ };
114
+ option (google.longrunning.operation_info) = {
115
+ response_type: "LogBucket"
116
+ metadata_type: "BucketMetadata"
117
+ };
118
+ }
119
+
120
+ // Updates a log bucket asynchronously.
121
+ //
122
+ // If the bucket has a `lifecycle_state` of `DELETE_REQUESTED`, then
123
+ // `FAILED_PRECONDITION` will be returned.
124
+ //
125
+ // After a bucket has been created, the bucket's location cannot be changed.
126
+ rpc UpdateBucketAsync(UpdateBucketRequest)
127
+ returns (google.longrunning.Operation) {
128
+ option (google.api.http) = {
129
+ post: "/v2/{name=*/*/locations/*/buckets/*}:updateAsync"
130
+ body: "bucket"
131
+ additional_bindings {
132
+ post: "/v2/{name=projects/*/locations/*/buckets/*}:updateAsync"
133
+ body: "bucket"
134
+ }
135
+ additional_bindings {
136
+ post: "/v2/{name=organizations/*/locations/*/buckets/*}:updateAsync"
137
+ body: "bucket"
138
+ }
139
+ additional_bindings {
140
+ post: "/v2/{name=folders/*/locations/*/buckets/*}:updateAsync"
141
+ body: "bucket"
142
+ }
143
+ additional_bindings {
144
+ post: "/v2/{name=billingAccounts/*/locations/*/buckets/*}:updateAsync"
145
+ body: "bucket"
146
+ }
147
+ };
148
+ option (google.longrunning.operation_info) = {
149
+ response_type: "LogBucket"
150
+ metadata_type: "BucketMetadata"
151
+ };
152
+ }
153
+
154
+ // Creates a log bucket that can be used to store log entries. After a bucket
155
+ // has been created, the bucket's location cannot be changed.
156
+ rpc CreateBucket(CreateBucketRequest) returns (LogBucket) {
157
+ option (google.api.http) = {
158
+ post: "/v2/{parent=*/*/locations/*}/buckets"
159
+ body: "bucket"
160
+ additional_bindings {
161
+ post: "/v2/{parent=projects/*/locations/*}/buckets"
162
+ body: "bucket"
163
+ }
164
+ additional_bindings {
165
+ post: "/v2/{parent=organizations/*/locations/*}/buckets"
166
+ body: "bucket"
167
+ }
168
+ additional_bindings {
169
+ post: "/v2/{parent=folders/*/locations/*}/buckets"
170
+ body: "bucket"
171
+ }
172
+ additional_bindings {
173
+ post: "/v2/{parent=billingAccounts/*/locations/*}/buckets"
174
+ body: "bucket"
175
+ }
176
+ };
177
+ }
178
+
179
+ // Updates a log bucket.
180
+ //
181
+ // If the bucket has a `lifecycle_state` of `DELETE_REQUESTED`, then
182
+ // `FAILED_PRECONDITION` will be returned.
183
+ //
184
+ // After a bucket has been created, the bucket's location cannot be changed.
185
+ rpc UpdateBucket(UpdateBucketRequest) returns (LogBucket) {
186
+ option (google.api.http) = {
187
+ patch: "/v2/{name=*/*/locations/*/buckets/*}"
188
+ body: "bucket"
189
+ additional_bindings {
190
+ patch: "/v2/{name=projects/*/locations/*/buckets/*}"
191
+ body: "bucket"
192
+ }
193
+ additional_bindings {
194
+ patch: "/v2/{name=organizations/*/locations/*/buckets/*}"
195
+ body: "bucket"
196
+ }
197
+ additional_bindings {
198
+ patch: "/v2/{name=folders/*/locations/*/buckets/*}"
199
+ body: "bucket"
200
+ }
201
+ additional_bindings {
202
+ patch: "/v2/{name=billingAccounts/*/locations/*/buckets/*}"
203
+ body: "bucket"
204
+ }
205
+ };
206
+ }
207
+
208
+ // Deletes a log bucket.
209
+ //
210
+ // Changes the bucket's `lifecycle_state` to the `DELETE_REQUESTED` state.
211
+ // After 7 days, the bucket will be purged and all log entries in the bucket
212
+ // will be permanently deleted.
213
+ rpc DeleteBucket(DeleteBucketRequest) returns (google.protobuf.Empty) {
214
+ option (google.api.http) = {
215
+ delete: "/v2/{name=*/*/locations/*/buckets/*}"
216
+ additional_bindings {
217
+ delete: "/v2/{name=projects/*/locations/*/buckets/*}"
218
+ }
219
+ additional_bindings {
220
+ delete: "/v2/{name=organizations/*/locations/*/buckets/*}"
221
+ }
222
+ additional_bindings {
223
+ delete: "/v2/{name=folders/*/locations/*/buckets/*}"
224
+ }
225
+ additional_bindings {
226
+ delete: "/v2/{name=billingAccounts/*/locations/*/buckets/*}"
227
+ }
228
+ };
229
+ }
230
+
231
+ // Undeletes a log bucket. A bucket that has been deleted can be undeleted
232
+ // within the grace period of 7 days.
233
+ rpc UndeleteBucket(UndeleteBucketRequest) returns (google.protobuf.Empty) {
234
+ option (google.api.http) = {
235
+ post: "/v2/{name=*/*/locations/*/buckets/*}:undelete"
236
+ body: "*"
237
+ additional_bindings {
238
+ post: "/v2/{name=projects/*/locations/*/buckets/*}:undelete"
239
+ body: "*"
240
+ }
241
+ additional_bindings {
242
+ post: "/v2/{name=organizations/*/locations/*/buckets/*}:undelete"
243
+ body: "*"
244
+ }
245
+ additional_bindings {
246
+ post: "/v2/{name=folders/*/locations/*/buckets/*}:undelete"
247
+ body: "*"
248
+ }
249
+ additional_bindings {
250
+ post: "/v2/{name=billingAccounts/*/locations/*/buckets/*}:undelete"
251
+ body: "*"
252
+ }
253
+ };
254
+ }
255
+
256
+ // Lists views on a log bucket.
257
+ rpc ListViews(ListViewsRequest) returns (ListViewsResponse) {
258
+ option (google.api.http) = {
259
+ get: "/v2/{parent=*/*/locations/*/buckets/*}/views"
260
+ additional_bindings {
261
+ get: "/v2/{parent=projects/*/locations/*/buckets/*}/views"
262
+ }
263
+ additional_bindings {
264
+ get: "/v2/{parent=organizations/*/locations/*/buckets/*}/views"
265
+ }
266
+ additional_bindings {
267
+ get: "/v2/{parent=folders/*/locations/*/buckets/*}/views"
268
+ }
269
+ additional_bindings {
270
+ get: "/v2/{parent=billingAccounts/*/locations/*/buckets/*}/views"
271
+ }
272
+ };
273
+ option (google.api.method_signature) = "parent";
274
+ }
275
+
276
+ // Gets a view on a log bucket..
277
+ rpc GetView(GetViewRequest) returns (LogView) {
278
+ option (google.api.http) = {
279
+ get: "/v2/{name=*/*/locations/*/buckets/*/views/*}"
280
+ additional_bindings {
281
+ get: "/v2/{name=projects/*/locations/*/buckets/*/views/*}"
282
+ }
283
+ additional_bindings {
284
+ get: "/v2/{name=organizations/*/locations/*/buckets/*/views/*}"
285
+ }
286
+ additional_bindings {
287
+ get: "/v2/{name=folders/*/locations/*/buckets/*/views/*}"
288
+ }
289
+ additional_bindings {
290
+ get: "/v2/{name=billingAccounts/*/locations/*/buckets/*/views/*}"
291
+ }
292
+ };
293
+ }
294
+
295
+ // Creates a view over log entries in a log bucket. A bucket may contain a
296
+ // maximum of 30 views.
297
+ rpc CreateView(CreateViewRequest) returns (LogView) {
298
+ option (google.api.http) = {
299
+ post: "/v2/{parent=*/*/locations/*/buckets/*}/views"
300
+ body: "view"
301
+ additional_bindings {
302
+ post: "/v2/{parent=projects/*/locations/*/buckets/*}/views"
303
+ body: "view"
304
+ }
305
+ additional_bindings {
306
+ post: "/v2/{parent=organizations/*/locations/*/buckets/*}/views"
307
+ body: "view"
308
+ }
309
+ additional_bindings {
310
+ post: "/v2/{parent=folders/*/locations/*/buckets/*}/views"
311
+ body: "view"
312
+ }
313
+ additional_bindings {
314
+ post: "/v2/{parent=billingAccounts/*/locations/*/buckets/*}/views"
315
+ body: "view"
316
+ }
317
+ };
318
+ }
319
+
320
+ // Updates a view on a log bucket. This method replaces the following fields
321
+ // in the existing view with values from the new view: `filter`.
322
+ // If an `UNAVAILABLE` error is returned, this indicates that system is not in
323
+ // a state where it can update the view. If this occurs, please try again in a
324
+ // few minutes.
325
+ rpc UpdateView(UpdateViewRequest) returns (LogView) {
326
+ option (google.api.http) = {
327
+ patch: "/v2/{name=*/*/locations/*/buckets/*/views/*}"
328
+ body: "view"
329
+ additional_bindings {
330
+ patch: "/v2/{name=projects/*/locations/*/buckets/*/views/*}"
331
+ body: "view"
332
+ }
333
+ additional_bindings {
334
+ patch: "/v2/{name=organizations/*/locations/*/buckets/*/views/*}"
335
+ body: "view"
336
+ }
337
+ additional_bindings {
338
+ patch: "/v2/{name=folders/*/locations/*/buckets/*/views/*}"
339
+ body: "view"
340
+ }
341
+ additional_bindings {
342
+ patch: "/v2/{name=billingAccounts/*/locations/*/buckets/*/views/*}"
343
+ body: "view"
344
+ }
345
+ };
346
+ }
347
+
348
+ // Deletes a view on a log bucket.
349
+ // If an `UNAVAILABLE` error is returned, this indicates that system is not in
350
+ // a state where it can delete the view. If this occurs, please try again in a
351
+ // few minutes.
352
+ rpc DeleteView(DeleteViewRequest) returns (google.protobuf.Empty) {
353
+ option (google.api.http) = {
354
+ delete: "/v2/{name=*/*/locations/*/buckets/*/views/*}"
355
+ additional_bindings {
356
+ delete: "/v2/{name=projects/*/locations/*/buckets/*/views/*}"
357
+ }
358
+ additional_bindings {
359
+ delete: "/v2/{name=organizations/*/locations/*/buckets/*/views/*}"
360
+ }
361
+ additional_bindings {
362
+ delete: "/v2/{name=folders/*/locations/*/buckets/*/views/*}"
363
+ }
364
+ additional_bindings {
365
+ delete: "/v2/{name=billingAccounts/*/locations/*/buckets/*/views/*}"
366
+ }
367
+ };
368
+ }
369
+
370
+ // Lists sinks.
371
+ rpc ListSinks(ListSinksRequest) returns (ListSinksResponse) {
372
+ option (google.api.http) = {
373
+ get: "/v2/{parent=*/*}/sinks"
374
+ additional_bindings { get: "/v2/{parent=projects/*}/sinks" }
375
+ additional_bindings { get: "/v2/{parent=organizations/*}/sinks" }
376
+ additional_bindings { get: "/v2/{parent=folders/*}/sinks" }
377
+ additional_bindings { get: "/v2/{parent=billingAccounts/*}/sinks" }
378
+ };
379
+ option (google.api.method_signature) = "parent";
380
+ }
381
+
382
+ // Gets a sink.
383
+ rpc GetSink(GetSinkRequest) returns (LogSink) {
384
+ option (google.api.http) = {
385
+ get: "/v2/{sink_name=*/*/sinks/*}"
386
+ additional_bindings { get: "/v2/{sink_name=projects/*/sinks/*}" }
387
+ additional_bindings { get: "/v2/{sink_name=organizations/*/sinks/*}" }
388
+ additional_bindings { get: "/v2/{sink_name=folders/*/sinks/*}" }
389
+ additional_bindings { get: "/v2/{sink_name=billingAccounts/*/sinks/*}" }
390
+ };
391
+ option (google.api.method_signature) = "sink_name";
392
+ }
393
+
394
+ // Creates a sink that exports specified log entries to a destination. The
395
+ // export of newly-ingested log entries begins immediately, unless the sink's
396
+ // `writer_identity` is not permitted to write to the destination. A sink can
397
+ // export log entries only from the resource owning the sink.
398
+ rpc CreateSink(CreateSinkRequest) returns (LogSink) {
399
+ option (google.api.http) = {
400
+ post: "/v2/{parent=*/*}/sinks"
401
+ body: "sink"
402
+ additional_bindings { post: "/v2/{parent=projects/*}/sinks" body: "sink" }
403
+ additional_bindings {
404
+ post: "/v2/{parent=organizations/*}/sinks"
405
+ body: "sink"
406
+ }
407
+ additional_bindings { post: "/v2/{parent=folders/*}/sinks" body: "sink" }
408
+ additional_bindings {
409
+ post: "/v2/{parent=billingAccounts/*}/sinks"
410
+ body: "sink"
411
+ }
412
+ };
413
+ option (google.api.method_signature) = "parent,sink";
414
+ }
415
+
416
+ // Updates a sink. This method replaces the following fields in the existing
417
+ // sink with values from the new sink: `destination`, and `filter`.
418
+ //
419
+ // The updated sink might also have a new `writer_identity`; see the
420
+ // `unique_writer_identity` field.
421
+ rpc UpdateSink(UpdateSinkRequest) returns (LogSink) {
422
+ option (google.api.http) = {
423
+ put: "/v2/{sink_name=*/*/sinks/*}"
424
+ body: "sink"
425
+ additional_bindings {
426
+ put: "/v2/{sink_name=projects/*/sinks/*}"
427
+ body: "sink"
428
+ }
429
+ additional_bindings {
430
+ put: "/v2/{sink_name=organizations/*/sinks/*}"
431
+ body: "sink"
432
+ }
433
+ additional_bindings {
434
+ put: "/v2/{sink_name=folders/*/sinks/*}"
435
+ body: "sink"
436
+ }
437
+ additional_bindings {
438
+ put: "/v2/{sink_name=billingAccounts/*/sinks/*}"
439
+ body: "sink"
440
+ }
441
+ additional_bindings {
442
+ patch: "/v2/{sink_name=projects/*/sinks/*}"
443
+ body: "sink"
444
+ }
445
+ additional_bindings {
446
+ patch: "/v2/{sink_name=organizations/*/sinks/*}"
447
+ body: "sink"
448
+ }
449
+ additional_bindings {
450
+ patch: "/v2/{sink_name=folders/*/sinks/*}"
451
+ body: "sink"
452
+ }
453
+ additional_bindings {
454
+ patch: "/v2/{sink_name=billingAccounts/*/sinks/*}"
455
+ body: "sink"
456
+ }
457
+ };
458
+ option (google.api.method_signature) = "sink_name,sink,update_mask";
459
+ option (google.api.method_signature) = "sink_name,sink";
460
+ }
461
+
462
+ // Deletes a sink. If the sink has a unique `writer_identity`, then that
463
+ // service account is also deleted.
464
+ rpc DeleteSink(DeleteSinkRequest) returns (google.protobuf.Empty) {
465
+ option (google.api.http) = {
466
+ delete: "/v2/{sink_name=*/*/sinks/*}"
467
+ additional_bindings { delete: "/v2/{sink_name=projects/*/sinks/*}" }
468
+ additional_bindings { delete: "/v2/{sink_name=organizations/*/sinks/*}" }
469
+ additional_bindings { delete: "/v2/{sink_name=folders/*/sinks/*}" }
470
+ additional_bindings {
471
+ delete: "/v2/{sink_name=billingAccounts/*/sinks/*}"
472
+ }
473
+ };
474
+ option (google.api.method_signature) = "sink_name";
475
+ }
476
+
477
+ // Asynchronously creates a linked dataset in BigQuery which makes it possible
478
+ // to use BigQuery to read the logs stored in the log bucket. A log bucket may
479
+ // currently only contain one link.
480
+ rpc CreateLink(CreateLinkRequest) returns (google.longrunning.Operation) {
481
+ option (google.api.http) = {
482
+ post: "/v2/{parent=*/*/locations/*/buckets/*}/links"
483
+ body: "link"
484
+ additional_bindings {
485
+ post: "/v2/{parent=projects/*/locations/*/buckets/*}/links"
486
+ body: "link"
487
+ }
488
+ additional_bindings {
489
+ post: "/v2/{parent=organizations/*/locations/*/buckets/*}/links"
490
+ body: "link"
491
+ }
492
+ additional_bindings {
493
+ post: "/v2/{parent=folders/*/locations/*/buckets/*}/links"
494
+ body: "link"
495
+ }
496
+ additional_bindings {
497
+ post: "/v2/{parent=billingAccounts/*/locations/*/buckets/*}/links"
498
+ body: "link"
499
+ }
500
+ };
501
+ option (google.api.method_signature) = "parent,link,link_id";
502
+ option (google.longrunning.operation_info) = {
503
+ response_type: "Link"
504
+ metadata_type: "LinkMetadata"
505
+ };
506
+ }
507
+
508
+ // Deletes a link. This will also delete the corresponding BigQuery linked
509
+ // dataset.
510
+ rpc DeleteLink(DeleteLinkRequest) returns (google.longrunning.Operation) {
511
+ option (google.api.http) = {
512
+ delete: "/v2/{name=*/*/locations/*/buckets/*/links/*}"
513
+ additional_bindings {
514
+ delete: "/v2/{name=projects/*/locations/*/buckets/*/links/*}"
515
+ }
516
+ additional_bindings {
517
+ delete: "/v2/{name=organizations/*/locations/*/buckets/*/links/*}"
518
+ }
519
+ additional_bindings {
520
+ delete: "/v2/{name=folders/*/locations/*/buckets/*/links/*}"
521
+ }
522
+ additional_bindings {
523
+ delete: "/v2/{name=billingAccounts/*/locations/*/buckets/*/links/*}"
524
+ }
525
+ };
526
+ option (google.api.method_signature) = "name";
527
+ option (google.longrunning.operation_info) = {
528
+ response_type: "google.protobuf.Empty"
529
+ metadata_type: "LinkMetadata"
530
+ };
531
+ }
532
+
533
+ // Lists links.
534
+ rpc ListLinks(ListLinksRequest) returns (ListLinksResponse) {
535
+ option (google.api.http) = {
536
+ get: "/v2/{parent=*/*/locations/*/buckets/*}/links"
537
+ additional_bindings {
538
+ get: "/v2/{parent=projects/*/locations/*/buckets/*}/links"
539
+ }
540
+ additional_bindings {
541
+ get: "/v2/{parent=organizations/*/locations/*/buckets/*}/links"
542
+ }
543
+ additional_bindings {
544
+ get: "/v2/{parent=folders/*/locations/*/buckets/*}/links"
545
+ }
546
+ additional_bindings {
547
+ get: "/v2/{parent=billingAccounts/*/locations/*/buckets/*}/links"
548
+ }
549
+ };
550
+ option (google.api.method_signature) = "parent";
551
+ }
552
+
553
+ // Gets a link.
554
+ rpc GetLink(GetLinkRequest) returns (Link) {
555
+ option (google.api.http) = {
556
+ get: "/v2/{name=*/*/locations/*/buckets/*/links/*}"
557
+ additional_bindings {
558
+ get: "/v2/{name=projects/*/locations/*/buckets/*/links/*}"
559
+ }
560
+ additional_bindings {
561
+ get: "/v2/{name=organizations/*/locations/*/buckets/*/links/*}"
562
+ }
563
+ additional_bindings {
564
+ get: "/v2/{name=folders/*/locations/*/buckets/*/links/*}"
565
+ }
566
+ additional_bindings {
567
+ get: "/v2/{name=billingAccounts/*/locations/*/buckets/*/links/*}"
568
+ }
569
+ };
570
+ option (google.api.method_signature) = "name";
571
+ }
572
+
573
+ // Lists all the exclusions on the _Default sink in a parent resource.
574
+ rpc ListExclusions(ListExclusionsRequest) returns (ListExclusionsResponse) {
575
+ option (google.api.http) = {
576
+ get: "/v2/{parent=*/*}/exclusions"
577
+ additional_bindings { get: "/v2/{parent=projects/*}/exclusions" }
578
+ additional_bindings { get: "/v2/{parent=organizations/*}/exclusions" }
579
+ additional_bindings { get: "/v2/{parent=folders/*}/exclusions" }
580
+ additional_bindings { get: "/v2/{parent=billingAccounts/*}/exclusions" }
581
+ };
582
+ option (google.api.method_signature) = "parent";
583
+ }
584
+
585
+ // Gets the description of an exclusion in the _Default sink.
586
+ rpc GetExclusion(GetExclusionRequest) returns (LogExclusion) {
587
+ option (google.api.http) = {
588
+ get: "/v2/{name=*/*/exclusions/*}"
589
+ additional_bindings { get: "/v2/{name=projects/*/exclusions/*}" }
590
+ additional_bindings { get: "/v2/{name=organizations/*/exclusions/*}" }
591
+ additional_bindings { get: "/v2/{name=folders/*/exclusions/*}" }
592
+ additional_bindings { get: "/v2/{name=billingAccounts/*/exclusions/*}" }
593
+ };
594
+ option (google.api.method_signature) = "name";
595
+ }
596
+
597
+ // Creates a new exclusion in the _Default sink in a specified parent
598
+ // resource. Only log entries belonging to that resource can be excluded. You
599
+ // can have up to 10 exclusions in a resource.
600
+ rpc CreateExclusion(CreateExclusionRequest) returns (LogExclusion) {
601
+ option (google.api.http) = {
602
+ post: "/v2/{parent=*/*}/exclusions"
603
+ body: "exclusion"
604
+ additional_bindings {
605
+ post: "/v2/{parent=projects/*}/exclusions"
606
+ body: "exclusion"
607
+ }
608
+ additional_bindings {
609
+ post: "/v2/{parent=organizations/*}/exclusions"
610
+ body: "exclusion"
611
+ }
612
+ additional_bindings {
613
+ post: "/v2/{parent=folders/*}/exclusions"
614
+ body: "exclusion"
615
+ }
616
+ additional_bindings {
617
+ post: "/v2/{parent=billingAccounts/*}/exclusions"
618
+ body: "exclusion"
619
+ }
620
+ };
621
+ option (google.api.method_signature) = "parent,exclusion";
622
+ }
623
+
624
+ // Changes one or more properties of an existing exclusion in the _Default
625
+ // sink.
626
+ rpc UpdateExclusion(UpdateExclusionRequest) returns (LogExclusion) {
627
+ option (google.api.http) = {
628
+ patch: "/v2/{name=*/*/exclusions/*}"
629
+ body: "exclusion"
630
+ additional_bindings {
631
+ patch: "/v2/{name=projects/*/exclusions/*}"
632
+ body: "exclusion"
633
+ }
634
+ additional_bindings {
635
+ patch: "/v2/{name=organizations/*/exclusions/*}"
636
+ body: "exclusion"
637
+ }
638
+ additional_bindings {
639
+ patch: "/v2/{name=folders/*/exclusions/*}"
640
+ body: "exclusion"
641
+ }
642
+ additional_bindings {
643
+ patch: "/v2/{name=billingAccounts/*/exclusions/*}"
644
+ body: "exclusion"
645
+ }
646
+ };
647
+ option (google.api.method_signature) = "name,exclusion,update_mask";
648
+ }
649
+
650
+ // Deletes an exclusion in the _Default sink.
651
+ rpc DeleteExclusion(DeleteExclusionRequest) returns (google.protobuf.Empty) {
652
+ option (google.api.http) = {
653
+ delete: "/v2/{name=*/*/exclusions/*}"
654
+ additional_bindings { delete: "/v2/{name=projects/*/exclusions/*}" }
655
+ additional_bindings { delete: "/v2/{name=organizations/*/exclusions/*}" }
656
+ additional_bindings { delete: "/v2/{name=folders/*/exclusions/*}" }
657
+ additional_bindings {
658
+ delete: "/v2/{name=billingAccounts/*/exclusions/*}"
659
+ }
660
+ };
661
+ option (google.api.method_signature) = "name";
662
+ }
663
+
664
+ // Gets the Logging CMEK settings for the given resource.
665
+ //
666
+ // Note: CMEK for the Log Router can be configured for Google Cloud projects,
667
+ // folders, organizations and billing accounts. Once configured for an
668
+ // organization, it applies to all projects and folders in the Google Cloud
669
+ // organization.
670
+ //
671
+ // See [Enabling CMEK for Log
672
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
673
+ // for more information.
674
+ rpc GetCmekSettings(GetCmekSettingsRequest) returns (CmekSettings) {
675
+ option (google.api.http) = {
676
+ get: "/v2/{name=*/*}/cmekSettings"
677
+ additional_bindings { get: "/v2/{name=projects/*}/cmekSettings" }
678
+ additional_bindings { get: "/v2/{name=organizations/*}/cmekSettings" }
679
+ additional_bindings { get: "/v2/{name=folders/*}/cmekSettings" }
680
+ additional_bindings { get: "/v2/{name=billingAccounts/*}/cmekSettings" }
681
+ };
682
+ }
683
+
684
+ // Updates the Log Router CMEK settings for the given resource.
685
+ //
686
+ // Note: CMEK for the Log Router can currently only be configured for Google
687
+ // Cloud organizations. Once configured, it applies to all projects and
688
+ // folders in the Google Cloud organization.
689
+ //
690
+ // [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings]
691
+ // will fail if 1) `kms_key_name` is invalid, or 2) the associated service
692
+ // account does not have the required
693
+ // `roles/cloudkms.cryptoKeyEncrypterDecrypter` role assigned for the key, or
694
+ // 3) access to the key is disabled.
695
+ //
696
+ // See [Enabling CMEK for Log
697
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
698
+ // for more information.
699
+ rpc UpdateCmekSettings(UpdateCmekSettingsRequest) returns (CmekSettings) {
700
+ option (google.api.http) = {
701
+ patch: "/v2/{name=*/*}/cmekSettings"
702
+ body: "cmek_settings"
703
+ additional_bindings {
704
+ patch: "/v2/{name=organizations/*}/cmekSettings"
705
+ body: "cmek_settings"
706
+ }
707
+ };
708
+ }
709
+
710
+ // Gets the Log Router settings for the given resource.
711
+ //
712
+ // Note: Settings for the Log Router can be get for Google Cloud projects,
713
+ // folders, organizations and billing accounts. Currently it can only be
714
+ // configured for organizations. Once configured for an organization, it
715
+ // applies to all projects and folders in the Google Cloud organization.
716
+ //
717
+ // See [Enabling CMEK for Log
718
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
719
+ // for more information.
720
+ rpc GetSettings(GetSettingsRequest) returns (Settings) {
721
+ option (google.api.http) = {
722
+ get: "/v2/{name=*/*}/settings"
723
+ additional_bindings { get: "/v2/{name=projects/*}/settings" }
724
+ additional_bindings { get: "/v2/{name=organizations/*}/settings" }
725
+ additional_bindings { get: "/v2/{name=folders/*}/settings" }
726
+ additional_bindings { get: "/v2/{name=billingAccounts/*}/settings" }
727
+ };
728
+ option (google.api.method_signature) = "name";
729
+ }
730
+
731
+ // Updates the Log Router settings for the given resource.
732
+ //
733
+ // Note: Settings for the Log Router can currently only be configured for
734
+ // Google Cloud organizations. Once configured, it applies to all projects and
735
+ // folders in the Google Cloud organization.
736
+ //
737
+ // [UpdateSettings][google.logging.v2.ConfigServiceV2.UpdateSettings]
738
+ // will fail if 1) `kms_key_name` is invalid, or 2) the associated service
739
+ // account does not have the required
740
+ // `roles/cloudkms.cryptoKeyEncrypterDecrypter` role assigned for the key, or
741
+ // 3) access to the key is disabled. 4) `location_id` is not supported by
742
+ // Logging. 5) `location_id` violate OrgPolicy.
743
+ //
744
+ // See [Enabling CMEK for Log
745
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
746
+ // for more information.
747
+ rpc UpdateSettings(UpdateSettingsRequest) returns (Settings) {
748
+ option (google.api.http) = {
749
+ patch: "/v2/{name=*/*}/settings"
750
+ body: "settings"
751
+ additional_bindings {
752
+ patch: "/v2/{name=organizations/*}/settings"
753
+ body: "settings"
754
+ }
755
+ additional_bindings {
756
+ patch: "/v2/{name=folders/*}/settings"
757
+ body: "settings"
758
+ }
759
+ };
760
+ option (google.api.method_signature) = "settings,update_mask";
761
+ }
762
+
763
+ // Copies a set of log entries from a log bucket to a Cloud Storage bucket.
764
+ rpc CopyLogEntries(CopyLogEntriesRequest)
765
+ returns (google.longrunning.Operation) {
766
+ option (google.api.http) = {
767
+ post: "/v2/entries:copy"
768
+ body: "*"
769
+ };
770
+ option (google.longrunning.operation_info) = {
771
+ response_type: "CopyLogEntriesResponse"
772
+ metadata_type: "CopyLogEntriesMetadata"
773
+ };
774
+ }
775
+ }
776
+
777
+ // Configuration for an indexed field.
778
+ message IndexConfig {
779
+ // Required. The LogEntry field path to index.
780
+ //
781
+ // Note that some paths are automatically indexed, and other paths are not
782
+ // eligible for indexing. See [indexing documentation](
783
+ // https://cloud.google.com/logging/docs/view/advanced-queries#indexed-fields)
784
+ // for details.
785
+ //
786
+ // For example: `jsonPayload.request.status`
787
+ string field_path = 1 [(google.api.field_behavior) = REQUIRED];
788
+
789
+ // Required. The type of data in this index.
790
+ IndexType type = 2 [(google.api.field_behavior) = REQUIRED];
791
+
792
+ // Output only. The timestamp when the index was last modified.
793
+ //
794
+ // This is used to return the timestamp, and will be ignored if supplied
795
+ // during update.
796
+ google.protobuf.Timestamp create_time = 3
797
+ [(google.api.field_behavior) = OUTPUT_ONLY];
798
+ }
799
+
800
+ // Describes a repository in which log entries are stored.
801
+ message LogBucket {
802
+ option (google.api.resource) = {
803
+ type: "logging.googleapis.com/LogBucket"
804
+ pattern: "projects/{project}/locations/{location}/buckets/{bucket}"
805
+ pattern: "organizations/{organization}/locations/{location}/buckets/{bucket}"
806
+ pattern: "folders/{folder}/locations/{location}/buckets/{bucket}"
807
+ pattern: "billingAccounts/{billing_account}/locations/{location}/buckets/{bucket}"
808
+ };
809
+
810
+ // Output only. The resource name of the bucket.
811
+ //
812
+ // For example:
813
+ //
814
+ // `projects/my-project/locations/global/buckets/my-bucket`
815
+ //
816
+ // For a list of supported locations, see [Supported
817
+ // Regions](https://cloud.google.com/logging/docs/region-support)
818
+ //
819
+ // For the location of `global` it is unspecified where log entries are
820
+ // actually stored.
821
+ //
822
+ // After a bucket has been created, the location cannot be changed.
823
+ string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
824
+
825
+ // Describes this bucket.
826
+ string description = 3;
827
+
828
+ // Output only. The creation timestamp of the bucket. This is not set for any
829
+ // of the default buckets.
830
+ google.protobuf.Timestamp create_time = 4
831
+ [(google.api.field_behavior) = OUTPUT_ONLY];
832
+
833
+ // Output only. The last update timestamp of the bucket.
834
+ google.protobuf.Timestamp update_time = 5
835
+ [(google.api.field_behavior) = OUTPUT_ONLY];
836
+
837
+ // Logs will be retained by default for this amount of time, after which they
838
+ // will automatically be deleted. The minimum retention period is 1 day. If
839
+ // this value is set to zero at bucket creation time, the default time of 30
840
+ // days will be used.
841
+ int32 retention_days = 11;
842
+
843
+ // Whether the bucket is locked.
844
+ //
845
+ // The retention period on a locked bucket cannot be changed. Locked buckets
846
+ // may only be deleted if they are empty.
847
+ bool locked = 9;
848
+
849
+ // Output only. The bucket lifecycle state.
850
+ LifecycleState lifecycle_state = 12
851
+ [(google.api.field_behavior) = OUTPUT_ONLY];
852
+
853
+ // Whether log analytics is enabled for this bucket.
854
+ //
855
+ // Once enabled, log analytics features cannot be disabled.
856
+ bool analytics_enabled = 14;
857
+
858
+ // Log entry field paths that are denied access in this bucket.
859
+ //
860
+ // The following fields and their children are eligible: `textPayload`,
861
+ // `jsonPayload`, `protoPayload`, `httpRequest`, `labels`, `sourceLocation`.
862
+ //
863
+ // Restricting a repeated field will restrict all values. Adding a parent will
864
+ // block all child fields. (e.g. `foo.bar` will block `foo.bar.baz`)
865
+ repeated string restricted_fields = 15;
866
+
867
+ // A list of indexed fields and related configuration data.
868
+ repeated IndexConfig index_configs = 17;
869
+
870
+ // The CMEK settings of the log bucket. If present, new log entries written to
871
+ // this log bucket are encrypted using the CMEK key provided in this
872
+ // configuration. If a log bucket has CMEK settings, the CMEK settings cannot
873
+ // be disabled later by updating the log bucket. Changing the KMS key is
874
+ // allowed.
875
+ CmekSettings cmek_settings = 19;
876
+ }
877
+
878
+ // Describes a view over log entries in a bucket.
879
+ message LogView {
880
+ option (google.api.resource) = {
881
+ type: "logging.googleapis.com/LogView"
882
+ pattern: "projects/{project}/locations/{location}/buckets/{bucket}/views/{view}"
883
+ pattern: "organizations/{organization}/locations/{location}/buckets/{bucket}/views/{view}"
884
+ pattern: "folders/{folder}/locations/{location}/buckets/{bucket}/views/{view}"
885
+ pattern: "billingAccounts/{billing_account}/locations/{location}/buckets/{bucket}/views/{view}"
886
+ };
887
+
888
+ // The resource name of the view.
889
+ //
890
+ // For example:
891
+ //
892
+ // `projects/my-project/locations/global/buckets/my-bucket/views/my-view`
893
+ string name = 1;
894
+
895
+ // Describes this view.
896
+ string description = 3;
897
+
898
+ // Output only. The creation timestamp of the view.
899
+ google.protobuf.Timestamp create_time = 4
900
+ [(google.api.field_behavior) = OUTPUT_ONLY];
901
+
902
+ // Output only. The last update timestamp of the view.
903
+ google.protobuf.Timestamp update_time = 5
904
+ [(google.api.field_behavior) = OUTPUT_ONLY];
905
+
906
+ // Filter that restricts which log entries in a bucket are visible in this
907
+ // view.
908
+ //
909
+ // Filters are restricted to be a logical AND of ==/!= of any of the
910
+ // following:
911
+ //
912
+ // - originating project/folder/organization/billing account.
913
+ // - resource type
914
+ // - log id
915
+ //
916
+ // For example:
917
+ //
918
+ // SOURCE("projects/myproject") AND resource.type = "gce_instance"
919
+ // AND LOG_ID("stdout")
920
+ string filter = 7;
921
+ }
922
+
923
+ // Describes a sink used to export log entries to one of the following
924
+ // destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a
925
+ // Pub/Sub topic or a Cloud Logging log bucket. A logs filter controls which log
926
+ // entries are exported. The sink must be created within a project,
927
+ // organization, billing account, or folder.
928
+ message LogSink {
929
+ option (google.api.resource) = {
930
+ type: "logging.googleapis.com/LogSink"
931
+ pattern: "projects/{project}/sinks/{sink}"
932
+ pattern: "organizations/{organization}/sinks/{sink}"
933
+ pattern: "folders/{folder}/sinks/{sink}"
934
+ pattern: "billingAccounts/{billing_account}/sinks/{sink}"
935
+ };
936
+
937
+ // Deprecated. This is unused.
938
+ enum VersionFormat {
939
+ // An unspecified format version that will default to V2.
940
+ VERSION_FORMAT_UNSPECIFIED = 0;
941
+
942
+ // `LogEntry` version 2 format.
943
+ V2 = 1;
944
+
945
+ // `LogEntry` version 1 format.
946
+ V1 = 2;
947
+ }
948
+
949
+ // Required. The client-assigned sink identifier, unique within the project.
950
+ //
951
+ // For example: `"my-syslog-errors-to-pubsub"`. Sink identifiers are limited
952
+ // to 100 characters and can include only the following characters: upper and
953
+ // lower-case alphanumeric characters, underscores, hyphens, and periods.
954
+ // First character has to be alphanumeric.
955
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
956
+
957
+ // Required. The export destination:
958
+ //
959
+ // "storage.googleapis.com/[GCS_BUCKET]"
960
+ // "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
961
+ // "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
962
+ //
963
+ // The sink's `writer_identity`, set when the sink is created, must have
964
+ // permission to write to the destination or else the log entries are not
965
+ // exported. For more information, see
966
+ // [Exporting Logs with
967
+ // Sinks](https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
968
+ string destination = 3 [
969
+ (google.api.field_behavior) = REQUIRED,
970
+ (google.api.resource_reference) = { type: "*" }
971
+ ];
972
+
973
+ // Optional. An [advanced logs
974
+ // filter](https://cloud.google.com/logging/docs/view/advanced-queries). The
975
+ // only exported log entries are those that are in the resource owning the
976
+ // sink and that match the filter.
977
+ //
978
+ // For example:
979
+ //
980
+ // `logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR`
981
+ string filter = 5 [(google.api.field_behavior) = OPTIONAL];
982
+
983
+ // Optional. A description of this sink.
984
+ //
985
+ // The maximum length of the description is 8000 characters.
986
+ string description = 18 [(google.api.field_behavior) = OPTIONAL];
987
+
988
+ // Optional. If set to true, then this sink is disabled and it does not export
989
+ // any log entries.
990
+ bool disabled = 19 [(google.api.field_behavior) = OPTIONAL];
991
+
992
+ // Optional. Log entries that match any of these exclusion filters will not be
993
+ // exported.
994
+ //
995
+ // If a log entry is matched by both `filter` and one of `exclusion_filters`
996
+ // it will not be exported.
997
+ repeated LogExclusion exclusions = 16
998
+ [(google.api.field_behavior) = OPTIONAL];
999
+
1000
+ // Deprecated. This field is unused.
1001
+ VersionFormat output_version_format = 6 [deprecated = true];
1002
+
1003
+ // Output only. An IAM identity—a service account or group—under
1004
+ // which Cloud Logging writes the exported log entries to the sink's
1005
+ // destination. This field is either set by specifying
1006
+ // `custom_writer_identity` or set automatically by
1007
+ // [sinks.create][google.logging.v2.ConfigServiceV2.CreateSink] and
1008
+ // [sinks.update][google.logging.v2.ConfigServiceV2.UpdateSink] based on the
1009
+ // value of `unique_writer_identity` in those methods.
1010
+ //
1011
+ // Until you grant this identity write-access to the destination, log entry
1012
+ // exports from this sink will fail. For more information, see [Granting
1013
+ // Access for a
1014
+ // Resource](https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource).
1015
+ // Consult the destination service's documentation to determine the
1016
+ // appropriate IAM roles to assign to the identity.
1017
+ //
1018
+ // Sinks that have a destination that is a log bucket in the same project as
1019
+ // the sink cannot have a writer_identity and no additional permissions are
1020
+ // required.
1021
+ string writer_identity = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
1022
+
1023
+ // Optional. This field applies only to sinks owned by organizations and
1024
+ // folders. If the field is false, the default, only the logs owned by the
1025
+ // sink's parent resource are available for export. If the field is true, then
1026
+ // log entries from all the projects, folders, and billing accounts contained
1027
+ // in the sink's parent resource are also available for export. Whether a
1028
+ // particular log entry from the children is exported depends on the sink's
1029
+ // filter expression.
1030
+ //
1031
+ // For example, if this field is true, then the filter
1032
+ // `resource.type=gce_instance` would export all Compute Engine VM instance
1033
+ // log entries from all projects in the sink's parent.
1034
+ //
1035
+ // To only export entries from certain child projects, filter on the project
1036
+ // part of the log name:
1037
+ //
1038
+ // logName:("projects/test-project1/" OR "projects/test-project2/") AND
1039
+ // resource.type=gce_instance
1040
+ bool include_children = 9 [(google.api.field_behavior) = OPTIONAL];
1041
+
1042
+ // Destination dependent options.
1043
+ oneof options {
1044
+ // Optional. Options that affect sinks exporting data to BigQuery.
1045
+ BigQueryOptions bigquery_options = 12
1046
+ [(google.api.field_behavior) = OPTIONAL];
1047
+ }
1048
+
1049
+ // Output only. The creation timestamp of the sink.
1050
+ //
1051
+ // This field may not be present for older sinks.
1052
+ google.protobuf.Timestamp create_time = 13
1053
+ [(google.api.field_behavior) = OUTPUT_ONLY];
1054
+
1055
+ // Output only. The last update timestamp of the sink.
1056
+ //
1057
+ // This field may not be present for older sinks.
1058
+ google.protobuf.Timestamp update_time = 14
1059
+ [(google.api.field_behavior) = OUTPUT_ONLY];
1060
+ }
1061
+
1062
+ // Describes a BigQuery dataset that was created by a link.
1063
+ message BigQueryDataset {
1064
+ // Output only. The full resource name of the BigQuery dataset. The DATASET_ID
1065
+ // will match the ID of the link, so the link must match the naming
1066
+ // restrictions of BigQuery datasets (alphanumeric characters and underscores
1067
+ // only).
1068
+ //
1069
+ // The dataset will have a resource path of
1070
+ // "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET_ID]"
1071
+ string dataset_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1072
+ }
1073
+
1074
+ // Describes a link connected to an analytics enabled bucket.
1075
+ message Link {
1076
+ option (google.api.resource) = {
1077
+ type: "logging.googleapis.com/Link"
1078
+ pattern: "projects/{project}/locations/{location}/buckets/{bucket}/links/{link}"
1079
+ pattern: "organizations/{organization}/locations/{location}/buckets/{bucket}/links/{link}"
1080
+ pattern: "folders/{folder}/locations/{location}/buckets/{bucket}/links/{link}"
1081
+ pattern: "billingAccounts/{billing_account}/locations/{location}/buckets/{bucket}/links/{link}"
1082
+ };
1083
+
1084
+ // The resource name of the link. The name can have up to 100 characters.
1085
+ // A valid link id (at the end of the link name) must only have alphanumeric
1086
+ // characters and underscores within it.
1087
+ //
1088
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1089
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1090
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1091
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1092
+ //
1093
+ // For example:
1094
+ //
1095
+ // `projects/my-project/locations/global/buckets/my-bucket/links/my_link
1096
+ string name = 1;
1097
+
1098
+ // Describes this link.
1099
+ //
1100
+ // The maximum length of the description is 8000 characters.
1101
+ string description = 2;
1102
+
1103
+ // Output only. The creation timestamp of the link.
1104
+ google.protobuf.Timestamp create_time = 3
1105
+ [(google.api.field_behavior) = OUTPUT_ONLY];
1106
+
1107
+ // Output only. The resource lifecycle state.
1108
+ LifecycleState lifecycle_state = 4
1109
+ [(google.api.field_behavior) = OUTPUT_ONLY];
1110
+
1111
+ // The information of a BigQuery Dataset. When a link is created, a BigQuery
1112
+ // dataset is created along with it, in the same project as the LogBucket it's
1113
+ // linked to. This dataset will also have BigQuery Views corresponding to the
1114
+ // LogViews in the bucket.
1115
+ BigQueryDataset bigquery_dataset = 5;
1116
+ }
1117
+
1118
+ // Options that change functionality of a sink exporting data to BigQuery.
1119
+ message BigQueryOptions {
1120
+ // Optional. Whether to use [BigQuery's partition
1121
+ // tables](https://cloud.google.com/bigquery/docs/partitioned-tables). By
1122
+ // default, Cloud Logging creates dated tables based on the log entries'
1123
+ // timestamps, e.g. syslog_20170523. With partitioned tables the date suffix
1124
+ // is no longer present and [special query
1125
+ // syntax](https://cloud.google.com/bigquery/docs/querying-partitioned-tables)
1126
+ // has to be used instead. In both cases, tables are sharded based on UTC
1127
+ // timezone.
1128
+ bool use_partitioned_tables = 1 [(google.api.field_behavior) = OPTIONAL];
1129
+
1130
+ // Output only. True if new timestamp column based partitioning is in use,
1131
+ // false if legacy ingestion-time partitioning is in use.
1132
+ //
1133
+ // All new sinks will have this field set true and will use timestamp column
1134
+ // based partitioning. If use_partitioned_tables is false, this value has no
1135
+ // meaning and will be false. Legacy sinks using partitioned tables will have
1136
+ // this field set to false.
1137
+ bool uses_timestamp_column_partitioning = 3
1138
+ [(google.api.field_behavior) = OUTPUT_ONLY];
1139
+ }
1140
+
1141
+ // The parameters to `ListBuckets`.
1142
+ message ListBucketsRequest {
1143
+ // Required. The parent resource whose buckets are to be listed:
1144
+ //
1145
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]"
1146
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]"
1147
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]"
1148
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]"
1149
+ //
1150
+ // Note: The locations portion of the resource must be specified, but
1151
+ // supplying the character `-` in place of [LOCATION_ID] will return all
1152
+ // buckets.
1153
+ string parent = 1 [
1154
+ (google.api.field_behavior) = REQUIRED,
1155
+ (google.api.resource_reference) = {
1156
+ child_type: "logging.googleapis.com/LogBucket"
1157
+ }
1158
+ ];
1159
+
1160
+ // Optional. If present, then retrieve the next batch of results from the
1161
+ // preceding call to this method. `pageToken` must be the value of
1162
+ // `nextPageToken` from the previous response. The values of other method
1163
+ // parameters should be identical to those in the previous call.
1164
+ string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
1165
+
1166
+ // Optional. The maximum number of results to return from this request.
1167
+ // Non-positive values are ignored. The presence of `nextPageToken` in the
1168
+ // response indicates that more results might be available.
1169
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
1170
+ }
1171
+
1172
+ // The response from ListBuckets.
1173
+ message ListBucketsResponse {
1174
+ // A list of buckets.
1175
+ repeated LogBucket buckets = 1;
1176
+
1177
+ // If there might be more results than appear in this response, then
1178
+ // `nextPageToken` is included. To get the next set of results, call the same
1179
+ // method again using the value of `nextPageToken` as `pageToken`.
1180
+ string next_page_token = 2;
1181
+ }
1182
+
1183
+ // The parameters to `CreateBucket`.
1184
+ message CreateBucketRequest {
1185
+ // Required. The resource in which to create the log bucket:
1186
+ //
1187
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]"
1188
+ //
1189
+ // For example:
1190
+ //
1191
+ // `"projects/my-project/locations/global"`
1192
+ string parent = 1 [
1193
+ (google.api.field_behavior) = REQUIRED,
1194
+ (google.api.resource_reference) = {
1195
+ child_type: "logging.googleapis.com/LogBucket"
1196
+ }
1197
+ ];
1198
+
1199
+ // Required. A client-assigned identifier such as `"my-bucket"`. Identifiers
1200
+ // are limited to 100 characters and can include only letters, digits,
1201
+ // underscores, hyphens, and periods.
1202
+ string bucket_id = 2 [(google.api.field_behavior) = REQUIRED];
1203
+
1204
+ // Required. The new bucket. The region specified in the new bucket must be
1205
+ // compliant with any Location Restriction Org Policy. The name field in the
1206
+ // bucket is ignored.
1207
+ LogBucket bucket = 3 [(google.api.field_behavior) = REQUIRED];
1208
+ }
1209
+
1210
+ // The parameters to `UpdateBucket`.
1211
+ message UpdateBucketRequest {
1212
+ // Required. The full resource name of the bucket to update.
1213
+ //
1214
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1215
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1216
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1217
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1218
+ //
1219
+ // For example:
1220
+ //
1221
+ // `"projects/my-project/locations/global/buckets/my-bucket"`
1222
+ string name = 1 [
1223
+ (google.api.field_behavior) = REQUIRED,
1224
+ (google.api.resource_reference) = {
1225
+ type: "logging.googleapis.com/LogBucket"
1226
+ }
1227
+ ];
1228
+
1229
+ // Required. The updated bucket.
1230
+ LogBucket bucket = 2 [(google.api.field_behavior) = REQUIRED];
1231
+
1232
+ // Required. Field mask that specifies the fields in `bucket` that need an
1233
+ // update. A bucket field will be overwritten if, and only if, it is in the
1234
+ // update mask. `name` and output only fields cannot be updated.
1235
+ //
1236
+ // For a detailed `FieldMask` definition, see:
1237
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask
1238
+ //
1239
+ // For example: `updateMask=retention_days`
1240
+ google.protobuf.FieldMask update_mask = 4
1241
+ [(google.api.field_behavior) = REQUIRED];
1242
+ }
1243
+
1244
+ // The parameters to `GetBucket`.
1245
+ message GetBucketRequest {
1246
+ // Required. The resource name of the bucket:
1247
+ //
1248
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1249
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1250
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1251
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1252
+ //
1253
+ // For example:
1254
+ //
1255
+ // `"projects/my-project/locations/global/buckets/my-bucket"`
1256
+ string name = 1 [
1257
+ (google.api.field_behavior) = REQUIRED,
1258
+ (google.api.resource_reference) = {
1259
+ type: "logging.googleapis.com/LogBucket"
1260
+ }
1261
+ ];
1262
+ }
1263
+
1264
+ // The parameters to `DeleteBucket`.
1265
+ message DeleteBucketRequest {
1266
+ // Required. The full resource name of the bucket to delete.
1267
+ //
1268
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1269
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1270
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1271
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1272
+ //
1273
+ // For example:
1274
+ //
1275
+ // `"projects/my-project/locations/global/buckets/my-bucket"`
1276
+ string name = 1 [
1277
+ (google.api.field_behavior) = REQUIRED,
1278
+ (google.api.resource_reference) = {
1279
+ type: "logging.googleapis.com/LogBucket"
1280
+ }
1281
+ ];
1282
+ }
1283
+
1284
+ // The parameters to `UndeleteBucket`.
1285
+ message UndeleteBucketRequest {
1286
+ // Required. The full resource name of the bucket to undelete.
1287
+ //
1288
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1289
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1290
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1291
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1292
+ //
1293
+ // For example:
1294
+ //
1295
+ // `"projects/my-project/locations/global/buckets/my-bucket"`
1296
+ string name = 1 [
1297
+ (google.api.field_behavior) = REQUIRED,
1298
+ (google.api.resource_reference) = {
1299
+ type: "logging.googleapis.com/LogBucket"
1300
+ }
1301
+ ];
1302
+ }
1303
+
1304
+ // The parameters to `ListViews`.
1305
+ message ListViewsRequest {
1306
+ // Required. The bucket whose views are to be listed:
1307
+ //
1308
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1309
+ string parent = 1 [(google.api.field_behavior) = REQUIRED];
1310
+
1311
+ // Optional. If present, then retrieve the next batch of results from the
1312
+ // preceding call to this method. `pageToken` must be the value of
1313
+ // `nextPageToken` from the previous response. The values of other method
1314
+ // parameters should be identical to those in the previous call.
1315
+ string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
1316
+
1317
+ // Optional. The maximum number of results to return from this request.
1318
+ //
1319
+ // Non-positive values are ignored. The presence of `nextPageToken` in the
1320
+ // response indicates that more results might be available.
1321
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
1322
+ }
1323
+
1324
+ // The response from ListViews.
1325
+ message ListViewsResponse {
1326
+ // A list of views.
1327
+ repeated LogView views = 1;
1328
+
1329
+ // If there might be more results than appear in this response, then
1330
+ // `nextPageToken` is included. To get the next set of results, call the same
1331
+ // method again using the value of `nextPageToken` as `pageToken`.
1332
+ string next_page_token = 2;
1333
+ }
1334
+
1335
+ // The parameters to `CreateView`.
1336
+ message CreateViewRequest {
1337
+ // Required. The bucket in which to create the view
1338
+ //
1339
+ // `"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"`
1340
+ //
1341
+ // For example:
1342
+ //
1343
+ // `"projects/my-project/locations/global/buckets/my-bucket"`
1344
+ string parent = 1 [(google.api.field_behavior) = REQUIRED];
1345
+
1346
+ // Required. A client-assigned identifier such as `"my-view"`. Identifiers are
1347
+ // limited to 100 characters and can include only letters, digits,
1348
+ // underscores, hyphens, and periods.
1349
+ string view_id = 2 [(google.api.field_behavior) = REQUIRED];
1350
+
1351
+ // Required. The new view.
1352
+ LogView view = 3 [(google.api.field_behavior) = REQUIRED];
1353
+ }
1354
+
1355
+ // The parameters to `UpdateView`.
1356
+ message UpdateViewRequest {
1357
+ // Required. The full resource name of the view to update
1358
+ //
1359
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]"
1360
+ //
1361
+ // For example:
1362
+ //
1363
+ // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"`
1364
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
1365
+
1366
+ // Required. The updated view.
1367
+ LogView view = 2 [(google.api.field_behavior) = REQUIRED];
1368
+
1369
+ // Optional. Field mask that specifies the fields in `view` that need
1370
+ // an update. A field will be overwritten if, and only if, it is
1371
+ // in the update mask. `name` and output only fields cannot be updated.
1372
+ //
1373
+ // For a detailed `FieldMask` definition, see
1374
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask
1375
+ //
1376
+ // For example: `updateMask=filter`
1377
+ google.protobuf.FieldMask update_mask = 4
1378
+ [(google.api.field_behavior) = OPTIONAL];
1379
+ }
1380
+
1381
+ // The parameters to `GetView`.
1382
+ message GetViewRequest {
1383
+ // Required. The resource name of the policy:
1384
+ //
1385
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]"
1386
+ //
1387
+ // For example:
1388
+ //
1389
+ // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"`
1390
+ string name = 1 [
1391
+ (google.api.field_behavior) = REQUIRED,
1392
+ (google.api.resource_reference) = { type: "logging.googleapis.com/LogView" }
1393
+ ];
1394
+ }
1395
+
1396
+ // The parameters to `DeleteView`.
1397
+ message DeleteViewRequest {
1398
+ // Required. The full resource name of the view to delete:
1399
+ //
1400
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]"
1401
+ //
1402
+ // For example:
1403
+ //
1404
+ // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"`
1405
+ string name = 1 [
1406
+ (google.api.field_behavior) = REQUIRED,
1407
+ (google.api.resource_reference) = { type: "logging.googleapis.com/LogView" }
1408
+ ];
1409
+ }
1410
+
1411
+ // The parameters to `ListSinks`.
1412
+ message ListSinksRequest {
1413
+ // Required. The parent resource whose sinks are to be listed:
1414
+ //
1415
+ // "projects/[PROJECT_ID]"
1416
+ // "organizations/[ORGANIZATION_ID]"
1417
+ // "billingAccounts/[BILLING_ACCOUNT_ID]"
1418
+ // "folders/[FOLDER_ID]"
1419
+ string parent = 1 [
1420
+ (google.api.field_behavior) = REQUIRED,
1421
+ (google.api.resource_reference) = {
1422
+ child_type: "logging.googleapis.com/LogSink"
1423
+ }
1424
+ ];
1425
+
1426
+ // Optional. If present, then retrieve the next batch of results from the
1427
+ // preceding call to this method. `pageToken` must be the value of
1428
+ // `nextPageToken` from the previous response. The values of other method
1429
+ // parameters should be identical to those in the previous call.
1430
+ string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
1431
+
1432
+ // Optional. The maximum number of results to return from this request.
1433
+ // Non-positive values are ignored. The presence of `nextPageToken` in the
1434
+ // response indicates that more results might be available.
1435
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
1436
+ }
1437
+
1438
+ // Result returned from `ListSinks`.
1439
+ message ListSinksResponse {
1440
+ // A list of sinks.
1441
+ repeated LogSink sinks = 1;
1442
+
1443
+ // If there might be more results than appear in this response, then
1444
+ // `nextPageToken` is included. To get the next set of results, call the same
1445
+ // method again using the value of `nextPageToken` as `pageToken`.
1446
+ string next_page_token = 2;
1447
+ }
1448
+
1449
+ // The parameters to `GetSink`.
1450
+ message GetSinkRequest {
1451
+ // Required. The resource name of the sink:
1452
+ //
1453
+ // "projects/[PROJECT_ID]/sinks/[SINK_ID]"
1454
+ // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
1455
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
1456
+ // "folders/[FOLDER_ID]/sinks/[SINK_ID]"
1457
+ //
1458
+ // For example:
1459
+ //
1460
+ // `"projects/my-project/sinks/my-sink"`
1461
+ string sink_name = 1 [
1462
+ (google.api.field_behavior) = REQUIRED,
1463
+ (google.api.resource_reference) = { type: "logging.googleapis.com/LogSink" }
1464
+ ];
1465
+ }
1466
+
1467
+ // The parameters to `CreateSink`.
1468
+ message CreateSinkRequest {
1469
+ // Required. The resource in which to create the sink:
1470
+ //
1471
+ // "projects/[PROJECT_ID]"
1472
+ // "organizations/[ORGANIZATION_ID]"
1473
+ // "billingAccounts/[BILLING_ACCOUNT_ID]"
1474
+ // "folders/[FOLDER_ID]"
1475
+ //
1476
+ // For examples:
1477
+ //
1478
+ // `"projects/my-project"`
1479
+ // `"organizations/123456789"`
1480
+ string parent = 1 [
1481
+ (google.api.field_behavior) = REQUIRED,
1482
+ (google.api.resource_reference) = {
1483
+ child_type: "logging.googleapis.com/LogSink"
1484
+ }
1485
+ ];
1486
+
1487
+ // Required. The new sink, whose `name` parameter is a sink identifier that
1488
+ // is not already in use.
1489
+ LogSink sink = 2 [(google.api.field_behavior) = REQUIRED];
1490
+
1491
+ // Optional. Determines the kind of IAM identity returned as `writer_identity`
1492
+ // in the new sink. If this value is omitted or set to false, and if the
1493
+ // sink's parent is a project, then the value returned as `writer_identity` is
1494
+ // the same group or service account used by Cloud Logging before the addition
1495
+ // of writer identities to this API. The sink's destination must be in the
1496
+ // same project as the sink itself.
1497
+ //
1498
+ // If this field is set to true, or if the sink is owned by a non-project
1499
+ // resource such as an organization, then the value of `writer_identity` will
1500
+ // be a unique service account used only for exports from the new sink. For
1501
+ // more information, see `writer_identity` in
1502
+ // [LogSink][google.logging.v2.LogSink].
1503
+ bool unique_writer_identity = 3 [(google.api.field_behavior) = OPTIONAL];
1504
+ }
1505
+
1506
+ // The parameters to `UpdateSink`.
1507
+ message UpdateSinkRequest {
1508
+ // Required. The full resource name of the sink to update, including the
1509
+ // parent resource and the sink identifier:
1510
+ //
1511
+ // "projects/[PROJECT_ID]/sinks/[SINK_ID]"
1512
+ // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
1513
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
1514
+ // "folders/[FOLDER_ID]/sinks/[SINK_ID]"
1515
+ //
1516
+ // For example:
1517
+ //
1518
+ // `"projects/my-project/sinks/my-sink"`
1519
+ string sink_name = 1 [
1520
+ (google.api.field_behavior) = REQUIRED,
1521
+ (google.api.resource_reference) = { type: "logging.googleapis.com/LogSink" }
1522
+ ];
1523
+
1524
+ // Required. The updated sink, whose name is the same identifier that appears
1525
+ // as part of `sink_name`.
1526
+ LogSink sink = 2 [(google.api.field_behavior) = REQUIRED];
1527
+
1528
+ // Optional. See [sinks.create][google.logging.v2.ConfigServiceV2.CreateSink]
1529
+ // for a description of this field. When updating a sink, the effect of this
1530
+ // field on the value of `writer_identity` in the updated sink depends on both
1531
+ // the old and new values of this field:
1532
+ //
1533
+ // + If the old and new values of this field are both false or both true,
1534
+ // then there is no change to the sink's `writer_identity`.
1535
+ // + If the old value is false and the new value is true, then
1536
+ // `writer_identity` is changed to a unique service account.
1537
+ // + It is an error if the old value is true and the new value is
1538
+ // set to false or defaulted to false.
1539
+ bool unique_writer_identity = 3 [(google.api.field_behavior) = OPTIONAL];
1540
+
1541
+ // Optional. Field mask that specifies the fields in `sink` that need
1542
+ // an update. A sink field will be overwritten if, and only if, it is
1543
+ // in the update mask. `name` and output only fields cannot be updated.
1544
+ //
1545
+ // An empty `updateMask` is temporarily treated as using the following mask
1546
+ // for backwards compatibility purposes:
1547
+ //
1548
+ // `destination,filter,includeChildren`
1549
+ //
1550
+ // At some point in the future, behavior will be removed and specifying an
1551
+ // empty `updateMask` will be an error.
1552
+ //
1553
+ // For a detailed `FieldMask` definition, see
1554
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask
1555
+ //
1556
+ // For example: `updateMask=filter`
1557
+ google.protobuf.FieldMask update_mask = 4
1558
+ [(google.api.field_behavior) = OPTIONAL];
1559
+ }
1560
+
1561
+ // The parameters to `DeleteSink`.
1562
+ message DeleteSinkRequest {
1563
+ // Required. The full resource name of the sink to delete, including the
1564
+ // parent resource and the sink identifier:
1565
+ //
1566
+ // "projects/[PROJECT_ID]/sinks/[SINK_ID]"
1567
+ // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
1568
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
1569
+ // "folders/[FOLDER_ID]/sinks/[SINK_ID]"
1570
+ //
1571
+ // For example:
1572
+ //
1573
+ // `"projects/my-project/sinks/my-sink"`
1574
+ string sink_name = 1 [
1575
+ (google.api.field_behavior) = REQUIRED,
1576
+ (google.api.resource_reference) = { type: "logging.googleapis.com/LogSink" }
1577
+ ];
1578
+ }
1579
+
1580
+ // The parameters to CreateLink.
1581
+ message CreateLinkRequest {
1582
+ // Required. The full resource name of the bucket to create a link for.
1583
+ //
1584
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1585
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1586
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1587
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
1588
+ string parent = 1 [
1589
+ (google.api.field_behavior) = REQUIRED,
1590
+ (google.api.resource_reference) = {
1591
+ child_type: "logging.googleapis.com/Link"
1592
+ }
1593
+ ];
1594
+
1595
+ // Required. The new link.
1596
+ Link link = 2 [(google.api.field_behavior) = REQUIRED];
1597
+
1598
+ // Required. The ID to use for the link. The link_id can have up to 100
1599
+ // characters. A valid link_id must only have alphanumeric characters and
1600
+ // underscores within it.
1601
+ string link_id = 3 [(google.api.field_behavior) = REQUIRED];
1602
+ }
1603
+
1604
+ // The parameters to DeleteLink.
1605
+ message DeleteLinkRequest {
1606
+ // Required. The full resource name of the link to delete.
1607
+ //
1608
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1609
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1610
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1611
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1612
+ string name = 1 [
1613
+ (google.api.field_behavior) = REQUIRED,
1614
+ (google.api.resource_reference) = { type: "logging.googleapis.com/Link" }
1615
+ ];
1616
+ }
1617
+
1618
+ // The parameters to ListLinks.
1619
+ message ListLinksRequest {
1620
+ // Required. The parent resource whose links are to be listed:
1621
+ //
1622
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/"
1623
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/"
1624
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/"
1625
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/
1626
+ string parent = 1 [
1627
+ (google.api.field_behavior) = REQUIRED,
1628
+ (google.api.resource_reference) = {
1629
+ child_type: "logging.googleapis.com/Link"
1630
+ }
1631
+ ];
1632
+
1633
+ // Optional. If present, then retrieve the next batch of results from the
1634
+ // preceding call to this method. `pageToken` must be the value of
1635
+ // `nextPageToken` from the previous response.
1636
+ string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
1637
+
1638
+ // Optional. The maximum number of results to return from this request.
1639
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
1640
+ }
1641
+
1642
+ // The response from ListLinks.
1643
+ message ListLinksResponse {
1644
+ // A list of links.
1645
+ repeated Link links = 1;
1646
+
1647
+ // If there might be more results than those appearing in this response, then
1648
+ // `nextPageToken` is included. To get the next set of results, call the same
1649
+ // method again using the value of `nextPageToken` as `pageToken`.
1650
+ string next_page_token = 2;
1651
+ }
1652
+
1653
+ // The parameters to GetLink.
1654
+ message GetLinkRequest {
1655
+ // Required. The resource name of the link:
1656
+ //
1657
+ // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1658
+ // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1659
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
1660
+ // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]
1661
+ string name = 1 [
1662
+ (google.api.field_behavior) = REQUIRED,
1663
+ (google.api.resource_reference) = { type: "logging.googleapis.com/Link" }
1664
+ ];
1665
+ }
1666
+
1667
+ // Specifies a set of log entries that are filtered out by a sink. If
1668
+ // your Google Cloud resource receives a large volume of log entries, you can
1669
+ // use exclusions to reduce your chargeable logs. Note that exclusions on
1670
+ // organization-level and folder-level sinks don't apply to child resources.
1671
+ // Note also that you cannot modify the _Required sink or exclude logs from it.
1672
+ message LogExclusion {
1673
+ option (google.api.resource) = {
1674
+ type: "logging.googleapis.com/LogExclusion"
1675
+ pattern: "projects/{project}/exclusions/{exclusion}"
1676
+ pattern: "organizations/{organization}/exclusions/{exclusion}"
1677
+ pattern: "folders/{folder}/exclusions/{exclusion}"
1678
+ pattern: "billingAccounts/{billing_account}/exclusions/{exclusion}"
1679
+ };
1680
+
1681
+ // Required. A client-assigned identifier, such as
1682
+ // `"load-balancer-exclusion"`. Identifiers are limited to 100 characters and
1683
+ // can include only letters, digits, underscores, hyphens, and periods. First
1684
+ // character has to be alphanumeric.
1685
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
1686
+
1687
+ // Optional. A description of this exclusion.
1688
+ string description = 2 [(google.api.field_behavior) = OPTIONAL];
1689
+
1690
+ // Required. An [advanced logs
1691
+ // filter](https://cloud.google.com/logging/docs/view/advanced-queries) that
1692
+ // matches the log entries to be excluded. By using the [sample
1693
+ // function](https://cloud.google.com/logging/docs/view/advanced-queries#sample),
1694
+ // you can exclude less than 100% of the matching log entries.
1695
+ //
1696
+ // For example, the following query matches 99% of low-severity log entries
1697
+ // from Google Cloud Storage buckets:
1698
+ //
1699
+ // `resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)`
1700
+ string filter = 3 [(google.api.field_behavior) = REQUIRED];
1701
+
1702
+ // Optional. If set to True, then this exclusion is disabled and it does not
1703
+ // exclude any log entries. You can [update an
1704
+ // exclusion][google.logging.v2.ConfigServiceV2.UpdateExclusion] to change the
1705
+ // value of this field.
1706
+ bool disabled = 4 [(google.api.field_behavior) = OPTIONAL];
1707
+
1708
+ // Output only. The creation timestamp of the exclusion.
1709
+ //
1710
+ // This field may not be present for older exclusions.
1711
+ google.protobuf.Timestamp create_time = 5
1712
+ [(google.api.field_behavior) = OUTPUT_ONLY];
1713
+
1714
+ // Output only. The last update timestamp of the exclusion.
1715
+ //
1716
+ // This field may not be present for older exclusions.
1717
+ google.protobuf.Timestamp update_time = 6
1718
+ [(google.api.field_behavior) = OUTPUT_ONLY];
1719
+ }
1720
+
1721
+ // The parameters to `ListExclusions`.
1722
+ message ListExclusionsRequest {
1723
+ // Required. The parent resource whose exclusions are to be listed.
1724
+ //
1725
+ // "projects/[PROJECT_ID]"
1726
+ // "organizations/[ORGANIZATION_ID]"
1727
+ // "billingAccounts/[BILLING_ACCOUNT_ID]"
1728
+ // "folders/[FOLDER_ID]"
1729
+ string parent = 1 [
1730
+ (google.api.field_behavior) = REQUIRED,
1731
+ (google.api.resource_reference) = {
1732
+ child_type: "logging.googleapis.com/LogExclusion"
1733
+ }
1734
+ ];
1735
+
1736
+ // Optional. If present, then retrieve the next batch of results from the
1737
+ // preceding call to this method. `pageToken` must be the value of
1738
+ // `nextPageToken` from the previous response. The values of other method
1739
+ // parameters should be identical to those in the previous call.
1740
+ string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
1741
+
1742
+ // Optional. The maximum number of results to return from this request.
1743
+ // Non-positive values are ignored. The presence of `nextPageToken` in the
1744
+ // response indicates that more results might be available.
1745
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
1746
+ }
1747
+
1748
+ // Result returned from `ListExclusions`.
1749
+ message ListExclusionsResponse {
1750
+ // A list of exclusions.
1751
+ repeated LogExclusion exclusions = 1;
1752
+
1753
+ // If there might be more results than appear in this response, then
1754
+ // `nextPageToken` is included. To get the next set of results, call the same
1755
+ // method again using the value of `nextPageToken` as `pageToken`.
1756
+ string next_page_token = 2;
1757
+ }
1758
+
1759
+ // The parameters to `GetExclusion`.
1760
+ message GetExclusionRequest {
1761
+ // Required. The resource name of an existing exclusion:
1762
+ //
1763
+ // "projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]"
1764
+ // "organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]"
1765
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]"
1766
+ // "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]"
1767
+ //
1768
+ // For example:
1769
+ //
1770
+ // `"projects/my-project/exclusions/my-exclusion"`
1771
+ string name = 1 [
1772
+ (google.api.field_behavior) = REQUIRED,
1773
+ (google.api.resource_reference) = {
1774
+ type: "logging.googleapis.com/LogExclusion"
1775
+ }
1776
+ ];
1777
+ }
1778
+
1779
+ // The parameters to `CreateExclusion`.
1780
+ message CreateExclusionRequest {
1781
+ // Required. The parent resource in which to create the exclusion:
1782
+ //
1783
+ // "projects/[PROJECT_ID]"
1784
+ // "organizations/[ORGANIZATION_ID]"
1785
+ // "billingAccounts/[BILLING_ACCOUNT_ID]"
1786
+ // "folders/[FOLDER_ID]"
1787
+ //
1788
+ // For examples:
1789
+ //
1790
+ // `"projects/my-logging-project"`
1791
+ // `"organizations/123456789"`
1792
+ string parent = 1 [
1793
+ (google.api.field_behavior) = REQUIRED,
1794
+ (google.api.resource_reference) = {
1795
+ child_type: "logging.googleapis.com/LogExclusion"
1796
+ }
1797
+ ];
1798
+
1799
+ // Required. The new exclusion, whose `name` parameter is an exclusion name
1800
+ // that is not already used in the parent resource.
1801
+ LogExclusion exclusion = 2 [(google.api.field_behavior) = REQUIRED];
1802
+ }
1803
+
1804
+ // The parameters to `UpdateExclusion`.
1805
+ message UpdateExclusionRequest {
1806
+ // Required. The resource name of the exclusion to update:
1807
+ //
1808
+ // "projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]"
1809
+ // "organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]"
1810
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]"
1811
+ // "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]"
1812
+ //
1813
+ // For example:
1814
+ //
1815
+ // `"projects/my-project/exclusions/my-exclusion"`
1816
+ string name = 1 [
1817
+ (google.api.field_behavior) = REQUIRED,
1818
+ (google.api.resource_reference) = {
1819
+ type: "logging.googleapis.com/LogExclusion"
1820
+ }
1821
+ ];
1822
+
1823
+ // Required. New values for the existing exclusion. Only the fields specified
1824
+ // in `update_mask` are relevant.
1825
+ LogExclusion exclusion = 2 [(google.api.field_behavior) = REQUIRED];
1826
+
1827
+ // Required. A non-empty list of fields to change in the existing exclusion.
1828
+ // New values for the fields are taken from the corresponding fields in the
1829
+ // [LogExclusion][google.logging.v2.LogExclusion] included in this request.
1830
+ // Fields not mentioned in `update_mask` are not changed and are ignored in
1831
+ // the request.
1832
+ //
1833
+ // For example, to change the filter and description of an exclusion,
1834
+ // specify an `update_mask` of `"filter,description"`.
1835
+ google.protobuf.FieldMask update_mask = 3
1836
+ [(google.api.field_behavior) = REQUIRED];
1837
+ }
1838
+
1839
+ // The parameters to `DeleteExclusion`.
1840
+ message DeleteExclusionRequest {
1841
+ // Required. The resource name of an existing exclusion to delete:
1842
+ //
1843
+ // "projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]"
1844
+ // "organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]"
1845
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]"
1846
+ // "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]"
1847
+ //
1848
+ // For example:
1849
+ //
1850
+ // `"projects/my-project/exclusions/my-exclusion"`
1851
+ string name = 1 [
1852
+ (google.api.field_behavior) = REQUIRED,
1853
+ (google.api.resource_reference) = {
1854
+ type: "logging.googleapis.com/LogExclusion"
1855
+ }
1856
+ ];
1857
+ }
1858
+
1859
+ // The parameters to
1860
+ // [GetCmekSettings][google.logging.v2.ConfigServiceV2.GetCmekSettings].
1861
+ //
1862
+ // See [Enabling CMEK for Log
1863
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption) for
1864
+ // more information.
1865
+ message GetCmekSettingsRequest {
1866
+ // Required. The resource for which to retrieve CMEK settings.
1867
+ //
1868
+ // "projects/[PROJECT_ID]/cmekSettings"
1869
+ // "organizations/[ORGANIZATION_ID]/cmekSettings"
1870
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
1871
+ // "folders/[FOLDER_ID]/cmekSettings"
1872
+ //
1873
+ // For example:
1874
+ //
1875
+ // `"organizations/12345/cmekSettings"`
1876
+ //
1877
+ // Note: CMEK for the Log Router can be configured for Google Cloud projects,
1878
+ // folders, organizations and billing accounts. Once configured for an
1879
+ // organization, it applies to all projects and folders in the Google Cloud
1880
+ // organization.
1881
+ string name = 1 [
1882
+ (google.api.field_behavior) = REQUIRED,
1883
+ (google.api.resource_reference) = {
1884
+ type: "logging.googleapis.com/CmekSettings"
1885
+ }
1886
+ ];
1887
+ }
1888
+
1889
+ // The parameters to
1890
+ // [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings].
1891
+ //
1892
+ // See [Enabling CMEK for Log
1893
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption) for
1894
+ // more information.
1895
+ message UpdateCmekSettingsRequest {
1896
+ // Required. The resource name for the CMEK settings to update.
1897
+ //
1898
+ // "projects/[PROJECT_ID]/cmekSettings"
1899
+ // "organizations/[ORGANIZATION_ID]/cmekSettings"
1900
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
1901
+ // "folders/[FOLDER_ID]/cmekSettings"
1902
+ //
1903
+ // For example:
1904
+ //
1905
+ // `"organizations/12345/cmekSettings"`
1906
+ //
1907
+ // Note: CMEK for the Log Router can currently only be configured for Google
1908
+ // Cloud organizations. Once configured, it applies to all projects and
1909
+ // folders in the Google Cloud organization.
1910
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
1911
+
1912
+ // Required. The CMEK settings to update.
1913
+ //
1914
+ // See [Enabling CMEK for Log
1915
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
1916
+ // for more information.
1917
+ CmekSettings cmek_settings = 2 [(google.api.field_behavior) = REQUIRED];
1918
+
1919
+ // Optional. Field mask identifying which fields from `cmek_settings` should
1920
+ // be updated. A field will be overwritten if and only if it is in the update
1921
+ // mask. Output only fields cannot be updated.
1922
+ //
1923
+ // See [FieldMask][google.protobuf.FieldMask] for more information.
1924
+ //
1925
+ // For example: `"updateMask=kmsKeyName"`
1926
+ google.protobuf.FieldMask update_mask = 3
1927
+ [(google.api.field_behavior) = OPTIONAL];
1928
+ }
1929
+
1930
+ // Describes the customer-managed encryption key (CMEK) settings associated with
1931
+ // a project, folder, organization, billing account, or flexible resource.
1932
+ //
1933
+ // Note: CMEK for the Log Router can currently only be configured for Google
1934
+ // Cloud organizations. Once configured, it applies to all projects and folders
1935
+ // in the Google Cloud organization.
1936
+ //
1937
+ // See [Enabling CMEK for Log
1938
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption) for
1939
+ // more information.
1940
+ message CmekSettings {
1941
+ option (google.api.resource) = {
1942
+ type: "logging.googleapis.com/CmekSettings"
1943
+ pattern: "projects/{project}/cmekSettings"
1944
+ pattern: "organizations/{organization}/cmekSettings"
1945
+ pattern: "folders/{folder}/cmekSettings"
1946
+ pattern: "billingAccounts/{billing_account}/cmekSettings"
1947
+ };
1948
+
1949
+ // Output only. The resource name of the CMEK settings.
1950
+ string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1951
+
1952
+ // The resource name for the configured Cloud KMS key.
1953
+ //
1954
+ // KMS key name format:
1955
+ //
1956
+ // "projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]"
1957
+ //
1958
+ // For example:
1959
+ //
1960
+ // `"projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key"`
1961
+ //
1962
+ //
1963
+ //
1964
+ // To enable CMEK for the Log Router, set this field to a valid
1965
+ // `kms_key_name` for which the associated service account has the required
1966
+ // cloudkms.cryptoKeyEncrypterDecrypter roles assigned for the key.
1967
+ //
1968
+ // The Cloud KMS key used by the Log Router can be updated by changing the
1969
+ // `kms_key_name` to a new valid key name or disabled by setting the key name
1970
+ // to an empty string. Encryption operations that are in progress will be
1971
+ // completed with the key that was in use when they started. Decryption
1972
+ // operations will be completed using the key that was used at the time of
1973
+ // encryption unless access to that key has been revoked.
1974
+ //
1975
+ // To disable CMEK for the Log Router, set this field to an empty string.
1976
+ //
1977
+ // See [Enabling CMEK for Log
1978
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
1979
+ // for more information.
1980
+ string kms_key_name = 2;
1981
+
1982
+ // The CryptoKeyVersion resource name for the configured Cloud KMS key.
1983
+ //
1984
+ // KMS key name format:
1985
+ //
1986
+ // "projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]/cryptoKeyVersions/[VERSION]"
1987
+ //
1988
+ // For example:
1989
+ //
1990
+ // `"projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key/cryptoKeyVersions/1"`
1991
+ //
1992
+ // This is a read-only field used to convey the specific configured
1993
+ // CryptoKeyVersion of `kms_key` that has been configured. It will be
1994
+ // populated in cases where the CMEK settings are bound to a single key
1995
+ // version.
1996
+ //
1997
+ // If this field is populated, the `kms_key` is tied to a specific
1998
+ // CryptoKeyVersion.
1999
+ string kms_key_version_name = 4;
2000
+
2001
+ // Output only. The service account that will be used by the Log Router to
2002
+ // access your Cloud KMS key.
2003
+ //
2004
+ // Before enabling CMEK for Log Router, you must first assign the
2005
+ // cloudkms.cryptoKeyEncrypterDecrypter role to the service account that
2006
+ // the Log Router will use to access your Cloud KMS key. Use
2007
+ // [GetCmekSettings][google.logging.v2.ConfigServiceV2.GetCmekSettings] to
2008
+ // obtain the service account ID.
2009
+ //
2010
+ // See [Enabling CMEK for Log
2011
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
2012
+ // for more information.
2013
+ string service_account_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
2014
+ }
2015
+
2016
+ // The parameters to
2017
+ // [GetSettings][google.logging.v2.ConfigServiceV2.GetSettings].
2018
+ //
2019
+ // See [Enabling CMEK for Log
2020
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption) for
2021
+ // more information.
2022
+ message GetSettingsRequest {
2023
+ // Required. The resource for which to retrieve settings.
2024
+ //
2025
+ // "projects/[PROJECT_ID]/settings"
2026
+ // "organizations/[ORGANIZATION_ID]/settings"
2027
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/settings"
2028
+ // "folders/[FOLDER_ID]/settings"
2029
+ //
2030
+ // For example:
2031
+ //
2032
+ // `"organizations/12345/settings"`
2033
+ //
2034
+ // Note: Settings for the Log Router can be get for Google Cloud projects,
2035
+ // folders, organizations and billing accounts. Currently it can only be
2036
+ // configured for organizations. Once configured for an organization, it
2037
+ // applies to all projects and folders in the Google Cloud organization.
2038
+ string name = 1 [
2039
+ (google.api.field_behavior) = REQUIRED,
2040
+ (google.api.resource_reference) = {
2041
+ type: "logging.googleapis.com/Settings"
2042
+ }
2043
+ ];
2044
+ }
2045
+
2046
+ // The parameters to
2047
+ // [UpdateSettings][google.logging.v2.ConfigServiceV2.UpdateSettings].
2048
+ //
2049
+ // See [Enabling CMEK for Log
2050
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption) for
2051
+ // more information.
2052
+ message UpdateSettingsRequest {
2053
+ // Required. The resource name for the settings to update.
2054
+ //
2055
+ // "organizations/[ORGANIZATION_ID]/settings"
2056
+ //
2057
+ // For example:
2058
+ //
2059
+ // `"organizations/12345/settings"`
2060
+ //
2061
+ // Note: Settings for the Log Router can currently only be configured for
2062
+ // Google Cloud organizations. Once configured, it applies to all projects and
2063
+ // folders in the Google Cloud organization.
2064
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
2065
+
2066
+ // Required. The settings to update.
2067
+ //
2068
+ // See [Enabling CMEK for Log
2069
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
2070
+ // for more information.
2071
+ Settings settings = 2 [(google.api.field_behavior) = REQUIRED];
2072
+
2073
+ // Optional. Field mask identifying which fields from `settings` should
2074
+ // be updated. A field will be overwritten if and only if it is in the update
2075
+ // mask. Output only fields cannot be updated.
2076
+ //
2077
+ // See [FieldMask][google.protobuf.FieldMask] for more information.
2078
+ //
2079
+ // For example: `"updateMask=kmsKeyName"`
2080
+ google.protobuf.FieldMask update_mask = 3
2081
+ [(google.api.field_behavior) = OPTIONAL];
2082
+ }
2083
+
2084
+ // Describes the settings associated with a project, folder, organization,
2085
+ // billing account, or flexible resource.
2086
+ message Settings {
2087
+ option (google.api.resource) = {
2088
+ type: "logging.googleapis.com/Settings"
2089
+ pattern: "projects/{project}/settings"
2090
+ pattern: "organizations/{organization}/settings"
2091
+ pattern: "folders/{folder}/settings"
2092
+ pattern: "billingAccounts/{billing_account}/settings"
2093
+ };
2094
+
2095
+ // Output only. The resource name of the settings.
2096
+ string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
2097
+
2098
+ // Optional. The resource name for the configured Cloud KMS key.
2099
+ //
2100
+ // KMS key name format:
2101
+ //
2102
+ // "projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]"
2103
+ //
2104
+ // For example:
2105
+ //
2106
+ // `"projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key"`
2107
+ //
2108
+ //
2109
+ //
2110
+ // To enable CMEK for the Log Router, set this field to a valid
2111
+ // `kms_key_name` for which the associated service account has the required
2112
+ // `roles/cloudkms.cryptoKeyEncrypterDecrypter` role assigned for the key.
2113
+ //
2114
+ // The Cloud KMS key used by the Log Router can be updated by changing the
2115
+ // `kms_key_name` to a new valid key name. Encryption operations that are in
2116
+ // progress will be completed with the key that was in use when they started.
2117
+ // Decryption operations will be completed using the key that was used at the
2118
+ // time of encryption unless access to that key has been revoked.
2119
+ //
2120
+ // To disable CMEK for the Log Router, set this field to an empty string.
2121
+ //
2122
+ // See [Enabling CMEK for Log
2123
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
2124
+ // for more information.
2125
+ string kms_key_name = 2 [(google.api.field_behavior) = OPTIONAL];
2126
+
2127
+ // Output only. The service account that will be used by the Log Router to
2128
+ // access your Cloud KMS key.
2129
+ //
2130
+ // Before enabling CMEK for Log Router, you must first assign the role
2131
+ // `roles/cloudkms.cryptoKeyEncrypterDecrypter` to the service account that
2132
+ // the Log Router will use to access your Cloud KMS key. Use
2133
+ // [GetSettings][google.logging.v2.ConfigServiceV2.GetSettings] to
2134
+ // obtain the service account ID.
2135
+ //
2136
+ // See [Enabling CMEK for Log
2137
+ // Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
2138
+ // for more information.
2139
+ string kms_service_account_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
2140
+
2141
+ // Optional. The Cloud region that will be used for _Default and _Required log
2142
+ // buckets for newly created projects and folders. For example `europe-west1`.
2143
+ // This setting does not affect the location of custom log buckets.
2144
+ string storage_location = 4 [(google.api.field_behavior) = OPTIONAL];
2145
+
2146
+ // Optional. If set to true, the _Default sink in newly created projects and
2147
+ // folders will created in a disabled state. This can be used to automatically
2148
+ // disable log ingestion if there is already an aggregated sink configured in
2149
+ // the hierarchy. The _Default sink can be re-enabled manually if needed.
2150
+ bool disable_default_sink = 5 [(google.api.field_behavior) = OPTIONAL];
2151
+ }
2152
+
2153
+ // The parameters to CopyLogEntries.
2154
+ message CopyLogEntriesRequest {
2155
+ // Required. Log bucket from which to copy log entries.
2156
+ //
2157
+ // For example:
2158
+ //
2159
+ // `"projects/my-project/locations/global/buckets/my-source-bucket"`
2160
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
2161
+
2162
+ // Optional. A filter specifying which log entries to copy. The filter must be
2163
+ // no more than 20k characters. An empty filter matches all log entries.
2164
+ string filter = 3 [(google.api.field_behavior) = OPTIONAL];
2165
+
2166
+ // Required. Destination to which to copy log entries.
2167
+ string destination = 4 [(google.api.field_behavior) = REQUIRED];
2168
+ }
2169
+
2170
+ // Metadata for CopyLogEntries long running operations.
2171
+ message CopyLogEntriesMetadata {
2172
+ // The create time of an operation.
2173
+ google.protobuf.Timestamp start_time = 1;
2174
+
2175
+ // The end time of an operation.
2176
+ google.protobuf.Timestamp end_time = 2;
2177
+
2178
+ // State of an operation.
2179
+ OperationState state = 3;
2180
+
2181
+ // Identifies whether the user has requested cancellation of the operation.
2182
+ bool cancellation_requested = 4;
2183
+
2184
+ // CopyLogEntries RPC request.
2185
+ CopyLogEntriesRequest request = 5;
2186
+
2187
+ // Estimated progress of the operation (0 - 100%).
2188
+ int32 progress = 6;
2189
+
2190
+ // The IAM identity of a service account that must be granted access to the
2191
+ // destination.
2192
+ //
2193
+ // If the service account is not granted permission to the destination within
2194
+ // an hour, the operation will be cancelled.
2195
+ //
2196
+ // For example: `"serviceAccount:foo@bar.com"`
2197
+ string writer_identity = 7;
2198
+ }
2199
+
2200
+ // Response type for CopyLogEntries long running operations.
2201
+ message CopyLogEntriesResponse {
2202
+ // Number of log entries copied.
2203
+ int64 log_entries_copied_count = 1;
2204
+ }
2205
+
2206
+ // Metadata for LongRunningUpdateBucket Operations.
2207
+ message BucketMetadata {
2208
+ // The create time of an operation.
2209
+ google.protobuf.Timestamp start_time = 1;
2210
+
2211
+ // The end time of an operation.
2212
+ google.protobuf.Timestamp end_time = 2;
2213
+
2214
+ // State of an operation.
2215
+ OperationState state = 3;
2216
+
2217
+ oneof request {
2218
+ // LongRunningCreateBucket RPC request.
2219
+ CreateBucketRequest create_bucket_request = 4;
2220
+
2221
+ // LongRunningUpdateBucket RPC request.
2222
+ UpdateBucketRequest update_bucket_request = 5;
2223
+ }
2224
+ }
2225
+
2226
+ // Metadata for long running Link operations.
2227
+ message LinkMetadata {
2228
+ // The start time of an operation.
2229
+ google.protobuf.Timestamp start_time = 1;
2230
+
2231
+ // The end time of an operation.
2232
+ google.protobuf.Timestamp end_time = 2;
2233
+
2234
+ // State of an operation.
2235
+ OperationState state = 3;
2236
+
2237
+ oneof request {
2238
+ // CreateLink RPC request.
2239
+ CreateLinkRequest create_link_request = 4;
2240
+
2241
+ // DeleteLink RPC request.
2242
+ DeleteLinkRequest delete_link_request = 5;
2243
+ }
2244
+ }
2245
+
2246
+ // List of different operation states.
2247
+ // High level state of the operation. This is used to report the job's
2248
+ // current state to the user. Once a long running operation is created,
2249
+ // the current state of the operation can be queried even before the
2250
+ // operation is finished and the final result is available.
2251
+ enum OperationState {
2252
+ // Should not be used.
2253
+ OPERATION_STATE_UNSPECIFIED = 0;
2254
+
2255
+ // The operation is scheduled.
2256
+ OPERATION_STATE_SCHEDULED = 1;
2257
+
2258
+ // Waiting for necessary permissions.
2259
+ OPERATION_STATE_WAITING_FOR_PERMISSIONS = 2;
2260
+
2261
+ // The operation is running.
2262
+ OPERATION_STATE_RUNNING = 3;
2263
+
2264
+ // The operation was completed successfully.
2265
+ OPERATION_STATE_SUCCEEDED = 4;
2266
+
2267
+ // The operation failed.
2268
+ OPERATION_STATE_FAILED = 5;
2269
+
2270
+ // The operation was cancelled by the user.
2271
+ OPERATION_STATE_CANCELLED = 6;
2272
+ }
2273
+
2274
+ // LogBucket lifecycle states.
2275
+ enum LifecycleState {
2276
+ // Unspecified state. This is only used/useful for distinguishing unset
2277
+ // values.
2278
+ LIFECYCLE_STATE_UNSPECIFIED = 0;
2279
+
2280
+ // The normal and active state.
2281
+ ACTIVE = 1;
2282
+
2283
+ // The resource has been marked for deletion by the user. For some resources
2284
+ // (e.g. buckets), this can be reversed by an un-delete operation.
2285
+ DELETE_REQUESTED = 2;
2286
+
2287
+ // The resource has been marked for an update by the user. It will remain in
2288
+ // this state until the update is complete.
2289
+ UPDATING = 3;
2290
+
2291
+ // The resource has been marked for creation by the user. It will remain in
2292
+ // this state until the creation is complete.
2293
+ CREATING = 4;
2294
+
2295
+ // The resource is in an INTERNAL error state.
2296
+ FAILED = 5;
2297
+ }
2298
+
2299
+ // IndexType is used for custom indexing. It describes the type of an indexed
2300
+ // field.
2301
+ enum IndexType {
2302
+ // The index's type is unspecified.
2303
+ INDEX_TYPE_UNSPECIFIED = 0;
2304
+
2305
+ // The index is a string-type index.
2306
+ INDEX_TYPE_STRING = 1;
2307
+
2308
+ // The index is a integer-type index.
2309
+ INDEX_TYPE_INTEGER = 2;
2310
+ }
2311
+
2312
+ // Cloud Logging specific location metadata.
2313
+ message LocationMetadata {
2314
+ // Indicates whether or not Log Analytics features are supported in the given
2315
+ // location.
2316
+ bool log_analytics_enabled = 1;
2317
+ }