@@ -21,6 +21,8 @@ import "google/api/client.proto";
2121import "google/api/field_behavior.proto" ;
2222import "google/api/resource.proto" ;
2323import "google/cloud/kms/v1/resources.proto" ;
24+ import "google/longrunning/operations.proto" ;
25+ import "google/protobuf/empty.proto" ;
2426import "google/protobuf/field_mask.proto" ;
2527import "google/protobuf/wrappers.proto" ;
2628
@@ -82,6 +84,17 @@ service KeyManagementService {
8284 option (google.api.method_signature ) = "parent" ;
8385 }
8486
87+ // Lists the [RetiredResources][google.cloud.kms.v1.RetiredResource] which are
88+ // the records of deleted [CryptoKeys][google.cloud.kms.v1.CryptoKey].
89+ // RetiredResources prevent the reuse of these resource names after deletion.
90+ rpc ListRetiredResources (ListRetiredResourcesRequest )
91+ returns (ListRetiredResourcesResponse ) {
92+ option (google.api.http ) = {
93+ get : "/v1/{parent=projects/*/locations/*}/retiredResources"
94+ };
95+ option (google.api.method_signature ) = "parent" ;
96+ }
97+
8598 // Returns metadata for a given [KeyRing][google.cloud.kms.v1.KeyRing].
8699 rpc GetKeyRing (GetKeyRingRequest ) returns (KeyRing ) {
87100 option (google.api.http ) = {
@@ -131,6 +144,16 @@ service KeyManagementService {
131144 option (google.api.method_signature ) = "name" ;
132145 }
133146
147+ // Retrieves a specific [RetiredResource][google.cloud.kms.v1.RetiredResource]
148+ // resource, which represents the record of a deleted
149+ // [CryptoKey][google.cloud.kms.v1.CryptoKey].
150+ rpc GetRetiredResource (GetRetiredResourceRequest ) returns (RetiredResource ) {
151+ option (google.api.http ) = {
152+ get : "/v1/{name=projects/*/locations/*/retiredResources/*}"
153+ };
154+ option (google.api.method_signature ) = "name" ;
155+ }
156+
134157 // Create a new [KeyRing][google.cloud.kms.v1.KeyRing] in a given Project and
135158 // Location.
136159 rpc CreateKeyRing (CreateKeyRingRequest ) returns (KeyRing ) {
@@ -170,6 +193,47 @@ service KeyManagementService {
170193 option (google.api.method_signature ) = "parent,crypto_key_version" ;
171194 }
172195
196+ // Permanently deletes the given [CryptoKey][google.cloud.kms.v1.CryptoKey].
197+ // All child [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] must
198+ // have been previously deleted using
199+ // [KeyManagementService.DeleteCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.DeleteCryptoKeyVersion].
200+ // The specified crypto key will be immediately and permanently deleted upon
201+ // calling this method. This action cannot be undone.
202+ rpc DeleteCryptoKey (DeleteCryptoKeyRequest )
203+ returns (google.longrunning.Operation ) {
204+ option (google.api.http ) = {
205+ delete : "/v1/{name=projects/*/locations/*/keyRings/*/cryptoKeys/*}"
206+ };
207+ option (google.api.method_signature ) = "name" ;
208+ option (google.longrunning.operation_info ) = {
209+ response_type : "google.protobuf.Empty"
210+ metadata_type : "DeleteCryptoKeyMetadata"
211+ };
212+ }
213+
214+ // Permanently deletes the given
215+ // [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. Only possible if
216+ // the version has not been previously imported and if its
217+ // [state][google.cloud.kms.v1.CryptoKeyVersion.state] is one of
218+ // [DESTROYED][CryptoKeyVersionState.DESTROYED],
219+ // [IMPORT_FAILED][CryptoKeyVersionState.IMPORT_FAILED], or
220+ // [GENERATION_FAILED][CryptoKeyVersionState.GENERATION_FAILED].
221+ // Successfully imported
222+ // [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion] cannot be deleted
223+ // at this time. The specified version will be immediately and permanently
224+ // deleted upon calling this method. This action cannot be undone.
225+ rpc DeleteCryptoKeyVersion (DeleteCryptoKeyVersionRequest )
226+ returns (google.longrunning.Operation ) {
227+ option (google.api.http ) = {
228+ delete : "/v1/{name=projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*}"
229+ };
230+ option (google.api.method_signature ) = "name" ;
231+ option (google.longrunning.operation_info ) = {
232+ response_type : "google.protobuf.Empty"
233+ metadata_type : "DeleteCryptoKeyVersionMetadata"
234+ };
235+ }
236+
173237 // Import wrapped key material into a
174238 // [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion].
175239 //
@@ -575,6 +639,34 @@ message ListImportJobsRequest {
575639 string order_by = 5 [(google.api.field_behavior ) = OPTIONAL ];
576640}
577641
642+ // Request message for
643+ // [KeyManagementService.ListRetiredResources][google.cloud.kms.v1.KeyManagementService.ListRetiredResources].
644+ message ListRetiredResourcesRequest {
645+ // Required. The project-specific location holding the
646+ // [RetiredResources][google.cloud.kms.v1.RetiredResource], in the format
647+ // `projects/*/locations/*`.
648+ string parent = 1 [
649+ (google.api.field_behavior ) = REQUIRED ,
650+ (google.api.resource_reference ) = {
651+ child_type : "cloudkms.googleapis.com/RetiredResource"
652+ }
653+ ];
654+
655+ // Optional. Optional limit on the number of
656+ // [RetiredResources][google.cloud.kms.v1.RetiredResource] to be included in
657+ // the response. Further
658+ // [RetiredResources][google.cloud.kms.v1.RetiredResource] can subsequently be
659+ // obtained by including the
660+ // [ListRetiredResourcesResponse.next_page_token][google.cloud.kms.v1.ListRetiredResourcesResponse.next_page_token]
661+ // in a subsequent request. If unspecified, the server will pick an
662+ // appropriate default.
663+ int32 page_size = 2 [(google.api.field_behavior ) = OPTIONAL ];
664+
665+ // Optional. Optional pagination token, returned earlier via
666+ // [ListRetiredResourcesResponse.next_page_token][google.cloud.kms.v1.ListRetiredResourcesResponse.next_page_token].
667+ string page_token = 3 [(google.api.field_behavior ) = OPTIONAL ];
668+ }
669+
578670// Response message for
579671// [KeyManagementService.ListKeyRings][google.cloud.kms.v1.KeyManagementService.ListKeyRings].
580672message ListKeyRingsResponse {
@@ -656,6 +748,22 @@ message ListImportJobsResponse {
656748 int32 total_size = 3 ;
657749}
658750
751+ // Response message for
752+ // [KeyManagementService.ListRetiredResources][google.cloud.kms.v1.KeyManagementService.ListRetiredResources].
753+ message ListRetiredResourcesResponse {
754+ // The list of [RetiredResources][google.cloud.kms.v1.RetiredResource].
755+ repeated RetiredResource retired_resources = 1 ;
756+
757+ // A token to retrieve the next page of results. Pass this value in
758+ // [ListRetiredResourcesRequest.page_token][google.cloud.kms.v1.ListRetiredResourcesRequest.page_token]
759+ // to retrieve the next page of results.
760+ string next_page_token = 2 ;
761+
762+ // The total number of [RetiredResources][google.cloud.kms.v1.RetiredResource]
763+ // that matched the query.
764+ int64 total_size = 3 ;
765+ }
766+
659767// Request message for
660768// [KeyManagementService.GetKeyRing][google.cloud.kms.v1.KeyManagementService.GetKeyRing].
661769message GetKeyRingRequest {
@@ -731,6 +839,19 @@ message GetImportJobRequest {
731839 ];
732840}
733841
842+ // Request message for
843+ // [KeyManagementService.GetRetiredResource][google.cloud.kms.v1.KeyManagementService.GetRetiredResource].
844+ message GetRetiredResourceRequest {
845+ // Required. The [name][google.cloud.kms.v1.RetiredResource.name] of the
846+ // [RetiredResource][google.cloud.kms.v1.RetiredResource] to get.
847+ string name = 1 [
848+ (google.api.field_behavior ) = REQUIRED ,
849+ (google.api.resource_reference ) = {
850+ type : "cloudkms.googleapis.com/RetiredResource"
851+ }
852+ ];
853+ }
854+
734855// Request message for
735856// [KeyManagementService.CreateKeyRing][google.cloud.kms.v1.KeyManagementService.CreateKeyRing].
736857message CreateKeyRingRequest {
@@ -803,6 +924,32 @@ message CreateCryptoKeyVersionRequest {
803924 [(google.api.field_behavior ) = REQUIRED ];
804925}
805926
927+ // Request message for
928+ // [KeyManagementService.DeleteCryptoKey][google.cloud.kms.v1.KeyManagementService.DeleteCryptoKey].
929+ message DeleteCryptoKeyRequest {
930+ // Required. The [name][google.cloud.kms.v1.CryptoKey.name] of the
931+ // [CryptoKey][google.cloud.kms.v1.CryptoKey] to delete.
932+ string name = 1 [
933+ (google.api.field_behavior ) = REQUIRED ,
934+ (google.api.resource_reference ) = {
935+ type : "cloudkms.googleapis.com/CryptoKey"
936+ }
937+ ];
938+ }
939+
940+ // Request message for
941+ // [KeyManagementService.DeleteCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.DeleteCryptoKeyVersion].
942+ message DeleteCryptoKeyVersionRequest {
943+ // Required. The [name][google.cloud.kms.v1.CryptoKeyVersion.name] of the
944+ // [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to delete.
945+ string name = 1 [
946+ (google.api.field_behavior ) = REQUIRED ,
947+ (google.api.resource_reference ) = {
948+ type : "cloudkms.googleapis.com/CryptoKeyVersion"
949+ }
950+ ];
951+ }
952+
806953// Request message for
807954// [KeyManagementService.ImportCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.ImportCryptoKeyVersion].
808955message ImportCryptoKeyVersionRequest {
@@ -2212,3 +2359,24 @@ message LocationMetadata {
22122359 // can be created in this location.
22132360 bool hsm_single_tenant_available = 3 ;
22142361}
2362+
2363+ // Represents the metadata of the
2364+ // [KeyManagementService.DeleteCryptoKey][google.cloud.kms.v1.KeyManagementService.DeleteCryptoKey]
2365+ // long-running operation.
2366+ message DeleteCryptoKeyMetadata {
2367+ // Output only. The resource name of the
2368+ // [RetiredResource][google.cloud.kms.v1.RetiredResource] created as a result
2369+ // of this operation, in the format
2370+ // `projects/*/locations/*/retiredResources/*`.
2371+ string retired_resource = 1 [
2372+ (google.api.field_behavior ) = OUTPUT_ONLY ,
2373+ (google.api.resource_reference ) = {
2374+ type : "cloudkms.googleapis.com/RetiredResource"
2375+ }
2376+ ];
2377+ }
2378+
2379+ // Represents the metadata of the
2380+ // [KeyManagementService.DeleteCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.DeleteCryptoKeyVersion]
2381+ // long-running operation.
2382+ message DeleteCryptoKeyVersionMetadata {}
0 commit comments