// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.backupdr.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/field_info.proto"; import "google/api/resource.proto"; import "google/cloud/backupdr/v1/backupplan.proto"; import "google/cloud/backupdr/v1/backupplanassociation.proto"; import "google/cloud/backupdr/v1/backupvault.proto"; import "google/iam/v1/iam_policy.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; option csharp_namespace = "Google.Cloud.BackupDR.V1"; option go_package = "cloud.google.com/go/backupdr/apiv1/backupdrpb;backupdrpb"; option java_multiple_files = true; option java_outer_classname = "BackupDRProto"; option java_package = "com.google.cloud.backupdr.v1"; option php_namespace = "Google\\Cloud\\BackupDR\\V1"; option ruby_package = "Google::Cloud::BackupDR::V1"; // The BackupDR Service service BackupDR { option (google.api.default_host) = "backupdr.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Lists ManagementServers in a given project and location. rpc ListManagementServers(ListManagementServersRequest) returns (ListManagementServersResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/managementServers" }; option (google.api.method_signature) = "parent"; } // Gets details of a single ManagementServer. rpc GetManagementServer(GetManagementServerRequest) returns (ManagementServer) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/managementServers/*}" }; option (google.api.method_signature) = "name"; } // Creates a new ManagementServer in a given project and location. rpc CreateManagementServer(CreateManagementServerRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/managementServers" body: "management_server" }; option (google.api.method_signature) = "parent,management_server,management_server_id"; option (google.longrunning.operation_info) = { response_type: "ManagementServer" metadata_type: "OperationMetadata" }; } // Deletes a single ManagementServer. rpc DeleteManagementServer(DeleteManagementServerRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/managementServers/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Creates a new BackupVault in a given project and location. rpc CreateBackupVault(CreateBackupVaultRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/backupVaults" body: "backup_vault" }; option (google.api.method_signature) = "parent,backup_vault,backup_vault_id"; option (google.longrunning.operation_info) = { response_type: "BackupVault" metadata_type: "OperationMetadata" }; } // Lists BackupVaults in a given project and location. rpc ListBackupVaults(ListBackupVaultsRequest) returns (ListBackupVaultsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/backupVaults" }; option (google.api.method_signature) = "parent"; } // FetchUsableBackupVaults lists usable BackupVaults in a given project and // location. Usable BackupVault are the ones that user has // backupdr.backupVaults.get permission. rpc FetchUsableBackupVaults(FetchUsableBackupVaultsRequest) returns (FetchUsableBackupVaultsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/backupVaults:fetchUsable" }; option (google.api.method_signature) = "parent"; } // Gets details of a BackupVault. rpc GetBackupVault(GetBackupVaultRequest) returns (BackupVault) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/backupVaults/*}" }; option (google.api.method_signature) = "name"; } // Updates the settings of a BackupVault. rpc UpdateBackupVault(UpdateBackupVaultRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{backup_vault.name=projects/*/locations/*/backupVaults/*}" body: "backup_vault" }; option (google.api.method_signature) = "backup_vault,update_mask"; option (google.longrunning.operation_info) = { response_type: "BackupVault" metadata_type: "OperationMetadata" }; } // Deletes a BackupVault. rpc DeleteBackupVault(DeleteBackupVaultRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/backupVaults/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Returns the caller's permissions on a BackupVault resource. // // A caller is not required to have Google IAM permission to make this // request. rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) { option (google.api.http) = { post: "/v1/{resource=projects/*/locations/*/backupVaults/*}:testIamPermissions" body: "*" }; option (google.api.method_signature) = "resource, permissions"; } // Lists DataSources in a given project and location. rpc ListDataSources(ListDataSourcesRequest) returns (ListDataSourcesResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/backupVaults/*}/dataSources" }; option (google.api.method_signature) = "parent"; } // Gets details of a DataSource. rpc GetDataSource(GetDataSourceRequest) returns (DataSource) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/backupVaults/*/dataSources/*}" }; option (google.api.method_signature) = "name"; } // Updates the settings of a DataSource. rpc UpdateDataSource(UpdateDataSourceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{data_source.name=projects/*/locations/*/backupVaults/*/dataSources/*}" body: "data_source" }; option (google.api.method_signature) = "data_source,update_mask"; option (google.longrunning.operation_info) = { response_type: "DataSource" metadata_type: "OperationMetadata" }; } // Deletes a DataSource. This is a custom method instead of a standard delete // method because external clients will not delete DataSources except for // BackupDR backup appliances. rpc RemoveDataSource(RemoveDataSourceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/backupVaults/*/dataSources/*}:remove" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Sets the internal status of a DataSource. rpc SetInternalStatus(SetInternalStatusRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{data_source=projects/*/locations/*/backupVaults/*/dataSources/*}:setInternalStatus" body: "*" }; option (google.api.method_signature) = "data_source"; option (google.longrunning.operation_info) = { response_type: "SetInternalStatusResponse" metadata_type: "OperationMetadata" }; } // Internal only. // Initiates a backup. rpc InitiateBackup(InitiateBackupRequest) returns (InitiateBackupResponse) { option (google.api.http) = { post: "/v1/{data_source=projects/*/locations/*/backupVaults/*/dataSources/*}:initiateBackup" body: "*" }; option (google.api.method_signature) = "data_source"; } // Internal only. // Abandons a backup. rpc AbandonBackup(AbandonBackupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{data_source=projects/*/locations/*/backupVaults/*/dataSources/*}:abandonBackup" body: "*" }; option (google.api.method_signature) = "data_source"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Internal only. // Finalize a backup that was started by a call to InitiateBackup. rpc FinalizeBackup(FinalizeBackupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{data_source=projects/*/locations/*/backupVaults/*/dataSources/*}:finalizeBackup" body: "*" }; option (google.api.method_signature) = "data_source"; option (google.longrunning.operation_info) = { response_type: "Backup" metadata_type: "OperationMetadata" }; } // Internal only. // Fetch access token for a given data source. rpc FetchAccessToken(FetchAccessTokenRequest) returns (FetchAccessTokenResponse) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/backupVaults/*/dataSources/*}:fetchAccessToken" body: "*" }; option (google.api.method_signature) = "name"; } // Lists Backups in a given project and location. rpc ListBackups(ListBackupsRequest) returns (ListBackupsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/backupVaults/*/dataSources/*}/backups" }; option (google.api.method_signature) = "parent"; } // Gets details of a Backup. rpc GetBackup(GetBackupRequest) returns (Backup) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/backupVaults/*/dataSources/*/backups/*}" }; option (google.api.method_signature) = "name"; } // Updates the settings of a Backup. rpc UpdateBackup(UpdateBackupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{backup.name=projects/*/locations/*/backupVaults/*/dataSources/*/backups/*}" body: "backup" }; option (google.api.method_signature) = "backup,update_mask"; option (google.longrunning.operation_info) = { response_type: "Backup" metadata_type: "OperationMetadata" }; } // Deletes a Backup. rpc DeleteBackup(DeleteBackupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/backupVaults/*/dataSources/*/backups/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "Backup" metadata_type: "OperationMetadata" }; } // Restore from a Backup rpc RestoreBackup(RestoreBackupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/backupVaults/*/dataSources/*/backups/*}:restore" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "RestoreBackupResponse" metadata_type: "OperationMetadata" }; } // Create a BackupPlan rpc CreateBackupPlan(CreateBackupPlanRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/backupPlans" body: "backup_plan" }; option (google.api.method_signature) = "parent,backup_plan,backup_plan_id"; option (google.longrunning.operation_info) = { response_type: "BackupPlan" metadata_type: "OperationMetadata" }; } // Gets details of a single BackupPlan. rpc GetBackupPlan(GetBackupPlanRequest) returns (BackupPlan) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/backupPlans/*}" }; option (google.api.method_signature) = "name"; } // Lists BackupPlans in a given project and location. rpc ListBackupPlans(ListBackupPlansRequest) returns (ListBackupPlansResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/backupPlans" }; option (google.api.method_signature) = "parent"; } // Deletes a single BackupPlan. rpc DeleteBackupPlan(DeleteBackupPlanRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/backupPlans/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Create a BackupPlanAssociation rpc CreateBackupPlanAssociation(CreateBackupPlanAssociationRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/backupPlanAssociations" body: "backup_plan_association" }; option (google.api.method_signature) = "parent,backup_plan_association,backup_plan_association_id"; option (google.longrunning.operation_info) = { response_type: "BackupPlanAssociation" metadata_type: "OperationMetadata" }; } // Gets details of a single BackupPlanAssociation. rpc GetBackupPlanAssociation(GetBackupPlanAssociationRequest) returns (BackupPlanAssociation) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/backupPlanAssociations/*}" }; option (google.api.method_signature) = "name"; } // Lists BackupPlanAssociations in a given project and location. rpc ListBackupPlanAssociations(ListBackupPlanAssociationsRequest) returns (ListBackupPlanAssociationsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/backupPlanAssociations" }; option (google.api.method_signature) = "parent"; } // Deletes a single BackupPlanAssociation. rpc DeleteBackupPlanAssociation(DeleteBackupPlanAssociationRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/backupPlanAssociations/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Triggers a new Backup. rpc TriggerBackup(TriggerBackupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/backupPlanAssociations/*}:triggerBackup" body: "*" }; option (google.api.method_signature) = "name,rule_id"; option (google.longrunning.operation_info) = { response_type: "BackupPlanAssociation" metadata_type: "OperationMetadata" }; } } // Network configuration for ManagementServer instance. message NetworkConfig { // VPC peering modes supported by Cloud BackupDR. enum PeeringMode { // Peering mode not set. PEERING_MODE_UNSPECIFIED = 0; // Connect using Private Service Access to the Management Server. Private // services access provides an IP address range for multiple Google Cloud // services, including Cloud BackupDR. PRIVATE_SERVICE_ACCESS = 1; } // Optional. The resource name of the Google Compute Engine VPC network to // which the ManagementServer instance is connected. string network = 1 [(google.api.field_behavior) = OPTIONAL]; // Optional. The network connect mode of the ManagementServer instance. For // this version, only PRIVATE_SERVICE_ACCESS is supported. PeeringMode peering_mode = 2 [(google.api.field_behavior) = OPTIONAL]; } // ManagementURI for the Management Server resource. message ManagementURI { // Output only. The ManagementServer AGM/RD WebUI URL. string web_ui = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The ManagementServer AGM/RD API URL. string api = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // ManagementURI depending on the Workforce Identity i.e. either 1p or 3p. message WorkforceIdentityBasedManagementURI { // Output only. First party Management URI for Google Identities. string first_party_management_uri = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Third party Management URI for External Identity Providers. string third_party_management_uri = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // OAuth Client ID depending on the Workforce Identity i.e. either 1p or 3p, message WorkforceIdentityBasedOAuth2ClientID { // Output only. First party OAuth Client ID for Google Identities. string first_party_oauth2_client_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Third party OAuth Client ID for External Identity Providers. string third_party_oauth2_client_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // ManagementServer describes a single BackupDR ManagementServer instance. message ManagementServer { option (google.api.resource) = { type: "backupdr.googleapis.com/ManagementServer" pattern: "projects/{project}/locations/{location}/managementServers/{managementserver}" plural: "managementServers" singular: "managementServer" }; // Type of backup service resource. enum InstanceType { // Instance type is not mentioned. INSTANCE_TYPE_UNSPECIFIED = 0; // Instance for backup and restore management (i.e., AGM). BACKUP_RESTORE = 1; } // State of Management server instance. enum InstanceState { // State not set. INSTANCE_STATE_UNSPECIFIED = 0; // The instance is being created. CREATING = 1; // The instance has been created and is fully usable. READY = 2; // The instance configuration is being updated. Certain kinds of updates // may cause the instance to become unusable while the update is in // progress. UPDATING = 3; // The instance is being deleted. DELETING = 4; // The instance is being repaired and may be unstable. REPAIRING = 5; // Maintenance is being performed on this instance. MAINTENANCE = 6; // The instance is experiencing an issue and might be unusable. You can get // further details from the statusMessage field of Instance resource. ERROR = 7; } // Output only. Identifier. The resource name. string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.field_behavior) = IDENTIFIER ]; // Optional. The description of the ManagementServer instance (2048 characters // or less). string description = 9 [(google.api.field_behavior) = OPTIONAL]; // Optional. Resource labels to represent user provided metadata. // Labels currently defined: // 1. migrate_from_go= // If set to true, the MS is created in migration ready mode. map labels = 4 [(google.api.field_behavior) = OPTIONAL]; // Output only. The time when the instance was created. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time when the instance was updated. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. The type of the ManagementServer resource. InstanceType type = 14 [(google.api.field_behavior) = OPTIONAL]; // Output only. The hostname or ip address of the exposed AGM endpoints, used // by clients to connect to AGM/RD graphical user interface and APIs. ManagementURI management_uri = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The hostnames of the exposed AGM endpoints for both types of // user i.e. 1p and 3p, used to connect AGM/RM UI. WorkforceIdentityBasedManagementURI workforce_identity_based_management_uri = 16 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The ManagementServer state. InstanceState state = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Required. VPC networks to which the ManagementServer instance is connected. // For this version, only a single network is supported. repeated NetworkConfig networks = 8 [(google.api.field_behavior) = REQUIRED]; // Optional. Server specified ETag for the ManagementServer resource to // prevent simultaneous updates from overwiting each other. string etag = 13 [(google.api.field_behavior) = OPTIONAL]; // Output only. The OAuth 2.0 client id is required to make API calls to the // BackupDR instance API of this ManagementServer. This is the value that // should be provided in the 'aud' field of the OIDC ID Token (see openid // specification // https://openid.net/specs/openid-connect-core-1_0.html#IDToken). string oauth2_client_id = 15 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The OAuth client IDs for both types of user i.e. 1p and 3p. WorkforceIdentityBasedOAuth2ClientID workforce_identity_based_oauth2_client_id = 17 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The hostname or ip address of the exposed AGM endpoints, used // by BAs to connect to BA proxy. repeated string ba_proxy_uri = 18 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Reserved for future use. google.protobuf.BoolValue satisfies_pzs = 19 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Reserved for future use. bool satisfies_pzi = 20 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Request message for listing management servers. message ListManagementServersRequest { // Required. The project and location for which to retrieve management servers // information, in the format 'projects/{project_id}/locations/{location}'. In // Cloud BackupDR, locations map to Google Cloud regions, for example // **us-central1**. To retrieve management servers for all locations, use "-" // for the // '{location}' value. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "backupdr.googleapis.com/ManagementServer" } ]; // Optional. Requested page size. Server may return fewer items than // requested. If unspecified, server will pick an appropriate default. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results the server should return. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Filtering results. optional string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Hint for how to order the results. optional string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for listing management servers. message ListManagementServersResponse { // The list of ManagementServer instances in the project for the specified // location. // // If the '{location}' value in the request is "-", the response contains a // list of instances from all locations. In case any location is unreachable, // the response will only return management servers in reachable locations and // the 'unreachable' field will be populated with a list of unreachable // locations. repeated ManagementServer management_servers = 1; // A token identifying a page of results the server should return. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for getting a management server instance. message GetManagementServerRequest { // Required. Name of the management server resource name, in the format // 'projects/{project_id}/locations/{location}/managementServers/{resource_name}' string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "backupdr.googleapis.com/ManagementServer" } ]; } // Request message for creating a management server instance. message CreateManagementServerRequest { // Required. The management server project and location in the format // 'projects/{project_id}/locations/{location}'. In Cloud Backup and DR // locations map to Google Cloud regions, for example **us-central1**. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "backupdr.googleapis.com/ManagementServer" } ]; // Required. The name of the management server to create. The name must be // unique for the specified project and location. string management_server_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. A [management server // resource][google.cloud.backupdr.v1.ManagementServer] ManagementServer management_server = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique // request ID so that if you must retry your request, the server will know to // ignore the request if it has already been completed. The server will // guarantee that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID // was received, and if so, will ignore the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; } // Request message for deleting a management server instance. message DeleteManagementServerRequest { // Required. Name of the resource string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "backupdr.googleapis.com/ManagementServer" } ]; // Optional. An optional request ID to identify requests. Specify a unique // request ID so that if you must retry your request, the server will know to // ignore the request if it has already been completed. The server will // guarantee that for at least 60 minutes after the first request. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID // was received, and if so, will ignore the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 2 [(google.api.field_behavior) = OPTIONAL]; } // Represents the metadata of the long-running operation. message OperationMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Server-defined resource path for the target of the operation. string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Name of the verb executed by the operation. string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Human-readable status of the operation, if any. string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Identifies whether the user has requested cancellation // of the operation. Operations that have successfully been cancelled // have [Operation.error][] value with a // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to // 'Code.CANCELLED'. bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. API version used to start the operation. string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. AdditionalInfo contains additional Info related to backup plan // association resource. map additional_info = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; }