1// Copyright 2024 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.secretmanager.v1; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/cloud/secretmanager/v1/resources.proto"; 24import "google/iam/v1/iam_policy.proto"; 25import "google/iam/v1/policy.proto"; 26import "google/protobuf/empty.proto"; 27import "google/protobuf/field_mask.proto"; 28 29option cc_enable_arenas = true; 30option csharp_namespace = "Google.Cloud.SecretManager.V1"; 31option go_package = "cloud.google.com/go/secretmanager/apiv1/secretmanagerpb;secretmanagerpb"; 32option java_multiple_files = true; 33option java_outer_classname = "ServiceProto"; 34option java_package = "com.google.cloud.secretmanager.v1"; 35option objc_class_prefix = "GSM"; 36option php_namespace = "Google\\Cloud\\SecretManager\\V1"; 37option ruby_package = "Google::Cloud::SecretManager::V1"; 38 39// Secret Manager Service 40// 41// Manages secrets and operations using those secrets. Implements a REST 42// model with the following objects: 43// 44// * [Secret][google.cloud.secretmanager.v1.Secret] 45// * [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] 46service SecretManagerService { 47 option (google.api.default_host) = "secretmanager.googleapis.com"; 48 option (google.api.oauth_scopes) = 49 "https://www.googleapis.com/auth/cloud-platform"; 50 51 // Lists [Secrets][google.cloud.secretmanager.v1.Secret]. 52 rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) { 53 option (google.api.http) = { 54 get: "/v1/{parent=projects/*}/secrets" 55 additional_bindings { get: "/v1/{parent=projects/*/locations/*}/secrets" } 56 }; 57 option (google.api.method_signature) = "parent"; 58 } 59 60 // Creates a new [Secret][google.cloud.secretmanager.v1.Secret] containing no 61 // [SecretVersions][google.cloud.secretmanager.v1.SecretVersion]. 62 rpc CreateSecret(CreateSecretRequest) returns (Secret) { 63 option (google.api.http) = { 64 post: "/v1/{parent=projects/*}/secrets" 65 body: "secret" 66 additional_bindings { 67 post: "/v1/{parent=projects/*/locations/*}/secrets" 68 body: "secret" 69 } 70 }; 71 option (google.api.method_signature) = "parent,secret_id,secret"; 72 } 73 74 // Creates a new [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] 75 // containing secret data and attaches it to an existing 76 // [Secret][google.cloud.secretmanager.v1.Secret]. 77 rpc AddSecretVersion(AddSecretVersionRequest) returns (SecretVersion) { 78 option (google.api.http) = { 79 post: "/v1/{parent=projects/*/secrets/*}:addVersion" 80 body: "*" 81 additional_bindings { 82 post: "/v1/{parent=projects/*/locations/*/secrets/*}:addVersion" 83 body: "*" 84 } 85 }; 86 option (google.api.method_signature) = "parent,payload"; 87 } 88 89 // Gets metadata for a given [Secret][google.cloud.secretmanager.v1.Secret]. 90 rpc GetSecret(GetSecretRequest) returns (Secret) { 91 option (google.api.http) = { 92 get: "/v1/{name=projects/*/secrets/*}" 93 additional_bindings { get: "/v1/{name=projects/*/locations/*/secrets/*}" } 94 }; 95 option (google.api.method_signature) = "name"; 96 } 97 98 // Updates metadata of an existing 99 // [Secret][google.cloud.secretmanager.v1.Secret]. 100 rpc UpdateSecret(UpdateSecretRequest) returns (Secret) { 101 option (google.api.http) = { 102 patch: "/v1/{secret.name=projects/*/secrets/*}" 103 body: "secret" 104 additional_bindings { 105 patch: "/v1/{secret.name=projects/*/locations/*/secrets/*}" 106 body: "secret" 107 } 108 }; 109 option (google.api.method_signature) = "secret,update_mask"; 110 } 111 112 // Deletes a [Secret][google.cloud.secretmanager.v1.Secret]. 113 rpc DeleteSecret(DeleteSecretRequest) returns (google.protobuf.Empty) { 114 option (google.api.http) = { 115 delete: "/v1/{name=projects/*/secrets/*}" 116 additional_bindings { 117 delete: "/v1/{name=projects/*/locations/*/secrets/*}" 118 } 119 }; 120 option (google.api.method_signature) = "name"; 121 } 122 123 // Lists [SecretVersions][google.cloud.secretmanager.v1.SecretVersion]. This 124 // call does not return secret data. 125 rpc ListSecretVersions(ListSecretVersionsRequest) 126 returns (ListSecretVersionsResponse) { 127 option (google.api.http) = { 128 get: "/v1/{parent=projects/*/secrets/*}/versions" 129 additional_bindings { 130 get: "/v1/{parent=projects/*/locations/*/secrets/*}/versions" 131 } 132 }; 133 option (google.api.method_signature) = "parent"; 134 } 135 136 // Gets metadata for a 137 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 138 // 139 // `projects/*/secrets/*/versions/latest` is an alias to the most recently 140 // created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 141 rpc GetSecretVersion(GetSecretVersionRequest) returns (SecretVersion) { 142 option (google.api.http) = { 143 get: "/v1/{name=projects/*/secrets/*/versions/*}" 144 additional_bindings { 145 get: "/v1/{name=projects/*/locations/*/secrets/*/versions/*}" 146 } 147 }; 148 option (google.api.method_signature) = "name"; 149 } 150 151 // Accesses a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 152 // This call returns the secret data. 153 // 154 // `projects/*/secrets/*/versions/latest` is an alias to the most recently 155 // created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 156 rpc AccessSecretVersion(AccessSecretVersionRequest) 157 returns (AccessSecretVersionResponse) { 158 option (google.api.http) = { 159 get: "/v1/{name=projects/*/secrets/*/versions/*}:access" 160 additional_bindings { 161 get: "/v1/{name=projects/*/locations/*/secrets/*/versions/*}:access" 162 } 163 }; 164 option (google.api.method_signature) = "name"; 165 } 166 167 // Disables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 168 // 169 // Sets the [state][google.cloud.secretmanager.v1.SecretVersion.state] of the 170 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to 171 // [DISABLED][google.cloud.secretmanager.v1.SecretVersion.State.DISABLED]. 172 rpc DisableSecretVersion(DisableSecretVersionRequest) 173 returns (SecretVersion) { 174 option (google.api.http) = { 175 post: "/v1/{name=projects/*/secrets/*/versions/*}:disable" 176 body: "*" 177 additional_bindings { 178 post: "/v1/{name=projects/*/locations/*/secrets/*/versions/*}:disable" 179 body: "*" 180 } 181 }; 182 option (google.api.method_signature) = "name"; 183 } 184 185 // Enables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 186 // 187 // Sets the [state][google.cloud.secretmanager.v1.SecretVersion.state] of the 188 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to 189 // [ENABLED][google.cloud.secretmanager.v1.SecretVersion.State.ENABLED]. 190 rpc EnableSecretVersion(EnableSecretVersionRequest) returns (SecretVersion) { 191 option (google.api.http) = { 192 post: "/v1/{name=projects/*/secrets/*/versions/*}:enable" 193 body: "*" 194 additional_bindings { 195 post: "/v1/{name=projects/*/locations/*/secrets/*/versions/*}:enable" 196 body: "*" 197 } 198 }; 199 option (google.api.method_signature) = "name"; 200 } 201 202 // Destroys a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 203 // 204 // Sets the [state][google.cloud.secretmanager.v1.SecretVersion.state] of the 205 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to 206 // [DESTROYED][google.cloud.secretmanager.v1.SecretVersion.State.DESTROYED] 207 // and irrevocably destroys the secret data. 208 rpc DestroySecretVersion(DestroySecretVersionRequest) 209 returns (SecretVersion) { 210 option (google.api.http) = { 211 post: "/v1/{name=projects/*/secrets/*/versions/*}:destroy" 212 body: "*" 213 additional_bindings { 214 post: "/v1/{name=projects/*/locations/*/secrets/*/versions/*}:destroy" 215 body: "*" 216 } 217 }; 218 option (google.api.method_signature) = "name"; 219 } 220 221 // Sets the access control policy on the specified secret. Replaces any 222 // existing policy. 223 // 224 // Permissions on 225 // [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] are enforced 226 // according to the policy set on the associated 227 // [Secret][google.cloud.secretmanager.v1.Secret]. 228 rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) 229 returns (google.iam.v1.Policy) { 230 option (google.api.http) = { 231 post: "/v1/{resource=projects/*/secrets/*}:setIamPolicy" 232 body: "*" 233 additional_bindings { 234 post: "/v1/{resource=projects/*/locations/*/secrets/*}:setIamPolicy" 235 body: "*" 236 } 237 }; 238 } 239 240 // Gets the access control policy for a secret. 241 // Returns empty policy if the secret exists and does not have a policy set. 242 rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) 243 returns (google.iam.v1.Policy) { 244 option (google.api.http) = { 245 get: "/v1/{resource=projects/*/secrets/*}:getIamPolicy" 246 additional_bindings { 247 get: "/v1/{resource=projects/*/locations/*/secrets/*}:getIamPolicy" 248 } 249 }; 250 } 251 252 // Returns permissions that a caller has for the specified secret. 253 // If the secret does not exist, this call returns an empty set of 254 // permissions, not a NOT_FOUND error. 255 // 256 // Note: This operation is designed to be used for building permission-aware 257 // UIs and command-line tools, not for authorization checking. This operation 258 // may "fail open" without warning. 259 rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) 260 returns (google.iam.v1.TestIamPermissionsResponse) { 261 option (google.api.http) = { 262 post: "/v1/{resource=projects/*/secrets/*}:testIamPermissions" 263 body: "*" 264 additional_bindings { 265 post: "/v1/{resource=projects/*/locations/*/secrets/*}:testIamPermissions" 266 body: "*" 267 } 268 }; 269 } 270} 271 272// Request message for 273// [SecretManagerService.ListSecrets][google.cloud.secretmanager.v1.SecretManagerService.ListSecrets]. 274message ListSecretsRequest { 275 // Required. The resource name of the project associated with the 276 // [Secrets][google.cloud.secretmanager.v1.Secret], in the format `projects/*` 277 // or `projects/*/locations/*` 278 string parent = 1 [ 279 (google.api.field_behavior) = REQUIRED, 280 (google.api.resource_reference) = { 281 child_type: "secretmanager.googleapis.com/Secret" 282 } 283 ]; 284 285 // Optional. The maximum number of results to be returned in a single page. If 286 // set to 0, the server decides the number of results to return. If the 287 // number is greater than 25000, it is capped at 25000. 288 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 289 290 // Optional. Pagination token, returned earlier via 291 // [ListSecretsResponse.next_page_token][google.cloud.secretmanager.v1.ListSecretsResponse.next_page_token]. 292 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 293 294 // Optional. Filter string, adhering to the rules in 295 // [List-operation 296 // filtering](https://cloud.google.com/secret-manager/docs/filtering). List 297 // only secrets matching the filter. If filter is empty, all secrets are 298 // listed. 299 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 300} 301 302// Response message for 303// [SecretManagerService.ListSecrets][google.cloud.secretmanager.v1.SecretManagerService.ListSecrets]. 304message ListSecretsResponse { 305 // The list of [Secrets][google.cloud.secretmanager.v1.Secret] sorted in 306 // reverse by create_time (newest first). 307 repeated Secret secrets = 1; 308 309 // A token to retrieve the next page of results. Pass this value in 310 // [ListSecretsRequest.page_token][google.cloud.secretmanager.v1.ListSecretsRequest.page_token] 311 // to retrieve the next page. 312 string next_page_token = 2; 313 314 // The total number of [Secrets][google.cloud.secretmanager.v1.Secret] but 0 315 // when the 316 // [ListSecretsRequest.filter][google.cloud.secretmanager.v1.ListSecretsRequest.filter] 317 // field is set. 318 int32 total_size = 3; 319} 320 321// Request message for 322// [SecretManagerService.CreateSecret][google.cloud.secretmanager.v1.SecretManagerService.CreateSecret]. 323message CreateSecretRequest { 324 // Required. The resource name of the project to associate with the 325 // [Secret][google.cloud.secretmanager.v1.Secret], in the format `projects/*` 326 // or `projects/*/locations/*`. 327 string parent = 1 [ 328 (google.api.field_behavior) = REQUIRED, 329 (google.api.resource_reference) = { 330 child_type: "secretmanager.googleapis.com/Secret" 331 } 332 ]; 333 334 // Required. This must be unique within the project. 335 // 336 // A secret ID is a string with a maximum length of 255 characters and can 337 // contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and 338 // underscore (`_`) characters. 339 string secret_id = 2 [(google.api.field_behavior) = REQUIRED]; 340 341 // Required. A [Secret][google.cloud.secretmanager.v1.Secret] with initial 342 // field values. 343 Secret secret = 3 [(google.api.field_behavior) = REQUIRED]; 344} 345 346// Request message for 347// [SecretManagerService.AddSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion]. 348message AddSecretVersionRequest { 349 // Required. The resource name of the 350 // [Secret][google.cloud.secretmanager.v1.Secret] to associate with the 351 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format 352 // `projects/*/secrets/*` or `projects/*/locations/*/secrets/*`. 353 string parent = 1 [ 354 (google.api.field_behavior) = REQUIRED, 355 (google.api.resource_reference) = { 356 type: "secretmanager.googleapis.com/Secret" 357 } 358 ]; 359 360 // Required. The secret payload of the 361 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 362 SecretPayload payload = 2 [(google.api.field_behavior) = REQUIRED]; 363} 364 365// Request message for 366// [SecretManagerService.GetSecret][google.cloud.secretmanager.v1.SecretManagerService.GetSecret]. 367message GetSecretRequest { 368 // Required. The resource name of the 369 // [Secret][google.cloud.secretmanager.v1.Secret], in the format 370 // `projects/*/secrets/*` or `projects/*/locations/*/secrets/*`. 371 string name = 1 [ 372 (google.api.field_behavior) = REQUIRED, 373 (google.api.resource_reference) = { 374 type: "secretmanager.googleapis.com/Secret" 375 } 376 ]; 377} 378 379// Request message for 380// [SecretManagerService.ListSecretVersions][google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions]. 381message ListSecretVersionsRequest { 382 // Required. The resource name of the 383 // [Secret][google.cloud.secretmanager.v1.Secret] associated with the 384 // [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] to list, in 385 // the format `projects/*/secrets/*` or `projects/*/locations/*/secrets/*`. 386 string parent = 1 [ 387 (google.api.field_behavior) = REQUIRED, 388 (google.api.resource_reference) = { 389 type: "secretmanager.googleapis.com/Secret" 390 } 391 ]; 392 393 // Optional. The maximum number of results to be returned in a single page. If 394 // set to 0, the server decides the number of results to return. If the 395 // number is greater than 25000, it is capped at 25000. 396 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 397 398 // Optional. Pagination token, returned earlier via 399 // ListSecretVersionsResponse.next_page_token][]. 400 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 401 402 // Optional. Filter string, adhering to the rules in 403 // [List-operation 404 // filtering](https://cloud.google.com/secret-manager/docs/filtering). List 405 // only secret versions matching the filter. If filter is empty, all secret 406 // versions are listed. 407 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 408} 409 410// Response message for 411// [SecretManagerService.ListSecretVersions][google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions]. 412message ListSecretVersionsResponse { 413 // The list of [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] 414 // sorted in reverse by create_time (newest first). 415 repeated SecretVersion versions = 1; 416 417 // A token to retrieve the next page of results. Pass this value in 418 // [ListSecretVersionsRequest.page_token][google.cloud.secretmanager.v1.ListSecretVersionsRequest.page_token] 419 // to retrieve the next page. 420 string next_page_token = 2; 421 422 // The total number of 423 // [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] but 0 when 424 // the 425 // [ListSecretsRequest.filter][google.cloud.secretmanager.v1.ListSecretsRequest.filter] 426 // field is set. 427 int32 total_size = 3; 428} 429 430// Request message for 431// [SecretManagerService.GetSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.GetSecretVersion]. 432message GetSecretVersionRequest { 433 // Required. The resource name of the 434 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format 435 // `projects/*/secrets/*/versions/*` or 436 // `projects/*/locations/*/secrets/*/versions/*`. 437 // 438 // `projects/*/secrets/*/versions/latest` or 439 // `projects/*/locations/*/secrets/*/versions/latest` is an alias to the most 440 // recently created 441 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 442 string name = 1 [ 443 (google.api.field_behavior) = REQUIRED, 444 (google.api.resource_reference) = { 445 type: "secretmanager.googleapis.com/SecretVersion" 446 } 447 ]; 448} 449 450// Request message for 451// [SecretManagerService.UpdateSecret][google.cloud.secretmanager.v1.SecretManagerService.UpdateSecret]. 452message UpdateSecretRequest { 453 // Required. [Secret][google.cloud.secretmanager.v1.Secret] with updated field 454 // values. 455 Secret secret = 1 [(google.api.field_behavior) = REQUIRED]; 456 457 // Required. Specifies the fields to be updated. 458 google.protobuf.FieldMask update_mask = 2 459 [(google.api.field_behavior) = REQUIRED]; 460} 461 462// Request message for 463// [SecretManagerService.AccessSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion]. 464message AccessSecretVersionRequest { 465 // Required. The resource name of the 466 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format 467 // `projects/*/secrets/*/versions/*` or 468 // `projects/*/locations/*/secrets/*/versions/*`. 469 // 470 // `projects/*/secrets/*/versions/latest` or 471 // `projects/*/locations/*/secrets/*/versions/latest` is an alias to the most 472 // recently created 473 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. 474 string name = 1 [ 475 (google.api.field_behavior) = REQUIRED, 476 (google.api.resource_reference) = { 477 type: "secretmanager.googleapis.com/SecretVersion" 478 } 479 ]; 480} 481 482// Response message for 483// [SecretManagerService.AccessSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion]. 484message AccessSecretVersionResponse { 485 // The resource name of the 486 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format 487 // `projects/*/secrets/*/versions/*` or 488 // `projects/*/locations/*/secrets/*/versions/*`. 489 string name = 1 [(google.api.resource_reference) = { 490 type: "secretmanager.googleapis.com/SecretVersion" 491 }]; 492 493 // Secret payload 494 SecretPayload payload = 2; 495} 496 497// Request message for 498// [SecretManagerService.DeleteSecret][google.cloud.secretmanager.v1.SecretManagerService.DeleteSecret]. 499message DeleteSecretRequest { 500 // Required. The resource name of the 501 // [Secret][google.cloud.secretmanager.v1.Secret] to delete in the format 502 // `projects/*/secrets/*`. 503 string name = 1 [ 504 (google.api.field_behavior) = REQUIRED, 505 (google.api.resource_reference) = { 506 type: "secretmanager.googleapis.com/Secret" 507 } 508 ]; 509 510 // Optional. Etag of the [Secret][google.cloud.secretmanager.v1.Secret]. The 511 // request succeeds if it matches the etag of the currently stored secret 512 // object. If the etag is omitted, the request succeeds. 513 string etag = 2 [(google.api.field_behavior) = OPTIONAL]; 514} 515 516// Request message for 517// [SecretManagerService.DisableSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.DisableSecretVersion]. 518message DisableSecretVersionRequest { 519 // Required. The resource name of the 520 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to disable in 521 // the format `projects/*/secrets/*/versions/*` or 522 // `projects/*/locations/*/secrets/*/versions/*`. 523 string name = 1 [ 524 (google.api.field_behavior) = REQUIRED, 525 (google.api.resource_reference) = { 526 type: "secretmanager.googleapis.com/SecretVersion" 527 } 528 ]; 529 530 // Optional. Etag of the 531 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request 532 // succeeds if it matches the etag of the currently stored secret version 533 // object. If the etag is omitted, the request succeeds. 534 string etag = 2 [(google.api.field_behavior) = OPTIONAL]; 535} 536 537// Request message for 538// [SecretManagerService.EnableSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.EnableSecretVersion]. 539message EnableSecretVersionRequest { 540 // Required. The resource name of the 541 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to enable in 542 // the format `projects/*/secrets/*/versions/*` or 543 // `projects/*/locations/*/secrets/*/versions/*`. 544 string name = 1 [ 545 (google.api.field_behavior) = REQUIRED, 546 (google.api.resource_reference) = { 547 type: "secretmanager.googleapis.com/SecretVersion" 548 } 549 ]; 550 551 // Optional. Etag of the 552 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request 553 // succeeds if it matches the etag of the currently stored secret version 554 // object. If the etag is omitted, the request succeeds. 555 string etag = 2 [(google.api.field_behavior) = OPTIONAL]; 556} 557 558// Request message for 559// [SecretManagerService.DestroySecretVersion][google.cloud.secretmanager.v1.SecretManagerService.DestroySecretVersion]. 560message DestroySecretVersionRequest { 561 // Required. The resource name of the 562 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to destroy in 563 // the format `projects/*/secrets/*/versions/*` or 564 // `projects/*/locations/*/secrets/*/versions/*`. 565 string name = 1 [ 566 (google.api.field_behavior) = REQUIRED, 567 (google.api.resource_reference) = { 568 type: "secretmanager.googleapis.com/SecretVersion" 569 } 570 ]; 571 572 // Optional. Etag of the 573 // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request 574 // succeeds if it matches the etag of the currently stored secret version 575 // object. If the etag is omitted, the request succeeds. 576 string etag = 2 [(google.api.field_behavior) = OPTIONAL]; 577} 578