feat: A new service `BackupDrProtectionSummary` is added · googleapis/googleapis@524b2de

1+

// Copyright 2025 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+15+

syntax = "proto3";

16+17+

package google.cloud.backupdr.v1;

18+19+

import "google/api/annotations.proto";

20+

import "google/api/client.proto";

21+

import "google/api/field_behavior.proto";

22+

import "google/api/field_info.proto";

23+

import "google/api/resource.proto";

24+

import "google/protobuf/timestamp.proto";

25+26+

option csharp_namespace = "Google.Cloud.BackupDR.V1";

27+

option go_package = "cloud.google.com/go/backupdr/apiv1/backupdrpb;backupdrpb";

28+

option java_multiple_files = true;

29+

option java_outer_classname = "ProtectionSummaryProto";

30+

option java_package = "com.google.cloud.backupdr.v1";

31+

option php_namespace = "Google\\Cloud\\BackupDR\\V1";

32+

option ruby_package = "Google::Cloud::BackupDR::V1";

33+34+

// The Protection Summary service.

35+

service BackupDrProtectionSummary {

36+

option (google.api.default_host) = "backupdr.googleapis.com";

37+

option (google.api.oauth_scopes) =

38+

"https://www.googleapis.com/auth/cloud-platform";

39+40+

// Lists ResourceBackupConfigs.

41+

rpc ListResourceBackupConfigs(ListResourceBackupConfigsRequest)

42+

returns (ListResourceBackupConfigsResponse) {

43+

option (google.api.http) = {

44+

get: "/v1/{parent=projects/*/locations/*}/resourceBackupConfigs"

45+

};

46+

option (google.api.method_signature) = "parent";

47+

}

48+

}

49+50+

// Request for ListResourceBackupConfigs.

51+

message ListResourceBackupConfigsRequest {

52+

// Required. The project and location for which to retrieve resource backup

53+

// configs. Format: 'projects/{project_id}/locations/{location}'. In Google

54+

// Cloud Backup and DR, locations map to Google Cloud regions, for example

55+

// **us-central1**.

56+

string parent = 1 [

57+

(google.api.field_behavior) = REQUIRED,

58+

(google.api.resource_reference) = {

59+

type: "locations.googleapis.com/Location"

60+

}

61+

];

62+63+

// Optional. Requested page size. Server may return fewer items than

64+

// requested. If unspecified, server will use 100 as default. Maximum value is

65+

// 500 and values above 500 will be coerced to 500.

66+

int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];

67+68+

// Optional. A token identifying a page of results the server should return.

69+

string page_token = 3 [(google.api.field_behavior) = OPTIONAL];

70+71+

// Optional. Filtering results.

72+

string filter = 4 [(google.api.field_behavior) = OPTIONAL];

73+74+

// Optional. Hint for how to order the results.

75+

string order_by = 5 [(google.api.field_behavior) = OPTIONAL];

76+

}

77+78+

// Response for ListResourceBackupConfigs.

79+

message ListResourceBackupConfigsResponse {

80+

// The list of ResourceBackupConfigs for the specified scope.

81+

repeated ResourceBackupConfig resource_backup_configs = 1;

82+83+

// A token identifying a page of results the server should return.

84+

string next_page_token = 2;

85+

}

86+87+

// ResourceBackupConfig represents a resource along with its backup

88+

// configurations.

89+

message ResourceBackupConfig {

90+

option (google.api.resource) = {

91+

type: "backupdr.googleapis.com/ResourceBackupConfig"

92+

pattern: "projects/{project}/locations/{location}/resourceBackupConfigs/{resource_backup_config}"

93+

plural: "resourceBackupConfigs"

94+

singular: "resourceBackupConfig"

95+

};

96+97+

// The type of the cloud resource.

98+

enum ResourceType {

99+

// Resource type not set.

100+

RESOURCE_TYPE_UNSPECIFIED = 0;

101+102+

// Cloud SQL instance.

103+

CLOUD_SQL_INSTANCE = 1;

104+105+

// Compute Engine VM.

106+

COMPUTE_ENGINE_VM = 2;

107+108+

// Compute Engine Disk.

109+

COMPUTE_ENGINE_DISK = 3;

110+111+

// Compute Engine Regional Disk.

112+

COMPUTE_ENGINE_REGIONAL_DISK = 4;

113+

}

114+115+

// Identifier. The resource name of the ResourceBackupConfig.

116+

// Format:

117+

// projects/{project}/locations/{location}/resourceBackupConfigs/{uid}

118+

string name = 1 [(google.api.field_behavior) = IDENTIFIER];

119+120+

// Output only. The unique identifier of the resource backup config.

121+

string uid = 2 [

122+

(google.api.field_info).format = UUID4,

123+

(google.api.field_behavior) = OUTPUT_ONLY

124+

];

125+126+

// Output only. The [full resource

127+

// name](https://cloud.google.com/asset-inventory/docs/resource-name-format)

128+

// of the cloud resource that this configuration applies to. Supported

129+

// resource types are

130+

// [ResourceBackupConfig.ResourceType][google.cloud.backupdr.v1.ResourceBackupConfig.ResourceType].

131+

string target_resource = 3 [(google.api.field_behavior) = OUTPUT_ONLY];

132+133+

// Output only. The human friendly name of the target resource.

134+

string target_resource_display_name = 4

135+

[(google.api.field_behavior) = OUTPUT_ONLY];

136+137+

// Output only. The type of the target resource.

138+

ResourceType target_resource_type = 5

139+

[(google.api.field_behavior) = OUTPUT_ONLY];

140+141+

// Labels associated with the target resource.

142+

map<string, string> target_resource_labels = 6;

143+144+

// Backup configurations applying to the target resource, including those

145+

// targeting its related/child resources. For example, backup configuration

146+

// applicable to Compute Engine disks will be populated in this field for a

147+

// Compute Engine VM which has the disk associated.

148+

repeated BackupConfigDetails backup_configs_details = 7;

149+150+

// Output only. Whether the target resource is configured for backup. This is

151+

// true if the backup_configs_details is not empty.

152+

bool backup_configured = 8 [(google.api.field_behavior) = OUTPUT_ONLY];

153+154+

// Output only. Whether the target resource is protected by a backup vault.

155+

// This is true if the backup_configs_details is not empty and any of the

156+

// [ResourceBackupConfig.backup_configs_details][google.cloud.backupdr.v1.ResourceBackupConfig.backup_configs_details]

157+

// has a backup configuration with

158+

// [BackupConfigDetails.backup_vault][google.cloud.backupdr.v1.BackupConfigDetails.backup_vault]

159+

// set. set.

160+

bool vaulted = 9 [(google.api.field_behavior) = OUTPUT_ONLY];

161+

}

162+163+

// BackupConfigDetails has information about how the resource is configured

164+

// for backups and about the most recent backup taken for this configuration.

165+

message BackupConfigDetails {

166+

// Type of the backup configuration.

167+

// This enum may receive new values in the future.

168+

enum Type {

169+

// Backup config type is unspecified.

170+

TYPE_UNSPECIFIED = 0;

171+172+

// Backup config is Cloud SQL instance's automated backup config.

173+

CLOUD_SQL_INSTANCE_BACKUP_CONFIG = 1;

174+175+

// Backup config is Compute Engine Resource Policy.

176+

COMPUTE_ENGINE_RESOURCE_POLICY = 2;

177+178+

// Backup config is Google Cloud Backup and DR's Backup Plan.

179+

BACKUPDR_BACKUP_PLAN = 3;

180+181+

// Backup config is Google Cloud Backup and DR's Template.

182+

BACKUPDR_TEMPLATE = 4;

183+

}

184+185+

// The state tells whether the backup config is active or not.

186+

enum State {

187+

// Backup config state not set.

188+

STATE_UNSPECIFIED = 0;

189+190+

// The config is in an active state protecting the resource

191+

ACTIVE = 1;

192+193+

// The config is currently not protecting the resource. Either because it is

194+

// disabled or the owning project has been deleted without cleanup of the

195+

// actual resource.

196+

INACTIVE = 2;

197+198+

// The config still exists but because of some error state it is not

199+

// protecting the resource. Like the source project is deleted. For eg.

200+

// PlanAssociation, BackupPlan is deleted.

201+

ERROR = 3;

202+

}

203+204+

// Output only. The full resource name of the backup config source resource.

205+

// For example,

206+

// "//backupdr.googleapis.com/v1/projects/{project}/locations/{region}/backupPlans/{backupplanId}"

207+

// or

208+

// "//compute.googleapis.com/projects/{project}/locations/{region}/resourcePolicies/{resourcePolicyId}".

209+

string backup_config_source = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

210+211+

// Output only. The display name of the backup config source resource.

212+

string backup_config_source_display_name = 2

213+

[(google.api.field_behavior) = OUTPUT_ONLY];

214+215+

// Output only. The type of the backup config resource.

216+

Type type = 3 [(google.api.field_behavior) = OUTPUT_ONLY];

217+218+

// Output only. The state of the backup config resource.

219+

State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];

220+221+

// Output only. Point in time recovery settings of the backup configuration

222+

// resource.

223+

PitrSettings pitr_settings = 5 [(google.api.field_behavior) = OUTPUT_ONLY];

224+225+

// Output only. Timestamp of the latest successful backup created via this

226+

// backup configuration.

227+

google.protobuf.Timestamp latest_successful_backup_time = 6

228+

[(google.api.field_behavior) = OUTPUT_ONLY];

229+230+

// Output only. The [full resource

231+

// name](https://cloud.google.com/asset-inventory/docs/resource-name-format)

232+

// of the resource that is applicable for the backup configuration. Example:

233+

// "//compute.googleapis.com/projects/{project}/zones/{zone}/instances/{instance}"

234+

string applicable_resource = 7 [(google.api.field_behavior) = OUTPUT_ONLY];

235+236+

// Output only. The [full resource

237+

// name](https://cloud.google.com/asset-inventory/docs/resource-name-format)

238+

// of the backup vault that will store the backups generated through this

239+

// backup configuration. Example:

240+

// "//backupdr.googleapis.com/v1/projects/{project}/locations/{region}/backupVaults/{backupvaultId}"

241+

string backup_vault = 8 [(google.api.field_behavior) = OUTPUT_ONLY];

242+243+

// The locations where the backups are to be stored.

244+

repeated BackupLocation backup_locations = 12;

245+246+

// The plan specific config. This depends on the value of

247+

// [BackupConfigDetails.type][google.cloud.backupdr.v1.BackupConfigDetails.type].

248+

// For type=BACKUPDR_BACKUP_PLAN, backup_dr_plan_config would be populated to

249+

// capture information related to Google Cloud Backup and DR's Backup Plans.

250+

// For type=BACKUPDR_TEMPLATE, backup_dr_template_config would be populated to

251+

// capture information related to Google Cloud Backup and DR's Template

252+

// details.

253+

oneof plan_specific_config {

254+

// Google Cloud Backup and DR's Backup Plan specific data.

255+

BackupDrPlanConfig backup_dr_plan_config = 10;

256+257+

// Google Cloud Backup and DR's Template specific data.

258+

BackupDrTemplateConfig backup_dr_template_config = 11;

259+

}

260+

}

261+262+

// Point in time recovery settings of the backup configuration resource.

263+

message PitrSettings {

264+

// Output only. Number of days to retain the backup.

265+

int32 retention_days = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

266+

}

267+268+

// Provides additional information about Google Cloud Backup

269+

// and DR's Template backup configuration.

270+

message BackupDrTemplateConfig {

271+

// Output only. The URI of the BackupDr template resource for the first party

272+

// identity users.

273+

string first_party_management_uri = 1

274+

[(google.api.field_behavior) = OUTPUT_ONLY];

275+276+

// Output only. The URI of the BackupDr template resource for the third party

277+

// identity users.

278+

string third_party_management_uri = 2

279+

[(google.api.field_behavior) = OUTPUT_ONLY];

280+

}

281+282+

// BackupDrPlanConfig has additional information about Google Cloud Backup and

283+

// DR's Plan backup configuration.

284+

message BackupDrPlanConfig {

285+

// Backup rules of the backup plan resource.

286+

repeated BackupDrPlanRule backup_dr_plan_rules = 1;

287+

}

288+289+

// BackupDrPlanRule has rule specific information of the backup plan resource.

290+

message BackupDrPlanRule {

291+

// Output only. Unique Id of the backup rule.

292+

string rule_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

293+294+

// Output only. Timestamp of the latest successful backup created via this

295+

// backup rule.

296+

google.protobuf.Timestamp last_successful_backup_time = 2

297+

[(google.api.field_behavior) = OUTPUT_ONLY];

298+

}

299+300+

// BackupLocation represents a cloud location where a backup can be stored.

301+

message BackupLocation {

302+

// The type of the location.

303+

enum Type {

304+

// Location type is unspecified.

305+

TYPE_UNSPECIFIED = 0;

306+307+

// Location type is zonal.

308+

ZONAL = 1;

309+310+

// Location type is regional.

311+

REGIONAL = 2;

312+313+

// Location type is multi regional.

314+

MULTI_REGIONAL = 3;

315+

}

316+317+

// Output only. The type of the location.

318+

Type type = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

319+320+

// Output only. The id of the cloud location. Example: "us-central1"

321+

string location_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];

322+

}