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.cloud.securitycenter.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/api/routing.proto"; 24import "google/cloud/securitycenter/v2/attack_path.proto"; 25import "google/cloud/securitycenter/v2/bigquery_export.proto"; 26import "google/cloud/securitycenter/v2/external_system.proto"; 27import "google/cloud/securitycenter/v2/finding.proto"; 28import "google/cloud/securitycenter/v2/mute_config.proto"; 29import "google/cloud/securitycenter/v2/notification_config.proto"; 30import "google/cloud/securitycenter/v2/resource_value_config.proto"; 31import "google/cloud/securitycenter/v2/security_marks.proto"; 32import "google/cloud/securitycenter/v2/simulation.proto"; 33import "google/cloud/securitycenter/v2/source.proto"; 34import "google/cloud/securitycenter/v2/valued_resource.proto"; 35import "google/iam/v1/iam_policy.proto"; 36import "google/iam/v1/policy.proto"; 37import "google/longrunning/operations.proto"; 38import "google/protobuf/empty.proto"; 39import "google/protobuf/field_mask.proto"; 40import "google/protobuf/struct.proto"; 41 42option csharp_namespace = "Google.Cloud.SecurityCenter.V2"; 43option go_package = "cloud.google.com/go/securitycenter/apiv2/securitycenterpb;securitycenterpb"; 44option java_multiple_files = true; 45option java_outer_classname = "SecuritycenterServiceProto"; 46option java_package = "com.google.cloud.securitycenter.v2"; 47option php_namespace = "Google\\Cloud\\SecurityCenter\\V2"; 48option ruby_package = "Google::Cloud::SecurityCenter::V2"; 49option (google.api.resource_definition) = { 50 type: "securitycenter.googleapis.com/OrganizationLocation" 51 pattern: "organizations/{organization}/locations/{location}" 52}; 53option (google.api.resource_definition) = { 54 type: "securitycenter.googleapis.com/FolderLocation" 55 pattern: "folders/{folder}/locations/{location}" 56}; 57 58// V2 APIs for Security Center service. 59service SecurityCenter { 60 option (google.api.default_host) = "securitycenter.googleapis.com"; 61 option (google.api.oauth_scopes) = 62 "https://www.googleapis.com/auth/cloud-platform"; 63 64 // Creates a ResourceValueConfig for an organization. Maps user's tags to 65 // difference resource values for use by the attack path simulation. 66 rpc BatchCreateResourceValueConfigs(BatchCreateResourceValueConfigsRequest) 67 returns (BatchCreateResourceValueConfigsResponse) { 68 option (google.api.http) = { 69 post: "/v2/{parent=organizations/*}/resourceValueConfigs:batchCreate" 70 body: "*" 71 }; 72 option (google.api.method_signature) = "parent,requests"; 73 } 74 75 // Kicks off an LRO to bulk mute findings for a parent based on a filter. If 76 // no location is specified, findings are muted in global. The parent 77 // can be either an organization, folder, or project. The findings matched by 78 // the filter will be muted after the LRO is done. 79 rpc BulkMuteFindings(BulkMuteFindingsRequest) 80 returns (google.longrunning.Operation) { 81 option (google.api.http) = { 82 post: "/v2/{parent=organizations/*}/findings:bulkMute" 83 body: "*" 84 additional_bindings { 85 post: "/v2/{parent=organizations/*/locations/*}/findings:bulkMute" 86 body: "*" 87 } 88 additional_bindings { 89 post: "/v2/{parent=folders/*}/findings:bulkMute" 90 body: "*" 91 } 92 additional_bindings { 93 post: "/v2/{parent=folders/*/locations/*}/findings:bulkMute" 94 body: "*" 95 } 96 additional_bindings { 97 post: "/v2/{parent=projects/*}/findings:bulkMute" 98 body: "*" 99 } 100 additional_bindings { 101 post: "/v2/{parent=projects/*/locations/*}/findings:bulkMute" 102 body: "*" 103 } 104 }; 105 option (google.api.method_signature) = "parent"; 106 option (google.longrunning.operation_info) = { 107 response_type: "google.cloud.securitycenter.v2.BulkMuteFindingsResponse" 108 metadata_type: "google.protobuf.Empty" 109 }; 110 } 111 112 // Creates a BigQuery export. 113 rpc CreateBigQueryExport(CreateBigQueryExportRequest) 114 returns (BigQueryExport) { 115 option (google.api.http) = { 116 post: "/v2/{parent=organizations/*/locations/*}/bigQueryExports" 117 body: "big_query_export" 118 additional_bindings { 119 post: "/v2/{parent=folders/*/locations/*}/bigQueryExports" 120 body: "big_query_export" 121 } 122 additional_bindings { 123 post: "/v2/{parent=projects/*/locations/*}/bigQueryExports" 124 body: "big_query_export" 125 } 126 }; 127 option (google.api.method_signature) = 128 "parent,big_query_export,big_query_export_id"; 129 } 130 131 // Creates a finding in a location. The corresponding source must exist for 132 // finding creation to succeed. 133 rpc CreateFinding(CreateFindingRequest) returns (Finding) { 134 option (google.api.http) = { 135 post: "/v2/{parent=organizations/*/sources/*/locations/*}/findings" 136 body: "finding" 137 additional_bindings { 138 post: "/v2/{parent=organizations/*/sources/*}/findings" 139 body: "finding" 140 } 141 }; 142 option (google.api.method_signature) = "parent,finding,finding_id"; 143 } 144 145 // Creates a mute config. 146 rpc CreateMuteConfig(CreateMuteConfigRequest) returns (MuteConfig) { 147 option (google.api.http) = { 148 post: "/v2/{parent=organizations/*/locations/*}/muteConfigs" 149 body: "mute_config" 150 additional_bindings { 151 post: "/v2/{parent=folders/*/locations/*}/muteConfigs" 152 body: "mute_config" 153 } 154 additional_bindings { 155 post: "/v2/{parent=projects/*/locations/*}/muteConfigs" 156 body: "mute_config" 157 } 158 additional_bindings { 159 post: "/v2/{parent=organizations/*}/muteConfigs" 160 body: "mute_config" 161 } 162 additional_bindings { 163 post: "/v2/{parent=folders/*}/muteConfigs" 164 body: "mute_config" 165 } 166 additional_bindings { 167 post: "/v2/{parent=projects/*}/muteConfigs" 168 body: "mute_config" 169 } 170 }; 171 option (google.api.routing) = { 172 routing_parameters { 173 field: "parent" 174 path_template: "projects/*/locations/{location=*}" 175 } 176 routing_parameters { 177 field: "parent" 178 path_template: "organizations/*/locations/{location=*}" 179 } 180 routing_parameters { 181 field: "parent" 182 path_template: "folders/*/locations/{location=*}" 183 } 184 }; 185 option (google.api.method_signature) = "parent,mute_config,mute_config_id"; 186 } 187 188 // Creates a notification config. 189 rpc CreateNotificationConfig(CreateNotificationConfigRequest) 190 returns (NotificationConfig) { 191 option (google.api.http) = { 192 post: "/v2/{parent=organizations/*/locations/*}/notificationConfigs" 193 body: "notification_config" 194 additional_bindings { 195 post: "/v2/{parent=folders/*/locations/*}/notificationConfigs" 196 body: "notification_config" 197 } 198 additional_bindings { 199 post: "/v2/{parent=projects/*/locations/*}/notificationConfigs" 200 body: "notification_config" 201 } 202 }; 203 option (google.api.method_signature) = 204 "parent,notification_config,config_id"; 205 } 206 207 // Creates a source. 208 rpc CreateSource(CreateSourceRequest) returns (Source) { 209 option (google.api.http) = { 210 post: "/v2/{parent=organizations/*}/sources" 211 body: "source" 212 }; 213 option (google.api.method_signature) = "parent,source"; 214 } 215 216 // Deletes an existing BigQuery export. 217 rpc DeleteBigQueryExport(DeleteBigQueryExportRequest) 218 returns (google.protobuf.Empty) { 219 option (google.api.http) = { 220 delete: "/v2/{name=organizations/*/locations/*/bigQueryExports/*}" 221 additional_bindings { 222 delete: "/v2/{name=folders/*/locations/*/bigQueryExports/*}" 223 } 224 additional_bindings { 225 delete: "/v2/{name=projects/*/locations/*/bigQueryExports/*}" 226 } 227 }; 228 option (google.api.method_signature) = "name"; 229 } 230 231 // Deletes an existing mute config. If no location is specified, default is 232 // global. 233 rpc DeleteMuteConfig(DeleteMuteConfigRequest) 234 returns (google.protobuf.Empty) { 235 option (google.api.http) = { 236 delete: "/v2/{name=organizations/*/muteConfigs/*}" 237 additional_bindings { 238 delete: "/v2/{name=organizations/*/locations/*/muteConfigs/*}" 239 } 240 additional_bindings { delete: "/v2/{name=folders/*/muteConfigs/*}" } 241 additional_bindings { 242 delete: "/v2/{name=folders/*/locations/*/muteConfigs/*}" 243 } 244 additional_bindings { delete: "/v2/{name=projects/*/muteConfigs/*}" } 245 additional_bindings { 246 delete: "/v2/{name=projects/*/locations/*/muteConfigs/*}" 247 } 248 }; 249 option (google.api.routing) = { 250 routing_parameters { 251 field: "name" 252 path_template: "projects/*/locations/{location=*}/muteConfigs/*" 253 } 254 routing_parameters { 255 field: "name" 256 path_template: "organizations/*/locations/{location=*}/muteConfigs/*" 257 } 258 routing_parameters { 259 field: "name" 260 path_template: "folders/*/locations/{location=*}/muteConfigs/*" 261 } 262 }; 263 option (google.api.method_signature) = "name"; 264 } 265 266 // Deletes a notification config. 267 rpc DeleteNotificationConfig(DeleteNotificationConfigRequest) 268 returns (google.protobuf.Empty) { 269 option (google.api.http) = { 270 delete: "/v2/{name=organizations/*/locations/*/notificationConfigs/*}" 271 additional_bindings { 272 delete: "/v2/{name=folders/*/locations/*/notificationConfigs/*}" 273 } 274 additional_bindings { 275 delete: "/v2/{name=projects/*/locations/*/notificationConfigs/*}" 276 } 277 }; 278 option (google.api.method_signature) = "name"; 279 } 280 281 // Deletes a ResourceValueConfig. 282 rpc DeleteResourceValueConfig(DeleteResourceValueConfigRequest) 283 returns (google.protobuf.Empty) { 284 option (google.api.http) = { 285 delete: "/v2/{name=organizations/*/resourceValueConfigs/*}" 286 }; 287 option (google.api.method_signature) = "name"; 288 } 289 290 // Gets a BigQuery export. 291 rpc GetBigQueryExport(GetBigQueryExportRequest) returns (BigQueryExport) { 292 option (google.api.http) = { 293 get: "/v2/{name=organizations/*/locations/*/bigQueryExports/*}" 294 additional_bindings { 295 get: "/v2/{name=folders/*/locations/*/bigQueryExports/*}" 296 } 297 additional_bindings { 298 get: "/v2/{name=projects/*/locations/*/bigQueryExports/*}" 299 } 300 }; 301 option (google.api.method_signature) = "name"; 302 } 303 304 // Get the simulation by name or the latest simulation for the given 305 // organization. 306 rpc GetSimulation(GetSimulationRequest) returns (Simulation) { 307 option (google.api.http) = { 308 get: "/v2/{name=organizations/*/simulations/*}" 309 }; 310 option (google.api.method_signature) = "name"; 311 } 312 313 // Get the valued resource by name 314 rpc GetValuedResource(GetValuedResourceRequest) returns (ValuedResource) { 315 option (google.api.http) = { 316 get: "/v2/{name=organizations/*/simulations/*/valuedResources/*}" 317 }; 318 option (google.api.method_signature) = "name"; 319 } 320 321 // Gets the access control policy on the specified Source. 322 rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) 323 returns (google.iam.v1.Policy) { 324 option (google.api.http) = { 325 post: "/v2/{resource=organizations/*/sources/*}:getIamPolicy" 326 body: "*" 327 }; 328 option (google.api.method_signature) = "resource"; 329 } 330 331 // Gets a mute config. If no location is specified, default is 332 // global. 333 rpc GetMuteConfig(GetMuteConfigRequest) returns (MuteConfig) { 334 option (google.api.http) = { 335 get: "/v2/{name=organizations/*/muteConfigs/*}" 336 additional_bindings { 337 get: "/v2/{name=organizations/*/locations/*/muteConfigs/*}" 338 } 339 additional_bindings { get: "/v2/{name=folders/*/muteConfigs/*}" } 340 additional_bindings { 341 get: "/v2/{name=folders/*/locations/*/muteConfigs/*}" 342 } 343 additional_bindings { get: "/v2/{name=projects/*/muteConfigs/*}" } 344 additional_bindings { 345 get: "/v2/{name=projects/*/locations/*/muteConfigs/*}" 346 } 347 }; 348 option (google.api.routing) = { 349 routing_parameters { 350 field: "name" 351 path_template: "projects/*/locations/{location=*}/muteConfigs/*" 352 } 353 routing_parameters { 354 field: "name" 355 path_template: "organizations/*/locations/{location=*}/muteConfigs/*" 356 } 357 routing_parameters { 358 field: "name" 359 path_template: "folders/*/locations/{location=*}/muteConfigs/*" 360 } 361 }; 362 option (google.api.method_signature) = "name"; 363 } 364 365 // Gets a notification config. 366 rpc GetNotificationConfig(GetNotificationConfigRequest) 367 returns (NotificationConfig) { 368 option (google.api.http) = { 369 get: "/v2/{name=organizations/*/locations/*/notificationConfigs/*}" 370 additional_bindings { 371 get: "/v2/{name=folders/*/locations/*/notificationConfigs/*}" 372 } 373 additional_bindings { 374 get: "/v2/{name=projects/*/locations/*/notificationConfigs/*}" 375 } 376 }; 377 option (google.api.method_signature) = "name"; 378 } 379 380 // Gets a ResourceValueConfig. 381 rpc GetResourceValueConfig(GetResourceValueConfigRequest) 382 returns (ResourceValueConfig) { 383 option (google.api.http) = { 384 get: "/v2/{name=organizations/*/resourceValueConfigs/*}" 385 }; 386 option (google.api.method_signature) = "name"; 387 } 388 389 // Gets a source. 390 rpc GetSource(GetSourceRequest) returns (Source) { 391 option (google.api.http) = { 392 get: "/v2/{name=organizations/*/sources/*}" 393 }; 394 option (google.api.method_signature) = "name"; 395 } 396 397 // Filters an organization or source's findings and groups them by their 398 // specified properties in a location. If no location is specified, findings 399 // are assumed to be in global 400 // 401 // To group across all sources provide a `-` as the source id. 402 // The following list shows some examples: 403 // 404 // + `/v2/organizations/{organization_id}/sources/-/findings` 405 // + 406 // `/v2/organizations/{organization_id}/sources/-/locations/{location_id}/findings` 407 // + `/v2/folders/{folder_id}/sources/-/findings` 408 // + `/v2/folders/{folder_id}/sources/-/locations/{location_id}/findings` 409 // + `/v2/projects/{project_id}/sources/-/findings` 410 // + `/v2/projects/{project_id}/sources/-/locations/{location_id}/findings` 411 rpc GroupFindings(GroupFindingsRequest) returns (GroupFindingsResponse) { 412 option (google.api.http) = { 413 post: "/v2/{parent=organizations/*/sources/*}/findings:group" 414 body: "*" 415 additional_bindings { 416 post: "/v2/{parent=organizations/*/sources/*/locations/*}/findings:group" 417 body: "*" 418 } 419 additional_bindings { 420 post: "/v2/{parent=folders/*/sources/*}/findings:group" 421 body: "*" 422 } 423 additional_bindings { 424 post: "/v2/{parent=folders/*/sources/*/locations/*}/findings:group" 425 body: "*" 426 } 427 additional_bindings { 428 post: "/v2/{parent=projects/*/sources/*}/findings:group" 429 body: "*" 430 } 431 additional_bindings { 432 post: "/v2/{parent=projects/*/sources/*/locations/*}/findings:group" 433 body: "*" 434 } 435 }; 436 option (google.api.method_signature) = "parent,group_by"; 437 } 438 439 // Lists the attack paths for a set of simulation results or valued resources 440 // and filter. 441 rpc ListAttackPaths(ListAttackPathsRequest) 442 returns (ListAttackPathsResponse) { 443 option (google.api.http) = { 444 get: "/v2/{parent=organizations/*/simulations/*}/attackPaths" 445 additional_bindings { 446 get: "/v2/{parent=organizations/*/simulations/*/valuedResources/*}/attackPaths" 447 } 448 additional_bindings { 449 get: "/v2/{parent=organizations/*/simulations/*/attackExposureResults/*}/attackPaths" 450 } 451 }; 452 option (google.api.method_signature) = "parent"; 453 } 454 455 // Lists BigQuery exports. Note that when requesting BigQuery exports at a 456 // given level all exports under that level are also returned e.g. if 457 // requesting BigQuery exports under a folder, then all BigQuery exports 458 // immediately under the folder plus the ones created under the projects 459 // within the folder are returned. 460 rpc ListBigQueryExports(ListBigQueryExportsRequest) 461 returns (ListBigQueryExportsResponse) { 462 option (google.api.http) = { 463 get: "/v2/{parent=organizations/*/locations/*}/bigQueryExports" 464 additional_bindings { 465 get: "/v2/{parent=folders/*/locations/*}/bigQueryExports" 466 } 467 additional_bindings { 468 get: "/v2/{parent=projects/*/locations/*}/bigQueryExports" 469 } 470 }; 471 option (google.api.method_signature) = "parent"; 472 } 473 474 // Lists an organization or source's findings. 475 // 476 // To list across all sources for a given location provide a `-` as the source 477 // id. If no location is specified, finding are assumed to be in global. 478 // The following list shows some examples: 479 // 480 // + `/v2/organizations/{organization_id}/sources/-/findings` 481 // + 482 // `/v2/organizations/{organization_id}/sources/-/locations/{location_id}/findings` 483 rpc ListFindings(ListFindingsRequest) returns (ListFindingsResponse) { 484 option (google.api.http) = { 485 get: "/v2/{parent=organizations/*/sources/*}/findings" 486 additional_bindings { 487 get: "/v2/{parent=organizations/*/sources/*/locations/*}/findings" 488 } 489 additional_bindings { get: "/v2/{parent=folders/*/sources/*}/findings" } 490 additional_bindings { 491 get: "/v2/{parent=folders/*/sources/*/locations/*}/findings" 492 } 493 additional_bindings { get: "/v2/{parent=projects/*/sources/*}/findings" } 494 additional_bindings { 495 get: "/v2/{parent=projects/*/sources/*/locations/*}/findings" 496 } 497 }; 498 option (google.api.method_signature) = "parent"; 499 } 500 501 // Lists mute configs. If no location is specified, default is 502 // global. 503 rpc ListMuteConfigs(ListMuteConfigsRequest) 504 returns (ListMuteConfigsResponse) { 505 option (google.api.http) = { 506 get: "/v2/{parent=organizations/*}/muteConfigs" 507 additional_bindings { 508 get: "/v2/{parent=organizations/*/locations/*}/muteConfigs" 509 } 510 additional_bindings { get: "/v2/{parent=folders/*}/muteConfigs" } 511 additional_bindings { 512 get: "/v2/{parent=folders/*/locations/*}/muteConfigs" 513 } 514 additional_bindings { get: "/v2/{parent=projects/*}/muteConfigs" } 515 additional_bindings { 516 get: "/v2/{parent=projects/*/locations/*}/muteConfigs" 517 } 518 }; 519 option (google.api.routing) = { 520 routing_parameters { 521 field: "parent" 522 path_template: "projects/*/locations/{location=*}/muteConfigs" 523 } 524 routing_parameters { 525 field: "parent" 526 path_template: "organizations/*/locations/{location=*}/muteConfigs" 527 } 528 routing_parameters { 529 field: "parent" 530 path_template: "folders/*/locations/{location=*}/muteConfigs" 531 } 532 }; 533 option (google.api.method_signature) = "parent"; 534 } 535 536 // Lists notification configs. 537 rpc ListNotificationConfigs(ListNotificationConfigsRequest) 538 returns (ListNotificationConfigsResponse) { 539 option (google.api.http) = { 540 get: "/v2/{parent=organizations/*/locations/*}/notificationConfigs" 541 additional_bindings { 542 get: "/v2/{parent=folders/*/locations/*}/notificationConfigs" 543 } 544 additional_bindings { 545 get: "/v2/{parent=projects/*/locations/*}/notificationConfigs" 546 } 547 }; 548 option (google.api.method_signature) = "parent"; 549 } 550 551 // Lists all ResourceValueConfigs. 552 rpc ListResourceValueConfigs(ListResourceValueConfigsRequest) 553 returns (ListResourceValueConfigsResponse) { 554 option (google.api.http) = { 555 get: "/v2/{parent=organizations/*}/resourceValueConfigs" 556 }; 557 option (google.api.method_signature) = "parent"; 558 } 559 560 // Lists all sources belonging to an organization. 561 rpc ListSources(ListSourcesRequest) returns (ListSourcesResponse) { 562 option (google.api.http) = { 563 get: "/v2/{parent=organizations/*}/sources" 564 additional_bindings { get: "/v2/{parent=folders/*}/sources" } 565 additional_bindings { get: "/v2/{parent=projects/*}/sources" } 566 }; 567 option (google.api.method_signature) = "parent"; 568 } 569 570 // Lists the valued resources for a set of simulation results and filter. 571 rpc ListValuedResources(ListValuedResourcesRequest) 572 returns (ListValuedResourcesResponse) { 573 option (google.api.http) = { 574 get: "/v2/{parent=organizations/*/simulations/*}/valuedResources" 575 additional_bindings { 576 get: "/v2/{parent=organizations/*/simulations/*/attackExposureResults/*}/valuedResources" 577 } 578 }; 579 option (google.api.method_signature) = "parent"; 580 } 581 582 // Updates the state of a finding. If no location is specified, finding is 583 // assumed to be in global 584 rpc SetFindingState(SetFindingStateRequest) returns (Finding) { 585 option (google.api.http) = { 586 post: "/v2/{name=organizations/*/sources/*/findings/*}:setState" 587 body: "*" 588 additional_bindings { 589 post: "/v2/{name=organizations/*/sources/*/locations/*/findings/*}:setState" 590 body: "*" 591 } 592 additional_bindings { 593 post: "/v2/{name=folders/*/sources/*/findings/*}:setState" 594 body: "*" 595 } 596 additional_bindings { 597 post: "/v2/{name=folders/*/sources/*/locations/*/findings/*}:setState" 598 body: "*" 599 } 600 additional_bindings { 601 post: "/v2/{name=projects/*/sources/*/findings/*}:setState" 602 body: "*" 603 } 604 additional_bindings { 605 post: "/v2/{name=projects/*/sources/*/locations/*/findings/*}:setState" 606 body: "*" 607 } 608 }; 609 option (google.api.method_signature) = "name,state"; 610 } 611 612 // Sets the access control policy on the specified Source. 613 rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) 614 returns (google.iam.v1.Policy) { 615 option (google.api.http) = { 616 post: "/v2/{resource=organizations/*/sources/*}:setIamPolicy" 617 body: "*" 618 }; 619 option (google.api.method_signature) = "resource,policy"; 620 } 621 622 // Updates the mute state of a finding. If no location is specified, finding 623 // is assumed to be in global 624 rpc SetMute(SetMuteRequest) returns (Finding) { 625 option (google.api.http) = { 626 post: "/v2/{name=organizations/*/sources/*/findings/*}:setMute" 627 body: "*" 628 additional_bindings { 629 post: "/v2/{name=organizations/*/sources/*/locations/*/findings/*}:setMute" 630 body: "*" 631 } 632 additional_bindings { 633 post: "/v2/{name=folders/*/sources/*/findings/*}:setMute" 634 body: "*" 635 } 636 additional_bindings { 637 post: "/v2/{name=folders/*/sources/*/locations/*/findings/*}:setMute" 638 body: "*" 639 } 640 additional_bindings { 641 post: "/v2/{name=projects/*/sources/*/findings/*}:setMute" 642 body: "*" 643 } 644 additional_bindings { 645 post: "/v2/{name=projects/*/sources/*/locations/*/findings/*}:setMute" 646 body: "*" 647 } 648 }; 649 option (google.api.method_signature) = "name,mute"; 650 } 651 652 // Returns the permissions that a caller has on the specified source. 653 rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) 654 returns (google.iam.v1.TestIamPermissionsResponse) { 655 option (google.api.http) = { 656 post: "/v2/{resource=organizations/*/sources/*}:testIamPermissions" 657 body: "*" 658 }; 659 option (google.api.method_signature) = "resource,permissions"; 660 } 661 662 // Updates a BigQuery export. 663 rpc UpdateBigQueryExport(UpdateBigQueryExportRequest) 664 returns (BigQueryExport) { 665 option (google.api.http) = { 666 patch: "/v2/{big_query_export.name=organizations/*/locations/*/bigQueryExports/*}" 667 body: "big_query_export" 668 additional_bindings { 669 patch: "/v2/{big_query_export.name=folders/*/locations/*/bigQueryExports/*}" 670 body: "big_query_export" 671 } 672 additional_bindings { 673 patch: "/v2/{big_query_export.name=projects/*/locations/*/bigQueryExports/*}" 674 body: "big_query_export" 675 } 676 }; 677 option (google.api.method_signature) = "big_query_export,update_mask"; 678 } 679 680 // Updates external system. This is for a given finding. If no location is 681 // specified, finding is assumed to be in global 682 rpc UpdateExternalSystem(UpdateExternalSystemRequest) 683 returns (ExternalSystem) { 684 option (google.api.http) = { 685 patch: "/v2/{external_system.name=organizations/*/sources/*/findings/*/externalSystems/*}" 686 body: "external_system" 687 additional_bindings { 688 patch: "/v2/{external_system.name=organizations/*/sources/*/locations/*/findings/*/externalSystems/*}" 689 body: "external_system" 690 } 691 additional_bindings { 692 patch: "/v2/{external_system.name=folders/*/sources/*/findings/*/externalSystems/*}" 693 body: "external_system" 694 } 695 additional_bindings { 696 patch: "/v2/{external_system.name=folders/*/sources/*/locations/*/findings/*/externalSystems/*}" 697 body: "external_system" 698 } 699 additional_bindings { 700 patch: "/v2/{external_system.name=projects/*/sources/*/findings/*/externalSystems/*}" 701 body: "external_system" 702 } 703 additional_bindings { 704 patch: "/v2/{external_system.name=projects/*/sources/*/locations/*/findings/*/externalSystems/*}" 705 body: "external_system" 706 } 707 }; 708 option (google.api.method_signature) = "external_system,update_mask"; 709 } 710 711 // Creates or updates a finding. If no location is specified, finding is 712 // assumed to be in global. The corresponding source must exist for a finding 713 // creation to succeed. 714 rpc UpdateFinding(UpdateFindingRequest) returns (Finding) { 715 option (google.api.http) = { 716 patch: "/v2/{finding.name=organizations/*/sources/*/findings/*}" 717 body: "finding" 718 additional_bindings { 719 patch: "/v2/{finding.name=organizations/*/sources/*/locations/*/findings/*}" 720 body: "finding" 721 } 722 additional_bindings { 723 patch: "/v2/{finding.name=folders/*/sources/*/findings/*}" 724 body: "finding" 725 } 726 additional_bindings { 727 patch: "/v2/{finding.name=folders/*/sources/*/locations/*/findings/*}" 728 body: "finding" 729 } 730 additional_bindings { 731 patch: "/v2/{finding.name=projects/*/sources/*/findings/*}" 732 body: "finding" 733 } 734 additional_bindings { 735 patch: "/v2/{finding.name=projects/*/sources/*/locations/*/findings/*}" 736 body: "finding" 737 } 738 }; 739 option (google.api.method_signature) = "finding,update_mask"; 740 } 741 742 // Updates a mute config. If no location is specified, default is 743 // global. 744 rpc UpdateMuteConfig(UpdateMuteConfigRequest) returns (MuteConfig) { 745 option (google.api.http) = { 746 patch: "/v2/{mute_config.name=organizations/*/muteConfigs/*}" 747 body: "mute_config" 748 additional_bindings { 749 patch: "/v2/{mute_config.name=organizations/*/locations/*/muteConfigs/*}" 750 body: "mute_config" 751 } 752 additional_bindings { 753 patch: "/v2/{mute_config.name=folders/*/muteConfigs/*}" 754 body: "mute_config" 755 } 756 additional_bindings { 757 patch: "/v2/{mute_config.name=folders/*/locations/*/muteConfigs/*}" 758 body: "mute_config" 759 } 760 additional_bindings { 761 patch: "/v2/{mute_config.name=projects/*/muteConfigs/*}" 762 body: "mute_config" 763 } 764 additional_bindings { 765 patch: "/v2/{mute_config.name=projects/*/locations/*/muteConfigs/*}" 766 body: "mute_config" 767 } 768 }; 769 option (google.api.routing) = { 770 routing_parameters { 771 field: "mute_config.name" 772 path_template: "projects/*/locations/{location=*}/muteConfigs/*" 773 } 774 routing_parameters { 775 field: "mute_config.name" 776 path_template: "organizations/*/locations/{location=*}/muteConfigs/*" 777 } 778 routing_parameters { 779 field: "mute_config.name" 780 path_template: "folders/*/locations/{location=*}/muteConfigs/*" 781 } 782 }; 783 option (google.api.method_signature) = "mute_config,update_mask"; 784 } 785 786 // Updates a notification config. The following update 787 // fields are allowed: description, pubsub_topic, streaming_config.filter 788 rpc UpdateNotificationConfig(UpdateNotificationConfigRequest) 789 returns (NotificationConfig) { 790 option (google.api.http) = { 791 patch: "/v2/{notification_config.name=organizations/*/locations/*/notificationConfigs/*}" 792 body: "notification_config" 793 additional_bindings { 794 patch: "/v2/{notification_config.name=folders/*/locations/*/notificationConfigs/*}" 795 body: "notification_config" 796 } 797 additional_bindings { 798 patch: "/v2/{notification_config.name=projects/*/locations/*/notificationConfigs/*}" 799 body: "notification_config" 800 } 801 }; 802 option (google.api.method_signature) = "notification_config,update_mask"; 803 } 804 805 // Updates an existing ResourceValueConfigs with new rules. 806 rpc UpdateResourceValueConfig(UpdateResourceValueConfigRequest) 807 returns (ResourceValueConfig) { 808 option (google.api.http) = { 809 patch: "/v2/{resource_value_config.name=organizations/*/resourceValueConfigs/*}" 810 body: "resource_value_config" 811 }; 812 option (google.api.method_signature) = "resource_value_config,update_mask"; 813 } 814 815 // Updates security marks. For Finding Security marks, if no location is 816 // specified, finding is assumed to be in global. Assets Security Marks can 817 // only be accessed through global endpoint. 818 rpc UpdateSecurityMarks(UpdateSecurityMarksRequest) returns (SecurityMarks) { 819 option (google.api.http) = { 820 patch: "/v2/{security_marks.name=organizations/*/sources/*/findings/*/securityMarks}" 821 body: "security_marks" 822 additional_bindings { 823 patch: "/v2/{security_marks.name=organizations/*/assets/*/securityMarks}" 824 body: "security_marks" 825 } 826 additional_bindings { 827 patch: "/v2/{security_marks.name=organizations/*/sources/*/locations/*/findings/*/securityMarks}" 828 body: "security_marks" 829 } 830 additional_bindings { 831 patch: "/v2/{security_marks.name=folders/*/sources/*/findings/*/securityMarks}" 832 body: "security_marks" 833 } 834 additional_bindings { 835 patch: "/v2/{security_marks.name=folders/*/assets/*/securityMarks}" 836 body: "security_marks" 837 } 838 additional_bindings { 839 patch: "/v2/{security_marks.name=folders/*/sources/*/locations/*/findings/*/securityMarks}" 840 body: "security_marks" 841 } 842 additional_bindings { 843 patch: "/v2/{security_marks.name=projects/*/sources/*/findings/*/securityMarks}" 844 body: "security_marks" 845 } 846 additional_bindings { 847 patch: "/v2/{security_marks.name=projects/*/assets/*/securityMarks}" 848 body: "security_marks" 849 } 850 additional_bindings { 851 patch: "/v2/{security_marks.name=projects/*/sources/*/locations/*/findings/*/securityMarks}" 852 body: "security_marks" 853 } 854 }; 855 option (google.api.method_signature) = "security_marks,update_mask"; 856 } 857 858 // Updates a source. 859 rpc UpdateSource(UpdateSourceRequest) returns (Source) { 860 option (google.api.http) = { 861 patch: "/v2/{source.name=organizations/*/sources/*}" 862 body: "source" 863 }; 864 option (google.api.method_signature) = "source,update_mask"; 865 } 866} 867 868// Request message to create multiple resource value configs 869message BatchCreateResourceValueConfigsRequest { 870 // Required. Resource name of the new ResourceValueConfig's parent. 871 // The parent field in the CreateResourceValueConfigRequest 872 // messages must either be empty or match this field. 873 string parent = 1 [ 874 (google.api.field_behavior) = REQUIRED, 875 (google.api.resource_reference) = { 876 child_type: "securitycenter.googleapis.com/ResourceValueConfig" 877 } 878 ]; 879 880 // Required. The resource value configs to be created. 881 repeated CreateResourceValueConfigRequest requests = 2 882 [(google.api.field_behavior) = REQUIRED]; 883} 884 885// Response message for BatchCreateResourceValueConfigs 886message BatchCreateResourceValueConfigsResponse { 887 // The resource value configs created 888 repeated ResourceValueConfig resource_value_configs = 1; 889} 890 891// Request message for bulk findings update. 892// 893// Note: 894// 1. If multiple bulk update requests match the same resource, the order in 895// which they get executed is not defined. 896// 2. Once a bulk operation is started, there is no way to stop it. 897message BulkMuteFindingsRequest { 898 // Required. The parent, at which bulk action needs to be applied. If no 899 // location is specified, findings are updated in global. The following list 900 // shows some examples: 901 // 902 // + `organizations/[organization_id]` 903 // + `organizations/[organization_id]/locations/[location_id]` 904 // + `folders/[folder_id]` 905 // + `folders/[folder_id]/locations/[location_id]` 906 // + `projects/[project_id]` 907 // + `projects/[project_id]/locations/[location_id]` 908 string parent = 1 [ 909 (google.api.field_behavior) = REQUIRED, 910 (google.api.resource_reference) = { type: "*" } 911 ]; 912 913 // Expression that identifies findings that should be updated. 914 // The expression is a list of zero or more restrictions combined 915 // via logical operators `AND` and `OR`. Parentheses are supported, and `OR` 916 // has higher precedence than `AND`. 917 // 918 // Restrictions have the form `<field> <operator> <value>` and may have a 919 // `-` character in front of them to indicate negation. The fields map to 920 // those defined in the corresponding resource. 921 // 922 // The supported operators are: 923 // 924 // * `=` for all value types. 925 // * `>`, `<`, `>=`, `<=` for integer values. 926 // * `:`, meaning substring matching, for strings. 927 // 928 // The supported value types are: 929 // 930 // * string literals in quotes. 931 // * integer literals without quotes. 932 // * boolean literals `true` and `false` without quotes. 933 string filter = 2; 934} 935 936// The response to a BulkMute request. Contains the LRO information. 937message BulkMuteFindingsResponse {} 938 939// Request message for creating a BigQuery export. 940message CreateBigQueryExportRequest { 941 // Required. The name of the parent resource of the new BigQuery export. Its 942 // format is "organizations/[organization_id]/locations/[location_id]", 943 // "folders/[folder_id]/locations/[location_id]", or 944 // "projects/[project_id]/locations/[location_id]". 945 string parent = 1 [ 946 (google.api.field_behavior) = REQUIRED, 947 (google.api.resource_reference) = { 948 child_type: "securitycenter.googleapis.com/BigQueryExport" 949 } 950 ]; 951 952 // Required. The BigQuery export being created. 953 BigQueryExport big_query_export = 2 [(google.api.field_behavior) = REQUIRED]; 954 955 // Required. Unique identifier provided by the client within the parent scope. 956 // It must consist of only lowercase letters, numbers, and hyphens, must start 957 // with a letter, must end with either a letter or a number, and must be 63 958 // characters or less. 959 string big_query_export_id = 3 [(google.api.field_behavior) = REQUIRED]; 960} 961 962// Request message for creating a finding. 963message CreateFindingRequest { 964 // Required. Resource name of the new finding's parent. The following list 965 // shows some examples of the format: 966 // + 967 // `organizations/[organization_id]/sources/[source_id]` 968 // + 969 // `organizations/[organization_id]/sources/[source_id]/locations/[location_id]` 970 string parent = 1 [ 971 (google.api.field_behavior) = REQUIRED, 972 (google.api.resource_reference) = { 973 type: "securitycenter.googleapis.com/Source" 974 } 975 ]; 976 977 // Required. Unique identifier provided by the client within the parent scope. 978 // It must be alphanumeric and less than or equal to 32 characters and 979 // greater than 0 characters in length. 980 string finding_id = 2 [(google.api.field_behavior) = REQUIRED]; 981 982 // Required. The Finding being created. The name and security_marks will be 983 // ignored as they are both output only fields on this resource. 984 Finding finding = 3 [(google.api.field_behavior) = REQUIRED]; 985} 986 987// Request message for creating a mute config. 988message CreateMuteConfigRequest { 989 // Required. Resource name of the new mute configs's parent. Its format is 990 // "organizations/[organization_id]/locations/[location_id]", 991 // "folders/[folder_id]/locations/[location_id]", or 992 // "projects/[project_id]/locations/[location_id]". 993 string parent = 1 [ 994 (google.api.field_behavior) = REQUIRED, 995 (google.api.resource_reference) = { 996 child_type: "securitycenter.googleapis.com/MuteConfig" 997 } 998 ]; 999 1000 // Required. The mute config being created. 1001 MuteConfig mute_config = 2 [(google.api.field_behavior) = REQUIRED]; 1002 1003 // Required. Unique identifier provided by the client within the parent scope. 1004 // It must consist of only lowercase letters, numbers, and hyphens, must start 1005 // with a letter, must end with either a letter or a number, and must be 63 1006 // characters or less. 1007 string mute_config_id = 3 [(google.api.field_behavior) = REQUIRED]; 1008} 1009 1010// Request message for creating a notification config. 1011message CreateNotificationConfigRequest { 1012 // Required. Resource name of the new notification config's parent. Its format 1013 // is "organizations/[organization_id]/locations/[location_id]", 1014 // "folders/[folder_id]/locations/[location_id]", or 1015 // "projects/[project_id]/locations/[location_id]". 1016 string parent = 1 [ 1017 (google.api.field_behavior) = REQUIRED, 1018 (google.api.resource_reference) = { 1019 child_type: "securitycenter.googleapis.com/NotificationConfig" 1020 } 1021 ]; 1022 1023 // Required. 1024 // Unique identifier provided by the client within the parent scope. 1025 // It must be between 1 and 128 characters and contain alphanumeric 1026 // characters, underscores, or hyphens only. 1027 string config_id = 2 [(google.api.field_behavior) = REQUIRED]; 1028 1029 // Required. The notification config being created. The name and the service 1030 // account will be ignored as they are both output only fields on this 1031 // resource. 1032 NotificationConfig notification_config = 3 1033 [(google.api.field_behavior) = REQUIRED]; 1034} 1035 1036// Request message to create single resource value config 1037message CreateResourceValueConfigRequest { 1038 // Required. Resource name of the new ResourceValueConfig's parent. 1039 string parent = 1 [ 1040 (google.api.field_behavior) = REQUIRED, 1041 (google.api.resource_reference) = { 1042 child_type: "securitycenter.googleapis.com/ResourceValueConfig" 1043 } 1044 ]; 1045 1046 // Required. The resource value config being created. 1047 ResourceValueConfig resource_value_config = 2 1048 [(google.api.field_behavior) = REQUIRED]; 1049} 1050 1051// Request message for creating a source. 1052message CreateSourceRequest { 1053 // Required. Resource name of the new source's parent. Its format should be 1054 // "organizations/[organization_id]". 1055 string parent = 1 [ 1056 (google.api.field_behavior) = REQUIRED, 1057 (google.api.resource_reference) = { 1058 type: "cloudresourcemanager.googleapis.com/Organization" 1059 } 1060 ]; 1061 1062 // Required. The Source being created, only the display_name and description 1063 // will be used. All other fields will be ignored. 1064 Source source = 2 [(google.api.field_behavior) = REQUIRED]; 1065} 1066 1067// Request message for deleting a BigQuery export. 1068message DeleteBigQueryExportRequest { 1069 // Required. The name of the BigQuery export to delete. The following list 1070 // shows some examples of the format: 1071 // 1072 // + 1073 // `organizations/{organization}/locations/{location}/bigQueryExports/{export_id}` 1074 // + `folders/{folder}/locations/{location}/bigQueryExports/{export_id}` 1075 // + `projects/{project}/locations/{location}/bigQueryExports/{export_id}` 1076 string name = 1 [ 1077 (google.api.field_behavior) = REQUIRED, 1078 (google.api.resource_reference) = { 1079 type: "securitycenter.googleapis.com/BigQueryExport" 1080 } 1081 ]; 1082} 1083 1084// Request message for deleting a mute config. If no location is specified, 1085// default is global. 1086message DeleteMuteConfigRequest { 1087 // Required. Name of the mute config to delete. The following list shows some 1088 // examples of the format: 1089 // 1090 // + `organizations/{organization}/muteConfigs/{config_id}` 1091 // + 1092 // `organizations/{organization}/locations/{location}/muteConfigs/{config_id}` 1093 // + `folders/{folder}/muteConfigs/{config_id}` 1094 // + `folders/{folder}/locations/{location}/muteConfigs/{config_id}` 1095 // + `projects/{project}/muteConfigs/{config_id}` 1096 // + `projects/{project}/locations/{location}/muteConfigs/{config_id}` 1097 string name = 1 [ 1098 (google.api.field_behavior) = REQUIRED, 1099 (google.api.resource_reference) = { 1100 type: "securitycenter.googleapis.com/MuteConfig" 1101 } 1102 ]; 1103} 1104 1105// Request message for deleting a notification config. 1106message DeleteNotificationConfigRequest { 1107 // Required. Name of the notification config to delete. The following list 1108 // shows some examples of the format: 1109 // 1110 // + 1111 // `organizations/[organization_id]/locations/[location_id]/notificationConfigs/[config_id]` 1112 // + 1113 // `folders/[folder_id]/locations/[location_id]notificationConfigs/[config_id]` 1114 // + 1115 // `projects/[project_id]/locations/[location_id]notificationConfigs/[config_id]` 1116 string name = 1 [ 1117 (google.api.field_behavior) = REQUIRED, 1118 (google.api.resource_reference) = { 1119 type: "securitycenter.googleapis.com/NotificationConfig" 1120 } 1121 ]; 1122} 1123 1124// Request message to delete resource value config 1125message DeleteResourceValueConfigRequest { 1126 // Required. Name of the ResourceValueConfig to delete 1127 string name = 1 [ 1128 (google.api.field_behavior) = REQUIRED, 1129 (google.api.resource_reference) = { 1130 type: "securitycenter.googleapis.com/ResourceValueConfig" 1131 } 1132 ]; 1133} 1134 1135// Request message for retrieving a BigQuery export. 1136message GetBigQueryExportRequest { 1137 // Required. Name of the BigQuery export to retrieve. The following list shows 1138 // some examples of the format: 1139 // 1140 // + 1141 // `organizations/{organization}/locations/{location}/bigQueryExports/{export_id}` 1142 // + `folders/{folder}/locations/{location}/bigQueryExports/{export_id}` 1143 // + `projects/{project}locations/{location}//bigQueryExports/{export_id}` 1144 string name = 1 [ 1145 (google.api.field_behavior) = REQUIRED, 1146 (google.api.resource_reference) = { 1147 type: "securitycenter.googleapis.com/BigQueryExport" 1148 } 1149 ]; 1150} 1151 1152// Request message for retrieving a mute config. If no location is specified, 1153// default is global. 1154message GetMuteConfigRequest { 1155 // Required. Name of the mute config to retrieve. The following list shows 1156 // some examples of the format: 1157 // 1158 // + `organizations/{organization}/muteConfigs/{config_id}` 1159 // + 1160 // `organizations/{organization}/locations/{location}/muteConfigs/{config_id}` 1161 // + `folders/{folder}/muteConfigs/{config_id}` 1162 // + `folders/{folder}/locations/{location}/muteConfigs/{config_id}` 1163 // + `projects/{project}/muteConfigs/{config_id}` 1164 // + `projects/{project}/locations/{location}/muteConfigs/{config_id}` 1165 string name = 1 [ 1166 (google.api.field_behavior) = REQUIRED, 1167 (google.api.resource_reference) = { 1168 type: "securitycenter.googleapis.com/MuteConfig" 1169 } 1170 ]; 1171} 1172 1173// Request message for getting a notification config. 1174message GetNotificationConfigRequest { 1175 // Required. Name of the notification config to get. The following list shows 1176 // some examples of the format: 1177 // 1178 // + 1179 // `organizations/[organization_id]/locations/[location_id]/notificationConfigs/[config_id]` 1180 // + 1181 // `folders/[folder_id]/locations/[location_id]/notificationConfigs/[config_id]` 1182 // + 1183 // `projects/[project_id]/locations/[location_id]/notificationConfigs/[config_id]` 1184 string name = 1 [ 1185 (google.api.field_behavior) = REQUIRED, 1186 (google.api.resource_reference) = { 1187 type: "securitycenter.googleapis.com/NotificationConfig" 1188 } 1189 ]; 1190} 1191 1192// Request message to get resource value config 1193message GetResourceValueConfigRequest { 1194 // Required. Name of the resource value config to retrieve. Its format is 1195 // organizations/{organization}/resourceValueConfigs/{config_id}. 1196 string name = 1 [ 1197 (google.api.field_behavior) = REQUIRED, 1198 (google.api.resource_reference) = { 1199 type: "securitycenter.googleapis.com/ResourceValueConfig" 1200 } 1201 ]; 1202} 1203 1204// Request message for getting a source. 1205message GetSourceRequest { 1206 // Required. Relative resource name of the source. Its format is 1207 // "organizations/[organization_id]/source/[source_id]". 1208 string name = 1 [ 1209 (google.api.field_behavior) = REQUIRED, 1210 (google.api.resource_reference) = { 1211 type: "securitycenter.googleapis.com/Source" 1212 } 1213 ]; 1214} 1215 1216// Request message for grouping by findings. 1217message GroupFindingsRequest { 1218 // Required. Name of the source to groupBy. If no location is specified, 1219 // finding is assumed to be in global. 1220 // The following list shows some examples: 1221 // 1222 // + `organizations/[organization_id]/sources/[source_id]` 1223 // + 1224 // `organizations/[organization_id]/sources/[source_id]/locations/[location_id]` 1225 // + `folders/[folder_id]/sources/[source_id]` 1226 // + `folders/[folder_id]/sources/[source_id]/locations/[location_id]` 1227 // + `projects/[project_id]/sources/[source_id]` 1228 // + `projects/[project_id]/sources/[source_id]/locations/[location_id]` 1229 // 1230 // To groupBy across all sources provide a source_id of `-`. The following 1231 // list shows some examples: 1232 // 1233 // + `organizations/{organization_id}/sources/-` 1234 // + `organizations/{organization_id}/sources/-/locations/[location_id]` 1235 // + `folders/{folder_id}/sources/-` 1236 // + `folders/{folder_id}/sources/-/locations/[location_id]` 1237 // + `projects/{project_id}/sources/-` 1238 // + `projects/{project_id}/sources/-/locations/[location_id]` 1239 string parent = 1 [ 1240 (google.api.field_behavior) = REQUIRED, 1241 (google.api.resource_reference) = { 1242 type: "securitycenter.googleapis.com/Source" 1243 } 1244 ]; 1245 1246 // Expression that defines the filter to apply across findings. 1247 // The expression is a list of one or more restrictions combined via logical 1248 // operators `AND` and `OR`. 1249 // Parentheses are supported, and `OR` has higher precedence than `AND`. 1250 // 1251 // Restrictions have the form `<field> <operator> <value>` and may have a `-` 1252 // character in front of them to indicate negation. Examples include: 1253 // 1254 // * name 1255 // * security_marks.marks.marka 1256 // 1257 // The supported operators are: 1258 // 1259 // * `=` for all value types. 1260 // * `>`, `<`, `>=`, `<=` for integer values. 1261 // * `:`, meaning substring matching, for strings. 1262 // 1263 // The supported value types are: 1264 // 1265 // * string literals in quotes. 1266 // * integer literals without quotes. 1267 // * boolean literals `true` and `false` without quotes. 1268 // 1269 // The following field and operator combinations are supported: 1270 // 1271 // * name: `=` 1272 // * parent: `=`, `:` 1273 // * resource_name: `=`, `:` 1274 // * state: `=`, `:` 1275 // * category: `=`, `:` 1276 // * external_uri: `=`, `:` 1277 // * event_time: `=`, `>`, `<`, `>=`, `<=` 1278 // 1279 // Usage: This should be milliseconds since epoch or an RFC3339 string. 1280 // Examples: 1281 // `event_time = "2019-06-10T16:07:18-07:00"` 1282 // `event_time = 1560208038000` 1283 // 1284 // * severity: `=`, `:` 1285 // * security_marks.marks: `=`, `:` 1286 // * resource: 1287 // * resource.name: `=`, `:` 1288 // * resource.parent_name: `=`, `:` 1289 // * resource.parent_display_name: `=`, `:` 1290 // * resource.project_name: `=`, `:` 1291 // * resource.project_display_name: `=`, `:` 1292 // * resource.type: `=`, `:` 1293 string filter = 2; 1294 1295 // Required. Expression that defines what assets fields to use for grouping. 1296 // The string value should follow SQL syntax: comma separated list of fields. 1297 // For example: "parent,resource_name". 1298 // 1299 // The following fields are supported: 1300 // 1301 // * resource_name 1302 // * category 1303 // * state 1304 // * parent 1305 // * severity 1306 string group_by = 3 [(google.api.field_behavior) = REQUIRED]; 1307 1308 // The value returned by the last `GroupFindingsResponse`; indicates 1309 // that this is a continuation of a prior `GroupFindings` call, and 1310 // that the system should return the next page of data. 1311 string page_token = 7; 1312 1313 // The maximum number of results to return in a single response. Default is 1314 // 10, minimum is 1, maximum is 1000. 1315 int32 page_size = 8; 1316} 1317 1318// Response message for group by findings. 1319message GroupFindingsResponse { 1320 // Group results. There exists an element for each existing unique 1321 // combination of property/values. The element contains a count for the number 1322 // of times those specific property/values appear. 1323 repeated GroupResult group_by_results = 1; 1324 1325 // Token to retrieve the next page of results, or empty if there are no more 1326 // results. 1327 string next_page_token = 3; 1328 1329 // The total number of results matching the query. 1330 int32 total_size = 4; 1331} 1332 1333// Result containing the properties and count of a groupBy request. 1334message GroupResult { 1335 // Properties matching the groupBy fields in the request. 1336 map<string, google.protobuf.Value> properties = 1; 1337 1338 // Total count of resources for the given properties. 1339 int64 count = 2; 1340} 1341 1342// Request message for listing the attack paths for a given simulation or valued 1343// resource. 1344message ListAttackPathsRequest { 1345 // Required. Name of parent to list attack paths. 1346 // 1347 // Valid formats: 1348 // "organizations/{organization}", 1349 // "organizations/{organization}/simulations/{simulation}" 1350 // "organizations/{organization}/simulations/{simulation}/attackExposureResults/{attack_exposure_result_v2}" 1351 // "organizations/{organization}/simulations/{simulation}/valuedResources/{valued_resource}" 1352 string parent = 1 [ 1353 (google.api.field_behavior) = REQUIRED, 1354 (google.api.resource_reference) = { 1355 child_type: "securitycenter.googleapis.com/AttackPath" 1356 } 1357 ]; 1358 1359 // The filter expression that filters the attack path in the response. 1360 // Supported fields: 1361 // 1362 // * `valued_resources` supports = 1363 string filter = 2; 1364 1365 // The value returned by the last `ListAttackPathsResponse`; indicates 1366 // that this is a continuation of a prior `ListAttackPaths` call, and 1367 // that the system should return the next page of data. 1368 string page_token = 3; 1369 1370 // The maximum number of results to return in a single response. Default is 1371 // 10, minimum is 1, maximum is 1000. 1372 int32 page_size = 4; 1373} 1374 1375// Response message for listing the attack paths for a given simulation or 1376// valued resource. 1377message ListAttackPathsResponse { 1378 // The attack paths that the attack path simulation identified. 1379 repeated AttackPath attack_paths = 1; 1380 1381 // Token to retrieve the next page of results, or empty if there are no more 1382 // results. 1383 string next_page_token = 2; 1384} 1385 1386// Request message for getting simulation. 1387// Simulation name can include "latest" to retrieve the latest simulation 1388// For example, "organizations/123/simulations/latest" 1389message GetSimulationRequest { 1390 // Required. The organization name or simulation name of this simulation 1391 // 1392 // Valid format: 1393 // "organizations/{organization}/simulations/latest" 1394 // "organizations/{organization}/simulations/{simulation}" 1395 string name = 1 [ 1396 (google.api.field_behavior) = REQUIRED, 1397 (google.api.resource_reference) = { 1398 type: "securitycenter.googleapis.com/Simulation" 1399 } 1400 ]; 1401} 1402 1403// Request message for getting a valued resource. 1404message GetValuedResourceRequest { 1405 // Required. The name of this valued resource 1406 // 1407 // Valid format: 1408 // "organizations/{organization}/simulations/{simulation}/valuedResources/{valued_resource}" 1409 string name = 1 [ 1410 (google.api.field_behavior) = REQUIRED, 1411 (google.api.resource_reference) = { 1412 type: "securitycenter.googleapis.com/ValuedResource" 1413 } 1414 ]; 1415} 1416 1417// Request message for listing BigQuery exports at a given scope e.g. 1418// organization, folder or project. 1419message ListBigQueryExportsRequest { 1420 // Required. The parent, which owns the collection of BigQuery exports. Its 1421 // format is "organizations/[organization_id]/locations/[location_id]", 1422 // "folders/[folder_id]/locations/[location_id]", or 1423 // "projects/[project_id]/locations/[location_id]". 1424 string parent = 1 [ 1425 (google.api.field_behavior) = REQUIRED, 1426 (google.api.resource_reference) = { 1427 child_type: "securitycenter.googleapis.com/BigQueryExport" 1428 } 1429 ]; 1430 1431 // The maximum number of configs to return. The service may return fewer than 1432 // this value. 1433 // If unspecified, at most 10 configs will be returned. 1434 // The maximum value is 1000; values above 1000 will be coerced to 1000. 1435 int32 page_size = 2; 1436 1437 // A page token, received from a previous `ListBigQueryExports` call. 1438 // Provide this to retrieve the subsequent page. 1439 // When paginating, all other parameters provided to `ListBigQueryExports` 1440 // must match the call that provided the page token. 1441 string page_token = 3; 1442} 1443 1444// Response message for listing BigQuery exports. 1445message ListBigQueryExportsResponse { 1446 // The BigQuery exports from the specified parent. 1447 repeated BigQueryExport big_query_exports = 1; 1448 1449 // A token, which can be sent as `page_token` to retrieve the next page. 1450 // If this field is omitted, there are no subsequent pages. 1451 string next_page_token = 2; 1452} 1453 1454// Request message for listing findings. 1455message ListFindingsRequest { 1456 // Required. Name of the source the findings belong to. If no location is 1457 // specified, the default is global. The following list shows some examples: 1458 // 1459 // + `organizations/[organization_id]/sources/[source_id]` 1460 // + 1461 // `organizations/[organization_id]/sources/[source_id]/locations/[location_id]` 1462 // + `folders/[folder_id]/sources/[source_id]` 1463 // + `folders/[folder_id]/sources/[source_id]/locations/[location_id]` 1464 // + `projects/[project_id]/sources/[source_id]` 1465 // + `projects/[project_id]/sources/[source_id]/locations/[location_id]` 1466 // 1467 // To list across all sources provide a source_id of `-`. The following 1468 // list shows some examples: 1469 // 1470 // + `organizations/{organization_id}/sources/-` 1471 // + `organizations/{organization_id}/sources/-/locations/{location_id}` 1472 // + `folders/{folder_id}/sources/-` 1473 // + `folders/{folder_id}/sources/-locations/{location_id}` 1474 // + `projects/{projects_id}/sources/-` 1475 // + `projects/{projects_id}/sources/-/locations/{location_id}` 1476 string parent = 1 [ 1477 (google.api.field_behavior) = REQUIRED, 1478 (google.api.resource_reference) = { 1479 type: "securitycenter.googleapis.com/Source" 1480 } 1481 ]; 1482 1483 // Expression that defines the filter to apply across findings. 1484 // The expression is a list of one or more restrictions combined via logical 1485 // operators `AND` and `OR`. 1486 // Parentheses are supported, and `OR` has higher precedence than `AND`. 1487 // 1488 // Restrictions have the form `<field> <operator> <value>` and may have a `-` 1489 // character in front of them to indicate negation. Examples include: 1490 // 1491 // * name 1492 // * security_marks.marks.marka 1493 // 1494 // The supported operators are: 1495 // 1496 // * `=` for all value types. 1497 // * `>`, `<`, `>=`, `<=` for integer values. 1498 // * `:`, meaning substring matching, for strings. 1499 // 1500 // The supported value types are: 1501 // 1502 // * string literals in quotes. 1503 // * integer literals without quotes. 1504 // * boolean literals `true` and `false` without quotes. 1505 // 1506 // The following field and operator combinations are supported: 1507 // 1508 // * name: `=` 1509 // * parent: `=`, `:` 1510 // * resource_name: `=`, `:` 1511 // * state: `=`, `:` 1512 // * category: `=`, `:` 1513 // * external_uri: `=`, `:` 1514 // * event_time: `=`, `>`, `<`, `>=`, `<=` 1515 // 1516 // Usage: This should be milliseconds since epoch or an RFC3339 string. 1517 // Examples: 1518 // `event_time = "2019-06-10T16:07:18-07:00"` 1519 // `event_time = 1560208038000` 1520 // 1521 // * severity: `=`, `:` 1522 // * security_marks.marks: `=`, `:` 1523 // * resource: 1524 // * resource.name: `=`, `:` 1525 // * resource.parent_name: `=`, `:` 1526 // * resource.parent_display_name: `=`, `:` 1527 // * resource.project_name: `=`, `:` 1528 // * resource.project_display_name: `=`, `:` 1529 // * resource.type: `=`, `:` 1530 // * resource.folders.resource_folder: `=`, `:` 1531 // * resource.display_name: `=`, `:` 1532 string filter = 2; 1533 1534 // Expression that defines what fields and order to use for sorting. The 1535 // string value should follow SQL syntax: comma separated list of fields. For 1536 // example: "name,parent". The default sorting order 1537 // is ascending. To specify descending order for a field, a suffix " desc" 1538 // should be appended to the field name. For example: "name 1539 // desc,parent". Redundant space characters in the 1540 // syntax are insignificant. "name desc,parent" and " 1541 // name desc , parent " are equivalent. 1542 // 1543 // The following fields are supported: 1544 // name 1545 // parent 1546 // state 1547 // category 1548 // resource_name 1549 // event_time 1550 // security_marks.marks 1551 string order_by = 3; 1552 1553 // A field mask to specify the Finding fields to be listed in the response. 1554 // An empty field mask will list all fields. 1555 google.protobuf.FieldMask field_mask = 7; 1556 1557 // The value returned by the last `ListFindingsResponse`; indicates 1558 // that this is a continuation of a prior `ListFindings` call, and 1559 // that the system should return the next page of data. 1560 string page_token = 8; 1561 1562 // The maximum number of results to return in a single response. Default is 1563 // 10, minimum is 1, maximum is 1000. 1564 int32 page_size = 9; 1565} 1566 1567// Response message for listing findings. 1568message ListFindingsResponse { 1569 // Result containing the Finding. 1570 message ListFindingsResult { 1571 // Information related to the Google Cloud resource that is 1572 // associated with this finding. 1573 message Resource { 1574 // The full resource name of the resource. See: 1575 // https://cloud.google.com/apis/design/resource_names#full_resource_name 1576 string name = 1; 1577 1578 // The human readable name of the resource. 1579 string display_name = 2; 1580 1581 // The full resource type of the resource. 1582 string type = 3; 1583 } 1584 1585 // Finding matching the search request. 1586 Finding finding = 1; 1587 1588 // Output only. Resource that is associated with this finding. 1589 Resource resource = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; 1590 } 1591 1592 // Findings matching the list request. 1593 repeated ListFindingsResult list_findings_results = 1; 1594 1595 // Token to retrieve the next page of results, or empty if there are no more 1596 // results. 1597 string next_page_token = 3; 1598 1599 // The total number of findings matching the query. 1600 int32 total_size = 4; 1601} 1602 1603// Request message for listing mute configs at a given scope e.g. organization, 1604// folder or project. If no location is specified, default is 1605// global. 1606message ListMuteConfigsRequest { 1607 // Required. The parent, which owns the collection of mute configs. Its format 1608 // is "organizations/[organization_id]", "folders/[folder_id]", 1609 // "projects/[project_id]", 1610 // "organizations/[organization_id]/locations/[location_id]", 1611 // "folders/[folder_id]/locations/[location_id]", 1612 // "projects/[project_id]/locations/[location_id]". 1613 string parent = 1 [ 1614 (google.api.field_behavior) = REQUIRED, 1615 (google.api.resource_reference) = { 1616 child_type: "securitycenter.googleapis.com/MuteConfig" 1617 } 1618 ]; 1619 1620 // The maximum number of configs to return. The service may return fewer than 1621 // this value. 1622 // If unspecified, at most 10 configs will be returned. 1623 // The maximum value is 1000; values above 1000 will be coerced to 1000. 1624 int32 page_size = 2; 1625 1626 // A page token, received from a previous `ListMuteConfigs` call. 1627 // Provide this to retrieve the subsequent page. 1628 // 1629 // When paginating, all other parameters provided to `ListMuteConfigs` must 1630 // match the call that provided the page token. 1631 string page_token = 3; 1632} 1633 1634// Response message for listing mute configs. 1635message ListMuteConfigsResponse { 1636 // The mute configs from the specified parent. 1637 repeated MuteConfig mute_configs = 1; 1638 1639 // A token, which can be sent as `page_token` to retrieve the next page. 1640 // If this field is omitted, there are no subsequent pages. 1641 string next_page_token = 2; 1642} 1643 1644// Request message for listing notification configs. 1645message ListNotificationConfigsRequest { 1646 // Required. The name of the parent in which to list the notification 1647 // configurations. Its format is 1648 // "organizations/[organization_id]/locations/[location_id]", 1649 // "folders/[folder_id]/locations/[location_id]", or 1650 // "projects/[project_id]/locations/[location_id]". 1651 string parent = 1 [ 1652 (google.api.field_behavior) = REQUIRED, 1653 (google.api.resource_reference) = { 1654 child_type: "securitycenter.googleapis.com/NotificationConfig" 1655 } 1656 ]; 1657 1658 // The value returned by the last `ListNotificationConfigsResponse`; indicates 1659 // that this is a continuation of a prior `ListNotificationConfigs` call, and 1660 // that the system should return the next page of data. 1661 string page_token = 2; 1662 1663 // The maximum number of results to return in a single response. Default is 1664 // 10, minimum is 1, maximum is 1000. 1665 int32 page_size = 3; 1666} 1667 1668// Response message for listing notification configs. 1669message ListNotificationConfigsResponse { 1670 // Notification configs belonging to the requested parent. 1671 repeated NotificationConfig notification_configs = 1; 1672 1673 // Token to retrieve the next page of results, or empty if there are no more 1674 // results. 1675 string next_page_token = 2; 1676} 1677 1678// Request message to list resource value configs of a parent 1679message ListResourceValueConfigsRequest { 1680 // Required. The parent, which owns the collection of resource value configs. 1681 // Its format is 1682 // "organizations/[organization_id]" 1683 string parent = 1 [ 1684 (google.api.field_behavior) = REQUIRED, 1685 (google.api.resource_reference) = { 1686 child_type: "securitycenter.googleapis.com/ResourceValueConfig" 1687 } 1688 ]; 1689 1690 // The maximum number of configs to return. The service may return fewer than 1691 // this value. 1692 // If unspecified, at most 10 configs will be returned. 1693 // The maximum value is 1000; values above 1000 will be coerced to 1000. 1694 int32 page_size = 2; 1695 1696 // A page token, received from a previous `ListResourceValueConfigs` call. 1697 // Provide this to retrieve the subsequent page. 1698 // 1699 // When paginating, all other parameters provided to 1700 // `ListResourceValueConfigs` must match the call that provided the 1701 // page token. 1702 // 1703 // page_size can be specified, and the new page_size will be used. 1704 string page_token = 3; 1705} 1706 1707// Response message to list resource value configs 1708message ListResourceValueConfigsResponse { 1709 // The resource value configs from the specified parent. 1710 repeated ResourceValueConfig resource_value_configs = 1; 1711 1712 // A token, which can be sent as `page_token` to retrieve the next page. 1713 // If this field is empty, there are no subsequent pages. 1714 string next_page_token = 2; 1715} 1716 1717// Request message for listing sources. 1718message ListSourcesRequest { 1719 // Required. Resource name of the parent of sources to list. Its format should 1720 // be "organizations/[organization_id]", "folders/[folder_id]", or 1721 // "projects/[project_id]". 1722 string parent = 1 [ 1723 (google.api.field_behavior) = REQUIRED, 1724 (google.api.resource_reference) = { 1725 child_type: "securitycenter.googleapis.com/Source" 1726 } 1727 ]; 1728 1729 // The value returned by the last `ListSourcesResponse`; indicates 1730 // that this is a continuation of a prior `ListSources` call, and 1731 // that the system should return the next page of data. 1732 string page_token = 2; 1733 1734 // The maximum number of results to return in a single response. Default is 1735 // 10, minimum is 1, maximum is 1000. 1736 int32 page_size = 7; 1737} 1738 1739// Response message for listing sources. 1740message ListSourcesResponse { 1741 // Sources belonging to the requested parent. 1742 repeated Source sources = 1; 1743 1744 // Token to retrieve the next page of results, or empty if there are no more 1745 // results. 1746 string next_page_token = 2; 1747} 1748 1749// Request message for listing the valued resources for a given simulation. 1750message ListValuedResourcesRequest { 1751 // Required. Name of parent to list exposed resources. 1752 // 1753 // Valid formats: 1754 // "organizations/{organization}", 1755 // "organizations/{organization}/simulations/{simulation}" 1756 // "organizations/{organization}/simulations/{simulation}/attackExposureResults/{attack_exposure_result_v2}" 1757 string parent = 1 [ 1758 (google.api.field_behavior) = REQUIRED, 1759 (google.api.resource_reference) = { 1760 child_type: "securitycenter.googleapis.com/ValuedResource" 1761 } 1762 ]; 1763 1764 // The filter expression that filters the valued resources in the response. 1765 // Supported fields: 1766 // 1767 // * `resource_value` supports = 1768 // * `resource_type` supports = 1769 string filter = 2; 1770 1771 // The value returned by the last `ListValuedResourcesResponse`; indicates 1772 // that this is a continuation of a prior `ListValuedResources` call, and 1773 // that the system should return the next page of data. 1774 string page_token = 3; 1775 1776 // The maximum number of results to return in a single response. Default is 1777 // 10, minimum is 1, maximum is 1000. 1778 int32 page_size = 4; 1779 1780 // Optional. The fields by which to order the valued resources response. 1781 // 1782 // Supported fields: 1783 // 1784 // * `exposed_score` 1785 // 1786 // * `resource_value` 1787 // 1788 // * `resource_type` 1789 // 1790 // Values should be a comma separated list of fields. For example: 1791 // `exposed_score,resource_value`. 1792 // 1793 // The default sorting order is descending. To specify ascending or descending 1794 // order for a field, append a " ASC" or a " DESC" suffix, respectively; for 1795 // example: `exposed_score DESC`. 1796 string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; 1797} 1798 1799// Response message for listing the valued resources for a given simulation. 1800message ListValuedResourcesResponse { 1801 // The valued resources that the attack path simulation identified. 1802 repeated ValuedResource valued_resources = 1; 1803 1804 // Token to retrieve the next page of results, or empty if there are no more 1805 // results. 1806 string next_page_token = 2; 1807 1808 // The estimated total number of results matching the query. 1809 int32 total_size = 3; 1810} 1811 1812// Request message for updating a finding's state. 1813message SetFindingStateRequest { 1814 // Required. The [relative resource 1815 // name](https://cloud.google.com/apis/design/resource_names#relative_resource_name) 1816 // of the finding. If no location is specified, finding is assumed to be in 1817 // global. The following list shows some examples: 1818 // 1819 // + 1820 // `organizations/{organization_id}/sources/{source_id}/findings/{finding_id}` 1821 // + 1822 // `organizations/{organization_id}/sources/{source_id}/locations/{location_id}/findings/{finding_id}` 1823 // + `folders/{folder_id}/sources/{source_id}/findings/{finding_id}` 1824 // + 1825 // `folders/{folder_id}/sources/{source_id}/locations/{location_id}/findings/{finding_id}` 1826 // + `projects/{project_id}/sources/{source_id}/findings/{finding_id}` 1827 // + 1828 // `projects/{project_id}/sources/{source_id}/locations/{location_id}/findings/{finding_id}` 1829 string name = 1 [ 1830 (google.api.field_behavior) = REQUIRED, 1831 (google.api.resource_reference) = { 1832 type: "securitycenter.googleapis.com/Finding" 1833 } 1834 ]; 1835 1836 // Required. The desired State of the finding. 1837 Finding.State state = 2 [(google.api.field_behavior) = REQUIRED]; 1838} 1839 1840// Request message for updating a finding's mute status. 1841message SetMuteRequest { 1842 // Required. The [relative resource 1843 // name](https://cloud.google.com/apis/design/resource_names#relative_resource_name) 1844 // of the finding. If no location is specified, finding is assumed to be in 1845 // global. The following list shows some examples: 1846 // 1847 // + 1848 // `organizations/{organization_id}/sources/{source_id}/findings/{finding_id}` 1849 // + 1850 // `organizations/{organization_id}/sources/{source_id}/locations/{location_id}/findings/{finding_id}` 1851 // + `folders/{folder_id}/sources/{source_id}/findings/{finding_id}` 1852 // + 1853 // `folders/{folder_id}/sources/{source_id}/locations/{location_id}/findings/{finding_id}` 1854 // + `projects/{project_id}/sources/{source_id}/findings/{finding_id}` 1855 // + 1856 // `projects/{project_id}/sources/{source_id}/locations/{location_id}/findings/{finding_id}` 1857 string name = 1 [ 1858 (google.api.field_behavior) = REQUIRED, 1859 (google.api.resource_reference) = { 1860 type: "securitycenter.googleapis.com/Finding" 1861 } 1862 ]; 1863 1864 // Required. The desired state of the Mute. 1865 Finding.Mute mute = 2 [(google.api.field_behavior) = REQUIRED]; 1866} 1867 1868// Request message for updating a BigQuery export. 1869message UpdateBigQueryExportRequest { 1870 // Required. The BigQuery export being updated. 1871 BigQueryExport big_query_export = 1 [(google.api.field_behavior) = REQUIRED]; 1872 1873 // The list of fields to be updated. 1874 // If empty all mutable fields will be updated. 1875 google.protobuf.FieldMask update_mask = 2; 1876} 1877 1878// Request message for updating a ExternalSystem resource. 1879message UpdateExternalSystemRequest { 1880 // Required. The external system resource to update. 1881 ExternalSystem external_system = 1 [(google.api.field_behavior) = REQUIRED]; 1882 1883 // The FieldMask to use when updating the external system resource. 1884 // 1885 // If empty all mutable fields will be updated. 1886 google.protobuf.FieldMask update_mask = 2; 1887} 1888 1889// Request message for updating or creating a finding. 1890message UpdateFindingRequest { 1891 // Required. The finding resource to update or create if it does not already 1892 // exist. parent, security_marks, and update_time will be ignored. 1893 // 1894 // In the case of creation, the finding id portion of the name must be 1895 // alphanumeric and less than or equal to 32 characters and greater than 0 1896 // characters in length. 1897 Finding finding = 1 [(google.api.field_behavior) = REQUIRED]; 1898 1899 // The FieldMask to use when updating the finding resource. This field should 1900 // not be specified when creating a finding. 1901 // 1902 // When updating a finding, an empty mask is treated as updating all mutable 1903 // fields and replacing source_properties. Individual source_properties can 1904 // be added/updated by using "source_properties.<property key>" in the field 1905 // mask. 1906 google.protobuf.FieldMask update_mask = 2; 1907} 1908 1909// Request message for updating a mute config. 1910message UpdateMuteConfigRequest { 1911 // Required. The mute config being updated. 1912 MuteConfig mute_config = 1 [(google.api.field_behavior) = REQUIRED]; 1913 1914 // The list of fields to be updated. 1915 // If empty all mutable fields will be updated. 1916 google.protobuf.FieldMask update_mask = 2; 1917} 1918 1919// Request message for updating a notification config. 1920message UpdateNotificationConfigRequest { 1921 // Required. The notification config to update. 1922 NotificationConfig notification_config = 1 1923 [(google.api.field_behavior) = REQUIRED]; 1924 1925 // The FieldMask to use when updating the notification config. 1926 // 1927 // If empty all mutable fields will be updated. 1928 google.protobuf.FieldMask update_mask = 2; 1929} 1930 1931// Request message to update resource value config 1932message UpdateResourceValueConfigRequest { 1933 // Required. The resource value config being updated. 1934 ResourceValueConfig resource_value_config = 1 1935 [(google.api.field_behavior) = REQUIRED]; 1936 1937 // The list of fields to be updated. 1938 // If empty all mutable fields will be updated. 1939 google.protobuf.FieldMask update_mask = 2; 1940} 1941 1942// Request message for updating a SecurityMarks resource. 1943message UpdateSecurityMarksRequest { 1944 // Required. The security marks resource to update. 1945 SecurityMarks security_marks = 1 [(google.api.field_behavior) = REQUIRED]; 1946 1947 // The FieldMask to use when updating the security marks resource. 1948 // 1949 // The field mask must not contain duplicate fields. 1950 // If empty or set to "marks", all marks will be replaced. Individual 1951 // marks can be updated using "marks.<mark_key>". 1952 google.protobuf.FieldMask update_mask = 2; 1953} 1954 1955// Request message for updating a source. 1956message UpdateSourceRequest { 1957 // Required. The source resource to update. 1958 Source source = 1 [(google.api.field_behavior) = REQUIRED]; 1959 1960 // The FieldMask to use when updating the source resource. 1961 // 1962 // If empty all mutable fields will be updated. 1963 google.protobuf.FieldMask update_mask = 2; 1964} 1965