1// Copyright 2023 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 15syntax = "proto3"; 16 17package google.logging.v2; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/longrunning/operations.proto"; 24import "google/protobuf/empty.proto"; 25import "google/protobuf/field_mask.proto"; 26import "google/protobuf/timestamp.proto"; 27 28option cc_enable_arenas = true; 29option csharp_namespace = "Google.Cloud.Logging.V2"; 30option go_package = "cloud.google.com/go/logging/apiv2/loggingpb;loggingpb"; 31option java_multiple_files = true; 32option java_outer_classname = "LoggingConfigProto"; 33option java_package = "com.google.logging.v2"; 34option php_namespace = "Google\\Cloud\\Logging\\V2"; 35option ruby_package = "Google::Cloud::Logging::V2"; 36option (google.api.resource_definition) = { 37 type: "logging.googleapis.com/OrganizationLocation" 38 pattern: "organizations/{organization}/locations/{location}" 39}; 40option (google.api.resource_definition) = { 41 type: "logging.googleapis.com/FolderLocation" 42 pattern: "folders/{folder}/locations/{location}" 43}; 44option (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. 50service 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. 778message 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. 801message 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. 879message 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. 928message 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. 1063message 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. 1075message 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. 1119message 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`. 1142message 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. 1173message 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`. 1184message 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`. 1211message 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`. 1245message 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`. 1265message 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`. 1285message 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`. 1305message 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. 1325message 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`. 1336message 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`. 1356message 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`. 1382message 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`. 1397message 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`. 1412message 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`. 1439message 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`. 1450message 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`. 1468message 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`. 1507message 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`. 1562message 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. 1581message 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. 1605message 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. 1619message 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. 1643message 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. 1654message 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. 1672message 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`. 1722message 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`. 1749message 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`. 1760message 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`. 1780message 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`. 1805message 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`. 1840message 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. 1865message 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. 1895message 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. 1940message 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. 2022message 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. 2052message 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. 2086message 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. 2154message 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. 2171message 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:[email protected]"` 2197 string writer_identity = 7; 2198} 2199 2200// Response type for CopyLogEntries long running operations. 2201message CopyLogEntriesResponse { 2202 // Number of log entries copied. 2203 int64 log_entries_copied_count = 1; 2204} 2205 2206// Metadata for LongRunningUpdateBucket Operations. 2207message 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. 2227message 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. 2251enum 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. 2275enum 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. 2301enum 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. 2313message LocationMetadata { 2314 // Indicates whether or not Log Analytics features are supported in the given 2315 // location. 2316 bool log_analytics_enabled = 1; 2317} 2318