xref: /aosp_15_r20/external/googleapis/google/cloud/netapp/v1/cloud_netapp_service.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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.netapp.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/netapp/v1/active_directory.proto";
24import "google/cloud/netapp/v1/backup.proto";
25import "google/cloud/netapp/v1/backup_policy.proto";
26import "google/cloud/netapp/v1/backup_vault.proto";
27import "google/cloud/netapp/v1/kms.proto";
28import "google/cloud/netapp/v1/replication.proto";
29import "google/cloud/netapp/v1/snapshot.proto";
30import "google/cloud/netapp/v1/storage_pool.proto";
31import "google/cloud/netapp/v1/volume.proto";
32import "google/longrunning/operations.proto";
33import "google/protobuf/empty.proto";
34import "google/protobuf/timestamp.proto";
35
36option csharp_namespace = "Google.Cloud.NetApp.V1";
37option go_package = "cloud.google.com/go/netapp/apiv1/netapppb;netapppb";
38option java_multiple_files = true;
39option java_outer_classname = "CloudNetappServiceProto";
40option java_package = "com.google.cloud.netapp.v1";
41option php_namespace = "Google\\Cloud\\NetApp\\V1";
42option ruby_package = "Google::Cloud::NetApp::V1";
43option (google.api.resource_definition) = {
44  type: "compute.googleapis.com/Network"
45  pattern: "projects/{project}/global/networks/{network}"
46};
47
48// NetApp Files Google Cloud Service
49service NetApp {
50  option (google.api.default_host) = "netapp.googleapis.com";
51  option (google.api.oauth_scopes) =
52      "https://www.googleapis.com/auth/cloud-platform";
53
54  // Returns descriptions of all storage pools owned by the caller.
55  rpc ListStoragePools(ListStoragePoolsRequest)
56      returns (ListStoragePoolsResponse) {
57    option (google.api.http) = {
58      get: "/v1/{parent=projects/*/locations/*}/storagePools"
59    };
60    option (google.api.method_signature) = "parent";
61  }
62
63  // Creates a new storage pool.
64  rpc CreateStoragePool(CreateStoragePoolRequest)
65      returns (google.longrunning.Operation) {
66    option (google.api.http) = {
67      post: "/v1/{parent=projects/*/locations/*}/storagePools"
68      body: "storage_pool"
69    };
70    option (google.api.method_signature) =
71        "parent,storage_pool,storage_pool_id";
72    option (google.longrunning.operation_info) = {
73      response_type: "StoragePool"
74      metadata_type: "OperationMetadata"
75    };
76  }
77
78  // Returns the description of the specified storage pool by poolId.
79  rpc GetStoragePool(GetStoragePoolRequest) returns (StoragePool) {
80    option (google.api.http) = {
81      get: "/v1/{name=projects/*/locations/*/storagePools/*}"
82    };
83    option (google.api.method_signature) = "name";
84  }
85
86  // Updates the storage pool properties with the full spec
87  rpc UpdateStoragePool(UpdateStoragePoolRequest)
88      returns (google.longrunning.Operation) {
89    option (google.api.http) = {
90      patch: "/v1/{storage_pool.name=projects/*/locations/*/storagePools/*}"
91      body: "storage_pool"
92    };
93    option (google.api.method_signature) = "storage_pool,update_mask";
94    option (google.longrunning.operation_info) = {
95      response_type: "StoragePool"
96      metadata_type: "OperationMetadata"
97    };
98  }
99
100  // Warning! This operation will permanently delete the storage pool.
101  rpc DeleteStoragePool(DeleteStoragePoolRequest)
102      returns (google.longrunning.Operation) {
103    option (google.api.http) = {
104      delete: "/v1/{name=projects/*/locations/*/storagePools/*}"
105    };
106    option (google.api.method_signature) = "name";
107    option (google.longrunning.operation_info) = {
108      response_type: "google.protobuf.Empty"
109      metadata_type: "OperationMetadata"
110    };
111  }
112
113  // Lists Volumes in a given project.
114  rpc ListVolumes(ListVolumesRequest) returns (ListVolumesResponse) {
115    option (google.api.http) = {
116      get: "/v1/{parent=projects/*/locations/*}/volumes"
117    };
118    option (google.api.method_signature) = "parent";
119  }
120
121  // Gets details of a single Volume.
122  rpc GetVolume(GetVolumeRequest) returns (Volume) {
123    option (google.api.http) = {
124      get: "/v1/{name=projects/*/locations/*/volumes/*}"
125    };
126    option (google.api.method_signature) = "name";
127  }
128
129  // Creates a new Volume in a given project and location.
130  rpc CreateVolume(CreateVolumeRequest) returns (google.longrunning.Operation) {
131    option (google.api.http) = {
132      post: "/v1/{parent=projects/*/locations/*}/volumes"
133      body: "volume"
134    };
135    option (google.api.method_signature) = "parent,volume,volume_id";
136    option (google.longrunning.operation_info) = {
137      response_type: "Volume"
138      metadata_type: "OperationMetadata"
139    };
140  }
141
142  // Updates the parameters of a single Volume.
143  rpc UpdateVolume(UpdateVolumeRequest) returns (google.longrunning.Operation) {
144    option (google.api.http) = {
145      patch: "/v1/{volume.name=projects/*/locations/*/volumes/*}"
146      body: "volume"
147    };
148    option (google.api.method_signature) = "volume,update_mask";
149    option (google.longrunning.operation_info) = {
150      response_type: "Volume"
151      metadata_type: "OperationMetadata"
152    };
153  }
154
155  // Deletes a single Volume.
156  rpc DeleteVolume(DeleteVolumeRequest) returns (google.longrunning.Operation) {
157    option (google.api.http) = {
158      delete: "/v1/{name=projects/*/locations/*/volumes/*}"
159    };
160    option (google.api.method_signature) = "name";
161    option (google.longrunning.operation_info) = {
162      response_type: "google.protobuf.Empty"
163      metadata_type: "OperationMetadata"
164    };
165  }
166
167  // Revert an existing volume to a specified snapshot.
168  // Warning! This operation will permanently revert all changes made after the
169  // snapshot was created.
170  rpc RevertVolume(RevertVolumeRequest) returns (google.longrunning.Operation) {
171    option (google.api.http) = {
172      post: "/v1/{name=projects/*/locations/*/volumes/*}:revert"
173      body: "*"
174    };
175    option (google.longrunning.operation_info) = {
176      response_type: "Volume"
177      metadata_type: "OperationMetadata"
178    };
179  }
180
181  // Returns descriptions of all snapshots for a volume.
182  rpc ListSnapshots(ListSnapshotsRequest) returns (ListSnapshotsResponse) {
183    option (google.api.http) = {
184      get: "/v1/{parent=projects/*/locations/*/volumes/*}/snapshots"
185    };
186    option (google.api.method_signature) = "parent";
187  }
188
189  // Describe a snapshot for a volume.
190  rpc GetSnapshot(GetSnapshotRequest) returns (Snapshot) {
191    option (google.api.http) = {
192      get: "/v1/{name=projects/*/locations/*/volumes/*/snapshots/*}"
193    };
194    option (google.api.method_signature) = "name";
195  }
196
197  // Create a new snapshot for a volume.
198  rpc CreateSnapshot(CreateSnapshotRequest)
199      returns (google.longrunning.Operation) {
200    option (google.api.http) = {
201      post: "/v1/{parent=projects/*/locations/*/volumes/*}/snapshots"
202      body: "snapshot"
203    };
204    option (google.api.method_signature) = "parent,snapshot,snapshot_id";
205    option (google.longrunning.operation_info) = {
206      response_type: "Snapshot"
207      metadata_type: "OperationMetadata"
208    };
209  }
210
211  // Deletes a snapshot.
212  rpc DeleteSnapshot(DeleteSnapshotRequest)
213      returns (google.longrunning.Operation) {
214    option (google.api.http) = {
215      delete: "/v1/{name=projects/*/locations/*/volumes/*/snapshots/*}"
216    };
217    option (google.api.method_signature) = "name";
218    option (google.longrunning.operation_info) = {
219      response_type: "google.protobuf.Empty"
220      metadata_type: "OperationMetadata"
221    };
222  }
223
224  // Updates the settings of a specific snapshot.
225  rpc UpdateSnapshot(UpdateSnapshotRequest)
226      returns (google.longrunning.Operation) {
227    option (google.api.http) = {
228      patch: "/v1/{snapshot.name=projects/*/locations/*/volumes/*/snapshots/*}"
229      body: "snapshot"
230    };
231    option (google.api.method_signature) = "snapshot,update_mask";
232    option (google.longrunning.operation_info) = {
233      response_type: "Snapshot"
234      metadata_type: "OperationMetadata"
235    };
236  }
237
238  // Lists active directories.
239  rpc ListActiveDirectories(ListActiveDirectoriesRequest)
240      returns (ListActiveDirectoriesResponse) {
241    option (google.api.http) = {
242      get: "/v1/{parent=projects/*/locations/*}/activeDirectories"
243    };
244    option (google.api.method_signature) = "parent";
245  }
246
247  // Describes a specified active directory.
248  rpc GetActiveDirectory(GetActiveDirectoryRequest) returns (ActiveDirectory) {
249    option (google.api.http) = {
250      get: "/v1/{name=projects/*/locations/*/activeDirectories/*}"
251    };
252    option (google.api.method_signature) = "name";
253  }
254
255  // CreateActiveDirectory
256  // Creates the active directory specified in the request.
257  rpc CreateActiveDirectory(CreateActiveDirectoryRequest)
258      returns (google.longrunning.Operation) {
259    option (google.api.http) = {
260      post: "/v1/{parent=projects/*/locations/*}/activeDirectories"
261      body: "active_directory"
262    };
263    option (google.api.method_signature) =
264        "parent,active_directory,active_directory_id";
265    option (google.longrunning.operation_info) = {
266      response_type: "ActiveDirectory"
267      metadata_type: "OperationMetadata"
268    };
269  }
270
271  // Update the parameters of an active directories.
272  rpc UpdateActiveDirectory(UpdateActiveDirectoryRequest)
273      returns (google.longrunning.Operation) {
274    option (google.api.http) = {
275      patch: "/v1/{active_directory.name=projects/*/locations/*/activeDirectories/*}"
276      body: "active_directory"
277    };
278    option (google.api.method_signature) = "active_directory,update_mask";
279    option (google.longrunning.operation_info) = {
280      response_type: "ActiveDirectory"
281      metadata_type: "OperationMetadata"
282    };
283  }
284
285  // Delete the active directory specified in the request.
286  rpc DeleteActiveDirectory(DeleteActiveDirectoryRequest)
287      returns (google.longrunning.Operation) {
288    option (google.api.http) = {
289      delete: "/v1/{name=projects/*/locations/*/activeDirectories/*}"
290    };
291    option (google.api.method_signature) = "name";
292    option (google.longrunning.operation_info) = {
293      response_type: "google.protobuf.Empty"
294      metadata_type: "OperationMetadata"
295    };
296  }
297
298  // Returns descriptions of all KMS configs owned by the caller.
299  rpc ListKmsConfigs(ListKmsConfigsRequest) returns (ListKmsConfigsResponse) {
300    option (google.api.http) = {
301      get: "/v1/{parent=projects/*/locations/*}/kmsConfigs"
302    };
303    option (google.api.method_signature) = "parent";
304  }
305
306  // Creates a new KMS config.
307  rpc CreateKmsConfig(CreateKmsConfigRequest)
308      returns (google.longrunning.Operation) {
309    option (google.api.http) = {
310      post: "/v1/{parent=projects/*/locations/*}/kmsConfigs"
311      body: "kms_config"
312    };
313    option (google.api.method_signature) = "parent,kms_config,kms_config_id";
314    option (google.longrunning.operation_info) = {
315      response_type: "KmsConfig"
316      metadata_type: "OperationMetadata"
317    };
318  }
319
320  // Returns the description of the specified KMS config by kms_config_id.
321  rpc GetKmsConfig(GetKmsConfigRequest) returns (KmsConfig) {
322    option (google.api.http) = {
323      get: "/v1/{name=projects/*/locations/*/kmsConfigs/*}"
324    };
325    option (google.api.method_signature) = "name";
326  }
327
328  // Updates the Kms config properties with the full spec
329  rpc UpdateKmsConfig(UpdateKmsConfigRequest)
330      returns (google.longrunning.Operation) {
331    option (google.api.http) = {
332      patch: "/v1/{kms_config.name=projects/*/locations/*/kmsConfigs/*}"
333      body: "kms_config"
334    };
335    option (google.api.method_signature) = "kms_config,update_mask";
336    option (google.longrunning.operation_info) = {
337      response_type: "KmsConfig"
338      metadata_type: "OperationMetadata"
339    };
340  }
341
342  // Encrypt the existing volumes without CMEK encryption with the desired the
343  // KMS config for the whole region.
344  rpc EncryptVolumes(EncryptVolumesRequest)
345      returns (google.longrunning.Operation) {
346    option (google.api.http) = {
347      post: "/v1/{name=projects/*/locations/*/kmsConfigs/*}:encrypt"
348      body: "*"
349    };
350    option (google.longrunning.operation_info) = {
351      response_type: "KmsConfig"
352      metadata_type: "OperationMetadata"
353    };
354  }
355
356  // Verifies KMS config reachability.
357  rpc VerifyKmsConfig(VerifyKmsConfigRequest)
358      returns (VerifyKmsConfigResponse) {
359    option (google.api.http) = {
360      post: "/v1/{name=projects/*/locations/*/kmsConfigs/*}:verify"
361      body: "*"
362    };
363  }
364
365  // Warning! This operation will permanently delete the Kms config.
366  rpc DeleteKmsConfig(DeleteKmsConfigRequest)
367      returns (google.longrunning.Operation) {
368    option (google.api.http) = {
369      delete: "/v1/{name=projects/*/locations/*/kmsConfigs/*}"
370    };
371    option (google.api.method_signature) = "name";
372    option (google.longrunning.operation_info) = {
373      response_type: "google.protobuf.Empty"
374      metadata_type: "OperationMetadata"
375    };
376  }
377
378  // Returns descriptions of all replications for a volume.
379  rpc ListReplications(ListReplicationsRequest)
380      returns (ListReplicationsResponse) {
381    option (google.api.http) = {
382      get: "/v1/{parent=projects/*/locations/*/volumes/*}/replications"
383    };
384    option (google.api.method_signature) = "parent";
385  }
386
387  // Describe a replication for a volume.
388  rpc GetReplication(GetReplicationRequest) returns (Replication) {
389    option (google.api.http) = {
390      get: "/v1/{name=projects/*/locations/*/volumes/*/replications/*}"
391    };
392    option (google.api.method_signature) = "name";
393  }
394
395  // Create a new replication for a volume.
396  rpc CreateReplication(CreateReplicationRequest)
397      returns (google.longrunning.Operation) {
398    option (google.api.http) = {
399      post: "/v1/{parent=projects/*/locations/*/volumes/*}/replications"
400      body: "replication"
401    };
402    option (google.api.method_signature) = "parent,replication,replication_id";
403    option (google.longrunning.operation_info) = {
404      response_type: "Replication"
405      metadata_type: "OperationMetadata"
406    };
407  }
408
409  // Deletes a replication.
410  rpc DeleteReplication(DeleteReplicationRequest)
411      returns (google.longrunning.Operation) {
412    option (google.api.http) = {
413      delete: "/v1/{name=projects/*/locations/*/volumes/*/replications/*}"
414    };
415    option (google.api.method_signature) = "name";
416    option (google.longrunning.operation_info) = {
417      response_type: "google.protobuf.Empty"
418      metadata_type: "OperationMetadata"
419    };
420  }
421
422  // Updates the settings of a specific replication.
423  rpc UpdateReplication(UpdateReplicationRequest)
424      returns (google.longrunning.Operation) {
425    option (google.api.http) = {
426      patch: "/v1/{replication.name=projects/*/locations/*/volumes/*/replications/*}"
427      body: "replication"
428    };
429    option (google.api.method_signature) = "replication,update_mask";
430    option (google.longrunning.operation_info) = {
431      response_type: "Replication"
432      metadata_type: "OperationMetadata"
433    };
434  }
435
436  // Stop Cross Region Replication.
437  rpc StopReplication(StopReplicationRequest)
438      returns (google.longrunning.Operation) {
439    option (google.api.http) = {
440      post: "/v1/{name=projects/*/locations/*/volumes/*/replications/*}:stop"
441      body: "*"
442    };
443    option (google.longrunning.operation_info) = {
444      response_type: "Replication"
445      metadata_type: "OperationMetadata"
446    };
447  }
448
449  // Resume Cross Region Replication.
450  rpc ResumeReplication(ResumeReplicationRequest)
451      returns (google.longrunning.Operation) {
452    option (google.api.http) = {
453      post: "/v1/{name=projects/*/locations/*/volumes/*/replications/*}:resume"
454      body: "*"
455    };
456    option (google.longrunning.operation_info) = {
457      response_type: "Replication"
458      metadata_type: "OperationMetadata"
459    };
460  }
461
462  // Reverses direction of replication. Source becomes destination and
463  // destination becomes source.
464  rpc ReverseReplicationDirection(ReverseReplicationDirectionRequest)
465      returns (google.longrunning.Operation) {
466    option (google.api.http) = {
467      post: "/v1/{name=projects/*/locations/*/volumes/*/replications/*}:reverseDirection"
468      body: "*"
469    };
470    option (google.longrunning.operation_info) = {
471      response_type: "Replication"
472      metadata_type: "OperationMetadata"
473    };
474  }
475
476  // Creates new backup vault
477  rpc CreateBackupVault(CreateBackupVaultRequest)
478      returns (google.longrunning.Operation) {
479    option (google.api.http) = {
480      post: "/v1/{parent=projects/*/locations/*}/backupVaults"
481      body: "backup_vault"
482    };
483    option (google.api.method_signature) =
484        "parent,backup_vault,backup_vault_id";
485    option (google.longrunning.operation_info) = {
486      response_type: "BackupVault"
487      metadata_type: "OperationMetadata"
488    };
489  }
490
491  // Returns the description of the specified backup vault
492  rpc GetBackupVault(GetBackupVaultRequest) returns (BackupVault) {
493    option (google.api.http) = {
494      get: "/v1/{name=projects/*/locations/*/backupVaults/*}"
495    };
496    option (google.api.method_signature) = "name";
497  }
498
499  // Returns list of all available backup vaults.
500  rpc ListBackupVaults(ListBackupVaultsRequest)
501      returns (ListBackupVaultsResponse) {
502    option (google.api.http) = {
503      get: "/v1/{parent=projects/*/locations/*}/backupVaults"
504    };
505    option (google.api.method_signature) = "parent";
506  }
507
508  // Updates the settings of a specific backup vault.
509  rpc UpdateBackupVault(UpdateBackupVaultRequest)
510      returns (google.longrunning.Operation) {
511    option (google.api.http) = {
512      patch: "/v1/{backup_vault.name=projects/*/locations/*/backupVaults/*}"
513      body: "backup_vault"
514    };
515    option (google.api.method_signature) = "backup_vault,update_mask";
516    option (google.longrunning.operation_info) = {
517      response_type: "BackupVault"
518      metadata_type: "OperationMetadata"
519    };
520  }
521
522  // Warning! This operation will permanently delete the backup vault.
523  rpc DeleteBackupVault(DeleteBackupVaultRequest)
524      returns (google.longrunning.Operation) {
525    option (google.api.http) = {
526      delete: "/v1/{name=projects/*/locations/*/backupVaults/*}"
527    };
528    option (google.api.method_signature) = "name";
529    option (google.longrunning.operation_info) = {
530      response_type: "google.protobuf.Empty"
531      metadata_type: "OperationMetadata"
532    };
533  }
534
535  // Creates a backup from the volume specified in the request
536  // The backup can be created from the given snapshot if specified in the
537  // request. If no snapshot specified, there'll be a new snapshot taken to
538  // initiate the backup creation.
539  rpc CreateBackup(CreateBackupRequest) returns (google.longrunning.Operation) {
540    option (google.api.http) = {
541      post: "/v1/{parent=projects/*/locations/*/backupVaults/*}/backups"
542      body: "backup"
543    };
544    option (google.api.method_signature) = "parent,backup,backup_id";
545    option (google.longrunning.operation_info) = {
546      response_type: "Backup"
547      metadata_type: "OperationMetadata"
548    };
549  }
550
551  // Returns the description of the specified backup
552  rpc GetBackup(GetBackupRequest) returns (Backup) {
553    option (google.api.http) = {
554      get: "/v1/{name=projects/*/locations/*/backupVaults/*/backups/*}"
555    };
556    option (google.api.method_signature) = "name";
557  }
558
559  // Returns descriptions of all backups for a backupVault.
560  rpc ListBackups(ListBackupsRequest) returns (ListBackupsResponse) {
561    option (google.api.http) = {
562      get: "/v1/{parent=projects/*/locations/*/backupVaults/*}/backups"
563    };
564    option (google.api.method_signature) = "parent";
565  }
566
567  // Warning! This operation will permanently delete the backup.
568  rpc DeleteBackup(DeleteBackupRequest) returns (google.longrunning.Operation) {
569    option (google.api.http) = {
570      delete: "/v1/{name=projects/*/locations/*/backupVaults/*/backups/*}"
571    };
572    option (google.api.method_signature) = "name";
573    option (google.longrunning.operation_info) = {
574      response_type: "google.protobuf.Empty"
575      metadata_type: "OperationMetadata"
576    };
577  }
578
579  // Update backup with full spec.
580  rpc UpdateBackup(UpdateBackupRequest) returns (google.longrunning.Operation) {
581    option (google.api.http) = {
582      patch: "/v1/{backup.name=projects/*/locations/*/backupVaults/*/backups/*}"
583      body: "backup"
584    };
585    option (google.api.method_signature) = "backup,update_mask";
586    option (google.longrunning.operation_info) = {
587      response_type: "Backup"
588      metadata_type: "OperationMetadata"
589    };
590  }
591
592  // Creates new backup policy
593  rpc CreateBackupPolicy(CreateBackupPolicyRequest)
594      returns (google.longrunning.Operation) {
595    option (google.api.http) = {
596      post: "/v1/{parent=projects/*/locations/*}/backupPolicies"
597      body: "backup_policy"
598    };
599    option (google.api.method_signature) =
600        "parent,backup_policy,backup_policy_id";
601    option (google.longrunning.operation_info) = {
602      response_type: "BackupPolicy"
603      metadata_type: "OperationMetadata"
604    };
605  }
606
607  // Returns the description of the specified backup policy by backup_policy_id.
608  rpc GetBackupPolicy(GetBackupPolicyRequest) returns (BackupPolicy) {
609    option (google.api.http) = {
610      get: "/v1/{name=projects/*/locations/*/backupPolicies/*}"
611    };
612    option (google.api.method_signature) = "name";
613  }
614
615  // Returns list of all available backup policies.
616  rpc ListBackupPolicies(ListBackupPoliciesRequest)
617      returns (ListBackupPoliciesResponse) {
618    option (google.api.http) = {
619      get: "/v1/{parent=projects/*/locations/*}/backupPolicies"
620    };
621    option (google.api.method_signature) = "parent";
622  }
623
624  // Updates settings of a specific backup policy.
625  rpc UpdateBackupPolicy(UpdateBackupPolicyRequest)
626      returns (google.longrunning.Operation) {
627    option (google.api.http) = {
628      patch: "/v1/{backup_policy.name=projects/*/locations/*/backupPolicies/*}"
629      body: "backup_policy"
630    };
631    option (google.api.method_signature) = "backup_policy,update_mask";
632    option (google.longrunning.operation_info) = {
633      response_type: "BackupPolicy"
634      metadata_type: "OperationMetadata"
635    };
636  }
637
638  // Warning! This operation will permanently delete the backup policy.
639  rpc DeleteBackupPolicy(DeleteBackupPolicyRequest)
640      returns (google.longrunning.Operation) {
641    option (google.api.http) = {
642      delete: "/v1/{name=projects/*/locations/*/backupPolicies/*}"
643    };
644    option (google.api.method_signature) = "name";
645    option (google.longrunning.operation_info) = {
646      response_type: "google.protobuf.Empty"
647      metadata_type: "OperationMetadata"
648    };
649  }
650}
651
652// Represents the metadata of the long-running operation.
653message OperationMetadata {
654  // Output only. The time the operation was created.
655  google.protobuf.Timestamp create_time = 1
656      [(google.api.field_behavior) = OUTPUT_ONLY];
657
658  // Output only. The time the operation finished running.
659  google.protobuf.Timestamp end_time = 2
660      [(google.api.field_behavior) = OUTPUT_ONLY];
661
662  // Output only. Server-defined resource path for the target of the operation.
663  string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
664
665  // Output only. Name of the verb executed by the operation.
666  string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
667
668  // Output only. Human-readable status of the operation, if any.
669  string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
670
671  // Output only. Identifies whether the user has requested cancellation
672  // of the operation. Operations that have been canceled successfully
673  // have [Operation.error][] value with a
674  // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
675  // `Code.CANCELLED`.
676  bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
677
678  // Output only. API version used to start the operation.
679  string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
680}
681