xref: /aosp_15_r20/external/googleapis/google/cloud/migrationcenter/v1/migrationcenter.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.migrationcenter.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/longrunning/operations.proto";
24import "google/protobuf/empty.proto";
25import "google/protobuf/field_mask.proto";
26import "google/protobuf/timestamp.proto";
27import "google/type/date.proto";
28import "google/type/money.proto";
29
30option csharp_namespace = "Google.Cloud.MigrationCenter.V1";
31option go_package = "cloud.google.com/go/migrationcenter/apiv1/migrationcenterpb;migrationcenterpb";
32option java_multiple_files = true;
33option java_outer_classname = "MigrationCenterProto";
34option java_package = "com.google.cloud.migrationcenter.v1";
35option php_namespace = "Google\\Cloud\\MigrationCenter\\V1";
36option ruby_package = "Google::Cloud::MigrationCenter::V1";
37
38// Service describing handlers for resources.
39service MigrationCenter {
40  option (google.api.default_host) = "migrationcenter.googleapis.com";
41  option (google.api.oauth_scopes) =
42      "https://www.googleapis.com/auth/cloud-platform";
43
44  // Lists all the assets in a given project and location.
45  rpc ListAssets(ListAssetsRequest) returns (ListAssetsResponse) {
46    option (google.api.http) = {
47      get: "/v1/{parent=projects/*/locations/*}/assets"
48    };
49    option (google.api.method_signature) = "parent";
50  }
51
52  // Gets the details of an asset.
53  rpc GetAsset(GetAssetRequest) returns (Asset) {
54    option (google.api.http) = {
55      get: "/v1/{name=projects/*/locations/*/assets/*}"
56    };
57    option (google.api.method_signature) = "name";
58  }
59
60  // Updates the parameters of an asset.
61  rpc UpdateAsset(UpdateAssetRequest) returns (Asset) {
62    option (google.api.http) = {
63      patch: "/v1/{asset.name=projects/*/locations/*/assets/*}"
64      body: "asset"
65    };
66    option (google.api.method_signature) = "asset,update_mask";
67  }
68
69  // Updates the parameters of a list of assets.
70  rpc BatchUpdateAssets(BatchUpdateAssetsRequest)
71      returns (BatchUpdateAssetsResponse) {
72    option (google.api.http) = {
73      post: "/v1/{parent=projects/*/locations/*}/assets:batchUpdate"
74      body: "*"
75    };
76    option (google.api.method_signature) = "parent,requests";
77  }
78
79  // Deletes an asset.
80  rpc DeleteAsset(DeleteAssetRequest) returns (google.protobuf.Empty) {
81    option (google.api.http) = {
82      delete: "/v1/{name=projects/*/locations/*/assets/*}"
83    };
84    option (google.api.method_signature) = "name";
85  }
86
87  // Deletes list of Assets.
88  rpc BatchDeleteAssets(BatchDeleteAssetsRequest)
89      returns (google.protobuf.Empty) {
90    option (google.api.http) = {
91      post: "/v1/{parent=projects/*/locations/*}/assets:batchDelete"
92      body: "*"
93    };
94    option (google.api.method_signature) = "parent,names";
95  }
96
97  // Reports a set of frames.
98  rpc ReportAssetFrames(ReportAssetFramesRequest)
99      returns (ReportAssetFramesResponse) {
100    option (google.api.http) = {
101      post: "/v1/{parent=projects/*/locations/*}/assets:reportAssetFrames"
102      body: "frames"
103    };
104  }
105
106  // Aggregates the requested fields based on provided function.
107  rpc AggregateAssetsValues(AggregateAssetsValuesRequest)
108      returns (AggregateAssetsValuesResponse) {
109    option (google.api.http) = {
110      post: "/v1/{parent=projects/*/locations/*}/assets:aggregateValues"
111      body: "*"
112    };
113  }
114
115  // Creates an import job.
116  rpc CreateImportJob(CreateImportJobRequest)
117      returns (google.longrunning.Operation) {
118    option (google.api.http) = {
119      post: "/v1/{parent=projects/*/locations/*}/importJobs"
120      body: "import_job"
121    };
122    option (google.api.method_signature) = "parent,import_job,import_job_id";
123    option (google.longrunning.operation_info) = {
124      response_type: "ImportJob"
125      metadata_type: "OperationMetadata"
126    };
127  }
128
129  // Lists all import jobs.
130  rpc ListImportJobs(ListImportJobsRequest) returns (ListImportJobsResponse) {
131    option (google.api.http) = {
132      get: "/v1/{parent=projects/*/locations/*}/importJobs"
133    };
134    option (google.api.method_signature) = "parent";
135  }
136
137  // Gets the details of an import job.
138  rpc GetImportJob(GetImportJobRequest) returns (ImportJob) {
139    option (google.api.http) = {
140      get: "/v1/{name=projects/*/locations/*/importJobs/*}"
141    };
142    option (google.api.method_signature) = "name";
143  }
144
145  // Deletes an import job.
146  rpc DeleteImportJob(DeleteImportJobRequest)
147      returns (google.longrunning.Operation) {
148    option (google.api.http) = {
149      delete: "/v1/{name=projects/*/locations/*/importJobs/*}"
150    };
151    option (google.api.method_signature) = "name";
152    option (google.longrunning.operation_info) = {
153      response_type: "google.protobuf.Empty"
154      metadata_type: "OperationMetadata"
155    };
156  }
157
158  // Updates an import job.
159  rpc UpdateImportJob(UpdateImportJobRequest)
160      returns (google.longrunning.Operation) {
161    option (google.api.http) = {
162      patch: "/v1/{import_job.name=projects/*/locations/*/importJobs/*}"
163      body: "import_job"
164    };
165    option (google.api.method_signature) = "import_job,update_mask";
166    option (google.longrunning.operation_info) = {
167      response_type: "ImportJob"
168      metadata_type: "OperationMetadata"
169    };
170  }
171
172  // Validates an import job.
173  rpc ValidateImportJob(ValidateImportJobRequest)
174      returns (google.longrunning.Operation) {
175    option (google.api.http) = {
176      post: "/v1/{name=projects/*/locations/*/importJobs/*}:validate"
177      body: "*"
178    };
179    option (google.api.method_signature) = "name";
180    option (google.longrunning.operation_info) = {
181      response_type: "google.protobuf.Empty"
182      metadata_type: "OperationMetadata"
183    };
184  }
185
186  // Runs an import job.
187  rpc RunImportJob(RunImportJobRequest) returns (google.longrunning.Operation) {
188    option (google.api.http) = {
189      post: "/v1/{name=projects/*/locations/*/importJobs/*}:run"
190      body: "*"
191    };
192    option (google.api.method_signature) = "name";
193    option (google.longrunning.operation_info) = {
194      response_type: "google.protobuf.Empty"
195      metadata_type: "OperationMetadata"
196    };
197  }
198
199  // Gets an import data file.
200  rpc GetImportDataFile(GetImportDataFileRequest) returns (ImportDataFile) {
201    option (google.api.http) = {
202      get: "/v1/{name=projects/*/locations/*/importJobs/*/importDataFiles/*}"
203    };
204    option (google.api.method_signature) = "name";
205  }
206
207  // List import data files.
208  rpc ListImportDataFiles(ListImportDataFilesRequest)
209      returns (ListImportDataFilesResponse) {
210    option (google.api.http) = {
211      get: "/v1/{parent=projects/*/locations/*/importJobs/*}/importDataFiles"
212    };
213    option (google.api.method_signature) = "parent";
214  }
215
216  // Creates an import data file.
217  rpc CreateImportDataFile(CreateImportDataFileRequest)
218      returns (google.longrunning.Operation) {
219    option (google.api.http) = {
220      post: "/v1/{parent=projects/*/locations/*/importJobs/*}/importDataFiles"
221      body: "import_data_file"
222    };
223    option (google.api.method_signature) =
224        "parent,import_data_file,import_data_file_id";
225    option (google.longrunning.operation_info) = {
226      response_type: "ImportDataFile"
227      metadata_type: "OperationMetadata"
228    };
229  }
230
231  // Delete an import data file.
232  rpc DeleteImportDataFile(DeleteImportDataFileRequest)
233      returns (google.longrunning.Operation) {
234    option (google.api.http) = {
235      delete: "/v1/{name=projects/*/locations/*/importJobs/*/importDataFiles/*}"
236    };
237    option (google.api.method_signature) = "name";
238    option (google.longrunning.operation_info) = {
239      response_type: "google.protobuf.Empty"
240      metadata_type: "OperationMetadata"
241    };
242  }
243
244  // Lists all groups in a given project and location.
245  rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) {
246    option (google.api.http) = {
247      get: "/v1/{parent=projects/*/locations/*}/groups"
248    };
249    option (google.api.method_signature) = "parent";
250  }
251
252  // Gets the details of a group.
253  rpc GetGroup(GetGroupRequest) returns (Group) {
254    option (google.api.http) = {
255      get: "/v1/{name=projects/*/locations/*/groups/*}"
256    };
257    option (google.api.method_signature) = "name";
258  }
259
260  // Creates a new group in a given project and location.
261  rpc CreateGroup(CreateGroupRequest) returns (google.longrunning.Operation) {
262    option (google.api.http) = {
263      post: "/v1/{parent=projects/*/locations/*}/groups"
264      body: "group"
265    };
266    option (google.api.method_signature) = "parent,group,group_id";
267    option (google.longrunning.operation_info) = {
268      response_type: "Group"
269      metadata_type: "OperationMetadata"
270    };
271  }
272
273  // Updates the parameters of a group.
274  rpc UpdateGroup(UpdateGroupRequest) returns (google.longrunning.Operation) {
275    option (google.api.http) = {
276      patch: "/v1/{group.name=projects/*/locations/*/groups/*}"
277      body: "group"
278    };
279    option (google.api.method_signature) = "group,update_mask";
280    option (google.longrunning.operation_info) = {
281      response_type: "Group"
282      metadata_type: "OperationMetadata"
283    };
284  }
285
286  // Deletes a group.
287  rpc DeleteGroup(DeleteGroupRequest) returns (google.longrunning.Operation) {
288    option (google.api.http) = {
289      delete: "/v1/{name=projects/*/locations/*/groups/*}"
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  // Adds assets to a group.
299  rpc AddAssetsToGroup(AddAssetsToGroupRequest)
300      returns (google.longrunning.Operation) {
301    option (google.api.http) = {
302      post: "/v1/{group=projects/*/locations/*/groups/*}:addAssets"
303      body: "*"
304    };
305    option (google.api.method_signature) = "group";
306    option (google.longrunning.operation_info) = {
307      response_type: "Group"
308      metadata_type: "OperationMetadata"
309    };
310  }
311
312  // Removes assets from a group.
313  rpc RemoveAssetsFromGroup(RemoveAssetsFromGroupRequest)
314      returns (google.longrunning.Operation) {
315    option (google.api.http) = {
316      post: "/v1/{group=projects/*/locations/*/groups/*}:removeAssets"
317      body: "*"
318    };
319    option (google.api.method_signature) = "group";
320    option (google.longrunning.operation_info) = {
321      response_type: "Group"
322      metadata_type: "OperationMetadata"
323    };
324  }
325
326  // Lists all error frames in a given source and location.
327  rpc ListErrorFrames(ListErrorFramesRequest)
328      returns (ListErrorFramesResponse) {
329    option (google.api.http) = {
330      get: "/v1/{parent=projects/*/locations/*/sources/*}/errorFrames"
331    };
332    option (google.api.method_signature) = "parent";
333  }
334
335  // Gets the details of an error frame.
336  rpc GetErrorFrame(GetErrorFrameRequest) returns (ErrorFrame) {
337    option (google.api.http) = {
338      get: "/v1/{name=projects/*/locations/*/sources/*/errorFrames/*}"
339    };
340    option (google.api.method_signature) = "name";
341  }
342
343  // Lists all the sources in a given project and location.
344  rpc ListSources(ListSourcesRequest) returns (ListSourcesResponse) {
345    option (google.api.http) = {
346      get: "/v1/{parent=projects/*/locations/*}/sources"
347    };
348    option (google.api.method_signature) = "parent";
349  }
350
351  // Gets the details of a source.
352  rpc GetSource(GetSourceRequest) returns (Source) {
353    option (google.api.http) = {
354      get: "/v1/{name=projects/*/locations/*/sources/*}"
355    };
356    option (google.api.method_signature) = "name";
357  }
358
359  // Creates a new source in a given project and location.
360  rpc CreateSource(CreateSourceRequest) returns (google.longrunning.Operation) {
361    option (google.api.http) = {
362      post: "/v1/{parent=projects/*/locations/*}/sources"
363      body: "source"
364    };
365    option (google.api.method_signature) = "parent,source,source_id";
366    option (google.longrunning.operation_info) = {
367      response_type: "Source"
368      metadata_type: "OperationMetadata"
369    };
370  }
371
372  // Updates the parameters of a source.
373  rpc UpdateSource(UpdateSourceRequest) returns (google.longrunning.Operation) {
374    option (google.api.http) = {
375      patch: "/v1/{source.name=projects/*/locations/*/sources/*}"
376      body: "source"
377    };
378    option (google.api.method_signature) = "source,update_mask";
379    option (google.longrunning.operation_info) = {
380      response_type: "Source"
381      metadata_type: "OperationMetadata"
382    };
383  }
384
385  // Deletes a source.
386  rpc DeleteSource(DeleteSourceRequest) returns (google.longrunning.Operation) {
387    option (google.api.http) = {
388      delete: "/v1/{name=projects/*/locations/*/sources/*}"
389    };
390    option (google.api.method_signature) = "name";
391    option (google.longrunning.operation_info) = {
392      response_type: "google.protobuf.Empty"
393      metadata_type: "OperationMetadata"
394    };
395  }
396
397  // Lists all the preference sets in a given project and location.
398  rpc ListPreferenceSets(ListPreferenceSetsRequest)
399      returns (ListPreferenceSetsResponse) {
400    option (google.api.http) = {
401      get: "/v1/{parent=projects/*/locations/*}/preferenceSets"
402    };
403    option (google.api.method_signature) = "parent";
404  }
405
406  // Gets the details of a preference set.
407  rpc GetPreferenceSet(GetPreferenceSetRequest) returns (PreferenceSet) {
408    option (google.api.http) = {
409      get: "/v1/{name=projects/*/locations/*/preferenceSets/*}"
410    };
411    option (google.api.method_signature) = "name";
412  }
413
414  // Creates a new preference set in a given project and location.
415  rpc CreatePreferenceSet(CreatePreferenceSetRequest)
416      returns (google.longrunning.Operation) {
417    option (google.api.http) = {
418      post: "/v1/{parent=projects/*/locations/*}/preferenceSets"
419      body: "preference_set"
420    };
421    option (google.api.method_signature) =
422        "parent,preference_set,preference_set_id";
423    option (google.longrunning.operation_info) = {
424      response_type: "PreferenceSet"
425      metadata_type: "OperationMetadata"
426    };
427  }
428
429  // Updates the parameters of a preference set.
430  rpc UpdatePreferenceSet(UpdatePreferenceSetRequest)
431      returns (google.longrunning.Operation) {
432    option (google.api.http) = {
433      patch: "/v1/{preference_set.name=projects/*/locations/*/preferenceSets/*}"
434      body: "preference_set"
435    };
436    option (google.api.method_signature) = "preference_set,update_mask";
437    option (google.longrunning.operation_info) = {
438      response_type: "PreferenceSet"
439      metadata_type: "OperationMetadata"
440    };
441  }
442
443  // Deletes a preference set.
444  rpc DeletePreferenceSet(DeletePreferenceSetRequest)
445      returns (google.longrunning.Operation) {
446    option (google.api.http) = {
447      delete: "/v1/{name=projects/*/locations/*/preferenceSets/*}"
448    };
449    option (google.api.method_signature) = "name";
450    option (google.longrunning.operation_info) = {
451      response_type: "google.protobuf.Empty"
452      metadata_type: "OperationMetadata"
453    };
454  }
455
456  // Gets the details of regional settings.
457  rpc GetSettings(GetSettingsRequest) returns (Settings) {
458    option (google.api.http) = {
459      get: "/v1/{name=projects/*/locations/*/settings}"
460    };
461    option (google.api.method_signature) = "name";
462  }
463
464  // Updates the regional-level project settings.
465  rpc UpdateSettings(UpdateSettingsRequest)
466      returns (google.longrunning.Operation) {
467    option (google.api.http) = {
468      patch: "/v1/{settings.name=projects/*/locations/*/settings}"
469      body: "settings"
470    };
471    option (google.api.method_signature) = "settings,update_mask";
472    option (google.longrunning.operation_info) = {
473      response_type: "Settings"
474      metadata_type: "OperationMetadata"
475    };
476  }
477
478  // Creates a report configuration.
479  rpc CreateReportConfig(CreateReportConfigRequest)
480      returns (google.longrunning.Operation) {
481    option (google.api.http) = {
482      post: "/v1/{parent=projects/*/locations/*}/reportConfigs"
483      body: "report_config"
484    };
485    option (google.api.method_signature) =
486        "parent,report_config,report_config_id";
487    option (google.longrunning.operation_info) = {
488      response_type: "ReportConfig"
489      metadata_type: "OperationMetadata"
490    };
491  }
492
493  // Gets details of a single ReportConfig.
494  rpc GetReportConfig(GetReportConfigRequest) returns (ReportConfig) {
495    option (google.api.http) = {
496      get: "/v1/{name=projects/*/locations/*/reportConfigs/*}"
497    };
498    option (google.api.method_signature) = "name";
499  }
500
501  // Lists ReportConfigs in a given project and location.
502  rpc ListReportConfigs(ListReportConfigsRequest)
503      returns (ListReportConfigsResponse) {
504    option (google.api.http) = {
505      get: "/v1/{parent=projects/*/locations/*}/reportConfigs"
506    };
507    option (google.api.method_signature) = "parent";
508  }
509
510  // Deletes a ReportConfig.
511  rpc DeleteReportConfig(DeleteReportConfigRequest)
512      returns (google.longrunning.Operation) {
513    option (google.api.http) = {
514      delete: "/v1/{name=projects/*/locations/*/reportConfigs/*}"
515    };
516    option (google.api.method_signature) = "name";
517    option (google.longrunning.operation_info) = {
518      response_type: "google.protobuf.Empty"
519      metadata_type: "OperationMetadata"
520    };
521  }
522
523  // Creates a report.
524  rpc CreateReport(CreateReportRequest) returns (google.longrunning.Operation) {
525    option (google.api.http) = {
526      post: "/v1/{parent=projects/*/locations/*/reportConfigs/*}/reports"
527      body: "report"
528    };
529    option (google.api.method_signature) = "parent,report,report_id";
530    option (google.longrunning.operation_info) = {
531      response_type: "Report"
532      metadata_type: "OperationMetadata"
533    };
534  }
535
536  // Gets details of a single Report.
537  rpc GetReport(GetReportRequest) returns (Report) {
538    option (google.api.http) = {
539      get: "/v1/{name=projects/*/locations/*/reportConfigs/*/reports/*}"
540    };
541    option (google.api.method_signature) = "name";
542  }
543
544  // Lists Reports in a given ReportConfig.
545  rpc ListReports(ListReportsRequest) returns (ListReportsResponse) {
546    option (google.api.http) = {
547      get: "/v1/{parent=projects/*/locations/*/reportConfigs/*}/reports"
548    };
549    option (google.api.method_signature) = "parent";
550  }
551
552  // Deletes a Report.
553  rpc DeleteReport(DeleteReportRequest) returns (google.longrunning.Operation) {
554    option (google.api.http) = {
555      delete: "/v1/{name=projects/*/locations/*/reportConfigs/*/reports/*}"
556    };
557    option (google.api.method_signature) = "name";
558    option (google.longrunning.operation_info) = {
559      response_type: "google.protobuf.Empty"
560      metadata_type: "OperationMetadata"
561    };
562  }
563}
564
565// An asset represents a resource in your environment. Asset types include
566// virtual machines and databases.
567message Asset {
568  option (google.api.resource) = {
569    type: "migrationcenter.googleapis.com/Asset"
570    pattern: "projects/{project}/locations/{location}/assets/{asset}"
571  };
572
573  // Output only. The full name of the asset.
574  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
575
576  // Output only. The timestamp when the asset was created.
577  google.protobuf.Timestamp create_time = 2
578      [(google.api.field_behavior) = OUTPUT_ONLY];
579
580  // Output only. The timestamp when the asset was last updated.
581  google.protobuf.Timestamp update_time = 3
582      [(google.api.field_behavior) = OUTPUT_ONLY];
583
584  // Labels as key value pairs.
585  map<string, string> labels = 4;
586
587  // Generic asset attributes.
588  map<string, string> attributes = 5;
589
590  // The internal information of an asset. Only one field can be specified
591  // with different attributes based on the type of the asset.
592  oneof AssetDetails {
593    // Output only. Asset information specific for virtual and physical
594    // machines.
595    MachineDetails machine_details = 6
596        [(google.api.field_behavior) = OUTPUT_ONLY];
597  }
598
599  // Output only. The list of insights associated with the asset.
600  InsightList insight_list = 20 [(google.api.field_behavior) = OUTPUT_ONLY];
601
602  // Output only. Performance data for the asset.
603  AssetPerformanceData performance_data = 21
604      [(google.api.field_behavior) = OUTPUT_ONLY];
605
606  // Output only. The list of sources contributing to the asset.
607  repeated string sources = 22 [
608    (google.api.field_behavior) = OUTPUT_ONLY,
609    (google.api.resource_reference) = {
610      type: "migrationcenter.googleapis.com/Source"
611    }
612  ];
613
614  // Output only. The list of groups that the asset is assigned to.
615  repeated string assigned_groups = 23 [
616    (google.api.field_behavior) = OUTPUT_ONLY,
617    (google.api.resource_reference) = {
618      type: "migrationcenter.googleapis.com/Group"
619    }
620  ];
621}
622
623// The preferences that apply to all assets in a given context.
624message PreferenceSet {
625  option (google.api.resource) = {
626    type: "migrationcenter.googleapis.com/PreferenceSet"
627    pattern: "projects/{project}/locations/{location}/preferenceSets/{preference_set}"
628  };
629
630  // Output only. Name of the preference set.
631  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
632
633  // Output only. The timestamp when the preference set was created.
634  google.protobuf.Timestamp create_time = 2
635      [(google.api.field_behavior) = OUTPUT_ONLY];
636
637  // Output only. The timestamp when the preference set was last updated.
638  google.protobuf.Timestamp update_time = 3
639      [(google.api.field_behavior) = OUTPUT_ONLY];
640
641  // User-friendly display name. Maximum length is 63 characters.
642  string display_name = 4;
643
644  // A description of the preference set.
645  string description = 5;
646
647  // A set of preferences that applies to all virtual machines in the context.
648  VirtualMachinePreferences virtual_machine_preferences = 6;
649}
650
651// A resource that represents the background job that imports asset frames.
652message ImportJob {
653  option (google.api.resource) = {
654    type: "migrationcenter.googleapis.com/ImportJob"
655    pattern: "projects/{project}/locations/{location}/importJobs/{import_job}"
656  };
657
658  // Enumerates possible states of an import job.
659  enum ImportJobState {
660    // Default value.
661    IMPORT_JOB_STATE_UNSPECIFIED = 0;
662
663    // The import job is pending.
664    IMPORT_JOB_STATE_PENDING = 1;
665
666    // The processing of the import job is ongoing.
667    IMPORT_JOB_STATE_RUNNING = 2;
668
669    // The import job processing has completed.
670    IMPORT_JOB_STATE_COMPLETED = 3;
671
672    // The import job failed to be processed.
673    IMPORT_JOB_STATE_FAILED = 4;
674
675    // The import job is being validated.
676    IMPORT_JOB_STATE_VALIDATING = 5;
677
678    // The import job contains blocking errors.
679    IMPORT_JOB_STATE_FAILED_VALIDATION = 6;
680
681    // The validation of the job completed with no blocking errors.
682    IMPORT_JOB_STATE_READY = 7;
683  }
684
685  // Output only. The full name of the import job.
686  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
687
688  // User-friendly display name. Maximum length is 63 characters.
689  string display_name = 2;
690
691  // Output only. The timestamp when the import job was created.
692  google.protobuf.Timestamp create_time = 3
693      [(google.api.field_behavior) = OUTPUT_ONLY];
694
695  // Output only. The timestamp when the import job was last updated.
696  google.protobuf.Timestamp update_time = 4
697      [(google.api.field_behavior) = OUTPUT_ONLY];
698
699  // Output only. The timestamp when the import job was completed.
700  google.protobuf.Timestamp complete_time = 5
701      [(google.api.field_behavior) = OUTPUT_ONLY];
702
703  // Output only. The state of the import job.
704  ImportJobState state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
705
706  // Labels as key value pairs.
707  map<string, string> labels = 7;
708
709  // Required. Reference to a source.
710  string asset_source = 8 [
711    (google.api.field_behavior) = REQUIRED,
712    (google.api.resource_reference) = {
713      type: "migrationcenter.googleapis.com/Source"
714    }
715  ];
716
717  // Holds the various report types of an import job.
718  oneof report {
719    // Output only. The report with the validation results of the import job.
720    ValidationReport validation_report = 10
721        [(google.api.field_behavior) = OUTPUT_ONLY];
722
723    // Output only. The report with the results of running the import job.
724    ExecutionReport execution_report = 11
725        [(google.api.field_behavior) = OUTPUT_ONLY];
726  }
727}
728
729// A resource that represents a payload file in an import job.
730message ImportDataFile {
731  option (google.api.resource) = {
732    type: "migrationcenter.googleapis.com/ImportDataFile"
733    pattern: "projects/{project}/locations/{location}/importJobs/{import_job}/importDataFiles/{import_data_file}"
734  };
735
736  // Enumerates possible states of an import data file.
737  enum State {
738    // Default value.
739    STATE_UNSPECIFIED = 0;
740
741    // The data file is being created.
742    CREATING = 1;
743
744    // The data file completed initialization.
745    ACTIVE = 2;
746  }
747
748  // Output only. The name of the file.
749  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
750
751  // User-friendly display name. Maximum length is 63 characters.
752  string display_name = 6;
753
754  // Required. The payload format.
755  ImportJobFormat format = 2 [(google.api.field_behavior) = REQUIRED];
756
757  // Output only. The timestamp when the file was created.
758  google.protobuf.Timestamp create_time = 3
759      [(google.api.field_behavior) = OUTPUT_ONLY];
760
761  // Output only. The state of the import data file.
762  State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
763
764  oneof file_info {
765    // Information about a file that is uploaded to a storage service.
766    UploadFileInfo upload_file_info = 5;
767  }
768}
769
770// A resource that represents an asset group.
771// The purpose of an asset group is to bundle a set of assets that have
772// something in common, while allowing users to add annotations to the group.
773// An asset can belong to multiple groups.
774message Group {
775  option (google.api.resource) = {
776    type: "migrationcenter.googleapis.com/Group"
777    pattern: "projects/{project}/locations/{location}/groups/{group}"
778  };
779
780  // Output only. The name of the group.
781  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
782
783  // Output only. The timestamp when the group was created.
784  google.protobuf.Timestamp create_time = 2
785      [(google.api.field_behavior) = OUTPUT_ONLY];
786
787  // Output only. The timestamp when the group was last updated.
788  google.protobuf.Timestamp update_time = 3
789      [(google.api.field_behavior) = OUTPUT_ONLY];
790
791  // Labels as key value pairs.
792  map<string, string> labels = 4;
793
794  // User-friendly display name.
795  string display_name = 5;
796
797  // The description of the resource.
798  string description = 6;
799}
800
801// Message representing a frame which failed to be processed due to an error.
802message ErrorFrame {
803  option (google.api.resource) = {
804    type: "migrationcenter.googleapis.com/ErrorFrame"
805    pattern: "projects/{project}/locations/{location}/sources/{source}/errorFrames/{error_frame}"
806  };
807
808  // Output only. The identifier of the ErrorFrame.
809  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
810
811  // Output only. All the violations that were detected for the frame.
812  repeated FrameViolationEntry violations = 2
813      [(google.api.field_behavior) = OUTPUT_ONLY];
814
815  // Output only. The frame that was originally reported.
816  AssetFrame original_frame = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
817
818  // Output only. Frame ingestion time.
819  google.protobuf.Timestamp ingestion_time = 4
820      [(google.api.field_behavior) = OUTPUT_ONLY];
821}
822
823// Source represents an object from which asset information is
824// streamed to Migration Center.
825message Source {
826  option (google.api.resource) = {
827    type: "migrationcenter.googleapis.com/Source"
828    pattern: "projects/{project}/locations/{location}/sources/{source}"
829  };
830
831  enum SourceType {
832    // Unspecified
833    SOURCE_TYPE_UNKNOWN = 0;
834
835    // Manually uploaded file (e.g. CSV)
836    SOURCE_TYPE_UPLOAD = 1;
837
838    // Guest-level info
839    SOURCE_TYPE_GUEST_OS_SCAN = 2;
840
841    // Inventory-level scan
842    SOURCE_TYPE_INVENTORY_SCAN = 3;
843
844    // Third-party owned sources.
845    SOURCE_TYPE_CUSTOM = 4;
846  }
847
848  // Enumerates possible states of a source.
849  enum State {
850    // Unspecified.
851    STATE_UNSPECIFIED = 0;
852
853    // The source is active and ready to be used.
854    ACTIVE = 1;
855
856    // In the process of being deleted.
857    DELETING = 2;
858
859    // Source is in an invalid state. Asset frames reported to it will be
860    // ignored.
861    INVALID = 3;
862  }
863
864  // Output only. The full name of the source.
865  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
866
867  // Output only. The timestamp when the source was created.
868  google.protobuf.Timestamp create_time = 2
869      [(google.api.field_behavior) = OUTPUT_ONLY];
870
871  // Output only. The timestamp when the source was last updated.
872  google.protobuf.Timestamp update_time = 3
873      [(google.api.field_behavior) = OUTPUT_ONLY];
874
875  // User-friendly display name.
876  string display_name = 4;
877
878  // Free-text description.
879  string description = 5;
880
881  // Data source type.
882  SourceType type = 6;
883
884  // The information confidence of the source.
885  // The higher the value, the higher the confidence.
886  int32 priority = 7;
887
888  // If `true`, the source is managed by other service(s).
889  bool managed = 8;
890
891  // Output only. Number of frames that are still being processed.
892  int32 pending_frame_count = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
893
894  // Output only. The number of frames that were reported by the source and
895  // contained errors.
896  int32 error_frame_count = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
897
898  // Output only. The state of the source.
899  State state = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
900}
901
902// The groups and associated preference sets on which
903// we can generate reports.
904message ReportConfig {
905  option (google.api.resource) = {
906    type: "migrationcenter.googleapis.com/ReportConfig"
907    pattern: "projects/{project}/locations/{location}/reportConfigs/{report_config}"
908  };
909
910  // Represents a combination of a group with a preference set.
911  message GroupPreferenceSetAssignment {
912    // Required. Name of the group.
913    string group = 1 [
914      (google.api.field_behavior) = REQUIRED,
915      (google.api.resource_reference) = {
916        type: "migrationcenter.googleapis.com/Group"
917      }
918    ];
919
920    // Required. Name of the Preference Set.
921    string preference_set = 2 [
922      (google.api.field_behavior) = REQUIRED,
923      (google.api.resource_reference) = {
924        type: "migrationcenter.googleapis.com/PreferenceSet"
925      }
926    ];
927  }
928
929  // Output only. Name of resource.
930  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
931
932  // Output only. The timestamp when the resource was created.
933  google.protobuf.Timestamp create_time = 2
934      [(google.api.field_behavior) = OUTPUT_ONLY];
935
936  // Output only. The timestamp when the resource was last updated.
937  google.protobuf.Timestamp update_time = 3
938      [(google.api.field_behavior) = OUTPUT_ONLY];
939
940  // User-friendly display name. Maximum length is 63 characters.
941  string display_name = 4;
942
943  // Free-text description.
944  string description = 5;
945
946  // Required. Collection of combinations of groups and preference sets.
947  repeated GroupPreferenceSetAssignment group_preferenceset_assignments = 6
948      [(google.api.field_behavior) = REQUIRED];
949}
950
951// Report represents a point-in-time rendering of the ReportConfig results.
952message Report {
953  option (google.api.resource) = {
954    type: "migrationcenter.googleapis.com/Report"
955    pattern: "projects/{project}/locations/{location}/reportConfigs/{report_config}/reports/{report}"
956  };
957
958  // Report type.
959  enum Type {
960    // Default Report type.
961    TYPE_UNSPECIFIED = 0;
962
963    // Total cost of ownership Report type.
964    TOTAL_COST_OF_OWNERSHIP = 1;
965  }
966
967  // Report creation state.
968  enum State {
969    // Default Report creation state.
970    STATE_UNSPECIFIED = 0;
971
972    // Creating Report.
973    PENDING = 1;
974
975    // Successfully created Report.
976    SUCCEEDED = 2;
977
978    // Failed to create Report.
979    FAILED = 3;
980  }
981
982  // Output only. Name of resource.
983  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
984
985  // Output only. Creation timestamp.
986  google.protobuf.Timestamp create_time = 2
987      [(google.api.field_behavior) = OUTPUT_ONLY];
988
989  // Output only. Last update timestamp.
990  google.protobuf.Timestamp update_time = 3
991      [(google.api.field_behavior) = OUTPUT_ONLY];
992
993  // User-friendly display name. Maximum length is 63 characters.
994  string display_name = 4;
995
996  // Free-text description.
997  string description = 5;
998
999  // Report type.
1000  Type type = 6;
1001
1002  // Report creation state.
1003  State state = 7;
1004
1005  // Output only. Summary view of the Report.
1006  ReportSummary summary = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
1007}
1008
1009// Represents the metadata of the long-running operation.
1010message OperationMetadata {
1011  // Output only. The time the operation was created.
1012  google.protobuf.Timestamp create_time = 1
1013      [(google.api.field_behavior) = OUTPUT_ONLY];
1014
1015  // Output only. The time the operation finished running.
1016  google.protobuf.Timestamp end_time = 2
1017      [(google.api.field_behavior) = OUTPUT_ONLY];
1018
1019  // Output only. Server-defined resource path for the target of the operation.
1020  string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1021
1022  // Output only. Name of the verb executed by the operation.
1023  string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1024
1025  // Output only. Human-readable status of the operation, if any.
1026  string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1027
1028  // Output only. Identifies whether the user has requested cancellation
1029  // of the operation. Operations that have been cancelled successfully
1030  // have [Operation.error][] value with a
1031  // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
1032  // `Code.CANCELLED`.
1033  bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
1034
1035  // Output only. API version used to start the operation.
1036  string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1037}
1038
1039// Message for requesting a list of assets.
1040message ListAssetsRequest {
1041  // Required. Parent value for `ListAssetsRequest`.
1042  string parent = 1 [
1043    (google.api.field_behavior) = REQUIRED,
1044    (google.api.resource_reference) = {
1045      child_type: "migrationcenter.googleapis.com/Asset"
1046    }
1047  ];
1048
1049  // Requested page size. Server may return fewer items than requested.
1050  // If unspecified, server will pick an appropriate default.
1051  int32 page_size = 2;
1052
1053  // A token identifying a page of results the server should return.
1054  string page_token = 3;
1055
1056  // Filtering results.
1057  string filter = 4;
1058
1059  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
1060  string order_by = 5;
1061
1062  // View of the assets. Defaults to BASIC.
1063  AssetView view = 6;
1064}
1065
1066// Response message for listing assets.
1067message ListAssetsResponse {
1068  // A list of assets.
1069  repeated Asset assets = 1;
1070
1071  // A token identifying a page of results the server should return.
1072  string next_page_token = 2;
1073
1074  // Locations that could not be reached.
1075  repeated string unreachable = 3;
1076}
1077
1078// Message for getting a Asset.
1079message GetAssetRequest {
1080  // Required. Name of the resource.
1081  string name = 1 [
1082    (google.api.field_behavior) = REQUIRED,
1083    (google.api.resource_reference) = {
1084      type: "migrationcenter.googleapis.com/Asset"
1085    }
1086  ];
1087
1088  // View of the assets. Defaults to BASIC.
1089  AssetView view = 2;
1090}
1091
1092// A request to update an asset.
1093message UpdateAssetRequest {
1094  // Required. Field mask is used to specify the fields to be overwritten in the
1095  // `Asset` resource by the update.
1096  // The values specified in the `update_mask` field are relative to the
1097  // resource, not the full request.
1098  // A field will be overwritten if it is in the mask.
1099  // A single * value in the mask lets you to overwrite all fields.
1100  google.protobuf.FieldMask update_mask = 1
1101      [(google.api.field_behavior) = REQUIRED];
1102
1103  // Required. The resource being updated.
1104  Asset asset = 2 [(google.api.field_behavior) = REQUIRED];
1105
1106  // Optional. An optional request ID to identify requests. Specify a unique
1107  // request ID so that if you must retry your request, the server will know to
1108  // ignore the request if it has already been completed. The server will
1109  // guarantee that for at least 60 minutes since the first request.
1110  //
1111  // For example, consider a situation where you make an initial request and
1112  // the request times out. If you make the request again with the same request
1113  // ID, the server can check if original operation with the same request ID
1114  // was received, and if so, will ignore the second request. This prevents
1115  // clients from accidentally creating duplicate commitments.
1116  //
1117  // The request ID must be a valid UUID with the exception that zero UUID is
1118  // not supported (00000000-0000-0000-0000-000000000000).
1119  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
1120}
1121
1122// A request to update a list of assets.
1123message BatchUpdateAssetsRequest {
1124  // Required. Parent value for batch asset update.
1125  string parent = 1 [
1126    (google.api.field_behavior) = REQUIRED,
1127    (google.api.resource_reference) = {
1128      child_type: "migrationcenter.googleapis.com/Asset"
1129    }
1130  ];
1131
1132  // Required. The request message specifying the resources to update.
1133  // A maximum of 1000 assets can be modified in a batch.
1134  repeated UpdateAssetRequest requests = 2
1135      [(google.api.field_behavior) = REQUIRED];
1136}
1137
1138// Response for updating a list of assets.
1139message BatchUpdateAssetsResponse {
1140  // Update asset content.
1141  // The content only includes values after field mask being applied.
1142  repeated Asset assets = 1;
1143}
1144
1145// A request to delete an asset.
1146message DeleteAssetRequest {
1147  // Required. Name of the resource.
1148  string name = 1 [
1149    (google.api.field_behavior) = REQUIRED,
1150    (google.api.resource_reference) = {
1151      type: "migrationcenter.googleapis.com/Asset"
1152    }
1153  ];
1154
1155  // Optional. An optional request ID to identify requests. Specify a unique
1156  // request ID so that if you must retry your request, the server will know to
1157  // ignore the request if it has already been completed. The server will
1158  // guarantee that for at least 60 minutes after the first request.
1159  //
1160  // For example, consider a situation where you make an initial request and
1161  // the request times out. If you make the request again with the same request
1162  // ID, the server can check if original operation with the same request ID
1163  // was received, and if so, will ignore the second request. This prevents
1164  // clients from accidentally creating duplicate commitments.
1165  //
1166  // The request ID must be a valid UUID with the exception that zero UUID is
1167  // not supported (00000000-0000-0000-0000-000000000000).
1168  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1169}
1170
1171// A request to delete a list of  asset.
1172message BatchDeleteAssetsRequest {
1173  // Required. Parent value for batch asset delete.
1174  string parent = 1 [
1175    (google.api.field_behavior) = REQUIRED,
1176    (google.api.resource_reference) = {
1177      child_type: "migrationcenter.googleapis.com/Asset"
1178    }
1179  ];
1180
1181  // Required. The IDs of the assets to delete.
1182  // A maximum of 1000 assets can be deleted in a batch.
1183  // Format: projects/{project}/locations/{location}/assets/{name}.
1184  repeated string names = 2 [
1185    (google.api.field_behavior) = REQUIRED,
1186    (google.api.resource_reference) = {
1187      type: "migrationcenter.googleapis.com/Asset"
1188    }
1189  ];
1190
1191  // Optional. When this value is set to `true` the request is a no-op for
1192  // non-existing assets. See https://google.aip.dev/135#delete-if-existing for
1193  // additional details. Default value is `false`.
1194  bool allow_missing = 3 [(google.api.field_behavior) = OPTIONAL];
1195}
1196
1197// A request to report a set of asset frames.
1198message ReportAssetFramesRequest {
1199  // Required. Parent of the resource.
1200  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1201
1202  // Collection of frames data.
1203  Frames frames = 2;
1204
1205  // Required. Reference to a source.
1206  string source = 3 [
1207    (google.api.field_behavior) = REQUIRED,
1208    (google.api.resource_reference) = {
1209      type: "migrationcenter.googleapis.com/Source"
1210    }
1211  ];
1212}
1213
1214// A response to a call to `ReportAssetFrame`.
1215message ReportAssetFramesResponse {}
1216
1217// A request to aggregate one or more values.
1218message AggregateAssetsValuesRequest {
1219  // Required. Parent value for `AggregateAssetsValuesRequest`.
1220  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1221
1222  // Array of aggregations to perform.
1223  // Up to 25 aggregations can be defined.
1224  repeated Aggregation aggregations = 2;
1225
1226  // The aggregation will be performed on assets that match the provided filter.
1227  string filter = 3;
1228}
1229
1230// A response to a request to aggregated assets values.
1231message AggregateAssetsValuesResponse {
1232  // The aggregation results.
1233  repeated AggregationResult results = 1;
1234}
1235
1236// A request to create an import job.
1237message CreateImportJobRequest {
1238  // Required. Value for parent.
1239  string parent = 1 [
1240    (google.api.field_behavior) = REQUIRED,
1241    (google.api.resource_reference) = {
1242      child_type: "migrationcenter.googleapis.com/ImportJob"
1243    }
1244  ];
1245
1246  // Required. ID of the import job.
1247  string import_job_id = 2 [(google.api.field_behavior) = REQUIRED];
1248
1249  // Required. The resource being created.
1250  ImportJob import_job = 3 [(google.api.field_behavior) = REQUIRED];
1251
1252  // Optional. An optional request ID to identify requests. Specify a unique
1253  // request ID so that if you must retry your request, the server will know to
1254  // ignore the request if it has already been completed. The server will
1255  // guarantee that for at least 60 minutes since the first request.
1256  //
1257  // For example, consider a situation where you make an initial request and
1258  // the request times out. If you make the request again with the same request
1259  // ID, the server can check if original operation with the same request ID
1260  // was received, and if so, will ignore the second request. This prevents
1261  // clients from accidentally creating duplicate commitments.
1262  //
1263  // The request ID must be a valid UUID with the exception that zero UUID is
1264  // not supported (00000000-0000-0000-0000-000000000000).
1265  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
1266}
1267
1268// A request to list import jobs.
1269message ListImportJobsRequest {
1270  // Required. Parent value for `ListImportJobsRequest`.
1271  string parent = 1 [
1272    (google.api.field_behavior) = REQUIRED,
1273    (google.api.resource_reference) = {
1274      child_type: "migrationcenter.googleapis.com/ImportJob"
1275    }
1276  ];
1277
1278  // Requested page size. Server may return fewer items than requested.
1279  // If unspecified, server will pick an appropriate default.
1280  int32 page_size = 2;
1281
1282  // A token identifying a page of results the server should return.
1283  string page_token = 3;
1284
1285  // Filtering results.
1286  string filter = 4;
1287
1288  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
1289  string order_by = 5;
1290
1291  // Optional. The level of details of each import job.
1292  // Default value is BASIC.
1293  ImportJobView view = 6 [(google.api.field_behavior) = OPTIONAL];
1294}
1295
1296// A response for listing import jobs.
1297message ListImportJobsResponse {
1298  // The list of import jobs.
1299  repeated ImportJob import_jobs = 1;
1300
1301  // A token identifying a page of results the server should return.
1302  string next_page_token = 2;
1303
1304  // Locations that could not be reached.
1305  repeated string unreachable = 3;
1306}
1307
1308// A request to get an import job.
1309message GetImportJobRequest {
1310  // Required. Name of the resource.
1311  string name = 1 [
1312    (google.api.field_behavior) = REQUIRED,
1313    (google.api.resource_reference) = {
1314      type: "migrationcenter.googleapis.com/ImportJob"
1315    }
1316  ];
1317
1318  // Optional. The level of details of the import job.
1319  // Default value is FULL.
1320  ImportJobView view = 2 [(google.api.field_behavior) = OPTIONAL];
1321}
1322
1323// A request to delete an import job.
1324message DeleteImportJobRequest {
1325  // Required. Name of the resource.
1326  string name = 1 [
1327    (google.api.field_behavior) = REQUIRED,
1328    (google.api.resource_reference) = {
1329      type: "migrationcenter.googleapis.com/ImportJob"
1330    }
1331  ];
1332
1333  // Optional. An optional request ID to identify requests. Specify a unique
1334  // request ID so that if you must retry your request, the server will know to
1335  // ignore the request if it has already been completed. The server will
1336  // guarantee that for at least 60 minutes after the first request.
1337  //
1338  // For example, consider a situation where you make an initial request and
1339  // the request times out. If you make the request again with the same request
1340  // ID, the server can check if original operation with the same request ID
1341  // was received, and if so, will ignore the second request. This prevents
1342  // clients from accidentally creating duplicate commitments.
1343  //
1344  // The request ID must be a valid UUID with the exception that zero UUID is
1345  // not supported (00000000-0000-0000-0000-000000000000).
1346  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1347
1348  // Optional. If set to `true`, any `ImportDataFiles` of this job will also be
1349  // deleted If set to `false`, the request only works if the job has no data
1350  // files.
1351  bool force = 3 [(google.api.field_behavior) = OPTIONAL];
1352}
1353
1354// A request to update an import job.
1355message UpdateImportJobRequest {
1356  // Required. Field mask is used to specify the fields to be overwritten in the
1357  // `Asset` resource by the update.
1358  // The values specified in the `update_mask` field are relative to the
1359  // resource, not the full request.
1360  // A field will be overwritten if it is in the mask.
1361  // A single * value in the mask lets you to overwrite all fields.
1362  google.protobuf.FieldMask update_mask = 1
1363      [(google.api.field_behavior) = REQUIRED];
1364
1365  // Required. The resource being updated
1366  ImportJob import_job = 2 [(google.api.field_behavior) = REQUIRED];
1367
1368  // Optional. An optional request ID to identify requests. Specify a unique
1369  // request ID so that if you must retry your request, the server will know to
1370  // ignore the request if it has already been completed. The server will
1371  // guarantee that for at least 60 minutes since the first request.
1372  //
1373  // For example, consider a situation where you make an initial request and
1374  // the request times out. If you make the request again with the same request
1375  // ID, the server can check if original operation with the same request ID
1376  // was received, and if so, will ignore the second request. This prevents
1377  // clients from accidentally creating duplicate commitments.
1378  //
1379  // The request ID must be a valid UUID with the exception that zero UUID is
1380  // not supported (00000000-0000-0000-0000-000000000000).
1381  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
1382}
1383
1384// A request to validate an import job.
1385message ValidateImportJobRequest {
1386  // Required. The name of the import job to validate.
1387  string name = 1 [
1388    (google.api.field_behavior) = REQUIRED,
1389    (google.api.resource_reference) = {
1390      type: "migrationcenter.googleapis.com/ImportJob"
1391    }
1392  ];
1393
1394  // Optional. An optional request ID to identify requests. Specify a unique
1395  // request ID so that if you must retry your request, the server will know to
1396  // ignore the request if it has already been completed. The server will
1397  // guarantee that for at least 60 minutes after the first request.
1398  //
1399  // For example, consider a situation where you make an initial request and
1400  // the request times out. If you make the request again with the same request
1401  // ID, the server can check if original operation with the same request ID
1402  // was received, and if so, will ignore the second request. This prevents
1403  // clients from accidentally creating duplicate commitments.
1404  //
1405  // The request ID must be a valid UUID with the exception that zero UUID is
1406  // not supported (00000000-0000-0000-0000-000000000000).
1407  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1408}
1409
1410// A request to run an import job.
1411message RunImportJobRequest {
1412  // Required. The name of the import job to run.
1413  string name = 1 [
1414    (google.api.field_behavior) = REQUIRED,
1415    (google.api.resource_reference) = {
1416      type: "migrationcenter.googleapis.com/ImportJob"
1417    }
1418  ];
1419
1420  // Optional. An optional request ID to identify requests. Specify a unique
1421  // request ID so that if you must retry your request, the server will know to
1422  // ignore the request if it has already been completed. The server will
1423  // guarantee that for at least 60 minutes after the first request.
1424  //
1425  // For example, consider a situation where you make an initial request and
1426  // the request times out. If you make the request again with the same request
1427  // ID, the server can check if original operation with the same request ID
1428  // was received, and if so, will ignore the second request. This prevents
1429  // clients from accidentally creating duplicate commitments.
1430  //
1431  // The request ID must be a valid UUID with the exception that zero UUID is
1432  // not supported (00000000-0000-0000-0000-000000000000).
1433  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1434}
1435
1436// A request to get an import data file.
1437message GetImportDataFileRequest {
1438  // Required. Name of the ImportDataFile.
1439  string name = 1 [
1440    (google.api.field_behavior) = REQUIRED,
1441    (google.api.resource_reference) = {
1442      type: "migrationcenter.googleapis.com/ImportDataFile"
1443    }
1444  ];
1445}
1446
1447// A request to list import data files of an import job.
1448message ListImportDataFilesRequest {
1449  // Required. Name of the parent of the `ImportDataFiles` resource.
1450  string parent = 1 [
1451    (google.api.field_behavior) = REQUIRED,
1452    (google.api.resource_reference) = {
1453      child_type: "migrationcenter.googleapis.com/ImportDataFile"
1454    }
1455  ];
1456
1457  // The maximum number of data files to return. The service may return
1458  // fewer than this value. If unspecified, at most 500 data files will be
1459  // returned. The maximum value is 1000; values above 1000 will be coerced to
1460  // 1000.
1461  int32 page_size = 2;
1462
1463  // A page token, received from a previous `ListImportDataFiles` call.
1464  // Provide this to retrieve the subsequent page.
1465  //
1466  // When paginating, all other parameters provided to `ListImportDataFiles`
1467  // must match the call that provided the page token.
1468  string page_token = 3;
1469
1470  // Filtering results.
1471  string filter = 4;
1472
1473  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
1474  string order_by = 5;
1475}
1476
1477// Response for listing payload files of an import job.
1478message ListImportDataFilesResponse {
1479  // The list of import data files.
1480  repeated ImportDataFile import_data_files = 1;
1481
1482  // A token that can be sent as `page_token` to retrieve the next page.
1483  // If this field is omitted, there are no subsequent pages.
1484  string next_page_token = 2;
1485
1486  // Locations that could not be reached.
1487  repeated string unreachable = 3;
1488}
1489
1490// A request to create an `ImportDataFile` resource.
1491message CreateImportDataFileRequest {
1492  // Required. Name of the parent of the ImportDataFile.
1493  string parent = 1 [
1494    (google.api.field_behavior) = REQUIRED,
1495    (google.api.resource_reference) = {
1496      child_type: "migrationcenter.googleapis.com/ImportDataFile"
1497    }
1498  ];
1499
1500  // Required. The ID of the new data file.
1501  string import_data_file_id = 2 [(google.api.field_behavior) = REQUIRED];
1502
1503  // Required. The resource being created.
1504  ImportDataFile import_data_file = 3 [(google.api.field_behavior) = REQUIRED];
1505
1506  // Optional. An optional request ID to identify requests. Specify a unique
1507  // request ID so that if you must retry your request, the server will know to
1508  // ignore the request if it has already been completed. The server will
1509  // guarantee that for at least 60 minutes since the first request.
1510  //
1511  // For example, consider a situation where you make an initial request and
1512  // the request times out. If you make the request again with the same request
1513  // ID, the server can check if original operation with the same request ID
1514  // was received, and if so, will ignore the second request. This prevents
1515  // clients from accidentally creating duplicate commitments.
1516  //
1517  // The request ID must be a valid UUID with the exception that zero UUID is
1518  // not supported (00000000-0000-0000-0000-000000000000).
1519  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
1520}
1521
1522// A request to delete an `ImportDataFile` resource.
1523message DeleteImportDataFileRequest {
1524  // Required. Name of the ImportDataFile to delete.
1525  string name = 1 [
1526    (google.api.field_behavior) = REQUIRED,
1527    (google.api.resource_reference) = {
1528      type: "migrationcenter.googleapis.com/ImportDataFile"
1529    }
1530  ];
1531
1532  // Optional. An optional request ID to identify requests. Specify a unique
1533  // request ID so that if you must retry your request, the server will know to
1534  // ignore the request if it has already been completed. The server will
1535  // guarantee that for at least 60 minutes after the first request.
1536  //
1537  // For example, consider a situation where you make an initial request and
1538  // the request times out. If you make the request again with the same request
1539  // ID, the server can check if original operation with the same request ID
1540  // was received, and if so, will ignore the second request. This prevents
1541  // clients from accidentally creating duplicate commitments.
1542  //
1543  // The request ID must be a valid UUID with the exception that zero UUID is
1544  // not supported (00000000-0000-0000-0000-000000000000).
1545  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1546}
1547
1548// A request to list groups.
1549message ListGroupsRequest {
1550  // Required. Parent value for `ListGroupsRequest`.
1551  string parent = 1 [
1552    (google.api.field_behavior) = REQUIRED,
1553    (google.api.resource_reference) = {
1554      child_type: "migrationcenter.googleapis.com/Group"
1555    }
1556  ];
1557
1558  // Requested page size. Server may return fewer items than requested.
1559  // If unspecified, server will pick an appropriate default.
1560  int32 page_size = 2;
1561
1562  // A token identifying a page of results the server should return.
1563  string page_token = 3;
1564
1565  // Filtering results.
1566  string filter = 4;
1567
1568  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
1569  string order_by = 5;
1570}
1571
1572// A response for listing groups.
1573message ListGroupsResponse {
1574  // The list of Group
1575  repeated Group groups = 1;
1576
1577  // A token identifying a page of results the server should return.
1578  string next_page_token = 2;
1579
1580  // Locations that could not be reached.
1581  repeated string unreachable = 3;
1582}
1583
1584// A request to get a group.
1585message GetGroupRequest {
1586  // Required. Name of the resource.
1587  string name = 1 [
1588    (google.api.field_behavior) = REQUIRED,
1589    (google.api.resource_reference) = {
1590      type: "migrationcenter.googleapis.com/Group"
1591    }
1592  ];
1593}
1594
1595// A request to create a group.
1596message CreateGroupRequest {
1597  // Required. Value for parent.
1598  string parent = 1 [
1599    (google.api.field_behavior) = REQUIRED,
1600    (google.api.resource_reference) = {
1601      child_type: "migrationcenter.googleapis.com/Group"
1602    }
1603  ];
1604
1605  // Required. User specified ID for the group. It will become the last
1606  // component of the group name. The ID must be unique within the project, must
1607  // conform with RFC-1034, is restricted to lower-cased letters, and has a
1608  // maximum length of 63 characters. The ID must match the regular expression:
1609  // `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.
1610  string group_id = 2 [(google.api.field_behavior) = REQUIRED];
1611
1612  // Required. The group resource being created.
1613  Group group = 3 [(google.api.field_behavior) = REQUIRED];
1614
1615  // Optional. An optional request ID to identify requests. Specify a unique
1616  // request ID so that if you must retry your request, the server will know to
1617  // ignore the request if it has already been completed. The server will
1618  // guarantee that for at least 60 minutes since the first request.
1619  //
1620  // For example, consider a situation where you make an initial request and
1621  // the request times out. If you make the request again with the same request
1622  // ID, the server can check if original operation with the same request ID
1623  // was received, and if so, will ignore the second request. This prevents
1624  // clients from accidentally creating duplicate commitments.
1625  //
1626  // The request ID must be a valid UUID with the exception that zero UUID is
1627  // not supported (00000000-0000-0000-0000-000000000000).
1628  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
1629}
1630
1631// A request to update a group.
1632message UpdateGroupRequest {
1633  // Required. Field mask is used to specify the fields to be overwritten in the
1634  // `Group` resource by the update.
1635  // The values specified in the `update_mask` are relative to the resource, not
1636  // the full request. A field will be overwritten if it is in the mask.
1637  // A single * value in the mask lets you to overwrite all fields.
1638  google.protobuf.FieldMask update_mask = 1
1639      [(google.api.field_behavior) = REQUIRED];
1640
1641  // Required. The group resource being updated.
1642  Group group = 2 [(google.api.field_behavior) = REQUIRED];
1643
1644  // Optional. An optional request ID to identify requests. Specify a unique
1645  // request ID so that if you must retry your request, the server will know to
1646  // ignore the request if it has already been completed. The server will
1647  // guarantee that for at least 60 minutes since the first request.
1648  //
1649  // For example, consider a situation where you make an initial request and
1650  // the request times out. If you make the request again with the same request
1651  // ID, the server can check if original operation with the same request ID
1652  // was received, and if so, will ignore the second request. This prevents
1653  // clients from accidentally creating duplicate commitments.
1654  //
1655  // The request ID must be a valid UUID with the exception that zero UUID is
1656  // not supported (00000000-0000-0000-0000-000000000000).
1657  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
1658}
1659
1660// A request to delete a group.
1661message DeleteGroupRequest {
1662  // Required. Name of the group resource.
1663  string name = 1 [
1664    (google.api.field_behavior) = REQUIRED,
1665    (google.api.resource_reference) = {
1666      type: "migrationcenter.googleapis.com/Group"
1667    }
1668  ];
1669
1670  // Optional. An optional request ID to identify requests. Specify a unique
1671  // request ID so that if you must retry your request, the server will know to
1672  // ignore the request if it has already been completed. The server will
1673  // guarantee that for at least 60 minutes after the first request.
1674  //
1675  // For example, consider a situation where you make an initial request and
1676  // the request times out. If you make the request again with the same request
1677  // ID, the server can check if original operation with the same request ID
1678  // was received, and if so, will ignore the second request. This prevents
1679  // clients from accidentally creating duplicate commitments.
1680  //
1681  // The request ID must be a valid UUID with the exception that zero UUID is
1682  // not supported (00000000-0000-0000-0000-000000000000).
1683  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1684}
1685
1686// A request to add assets to a group.
1687message AddAssetsToGroupRequest {
1688  // Required. Group reference.
1689  string group = 1 [
1690    (google.api.field_behavior) = REQUIRED,
1691    (google.api.resource_reference) = {
1692      type: "migrationcenter.googleapis.com/Group"
1693    }
1694  ];
1695
1696  // Optional. An optional request ID to identify requests. Specify a unique
1697  // request ID so that if you must retry your request, the server will know to
1698  // ignore the request if it has already been completed. The server will
1699  // guarantee that for at least 60 minutes after the first request.
1700  //
1701  // For example, consider a situation where you make an initial request and
1702  // the request times out. If you make the request again with the same request
1703  // ID, the server can check if original operation with the same request ID
1704  // was received, and if so, will ignore the second request. This prevents
1705  // clients from accidentally creating duplicate commitments.
1706  //
1707  // The request ID must be a valid UUID with the exception that zero UUID is
1708  // not supported (00000000-0000-0000-0000-000000000000).
1709  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1710
1711  // Required. List of assets to be added.
1712  // The maximum number of assets that can be added in a single request is
1713  // 1000.
1714  AssetList assets = 3 [(google.api.field_behavior) = REQUIRED];
1715
1716  // Optional. When this value is set to `false` and one of the given assets is
1717  // already an existing member of the group, the operation fails with an
1718  // `Already Exists` error. When set to `true` this situation is silently
1719  // ignored by the server.
1720  //
1721  // Default value is `false`.
1722  bool allow_existing = 4 [(google.api.field_behavior) = OPTIONAL];
1723}
1724
1725// A request to remove assets from a group.
1726message RemoveAssetsFromGroupRequest {
1727  // Required. Group reference.
1728  string group = 1 [
1729    (google.api.field_behavior) = REQUIRED,
1730    (google.api.resource_reference) = {
1731      type: "migrationcenter.googleapis.com/Group"
1732    }
1733  ];
1734
1735  // Optional. An optional request ID to identify requests. Specify a unique
1736  // request ID so that if you must retry your request, the server will know to
1737  // ignore the request if it has already been completed. The server will
1738  // guarantee that for at least 60 minutes after the first request.
1739  //
1740  // For example, consider a situation where you make an initial request and
1741  // the request times out. If you make the request again with the same request
1742  // ID, the server can check if original operation with the same request ID
1743  // was received, and if so, will ignore the second request. This prevents
1744  // clients from accidentally creating duplicate commitments.
1745  //
1746  // The request ID must be a valid UUID with the exception that zero UUID is
1747  // not supported (00000000-0000-0000-0000-000000000000).
1748  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1749
1750  // Required. List of assets to be removed.
1751  // The maximum number of assets that can be removed in a single request is
1752  // 1000.
1753  AssetList assets = 3 [(google.api.field_behavior) = REQUIRED];
1754
1755  // Optional. When this value is set to `false` and one of the given assets is
1756  // not an existing member of the group, the operation fails with a `Not Found`
1757  // error. When set to `true` this situation is silently ignored by the server.
1758  //
1759  // Default value is `false`.
1760  bool allow_missing = 4 [(google.api.field_behavior) = OPTIONAL];
1761}
1762
1763// A request to list error frames for a source.
1764message ListErrorFramesRequest {
1765  // Required. Parent value (the source) for `ListErrorFramesRequest`.
1766  string parent = 1 [
1767    (google.api.field_behavior) = REQUIRED,
1768    (google.api.resource_reference) = {
1769      child_type: "migrationcenter.googleapis.com/ErrorFrame"
1770    }
1771  ];
1772
1773  // Requested page size. Server may return fewer items than requested.
1774  // If unspecified, server will pick an appropriate default.
1775  int32 page_size = 2;
1776
1777  // A token identifying a page of results the server should return.
1778  string page_token = 3;
1779
1780  // Optional. An optional view mode to control the level of details of each
1781  // error frame. The default is a BASIC frame view.
1782  ErrorFrameView view = 4 [(google.api.field_behavior) = OPTIONAL];
1783}
1784
1785// A response for listing error frames.
1786message ListErrorFramesResponse {
1787  // The list of error frames.
1788  repeated ErrorFrame error_frames = 1;
1789
1790  // A token identifying a page of results the server should return.
1791  string next_page_token = 2;
1792
1793  // Locations that could not be reached.
1794  repeated string unreachable = 3;
1795}
1796
1797message GetErrorFrameRequest {
1798  // Required. The name of the frame to retrieve.
1799  // Format:
1800  // projects/{project}/locations/{location}/sources/{source}/errorFrames/{error_frame}
1801  string name = 1 [
1802    (google.api.field_behavior) = REQUIRED,
1803    (google.api.resource_reference) = {
1804      type: "migrationcenter.googleapis.com/ErrorFrame"
1805    }
1806  ];
1807
1808  // Optional. An optional view mode to control the level of details for the
1809  // frame. The default is a basic frame view.
1810  ErrorFrameView view = 2 [(google.api.field_behavior) = OPTIONAL];
1811}
1812
1813// A request for a list of sources.
1814message ListSourcesRequest {
1815  // Required. Parent value for `ListSourcesRequest`.
1816  string parent = 1 [
1817    (google.api.field_behavior) = REQUIRED,
1818    (google.api.resource_reference) = {
1819      child_type: "migrationcenter.googleapis.com/Source"
1820    }
1821  ];
1822
1823  // Requested page size. The server may return fewer items than requested.
1824  // If unspecified, the server will pick an appropriate default value.
1825  int32 page_size = 2;
1826
1827  // A token identifying a page of results that the server should return.
1828  string page_token = 3;
1829
1830  // Filtering results.
1831  string filter = 4;
1832
1833  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
1834  string order_by = 5;
1835}
1836
1837// Response message for listing sources.
1838message ListSourcesResponse {
1839  // The list of sources.
1840  repeated Source sources = 1;
1841
1842  // A token identifying a page of results the server should return.
1843  string next_page_token = 2;
1844
1845  // Locations that could not be reached.
1846  repeated string unreachable = 3;
1847}
1848
1849// A request to get a source.
1850message GetSourceRequest {
1851  // Required. Name of the resource.
1852  string name = 1 [
1853    (google.api.field_behavior) = REQUIRED,
1854    (google.api.resource_reference) = {
1855      type: "migrationcenter.googleapis.com/Source"
1856    }
1857  ];
1858}
1859
1860// A request to create a source.
1861message CreateSourceRequest {
1862  // Required. Value for parent.
1863  string parent = 1 [
1864    (google.api.field_behavior) = REQUIRED,
1865    (google.api.resource_reference) = {
1866      child_type: "migrationcenter.googleapis.com/Source"
1867    }
1868  ];
1869
1870  // Required. User specified ID for the source. It will become the last
1871  // component of the source name. The ID must be unique within the project,
1872  // must conform with RFC-1034, is restricted to lower-cased letters, and has a
1873  // maximum length of 63 characters. The ID must match the regular expression:
1874  // `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.
1875  string source_id = 2 [(google.api.field_behavior) = REQUIRED];
1876
1877  // Required. The resource being created.
1878  Source source = 3 [(google.api.field_behavior) = REQUIRED];
1879
1880  // Optional. An optional request ID to identify requests. Specify a unique
1881  // request ID so that if you must retry your request, the server will know to
1882  // ignore the request if it has already been completed. The server will
1883  // guarantee that for at least 60 minutes since the first request.
1884  //
1885  // For example, consider a situation where you make an initial request and
1886  // the request times out. If you make the request again with the same request
1887  // ID, the server can check if original operation with the same request ID
1888  // was received, and if so, will ignore the second request. This prevents
1889  // clients from accidentally creating duplicate commitments.
1890  //
1891  // The request ID must be a valid UUID with the exception that zero UUID is
1892  // not supported (00000000-0000-0000-0000-000000000000).
1893  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
1894}
1895
1896// A request to update a source.
1897message UpdateSourceRequest {
1898  // Required. Field mask is used to specify the fields to be overwritten in the
1899  // `Source` resource by the update.
1900  // The values specified in the `update_mask` field are relative to the
1901  // resource, not the full request.
1902  // A field will be overwritten if it is in the mask.
1903  // A single * value in the mask lets you to overwrite all fields.
1904  google.protobuf.FieldMask update_mask = 1
1905      [(google.api.field_behavior) = REQUIRED];
1906
1907  // Required. The resource being updated
1908  Source source = 2 [(google.api.field_behavior) = REQUIRED];
1909
1910  // Optional. An optional request ID to identify requests. Specify a unique
1911  // request ID so that if you must retry your request, the server will know to
1912  // ignore the request if it has already been completed. The server will
1913  // guarantee that for at least 60 minutes since the first request.
1914  //
1915  // For example, consider a situation where you make an initial request and
1916  // the request times out. If you make the request again with the same request
1917  // ID, the server can check if original operation with the same request ID
1918  // was received, and if so, will ignore the second request. This prevents
1919  // clients from accidentally creating duplicate commitments.
1920  //
1921  // The request ID must be a valid UUID with the exception that zero UUID is
1922  // not supported (00000000-0000-0000-0000-000000000000).
1923  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
1924}
1925
1926// A request to delete a source.
1927message DeleteSourceRequest {
1928  // Required. Name of the resource.
1929  string name = 1 [
1930    (google.api.field_behavior) = REQUIRED,
1931    (google.api.resource_reference) = {
1932      type: "migrationcenter.googleapis.com/Source"
1933    }
1934  ];
1935
1936  // Optional. An optional request ID to identify requests. Specify a unique
1937  // request ID so that if you must retry your request, the server will know to
1938  // ignore the request if it has already been completed. The server will
1939  // guarantee that for at least 60 minutes after the first request.
1940  //
1941  // For example, consider a situation where you make an initial request and
1942  // the request times out. If you make the request again with the same request
1943  // ID, the server can check if original operation with the same request ID
1944  // was received, and if so, will ignore the second request. This prevents
1945  // clients from accidentally creating duplicate commitments.
1946  //
1947  // The request ID must be a valid UUID with the exception that zero UUID is
1948  // not supported (00000000-0000-0000-0000-000000000000).
1949  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1950}
1951
1952// Request for listing preference sets.
1953message ListPreferenceSetsRequest {
1954  // Required. Parent value for `ListPreferenceSetsRequest`.
1955  string parent = 1 [
1956    (google.api.field_behavior) = REQUIRED,
1957    (google.api.resource_reference) = {
1958      child_type: "migrationcenter.googleapis.com/PreferenceSet"
1959    }
1960  ];
1961
1962  // Requested page size. Server may return fewer items than requested.
1963  // If unspecified, at most 500 preference sets will be returned.
1964  // The maximum value is 1000; values above 1000 will be coerced to 1000.
1965  int32 page_size = 2;
1966
1967  // A token identifying a page of results the server should return.
1968  string page_token = 3;
1969
1970  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
1971  string order_by = 5;
1972}
1973
1974// Response message for listing preference sets.
1975message ListPreferenceSetsResponse {
1976  // The list of PreferenceSets
1977  repeated PreferenceSet preference_sets = 1;
1978
1979  // A token identifying a page of results the server should return.
1980  string next_page_token = 2;
1981
1982  // Locations that could not be reached.
1983  repeated string unreachable = 3;
1984}
1985
1986// A request to get a preference set.
1987message GetPreferenceSetRequest {
1988  // Required. Name of the resource.
1989  string name = 1 [
1990    (google.api.field_behavior) = REQUIRED,
1991    (google.api.resource_reference) = {
1992      type: "migrationcenter.googleapis.com/PreferenceSet"
1993    }
1994  ];
1995}
1996
1997// A request to create a preference set.
1998message CreatePreferenceSetRequest {
1999  // Required. Value for parent.
2000  string parent = 1 [
2001    (google.api.field_behavior) = REQUIRED,
2002    (google.api.resource_reference) = {
2003      child_type: "migrationcenter.googleapis.com/PreferenceSet"
2004    }
2005  ];
2006
2007  // Required. User specified ID for the preference set. It will become the last
2008  // component of the preference set name. The ID must be unique within the
2009  // project, must conform with RFC-1034, is restricted to lower-cased letters,
2010  // and has a maximum length of 63 characters. The ID must match the regular
2011  // expression
2012  // `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.
2013  string preference_set_id = 2 [(google.api.field_behavior) = REQUIRED];
2014
2015  // Required. The preference set resource being created.
2016  PreferenceSet preference_set = 3 [(google.api.field_behavior) = REQUIRED];
2017
2018  // Optional. An optional request ID to identify requests. Specify a unique
2019  // request ID so that if you must retry your request, the server will know to
2020  // ignore the request if it has already been completed. The server will
2021  // guarantee that for at least 60 minutes since the first request.
2022  //
2023  // For example, consider a situation where you make an initial request and
2024  // the request times out. If you make the request again with the same request
2025  // ID, the server can check if original operation with the same request ID
2026  // was received, and if so, will ignore the second request. This prevents
2027  // clients from accidentally creating duplicate commitments.
2028  //
2029  // The request ID must be a valid UUID with the exception that zero UUID is
2030  // not supported (00000000-0000-0000-0000-000000000000).
2031  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
2032}
2033
2034// A request to update a preference set.
2035message UpdatePreferenceSetRequest {
2036  // Required. Field mask is used to specify the fields to be overwritten in the
2037  // `PreferenceSet` resource by the update.
2038  // The values specified in the `update_mask` field are relative to the
2039  // resource, not the full request.
2040  // A field will be overwritten if it is in the mask.
2041  // A single * value in the mask lets you to overwrite all fields.
2042  google.protobuf.FieldMask update_mask = 1
2043      [(google.api.field_behavior) = REQUIRED];
2044
2045  // Required. The preference set resource being updated.
2046  PreferenceSet preference_set = 2 [(google.api.field_behavior) = REQUIRED];
2047
2048  // Optional. An optional request ID to identify requests. Specify a unique
2049  // request ID so that if you must retry your request, the server will know to
2050  // ignore the request if it has already been completed. The server will
2051  // guarantee that for at least 60 minutes since the first request.
2052  //
2053  // For example, consider a situation where you make an initial request and
2054  // the request times out. If you make the request again with the same request
2055  // ID, the server can check if original operation with the same request ID
2056  // was received, and if so, will ignore the second request. This prevents
2057  // clients from accidentally creating duplicate commitments.
2058  //
2059  // The request ID must be a valid UUID with the exception that zero UUID is
2060  // not supported (00000000-0000-0000-0000-000000000000).
2061  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
2062}
2063
2064// A request to delete a preference set.
2065message DeletePreferenceSetRequest {
2066  // Required. Name of the group resource.
2067  string name = 1 [
2068    (google.api.field_behavior) = REQUIRED,
2069    (google.api.resource_reference) = {
2070      type: "migrationcenter.googleapis.com/PreferenceSet"
2071    }
2072  ];
2073
2074  // Optional. An optional request ID to identify requests. Specify a unique
2075  // request ID so that if you must retry your request, the server will know to
2076  // ignore the request if it has already been completed. The server will
2077  // guarantee that for at least 60 minutes after the first request.
2078  //
2079  // For example, consider a situation where you make an initial request and
2080  // the request times out. If you make the request again with the same request
2081  // ID, the server can check if original operation with the same request ID
2082  // was received, and if so, will ignore the second request. This prevents
2083  // clients from accidentally creating duplicate commitments.
2084  //
2085  // The request ID must be a valid UUID with the exception that zero UUID is
2086  // not supported (00000000-0000-0000-0000-000000000000).
2087  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
2088}
2089
2090// A request to get the settings.
2091message GetSettingsRequest {
2092  // Required. Name of the resource.
2093  string name = 1 [
2094    (google.api.field_behavior) = REQUIRED,
2095    (google.api.resource_reference) = {
2096      type: "migrationcenter.googleapis.com/Settings"
2097    }
2098  ];
2099}
2100
2101// A request to update the settings.
2102message UpdateSettingsRequest {
2103  // Required. Field mask is used to specify the fields to be overwritten in the
2104  // `Settings` resource by the update.
2105  // The values specified in the `update_mask` field are relative to the
2106  // resource, not the full request.
2107  // A field will be overwritten if it is in the mask.
2108  // A single * value in the mask lets you to overwrite all fields.
2109  google.protobuf.FieldMask update_mask = 1
2110      [(google.api.field_behavior) = REQUIRED];
2111
2112  // Required. The project settings resource being updated.
2113  Settings settings = 2 [(google.api.field_behavior) = REQUIRED];
2114
2115  // Optional. An optional request ID to identify requests. Specify a unique
2116  // request ID so that if you must retry your request, the server will know to
2117  // ignore the request if it has already been completed. The server will
2118  // guarantee that for at least 60 minutes since the first request.
2119  //
2120  // For example, consider a situation where you make an initial request and
2121  // the request times out. If you make the request again with the same request
2122  // ID, the server can check if original operation with the same request ID
2123  // was received, and if so, will ignore the second request. This prevents
2124  // clients from accidentally creating duplicate commitments.
2125  //
2126  // The request ID must be a valid UUID with the exception that zero UUID is
2127  // not supported (00000000-0000-0000-0000-000000000000).
2128  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
2129}
2130
2131// A request to create a `ReportConfig` resource.
2132message CreateReportConfigRequest {
2133  // Required. Value for parent.
2134  string parent = 1 [
2135    (google.api.field_behavior) = REQUIRED,
2136    (google.api.resource_reference) = {
2137      child_type: "migrationcenter.googleapis.com/ReportConfig"
2138    }
2139  ];
2140
2141  // Required. User specified ID for the report config. It will become the last
2142  // component of the report config name. The ID must be unique within the
2143  // project, must conform with RFC-1034, is restricted to lower-cased letters,
2144  // and has a maximum length of 63 characters. The ID must match the regular
2145  // expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.
2146  string report_config_id = 2 [(google.api.field_behavior) = REQUIRED];
2147
2148  // Required. The report config set resource being created.
2149  ReportConfig report_config = 3 [(google.api.field_behavior) = REQUIRED];
2150
2151  // Optional. An optional request ID to identify requests. Specify a unique
2152  // request ID so that if you must retry your request, the server will know to
2153  // ignore the request if it has already been completed. The server will
2154  // guarantee that for at least 60 minutes since the first request.
2155  //
2156  // For example, consider a situation where you make an initial request and
2157  // the request times out. If you make the request again with the same request
2158  // ID, the server can check if original operation with the same request ID
2159  // was received, and if so, will ignore the second request. This prevents
2160  // clients from accidentally creating duplicate commitments.
2161  //
2162  // The request ID must be a valid UUID with the exception that zero UUID is
2163  // not supported (00000000-0000-0000-0000-000000000000).
2164  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
2165}
2166
2167// A request to delete a ReportConfig.
2168message DeleteReportConfigRequest {
2169  // Required. Name of the resource.
2170  string name = 1 [
2171    (google.api.field_behavior) = REQUIRED,
2172    (google.api.resource_reference) = {
2173      type: "migrationcenter.googleapis.com/ReportConfig"
2174    }
2175  ];
2176
2177  // Optional. An optional request ID to identify requests. Specify a unique
2178  // request ID so that if you must retry your request, the server will know to
2179  // ignore the request if it has already been completed. The server will
2180  // guarantee that for at least 60 minutes after the first request.
2181  //
2182  // For example, consider a situation where you make an initial request and
2183  // the request times out. If you make the request again with the same request
2184  // ID, the server can check if original operation with the same request ID
2185  // was received, and if so, will ignore the second request. This prevents
2186  // clients from accidentally creating duplicate commitments.
2187  //
2188  // The request ID must be a valid UUID with the exception that zero UUID is
2189  // not supported (00000000-0000-0000-0000-000000000000).
2190  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
2191
2192  // Optional. If set to `true`, any child `Reports` of this entity will also be
2193  // deleted. If set to `false`, the request only works if the resource has no
2194  // children.
2195  bool force = 3 [(google.api.field_behavior) = OPTIONAL];
2196}
2197
2198// A request to get a Report.
2199message GetReportRequest {
2200  // Required. Name of the resource.
2201  string name = 1 [
2202    (google.api.field_behavior) = REQUIRED,
2203    (google.api.resource_reference) = {
2204      type: "migrationcenter.googleapis.com/Report"
2205    }
2206  ];
2207
2208  // Determines what information to retrieve for the Report.
2209  ReportView view = 6;
2210}
2211
2212// A request for a list of Reports.
2213message ListReportsRequest {
2214  // Required. Parent value for `ListReportsRequest`.
2215  string parent = 1 [
2216    (google.api.field_behavior) = REQUIRED,
2217    (google.api.resource_reference) = {
2218      child_type: "migrationcenter.googleapis.com/Report"
2219    }
2220  ];
2221
2222  // Requested page size. The server may return fewer items than requested.
2223  // If unspecified, the server will pick an appropriate default value.
2224  int32 page_size = 2;
2225
2226  // A token identifying a page of results that the server should return.
2227  string page_token = 3;
2228
2229  // Filtering results.
2230  string filter = 4;
2231
2232  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
2233  string order_by = 5;
2234
2235  // Determines what information to retrieve for each Report.
2236  ReportView view = 6;
2237}
2238
2239// Response message for listing Reports.
2240message ListReportsResponse {
2241  // The list of Reports.
2242  repeated Report reports = 1;
2243
2244  // A token identifying a page of results the server should return.
2245  string next_page_token = 2;
2246
2247  // Locations that could not be reached.
2248  repeated string unreachable = 3;
2249}
2250
2251// A request to delete a Report.
2252message DeleteReportRequest {
2253  // Required. Name of the resource.
2254  string name = 1 [
2255    (google.api.field_behavior) = REQUIRED,
2256    (google.api.resource_reference) = {
2257      type: "migrationcenter.googleapis.com/Report"
2258    }
2259  ];
2260
2261  // Optional. An optional request ID to identify requests. Specify a unique
2262  // request ID so that if you must retry your request, the server will know to
2263  // ignore the request if it has already been completed. The server will
2264  // guarantee that for at least 60 minutes after the first request.
2265  //
2266  // For example, consider a situation where you make an initial request and
2267  // the request times out. If you make the request again with the same request
2268  // ID, the server can check if original operation with the same request ID
2269  // was received, and if so, will ignore the second request. This prevents
2270  // clients from accidentally creating duplicate commitments.
2271  //
2272  // The request ID must be a valid UUID with the exception that zero UUID is
2273  // not supported (00000000-0000-0000-0000-000000000000).
2274  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
2275}
2276
2277// A request to get a `ReportConfig` resource.
2278message GetReportConfigRequest {
2279  // Required. Name of the resource.
2280  string name = 1 [
2281    (google.api.field_behavior) = REQUIRED,
2282    (google.api.resource_reference) = {
2283      type: "migrationcenter.googleapis.com/ReportConfig"
2284    }
2285  ];
2286}
2287
2288// A request to get a list of `ReportConfig` resources.
2289message ListReportConfigsRequest {
2290  // Required. Parent value for `ListReportConfigsRequest`.
2291  string parent = 1 [
2292    (google.api.field_behavior) = REQUIRED,
2293    (google.api.resource_reference) = {
2294      child_type: "migrationcenter.googleapis.com/ReportConfig"
2295    }
2296  ];
2297
2298  // Requested page size. Server may return fewer items than requested.
2299  // If unspecified, server will pick an appropriate default.
2300  int32 page_size = 2;
2301
2302  // A token identifying a page of results the server should return.
2303  string page_token = 3;
2304
2305  // Filtering results.
2306  string filter = 4;
2307
2308  // Field to sort by. See https://google.aip.dev/132#ordering for more details.
2309  string order_by = 5;
2310}
2311
2312// Response message for listing report configs.
2313message ListReportConfigsResponse {
2314  // A list of report configs.
2315  repeated ReportConfig report_configs = 1;
2316
2317  // A token identifying a page of results the server should return.
2318  string next_page_token = 2;
2319
2320  // Locations that could not be reached.
2321  repeated string unreachable = 3;
2322}
2323
2324// Message for creating a Report.
2325message CreateReportRequest {
2326  // Required. Value for parent.
2327  string parent = 1 [
2328    (google.api.field_behavior) = REQUIRED,
2329    (google.api.resource_reference) = {
2330      child_type: "migrationcenter.googleapis.com/Report"
2331    }
2332  ];
2333
2334  // Required. User specified id for the report. It will become the last
2335  // component of the report name. The id must be unique within the project,
2336  // must conform with RFC-1034, is restricted to lower-cased letters, and has a
2337  // maximum length of 63 characters. The id must match the regular expression:
2338  // [a-z]([a-z0-9-]{0,61}[a-z0-9])?.
2339  string report_id = 2 [(google.api.field_behavior) = REQUIRED];
2340
2341  // Required. The report resource being created.
2342  Report report = 3 [(google.api.field_behavior) = REQUIRED];
2343
2344  // Optional. An optional request ID to identify requests. Specify a unique
2345  // request ID so that if you must retry your request, the server will know to
2346  // ignore the request if it has already been completed. The server will
2347  // guarantee that for at least 60 minutes since the first request.
2348  //
2349  // For example, consider a situation where you make an initial request and
2350  // the request times out. If you make the request again with the same request
2351  // ID, the server can check if original operation with the same request ID
2352  // was received, and if so, will ignore the second request. This prevents
2353  // clients from accidentally creating duplicate commitments.
2354  //
2355  // The request ID must be a valid UUID with the exception that zero UUID is
2356  // not supported (00000000-0000-0000-0000-000000000000).
2357  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
2358}
2359
2360// Collection of frame data.
2361message Frames {
2362  // A repeated field of asset data.
2363  repeated AssetFrame frames_data = 1;
2364}
2365
2366// Contains data reported from an inventory source on an asset.
2367message AssetFrame {
2368  // The internal data of the frame is a oneof field depending on the type
2369  // of asset information in the frame.
2370  oneof FrameData {
2371    // Asset information specific for virtual machines.
2372    MachineDetails machine_details = 1;
2373  }
2374
2375  // The time the data was reported.
2376  google.protobuf.Timestamp report_time = 10;
2377
2378  // Labels as key value pairs.
2379  map<string, string> labels = 11;
2380
2381  // Generic asset attributes.
2382  map<string, string> attributes = 12;
2383
2384  // Asset performance data samples.
2385  // Samples that are from more than 40 days ago or after tomorrow are ignored.
2386  repeated PerformanceSample performance_samples = 13;
2387
2388  // Optional. Trace token is optionally provided to assist with debugging and
2389  // traceability.
2390  string trace_token = 14 [(google.api.field_behavior) = OPTIONAL];
2391}
2392
2393// Details of a machine.
2394message MachineDetails {
2395  // Machine power state.
2396  enum PowerState {
2397    // Power state is unknown.
2398    POWER_STATE_UNSPECIFIED = 0;
2399
2400    // The machine is preparing to enter the ACTIVE state. An instance may enter
2401    // the PENDING state when it launches for the first time, or when it is
2402    // started after being in the SUSPENDED state.
2403    PENDING = 1;
2404
2405    // The machine is active.
2406    ACTIVE = 2;
2407
2408    // The machine is being turned off.
2409    SUSPENDING = 3;
2410
2411    // The machine is off.
2412    SUSPENDED = 4;
2413
2414    // The machine is being deleted from the hosting platform.
2415    DELETING = 5;
2416
2417    // The machine is deleted from the hosting platform.
2418    DELETED = 6;
2419  }
2420
2421  // Machine unique identifier.
2422  string uuid = 1;
2423
2424  // Machine name.
2425  string machine_name = 2;
2426
2427  // Machine creation time.
2428  google.protobuf.Timestamp create_time = 3;
2429
2430  // Number of CPU cores in the machine. Must be non-negative.
2431  int32 core_count = 4;
2432
2433  // The amount of memory in the machine. Must be non-negative.
2434  int32 memory_mb = 5;
2435
2436  // Power state of the machine.
2437  PowerState power_state = 6;
2438
2439  // Architecture details (vendor, CPU architecture).
2440  MachineArchitectureDetails architecture = 7;
2441
2442  // Guest OS information.
2443  GuestOsDetails guest_os = 8;
2444
2445  // Network details.
2446  MachineNetworkDetails network = 9;
2447
2448  // Disk details.
2449  MachineDiskDetails disks = 10;
2450
2451  // Platform specific information.
2452  PlatformDetails platform = 11;
2453}
2454
2455// Details of the machine architecture.
2456message MachineArchitectureDetails {
2457  // Firmware type.
2458  enum FirmwareType {
2459    // Unspecified or unknown.
2460    FIRMWARE_TYPE_UNSPECIFIED = 0;
2461
2462    // BIOS firmware.
2463    BIOS = 1;
2464
2465    // EFI firmware.
2466    EFI = 2;
2467  }
2468
2469  // CPU hyper-threading support.
2470  enum CpuHyperThreading {
2471    // Unspecified or unknown.
2472    CPU_HYPER_THREADING_UNSPECIFIED = 0;
2473
2474    // Hyper-threading is disabled.
2475    DISABLED = 1;
2476
2477    // Hyper-threading is enabled.
2478    ENABLED = 2;
2479  }
2480
2481  // CPU architecture, e.g., "x64-based PC", "x86_64", "i686" etc.
2482  string cpu_architecture = 1;
2483
2484  // CPU name, e.g., "Intel Xeon E5-2690", "AMD EPYC 7571" etc.
2485  string cpu_name = 2;
2486
2487  // Hardware vendor.
2488  string vendor = 3;
2489
2490  // Number of CPU threads allocated to the machine.
2491  int32 cpu_thread_count = 4;
2492
2493  // Number of processor sockets allocated to the machine.
2494  int32 cpu_socket_count = 5;
2495
2496  // BIOS Details.
2497  BiosDetails bios = 6;
2498
2499  // Firmware type.
2500  FirmwareType firmware_type = 7;
2501
2502  // CPU hyper-threading support.
2503  CpuHyperThreading hyperthreading = 8;
2504}
2505
2506// Details about the BIOS.
2507message BiosDetails {
2508  // BIOS name.
2509  // This fields is deprecated. Please use the `id` field instead.
2510  string bios_name = 1 [deprecated = true];
2511
2512  // BIOS ID.
2513  string id = 2;
2514
2515  // BIOS manufacturer.
2516  string manufacturer = 3;
2517
2518  // BIOS version.
2519  string version = 4;
2520
2521  // BIOS release date.
2522  google.type.Date release_date = 5;
2523
2524  // SMBIOS UUID.
2525  string smbios_uuid = 6;
2526}
2527
2528// Details of network adapters and settings.
2529message MachineNetworkDetails {
2530  // The primary IP address of the machine.
2531  string primary_ip_address = 1;
2532
2533  // The public IP address of the machine.
2534  string public_ip_address = 2;
2535
2536  // MAC address of the machine.
2537  // This property is used to uniqly identify the machine.
2538  string primary_mac_address = 3;
2539
2540  // List of network adapters.
2541  NetworkAdapterList adapters = 4;
2542}
2543
2544// List of network adapters.
2545message NetworkAdapterList {
2546  // Network adapter entries.
2547  repeated NetworkAdapterDetails entries = 1;
2548}
2549
2550// Details of network adapter.
2551message NetworkAdapterDetails {
2552  // Network adapter type (e.g. VMXNET3).
2553  string adapter_type = 1;
2554
2555  // MAC address.
2556  string mac_address = 2;
2557
2558  // NetworkAddressList
2559  NetworkAddressList addresses = 3;
2560}
2561
2562// List of allocated/assigned network addresses.
2563message NetworkAddressList {
2564  // Network address entries.
2565  repeated NetworkAddress entries = 1;
2566}
2567
2568// Details of network address.
2569message NetworkAddress {
2570  // Network address assignment.
2571  enum AddressAssignment {
2572    // Unknown (default value).
2573    ADDRESS_ASSIGNMENT_UNSPECIFIED = 0;
2574
2575    // Staticly assigned IP.
2576    ADDRESS_ASSIGNMENT_STATIC = 1;
2577
2578    // Dynamically assigned IP (DHCP).
2579    ADDRESS_ASSIGNMENT_DHCP = 2;
2580  }
2581
2582  // Assigned or configured IP Address.
2583  string ip_address = 1;
2584
2585  // Subnet mask.
2586  string subnet_mask = 2;
2587
2588  // Broadcast address.
2589  string bcast = 3;
2590
2591  // Fully qualified domain name.
2592  string fqdn = 4;
2593
2594  // Whether DHCP is used to assign addresses.
2595  AddressAssignment assignment = 5;
2596}
2597
2598// Details of machine disks.
2599message MachineDiskDetails {
2600  // Disk total Capacity.
2601  int64 total_capacity_bytes = 1;
2602
2603  // Total disk free space.
2604  int64 total_free_bytes = 2;
2605
2606  // List of disks.
2607  DiskEntryList disks = 3;
2608}
2609
2610// VM disks.
2611message DiskEntryList {
2612  // Disk entries.
2613  repeated DiskEntry entries = 1;
2614}
2615
2616// Single disk entry.
2617message DiskEntry {
2618  // Disks interface type.
2619  enum InterfaceType {
2620    // Interface type unknown or unspecified.
2621    INTERFACE_TYPE_UNSPECIFIED = 0;
2622
2623    // IDE interface type.
2624    IDE = 1;
2625
2626    // SATA interface type.
2627    SATA = 2;
2628
2629    // SAS interface type.
2630    SAS = 3;
2631
2632    // SCSI interface type.
2633    SCSI = 4;
2634
2635    // NVME interface type.
2636    NVME = 5;
2637
2638    // FC interface type.
2639    FC = 6;
2640
2641    // iSCSI interface type.
2642    ISCSI = 7;
2643  }
2644
2645  // Disk capacity.
2646  int64 capacity_bytes = 1;
2647
2648  // Disk free space.
2649  int64 free_bytes = 2;
2650
2651  // Disk label.
2652  string disk_label = 3;
2653
2654  // Disk label type (e.g. BIOS/GPT)
2655  string disk_label_type = 4;
2656
2657  // Disks interface type.
2658  InterfaceType interface_type = 5;
2659
2660  // Partition layout.
2661  DiskPartitionList partitions = 6;
2662
2663  // Disk hardware address (e.g. 0:1 for SCSI).
2664  string hw_address = 7;
2665
2666  // Additional details for specific platforms.
2667  oneof platform_specific {
2668    // VMware disk details.
2669    VmwareDiskConfig vmware = 20;
2670  }
2671}
2672
2673// Disk partition list.
2674message DiskPartitionList {
2675  // Partition entries.
2676  repeated DiskPartition entries = 1;
2677}
2678
2679// Disk Partition details.
2680message DiskPartition {
2681  // Partition type.
2682  string type = 1;
2683
2684  // Partition file system.
2685  string file_system = 2;
2686
2687  // Mount pount (Linux/Windows) or drive letter (Windows).
2688  string mount_point = 3;
2689
2690  // Partition capacity.
2691  int64 capacity_bytes = 4;
2692
2693  // Partition free space.
2694  int64 free_bytes = 5;
2695
2696  // Partition UUID.
2697  string uuid = 6;
2698
2699  // Sub-partitions.
2700  DiskPartitionList sub_partitions = 7;
2701}
2702
2703// VMware disk config details.
2704message VmwareDiskConfig {
2705  // VMDK backing type possible values.
2706  enum BackingType {
2707    // Default value.
2708    BACKING_TYPE_UNSPECIFIED = 0;
2709
2710    // Flat v1.
2711    BACKING_TYPE_FLAT_V1 = 1;
2712
2713    // Flat v2.
2714    BACKING_TYPE_FLAT_V2 = 2;
2715
2716    // Persistent memory, also known as Non-Volatile Memory (NVM).
2717    BACKING_TYPE_PMEM = 3;
2718
2719    // Raw Disk Memory v1.
2720    BACKING_TYPE_RDM_V1 = 4;
2721
2722    // Raw Disk Memory v2.
2723    BACKING_TYPE_RDM_V2 = 5;
2724
2725    // SEsparse is a snapshot format introduced in vSphere 5.5 for large disks.
2726    BACKING_TYPE_SESPARSE = 6;
2727
2728    // SEsparse v1.
2729    BACKING_TYPE_SESPARSE_V1 = 7;
2730
2731    // SEsparse v1.
2732    BACKING_TYPE_SESPARSE_V2 = 8;
2733  }
2734
2735  // VMDK disk mode.
2736  enum VmdkMode {
2737    // VMDK disk mode unspecified or unknown.
2738    VMDK_MODE_UNSPECIFIED = 0;
2739
2740    // Dependent disk mode.
2741    DEPENDENT = 1;
2742
2743    // Independent - Persistent disk mode.
2744    INDEPENDENT_PERSISTENT = 2;
2745
2746    // Independent - Nonpersistent disk mode.
2747    INDEPENDENT_NONPERSISTENT = 3;
2748  }
2749
2750  // RDM compatibility mode.
2751  enum RdmCompatibility {
2752    // Compatibility mode unspecified or unknown.
2753    RDM_COMPATIBILITY_UNSPECIFIED = 0;
2754
2755    // Physical compatibility mode.
2756    PHYSICAL_COMPATIBILITY = 1;
2757
2758    // Virtual compatibility mode.
2759    VIRTUAL_COMPATIBILITY = 2;
2760  }
2761
2762  // VMDK backing type.
2763  BackingType backing_type = 1;
2764
2765  // Is VMDK shared with other VMs.
2766  bool shared = 2;
2767
2768  // VMDK disk mode.
2769  VmdkMode vmdk_mode = 3;
2770
2771  // RDM compatibility mode.
2772  RdmCompatibility rdm_compatibility = 4;
2773}
2774
2775// Information from Guest-level collections.
2776message GuestOsDetails {
2777  // The name of the operating system.
2778  string os_name = 1;
2779
2780  // What family the OS belong to, if known.
2781  OperatingSystemFamily family = 2;
2782
2783  // The version of the operating system.
2784  string version = 3;
2785
2786  // OS and app configuration.
2787  GuestConfigDetails config = 4;
2788
2789  // Runtime information.
2790  GuestRuntimeDetails runtime = 5;
2791}
2792
2793// Guest OS config information.
2794message GuestConfigDetails {
2795  // Security-Enhanced Linux (SELinux) mode.
2796  enum SeLinuxMode {
2797    // SELinux mode unknown or unspecified.
2798    SE_LINUX_MODE_UNSPECIFIED = 0;
2799
2800    // SELinux is disabled.
2801    SE_LINUX_MODE_DISABLED = 1;
2802
2803    // SELinux permissive mode.
2804    SE_LINUX_MODE_PERMISSIVE = 2;
2805
2806    // SELinux enforcing mode.
2807    SE_LINUX_MODE_ENFORCING = 3;
2808  }
2809
2810  // OS issue (typically /etc/issue in Linux).
2811  string issue = 1;
2812
2813  // Mount list (Linux fstab).
2814  FstabEntryList fstab = 2;
2815
2816  // Hosts file (/etc/hosts).
2817  HostsEntryList hosts = 3;
2818
2819  // NFS exports.
2820  NfsExportList nfs_exports = 4;
2821
2822  // Security-Enhanced Linux (SELinux) mode.
2823  SeLinuxMode selinux_mode = 5;
2824}
2825
2826// Fstab content.
2827message FstabEntryList {
2828  // Fstab entries.
2829  repeated FstabEntry entries = 1;
2830}
2831
2832// Single fstab entry.
2833message FstabEntry {
2834  // The block special device or remote filesystem to be mounted.
2835  string spec = 1;
2836
2837  // The mount point for the filesystem.
2838  string file = 2;
2839
2840  // The type of the filesystem.
2841  string vfstype = 3;
2842
2843  // Mount options associated with the filesystem.
2844  string mntops = 4;
2845
2846  // Used by dump to determine which filesystems need to be dumped.
2847  int32 freq = 5;
2848
2849  // Used by the fsck(8) program to determine the order in which filesystem
2850  // checks are done at reboot time.
2851  int32 passno = 6;
2852}
2853
2854// Hosts content.
2855message HostsEntryList {
2856  // Hosts entries.
2857  repeated HostsEntry entries = 1;
2858}
2859
2860// Single /etc/hosts entry.
2861message HostsEntry {
2862  // IP (raw, IPv4/6 agnostic).
2863  string ip = 1;
2864
2865  // List of host names / aliases.
2866  repeated string host_names = 2;
2867}
2868
2869// NFS exports.
2870message NfsExportList {
2871  // NFS export entries.
2872  repeated NfsExport entries = 1;
2873}
2874
2875// NFS export.
2876message NfsExport {
2877  // The directory being exported.
2878  string export_directory = 1;
2879
2880  // The hosts or networks to which the export is being shared.
2881  repeated string hosts = 2;
2882}
2883
2884// Guest OS runtime information.
2885message GuestRuntimeDetails {
2886  // Running background services.
2887  RunningServiceList services = 1;
2888
2889  // Running processes.
2890  RunningProcessList processes = 2;
2891
2892  // Runtime network information (connections, ports).
2893  RuntimeNetworkInfo network = 3;
2894
2895  // Last time the OS was booted.
2896  google.protobuf.Timestamp last_boot_time = 4;
2897
2898  // Domain, e.g. c.stratozone-development.internal.
2899  string domain = 5;
2900
2901  // Machine name.
2902  string machine_name = 6;
2903
2904  // Installed applications information.
2905  GuestInstalledApplicationList installed_apps = 7;
2906
2907  // Open files information.
2908  OpenFileList open_file_list = 8;
2909}
2910
2911// List of running guest OS services.
2912message RunningServiceList {
2913  // Running service entries.
2914  repeated RunningService entries = 1;
2915}
2916
2917// Guest OS running service details.
2918message RunningService {
2919  // Service state (OS-agnostic).
2920  enum State {
2921    // Service state unspecified.
2922    STATE_UNSPECIFIED = 0;
2923
2924    // Service is active.
2925    ACTIVE = 1;
2926
2927    // Service is paused.
2928    PAUSED = 2;
2929
2930    // Service is stopped.
2931    STOPPED = 3;
2932  }
2933
2934  // Service start mode (OS-agnostic).
2935  enum StartMode {
2936    // Start mode unspecified.
2937    START_MODE_UNSPECIFIED = 0;
2938
2939    // The service is a device driver started by the system loader.
2940    BOOT = 1;
2941
2942    // The service is a device driver started by the IOInitSystem function.
2943    SYSTEM = 2;
2944
2945    // The service is started by the operating system, at system start-up
2946    AUTO = 3;
2947
2948    // The service is started only manually, by a user.
2949    MANUAL = 4;
2950
2951    // The service is disabled.
2952    DISABLED = 5;
2953  }
2954
2955  // Service name.
2956  string service_name = 1;
2957
2958  // Service state (OS-agnostic).
2959  State state = 2;
2960
2961  // Service start mode (OS-agnostic).
2962  StartMode start_mode = 3;
2963
2964  // Service binary path.
2965  string exe_path = 4;
2966
2967  // Service command line.
2968  string cmdline = 5;
2969
2970  // Service pid.
2971  int64 pid = 6;
2972}
2973
2974// List of running guest OS processes.
2975message RunningProcessList {
2976  // Running process entries.
2977  repeated RunningProcess entries = 1;
2978}
2979
2980// Guest OS running process details.
2981message RunningProcess {
2982  // Process ID.
2983  int64 pid = 1;
2984
2985  // Process binary path.
2986  string exe_path = 2;
2987
2988  // Process full command line.
2989  string cmdline = 3;
2990
2991  // User running the process.
2992  string user = 4;
2993
2994  // Process extended attributes.
2995  map<string, string> attributes = 100;
2996}
2997
2998// Runtime networking information.
2999message RuntimeNetworkInfo {
3000  // Time of the last network scan.
3001  google.protobuf.Timestamp scan_time = 1;
3002
3003  // Network connections.
3004  NetworkConnectionList connections = 2;
3005}
3006
3007// Network connection list.
3008message NetworkConnectionList {
3009  // Network connection entries.
3010  repeated NetworkConnection entries = 1;
3011}
3012
3013message NetworkConnection {
3014  // Network connection state.
3015  enum State {
3016    // Connection state is unknown or unspecified.
3017    STATE_UNSPECIFIED = 0;
3018
3019    // The connection is being opened.
3020    OPENING = 1;
3021
3022    // The connection is open.
3023    OPEN = 2;
3024
3025    // Listening for incoming connections.
3026    LISTEN = 3;
3027
3028    // The connection is being closed.
3029    CLOSING = 4;
3030
3031    // The connection is closed.
3032    CLOSED = 5;
3033  }
3034
3035  // Connection protocol (e.g. TCP/UDP).
3036  string protocol = 1;
3037
3038  // Local IP address.
3039  string local_ip_address = 2;
3040
3041  // Local port.
3042  int32 local_port = 3;
3043
3044  // Remote IP address.
3045  string remote_ip_address = 4;
3046
3047  // Remote port.
3048  int32 remote_port = 5;
3049
3050  // Network connection state.
3051  State state = 6;
3052
3053  // Process ID.
3054  int64 pid = 7;
3055
3056  // Process or service name.
3057  string process_name = 8;
3058}
3059
3060// Guest installed application list.
3061message GuestInstalledApplicationList {
3062  // Application entries.
3063  repeated GuestInstalledApplication entries = 1;
3064}
3065
3066// Guest installed application information.
3067message GuestInstalledApplication {
3068  // Installed application name.
3069  string application_name = 1;
3070
3071  // Installed application vendor.
3072  string vendor = 2;
3073
3074  // The time when the application was installed.
3075  google.protobuf.Timestamp install_time = 3;
3076
3077  // Source path.
3078  string path = 4;
3079
3080  // Installed application version.
3081  string version = 5;
3082}
3083
3084// Open file list.
3085message OpenFileList {
3086  // Open file details entries.
3087  repeated OpenFileDetails entries = 1;
3088}
3089
3090// Open file Information.
3091message OpenFileDetails {
3092  // Opened file command.
3093  string command = 1;
3094
3095  // Opened file user.
3096  string user = 2;
3097
3098  // Opened file file type.
3099  string file_type = 3;
3100
3101  // Opened file file path.
3102  string file_path = 4;
3103}
3104
3105// Information about the platform.
3106message PlatformDetails {
3107  oneof vendor_details {
3108    // VMware specific details.
3109    VmwarePlatformDetails vmware_details = 1;
3110
3111    // AWS EC2 specific details.
3112    AwsEc2PlatformDetails aws_ec2_details = 2;
3113
3114    // Azure VM specific details.
3115    AzureVmPlatformDetails azure_vm_details = 3;
3116
3117    // Generic platform details.
3118    GenericPlatformDetails generic_details = 4;
3119
3120    // Physical machines platform details.
3121    PhysicalPlatformDetails physical_details = 5;
3122  }
3123}
3124
3125// VMware specific details.
3126message VmwarePlatformDetails {
3127  // vCenter version.
3128  string vcenter_version = 1;
3129
3130  // ESX version.
3131  string esx_version = 2;
3132
3133  // VMware os enum -
3134  // https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html.
3135  string osid = 3;
3136
3137  // Folder name in vCenter where asset resides.
3138  string vcenter_folder = 4;
3139
3140  // vCenter URI used in collection.
3141  string vcenter_uri = 5;
3142
3143  // vCenter VM ID.
3144  string vcenter_vm_id = 6;
3145}
3146
3147// AWS EC2 specific details.
3148message AwsEc2PlatformDetails {
3149  // AWS platform's machine type label.
3150  string machine_type_label = 1;
3151
3152  // The location of the machine in the AWS format.
3153  string location = 2;
3154}
3155
3156// Azure VM specific details.
3157message AzureVmPlatformDetails {
3158  // Azure platform's machine type label.
3159  string machine_type_label = 1;
3160
3161  // The location of the machine in the Azure format.
3162  string location = 2;
3163
3164  // Azure platform's provisioning state.
3165  string provisioning_state = 3;
3166}
3167
3168// Generic platform details.
3169message GenericPlatformDetails {
3170  // Free text representation of the machine location.
3171  // The format of this field should not be relied on. Different VMs in the same
3172  // location may have different string values for this field.
3173  string location = 1;
3174}
3175
3176// Platform specific details for Physical Machines.
3177message PhysicalPlatformDetails {
3178  // Free text representation of the machine location.
3179  // The format of this field should not be relied on. Different machines in the
3180  // same location may have different string values for this field.
3181  string location = 1;
3182}
3183
3184// Memory usage sample.
3185message MemoryUsageSample {
3186  // Percentage of system memory utilized. Must be in the interval [0, 100].
3187  float utilized_percentage = 1;
3188}
3189
3190// CPU usage sample.
3191message CpuUsageSample {
3192  // Percentage of total CPU capacity utilized. Must be in the interval [0,
3193  // 100]. On most systems can be calculated using 100 - idle percentage.
3194  float utilized_percentage = 1;
3195}
3196
3197// Network usage sample. Values are across all network interfaces.
3198message NetworkUsageSample {
3199  // Average network ingress in B/s sampled over a short window.
3200  // Must be non-negative.
3201  float average_ingress_bps = 1;
3202
3203  // Average network egress in B/s sampled over a short window.
3204  // Must be non-negative.
3205  float average_egress_bps = 2;
3206}
3207
3208// Disk usage sample. Values are across all disks.
3209message DiskUsageSample {
3210  // Average IOPS sampled over a short window. Must be non-negative.
3211  float average_iops = 1;
3212}
3213
3214// Performance data sample.
3215message PerformanceSample {
3216  // Time the sample was collected.
3217  // If omitted, the frame report time will be used.
3218  google.protobuf.Timestamp sample_time = 1;
3219
3220  // Memory usage sample.
3221  MemoryUsageSample memory = 2;
3222
3223  // CPU usage sample.
3224  CpuUsageSample cpu = 3;
3225
3226  // Network usage sample.
3227  NetworkUsageSample network = 4;
3228
3229  // Disk usage sample.
3230  DiskUsageSample disk = 5;
3231}
3232
3233// Performance data for an asset.
3234message AssetPerformanceData {
3235  // Daily resource usage aggregations.
3236  // Contains all of the data available for an asset, up to the last 420 days.
3237  // Aggregations are sorted from oldest to most recent.
3238  repeated DailyResourceUsageAggregation daily_resource_usage_aggregations = 1;
3239}
3240
3241// Usage data aggregation for a single day.
3242message DailyResourceUsageAggregation {
3243  // Statistical aggregation of samples for a single resource usage.
3244  message Stats {
3245    // Average usage value.
3246    float average = 1;
3247
3248    // Median usage value.
3249    float median = 2;
3250
3251    // 95th percentile usage value.
3252    float nintey_fifth_percentile = 3;
3253
3254    // Peak usage value.
3255    float peak = 4;
3256  }
3257
3258  // Statistical aggregation of CPU usage.
3259  message CPU {
3260    // CPU utilization percentage.
3261    Stats utilization_percentage = 1;
3262  }
3263
3264  // Statistical aggregation of memory usage.
3265  message Memory {
3266    // Memory utilization percentage.
3267    Stats utilization_percentage = 1;
3268  }
3269
3270  // Statistical aggregation of network usage.
3271  message Network {
3272    // Network ingress in B/s.
3273    Stats ingress_bps = 1;
3274
3275    // Network egress in B/s.
3276    Stats egress_bps = 2;
3277  }
3278
3279  // Statistical aggregation of disk usage.
3280  message Disk {
3281    // Disk I/O operations per second.
3282    Stats iops = 1;
3283  }
3284
3285  // Aggregation date. Day boundaries are at midnight UTC.
3286  google.type.Date date = 1;
3287
3288  // CPU usage.
3289  CPU cpu = 2;
3290
3291  // Memory usage.
3292  Memory memory = 3;
3293
3294  // Network usage.
3295  Network network = 4;
3296
3297  // Disk usage.
3298  Disk disk = 5;
3299}
3300
3301// Message containing insights list.
3302message InsightList {
3303  // Output only. Insights of the list.
3304  repeated Insight insights = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
3305
3306  // Output only. Update timestamp.
3307  google.protobuf.Timestamp update_time = 2
3308      [(google.api.field_behavior) = OUTPUT_ONLY];
3309}
3310
3311// An insight about an asset.
3312message Insight {
3313  oneof insight {
3314    // Output only. An insight about potential migrations for an asset.
3315    MigrationInsight migration_insight = 1
3316        [(google.api.field_behavior) = OUTPUT_ONLY];
3317
3318    // Output only. A generic insight about an asset
3319    GenericInsight generic_insight = 2
3320        [(google.api.field_behavior) = OUTPUT_ONLY];
3321  }
3322}
3323
3324// A generic insight about an asset.
3325message GenericInsight {
3326  // Output only. Represents a globally unique message id for
3327  // this insight, can be used for localization purposes, in case message_code
3328  // is not yet known by the client use default_message instead.
3329  int64 message_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
3330
3331  // Output only. In case message_code is not yet known by the client
3332  // default_message will be the message to be used instead.
3333  string default_message = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
3334
3335  // Output only. Additional information about the insight, each entry can be a
3336  // logical entry and must make sense if it is displayed with line breaks
3337  // between each entry. Text can contain md style links.
3338  repeated string additional_information = 3
3339      [(google.api.field_behavior) = OUTPUT_ONLY];
3340}
3341
3342// An insight about potential migrations for an asset.
3343message MigrationInsight {
3344  // Output only. Description of how well the asset this insight is associated
3345  // with fits the proposed migration.
3346  FitDescriptor fit = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
3347
3348  // A target for the migration.
3349  oneof migration_target {
3350    // Output only. A Google Compute Engine target.
3351    ComputeEngineMigrationTarget compute_engine_target = 10
3352        [(google.api.field_behavior) = OUTPUT_ONLY];
3353  }
3354}
3355
3356// Compute engine migration target.
3357message ComputeEngineMigrationTarget {
3358  // Description of the suggested shape for the migration target.
3359  ComputeEngineShapeDescriptor shape = 1;
3360}
3361
3362// Compute Engine target shape descriptor.
3363message ComputeEngineShapeDescriptor {
3364  // Memory in mebibytes.
3365  int32 memory_mb = 1;
3366
3367  // Number of physical cores.
3368  int32 physical_core_count = 2;
3369
3370  // Number of logical cores.
3371  int32 logical_core_count = 3;
3372
3373  // Compute Engine machine series.
3374  string series = 4;
3375
3376  // Compute Engine machine type.
3377  string machine_type = 5;
3378
3379  // Compute Engine storage. Never empty.
3380  repeated ComputeStorageDescriptor storage = 6;
3381}
3382
3383// Compute Engine storage option descriptor.
3384message ComputeStorageDescriptor {
3385  // Disk type backing the storage.
3386  PersistentDiskType type = 1;
3387
3388  // Disk size in GiB.
3389  int32 size_gb = 2;
3390}
3391
3392// Describes the fit level of an asset for migration to a specific target.
3393message FitDescriptor {
3394  // Fit level.
3395  enum FitLevel {
3396    // Not enough information.
3397    FIT_LEVEL_UNSPECIFIED = 0;
3398
3399    // Fit.
3400    FIT = 1;
3401
3402    // No Fit.
3403    NO_FIT = 2;
3404
3405    // Fit with effort.
3406    REQUIRES_EFFORT = 3;
3407  }
3408
3409  // Fit level.
3410  FitLevel fit_level = 1;
3411}
3412
3413// Message describing an aggregation. The message includes the aggregation type,
3414// parameters, and the field on which to perform the aggregation.
3415message Aggregation {
3416  // Object count.
3417  message Count {}
3418
3419  // Sum of field values.
3420  message Sum {}
3421
3422  // Histogram of bucketed assets counts by field value.
3423  message Histogram {
3424    // Lower bounds of buckets.
3425    // The response will contain `n+1` buckets for `n` bounds.
3426    // The first bucket will count all assets for which the field value is
3427    // smaller than the first bound.
3428    // Subsequent buckets will count assets for which the field value is
3429    // greater or equal to a lower bound and smaller than the next one.
3430    // The last bucket will count assets for which the field value is greater or
3431    // equal to the final lower bound.
3432    // You can define up to 20 lower bounds.
3433    repeated double lower_bounds = 1;
3434  }
3435
3436  // Frequency distribution of all field values.
3437  message Frequency {}
3438
3439  // The name of the field on which to aggregate.
3440  string field = 1;
3441
3442  oneof aggregation_function {
3443    // Count the number of matching objects.
3444    Count count = 2;
3445
3446    // Sum over a numeric field.
3447    Sum sum = 3;
3448
3449    // Creates a bucketed histogram of field values.
3450    Histogram histogram = 4;
3451
3452    // Creates a frequency distribution of all field values.
3453    Frequency frequency = 5;
3454  }
3455}
3456
3457// Message describing a result of an aggregation.
3458message AggregationResult {
3459  // The result of a count aggregation.
3460  message Count {
3461    int64 value = 1;
3462  }
3463
3464  // The result of a sum aggregation.
3465  message Sum {
3466    double value = 1;
3467  }
3468
3469  // The result of a bucketed histogram aggregation.
3470  message Histogram {
3471    // A histogram bucket with a lower and upper bound, and a count of items
3472    // with a field value between those bounds.
3473    // The lower bound is inclusive and the upper bound is exclusive.
3474    // Lower bound may be -infinity and upper bound may be infinity.
3475    message Bucket {
3476      // Lower bound - inclusive.
3477      double lower_bound = 1;
3478
3479      // Upper bound - exclusive.
3480      double upper_bound = 2;
3481
3482      // Count of items in the bucket.
3483      int64 count = 3;
3484    }
3485
3486    // Buckets in the histogram.
3487    // There will be `n+1` buckets matching `n` lower bounds in the request.
3488    // The first bucket will be from -infinity to the first bound.
3489    // Subsequent buckets will be between one bound and the next.
3490    // The final bucket will be from the final bound to infinity.
3491    repeated Bucket buckets = 1;
3492  }
3493
3494  // The result of a frequency distribution aggregation.
3495  message Frequency {
3496    map<string, int64> values = 1;
3497  }
3498
3499  string field = 1;
3500
3501  oneof result {
3502    Count count = 2;
3503
3504    Sum sum = 3;
3505
3506    Histogram histogram = 4;
3507
3508    Frequency frequency = 5;
3509  }
3510}
3511
3512// A resource that aggregates the validation errors found in an import job file.
3513message FileValidationReport {
3514  // The name of the file.
3515  string file_name = 1;
3516
3517  // Partial list of rows that encountered validation error.
3518  repeated ImportRowError row_errors = 2;
3519
3520  // Flag indicating that processing was aborted due to maximum number of
3521  // errors.
3522  bool partial_report = 3;
3523
3524  // List of file level errors.
3525  repeated ImportError file_errors = 4;
3526}
3527
3528// A resource that aggregates errors across import job files.
3529message ValidationReport {
3530  // List of errors found in files.
3531  repeated FileValidationReport file_validations = 1;
3532
3533  // List of job level errors.
3534  repeated ImportError job_errors = 2;
3535}
3536
3537// A resource that reports result of the import job execution.
3538message ExecutionReport {
3539  // Total number of asset frames reported for the import job.
3540  int32 frames_reported = 1;
3541
3542  // Validation errors encountered during the execution of the import job.
3543  ValidationReport execution_errors = 2;
3544
3545  // Output only. Total number of rows in the import job.
3546  int32 total_rows_count = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
3547}
3548
3549// A resource that reports the errors encountered while processing an
3550// import job.
3551message ImportError {
3552  // Enumerate possible error severity.
3553  enum Severity {
3554    SEVERITY_UNSPECIFIED = 0;
3555
3556    ERROR = 1;
3557
3558    WARNING = 2;
3559
3560    INFO = 3;
3561  }
3562
3563  // The error information.
3564  string error_details = 1;
3565
3566  // The severity of the error.
3567  Severity severity = 2;
3568}
3569
3570// A resource that reports the import job errors at row level.
3571message ImportRowError {
3572  // The row number where the error was detected.
3573  int32 row_number = 1 [deprecated = true];
3574
3575  // The name of the VM in the row.
3576  string vm_name = 2;
3577
3578  // The VM UUID.
3579  string vm_uuid = 3;
3580
3581  // The list of errors detected in the row.
3582  repeated ImportError errors = 4;
3583}
3584
3585// A resource that contains a URI to which a data file can be uploaded.
3586message UploadFileInfo {
3587  // Output only. Upload URI for the file.
3588  string signed_uri = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
3589
3590  // Output only. The headers that were used to sign the URI.
3591  map<string, string> headers = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
3592
3593  // Output only. Expiration time of the upload URI.
3594  google.protobuf.Timestamp uri_expiration_time = 3
3595      [(google.api.field_behavior) = OUTPUT_ONLY];
3596}
3597
3598// Lists the asset IDs of all assets.
3599message AssetList {
3600  // Required. A list of asset IDs
3601  repeated string asset_ids = 1 [
3602    (google.api.field_behavior) = REQUIRED,
3603    (google.api.resource_reference) = {
3604      type: "migrationcenter.googleapis.com/Asset"
3605    }
3606  ];
3607}
3608
3609// A resource that contains a single violation of a reported `AssetFrame`
3610// resource.
3611message FrameViolationEntry {
3612  // The field of the original frame where the violation occurred.
3613  string field = 1;
3614
3615  // A message describing the violation.
3616  string violation = 2;
3617}
3618
3619// VirtualMachinePreferences enables you to create sets of assumptions, for
3620// example, a geographical location and pricing track, for your migrated virtual
3621// machines. The set of preferences influence recommendations for migrating
3622// virtual machine assets.
3623message VirtualMachinePreferences {
3624  // Target product for assets using this preference set.
3625  // Specify either target product or business goal, but
3626  // not both.
3627  ComputeMigrationTargetProduct target_product = 2;
3628
3629  // Region preferences for assets using this preference set.
3630  // If you are unsure which value to set, the migration service API region is
3631  // often a good value to start with.
3632  RegionPreferences region_preferences = 3;
3633
3634  // Commitment plan to consider when calculating costs for virtual machine
3635  // insights and recommendations.
3636  // If you are unsure which value to set, a 3 year commitment plan is often a
3637  // good value to start with.
3638  CommitmentPlan commitment_plan = 4;
3639
3640  // Sizing optimization strategy specifies the preferred strategy used when
3641  // extrapolating usage data to calculate insights and recommendations for a
3642  // virtual machine.
3643  // If you are unsure which value to set, a moderate sizing optimization
3644  // strategy is often a good value to start with.
3645  SizingOptimizationStrategy sizing_optimization_strategy = 5;
3646
3647  // Compute Engine preferences concern insights and recommendations for Compute
3648  // Engine target.
3649  ComputeEnginePreferences compute_engine_preferences = 6;
3650
3651  // Preferences concerning insights and recommendations for
3652  // Google Cloud VMware Engine.
3653  VmwareEnginePreferences vmware_engine_preferences = 7;
3654
3655  // Preferences concerning Sole Tenant nodes and virtual machines.
3656  SoleTenancyPreferences sole_tenancy_preferences = 8;
3657}
3658
3659// The user preferences relating to Compute Engine target platform.
3660message ComputeEnginePreferences {
3661  // Preferences concerning the machine types to consider on Compute Engine.
3662  MachinePreferences machine_preferences = 2;
3663
3664  // License type to consider when calculating costs for virtual machine
3665  // insights and recommendations. If unspecified, costs are calculated
3666  // based on the default licensing plan.
3667  LicenseType license_type = 3;
3668}
3669
3670// The type of machines to consider when calculating virtual machine migration
3671// insights and recommendations.
3672// Not all machine types are available in all zones and regions.
3673message MachinePreferences {
3674  // Compute Engine machine series to consider for insights and recommendations.
3675  // If empty, no restriction is applied on the machine series.
3676  repeated MachineSeries allowed_machine_series = 1;
3677}
3678
3679// A Compute Engine machine series.
3680message MachineSeries {
3681  // Code to identify a Compute Engine machine series. Consult
3682  // https://cloud.google.com/compute/docs/machine-resource#machine_type_comparison
3683  // for more details on the available series.
3684  string code = 1;
3685}
3686
3687// The user preferences relating to Google Cloud VMware Engine target platform.
3688message VmwareEnginePreferences {
3689  // Type of committed use discount.
3690  enum CommitmentPlan {
3691    // Unspecified commitment plan.
3692    COMMITMENT_PLAN_UNSPECIFIED = 0;
3693
3694    // No commitment plan (on-demand usage).
3695    ON_DEMAND = 1;
3696
3697    // 1 year commitment (monthly payments).
3698    COMMITMENT_1_YEAR_MONTHLY_PAYMENTS = 2;
3699
3700    // 3 year commitment (monthly payments).
3701    COMMITMENT_3_YEAR_MONTHLY_PAYMENTS = 3;
3702
3703    // 1 year commitment (upfront payment).
3704    COMMITMENT_1_YEAR_UPFRONT_PAYMENT = 4;
3705
3706    // 3 years commitment (upfront payment).
3707    COMMITMENT_3_YEAR_UPFRONT_PAYMENT = 5;
3708  }
3709
3710  // CPU overcommit ratio.
3711  // Acceptable values are between 1.0 and 8.0, with 0.1 increment.
3712  double cpu_overcommit_ratio = 1;
3713
3714  // Memory overcommit ratio.
3715  // Acceptable values are 1.0, 1.25, 1.5, 1.75 and 2.0.
3716  double memory_overcommit_ratio = 2;
3717
3718  // The Deduplication and Compression ratio is based on the logical (Used
3719  // Before) space required to store data before applying deduplication and
3720  // compression, in relation to the physical (Used After) space required after
3721  // applying deduplication and compression. Specifically, the ratio is the Used
3722  // Before space divided by the Used After space. For example, if the Used
3723  // Before space is 3 GB, but the physical Used After space is 1 GB, the
3724  // deduplication and compression ratio is 3x. Acceptable values are
3725  // between 1.0 and 4.0.
3726  double storage_deduplication_compression_ratio = 3;
3727
3728  // Commitment plan to consider when calculating costs for virtual machine
3729  // insights and recommendations.
3730  // If you are unsure which value to set, a 3 year commitment plan is often a
3731  // good value to start with.
3732  CommitmentPlan commitment_plan = 4;
3733}
3734
3735// Preferences concerning Sole Tenancy nodes and VMs.
3736message SoleTenancyPreferences {
3737  // Sole Tenancy nodes maintenance policy.
3738  enum HostMaintenancePolicy {
3739    // Unspecified host maintenance policy.
3740    HOST_MAINTENANCE_POLICY_UNSPECIFIED = 0;
3741
3742    // Default host maintenance policy.
3743    HOST_MAINTENANCE_POLICY_DEFAULT = 1;
3744
3745    // Restart in place host maintenance policy.
3746    HOST_MAINTENANCE_POLICY_RESTART_IN_PLACE = 2;
3747
3748    // Migrate within node group host maintenance policy.
3749    HOST_MAINTENANCE_POLICY_MIGRATE_WITHIN_NODE_GROUP = 3;
3750  }
3751
3752  // Type of committed use discount.
3753  enum CommitmentPlan {
3754    // Unspecified commitment plan.
3755    COMMITMENT_PLAN_UNSPECIFIED = 0;
3756
3757    // No commitment plan (on-demand usage).
3758    ON_DEMAND = 1;
3759
3760    // 1 year commitment.
3761    COMMITMENT_1_YEAR = 2;
3762
3763    // 3 years commitment.
3764    COMMITMENT_3_YEAR = 3;
3765  }
3766
3767  // CPU overcommit ratio.
3768  // Acceptable values are between 1.0 and 2.0 inclusive.
3769  double cpu_overcommit_ratio = 1;
3770
3771  // Sole Tenancy nodes maintenance policy.
3772  HostMaintenancePolicy host_maintenance_policy = 2;
3773
3774  // Commitment plan to consider when calculating costs for virtual machine
3775  // insights and recommendations.
3776  // If you are unsure which value to set, a 3 year commitment plan is often a
3777  // good value to start with.
3778  CommitmentPlan commitment_plan = 3;
3779
3780  // A list of sole tenant node types.
3781  // An empty list means that all possible node types will be considered.
3782  repeated SoleTenantNodeType node_types = 4;
3783}
3784
3785// A Sole Tenant node type.
3786message SoleTenantNodeType {
3787  // Name of the Sole Tenant node. Consult
3788  // https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes
3789  string node_name = 1;
3790}
3791
3792// The user preferences relating to target regions.
3793message RegionPreferences {
3794  // A list of preferred regions,
3795  // ordered by the most preferred region first.
3796  // Set only valid Google Cloud region names.
3797  // See https://cloud.google.com/compute/docs/regions-zones
3798  // for available regions.
3799  repeated string preferred_regions = 1;
3800}
3801
3802// Describes the Migration Center settings related to the project.
3803message Settings {
3804  option (google.api.resource) = {
3805    type: "migrationcenter.googleapis.com/Settings"
3806    pattern: "projects/{project}/locations/{location}/settings"
3807  };
3808
3809  // Output only. The name of the resource.
3810  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
3811
3812  // The preference set used by default for a project.
3813  string preference_set = 2 [(google.api.resource_reference) = {
3814    type: "migrationcenter.googleapis.com/PreferenceSet"
3815  }];
3816}
3817
3818// Describes the Summary view of a Report, which contains aggregated values
3819// for all the groups and preference sets included in this Report.
3820message ReportSummary {
3821  // Describes a collection of data points rendered as a Chart.
3822  message ChartData {
3823    // Describes a single data point in the Chart.
3824    message DataPoint {
3825      // The X-axis label for this data point.
3826      string label = 1;
3827
3828      // The Y-axis value for this data point.
3829      double value = 2;
3830    }
3831
3832    // Each data point in the chart is represented as a name-value pair
3833    // with the name being the x-axis label, and the value being the y-axis
3834    // value.
3835    repeated DataPoint data_points = 1;
3836  }
3837
3838  // Utilization Chart is a specific type of visualization which displays
3839  // a metric classified into "Used" and "Free" buckets.
3840  message UtilizationChartData {
3841    // Aggregate value which falls into the "Used" bucket.
3842    int64 used = 1;
3843
3844    // Aggregate value which falls into the "Free" bucket.
3845    int64 free = 2;
3846  }
3847
3848  // A Histogram Chart shows a distribution of values into buckets, showing
3849  // a count of values which fall into a bucket.
3850  message HistogramChartData {
3851    // A histogram bucket with a lower and upper bound, and a count of items
3852    // with a field value between those bounds.
3853    // The lower bound is inclusive and the upper bound is exclusive.
3854    // Lower bound may be -infinity and upper bound may be infinity.
3855    message Bucket {
3856      // Lower bound - inclusive.
3857      int64 lower_bound = 1;
3858
3859      // Upper bound - exclusive.
3860      int64 upper_bound = 2;
3861
3862      // Count of items in the bucket.
3863      int64 count = 3;
3864    }
3865
3866    // Buckets in the histogram.
3867    // There will be `n+1` buckets matching `n` lower bounds in the request.
3868    // The first bucket will be from -infinity to the first bound.
3869    // Subsequent buckets will be between one bound and the next.
3870    // The final bucket will be from the final bound to infinity.
3871    repeated Bucket buckets = 1;
3872  }
3873
3874  // Aggregate statistics for a collection of assets.
3875  message AssetAggregateStats {
3876    // Sum of the memory in bytes of all the assets in this collection.
3877    int64 total_memory_bytes = 1;
3878
3879    // Sum of persistent storage in bytes of all the assets in this collection.
3880    int64 total_storage_bytes = 2;
3881
3882    // Sum of the CPU core count of all the assets in this collection.
3883    int64 total_cores = 3;
3884
3885    // Count of the number of unique assets in this collection.
3886    int64 total_assets = 4;
3887
3888    // Total memory split into Used/Free buckets.
3889    UtilizationChartData memory_utilization_chart = 5;
3890
3891    // Total memory split into Used/Free buckets.
3892    UtilizationChartData storage_utilization_chart = 6;
3893
3894    // Count of assets grouped by Operating System families.
3895    ChartData operating_system = 7;
3896
3897    // Histogram showing a distribution of CPU core counts.
3898    HistogramChartData core_count_histogram = 8;
3899
3900    // Histogram showing a distribution of memory sizes.
3901    HistogramChartData memory_bytes_histogram = 9;
3902
3903    // Histogram showing a distribution of memory sizes.
3904    HistogramChartData storage_bytes_histogram = 10;
3905  }
3906
3907  // Represents a data point tracking the count of assets allocated for a
3908  // specific Machine Series.
3909  message MachineSeriesAllocation {
3910    // The Machine Series (e.g. "E2", "N2")
3911    MachineSeries machine_series = 1;
3912
3913    // Count of assets allocated to this machine series.
3914    int64 allocated_asset_count = 2;
3915  }
3916
3917  // A set of findings that applies to assets destined for Compute Engine.
3918  message ComputeEngineFinding {
3919    // Set of regions in which the assets were allocated.
3920    repeated string allocated_regions = 1;
3921
3922    // Count of assets which were allocated.
3923    int64 allocated_asset_count = 2;
3924
3925    // Distribution of assets based on the Machine Series.
3926    repeated MachineSeriesAllocation machine_series_allocations = 3;
3927
3928    // Set of disk types allocated to assets.
3929    repeated PersistentDiskType allocated_disk_types = 4;
3930  }
3931
3932  // A set of findings that applies to assets destined for VMWare Engine.
3933  message VmwareEngineFinding {
3934    // Set of regions in which the assets were allocated
3935    repeated string allocated_regions = 1;
3936
3937    // Count of assets which are allocated
3938    int64 allocated_asset_count = 2;
3939
3940    // Set of per-nodetype allocation records
3941    repeated VmwareNodeAllocation node_allocations = 3;
3942  }
3943
3944  // Represents assets allocated to a specific VMWare Node type.
3945  message VmwareNodeAllocation {
3946    // VMWare node type, e.g. "ve1-standard-72"
3947    VmwareNode vmware_node = 1;
3948
3949    // Count of this node type to be provisioned
3950    int64 node_count = 2;
3951
3952    // Count of assets allocated to these nodes
3953    int64 allocated_asset_count = 3;
3954  }
3955
3956  // A VMWare Engine Node
3957  message VmwareNode {
3958    // Code to identify VMware Engine node series, e.g. "ve1-standard-72". Based
3959    // on the displayName of
3960    // cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.nodeTypes
3961    string code = 1;
3962  }
3963
3964  // A set of findings that applies to assets destined for Sole-Tenant nodes.
3965  message SoleTenantFinding {
3966    // Set of regions in which the assets are allocated
3967    repeated string allocated_regions = 1;
3968
3969    // Count of assets which are allocated
3970    int64 allocated_asset_count = 2;
3971
3972    // Set of per-nodetype allocation records
3973    repeated SoleTenantNodeAllocation node_allocations = 3;
3974  }
3975
3976  // Represents the assets allocated to a specific Sole-Tenant node type.
3977  message SoleTenantNodeAllocation {
3978    // Sole Tenant node type, e.g. "m3-node-128-3904"
3979    SoleTenantNodeType node = 1;
3980
3981    // Count of this node type to be provisioned
3982    int64 node_count = 2;
3983
3984    // Count of assets allocated to these nodes
3985    int64 allocated_asset_count = 3;
3986  }
3987
3988  // Summary Findings for a specific Group/PreferenceSet combination.
3989  message GroupPreferenceSetFinding {
3990    // Display Name of the Preference Set
3991    string display_name = 1;
3992
3993    // Description for the Preference Set.
3994    string description = 2;
3995
3996    // A set of preferences that applies to all machines in the context.
3997    VirtualMachinePreferences machine_preferences = 3;
3998
3999    // Total monthly cost for this preference set.
4000    google.type.Money monthly_cost_total = 4;
4001
4002    // Compute monthly cost for this preference set.
4003    google.type.Money monthly_cost_compute = 5;
4004
4005    // Licensing monthly cost for this preference set.
4006    google.type.Money monthly_cost_os_license = 6;
4007
4008    // Network Egress monthly cost for this preference set.
4009    google.type.Money monthly_cost_network_egress = 7;
4010
4011    // Storage monthly cost for this preference set.
4012    google.type.Money monthly_cost_storage = 8;
4013
4014    // Miscellaneous monthly cost for this preference set.
4015    google.type.Money monthly_cost_other = 9;
4016
4017    // A set of findings that applies to Compute Engine machines in the input.
4018    ComputeEngineFinding compute_engine_finding = 10;
4019
4020    // A set of findings that applies to VMWare machines in the input.
4021    VmwareEngineFinding vmware_engine_finding = 11;
4022
4023    // A set of findings that applies to Sole-Tenant machines in the input.
4024    SoleTenantFinding sole_tenant_finding = 12;
4025  }
4026
4027  // Summary Findings for a specific Group.
4028  message GroupFinding {
4029    // Display Name for the Group.
4030    string display_name = 1;
4031
4032    // Description for the Group.
4033    string description = 2;
4034
4035    // Summary statistics for all the assets in this group.
4036    AssetAggregateStats asset_aggregate_stats = 3;
4037
4038    // This field is deprecated, do not rely on it having a value.
4039    int64 overlapping_asset_count = 4 [deprecated = true];
4040
4041    // Findings for each of the PreferenceSets for this group.
4042    repeated GroupPreferenceSetFinding preference_set_findings = 5;
4043  }
4044
4045  // Aggregate statistics for all the assets across all the groups.
4046  AssetAggregateStats all_assets_stats = 1;
4047
4048  // Findings for each Group included in this report.
4049  repeated GroupFinding group_findings = 2;
4050}
4051
4052// Specifies the types of asset views that provide complete or partial details
4053// of an asset.
4054enum AssetView {
4055  // The asset view is not specified. The API displays the basic view by
4056  // default.
4057  ASSET_VIEW_UNSPECIFIED = 0;
4058
4059  // The asset view includes only basic metadata of the asset.
4060  ASSET_VIEW_BASIC = 1;
4061
4062  // The asset view includes all the metadata of an asset and performance data.
4063  ASSET_VIEW_FULL = 2;
4064}
4065
4066// Known categories of operating systems.
4067enum OperatingSystemFamily {
4068  OS_FAMILY_UNKNOWN = 0;
4069
4070  // Microsoft Windows Server and Desktop.
4071  OS_FAMILY_WINDOWS = 1;
4072
4073  // Various Linux flavors.
4074  OS_FAMILY_LINUX = 2;
4075
4076  // Non-Linux Unix flavors.
4077  OS_FAMILY_UNIX = 3;
4078}
4079
4080// Specifies the data formats supported by Migration Center.
4081enum ImportJobFormat {
4082  // Default value.
4083  IMPORT_JOB_FORMAT_UNSPECIFIED = 0;
4084
4085  // RVTools format (XLSX).
4086  IMPORT_JOB_FORMAT_RVTOOLS_XLSX = 1;
4087
4088  // RVTools format (CSV).
4089  IMPORT_JOB_FORMAT_RVTOOLS_CSV = 2;
4090
4091  // CSV format exported from AWS using the
4092  // [AWS collection
4093  // script][https://github.com/GoogleCloudPlatform/aws-to-stratozone-export].
4094  IMPORT_JOB_FORMAT_EXPORTED_AWS_CSV = 4;
4095
4096  // CSV format exported from Azure using the
4097  // [Azure collection
4098  // script][https://github.com/GoogleCloudPlatform/azure-to-stratozone-export].
4099  IMPORT_JOB_FORMAT_EXPORTED_AZURE_CSV = 5;
4100
4101  // CSV format created manually and following the StratoZone format. For more
4102  // information, see [Manually create and upload data
4103  // tables][https://cloud.google.com/migrate/stratozone/docs/import-data-portal].
4104  IMPORT_JOB_FORMAT_STRATOZONE_CSV = 6;
4105}
4106
4107// Specifies the types of import job views that provide complete or partial
4108// details of an import job.
4109enum ImportJobView {
4110  // The import job view is not specified. The API displays the basic view by
4111  // default.
4112  IMPORT_JOB_VIEW_UNSPECIFIED = 0;
4113
4114  // The import job view includes basic metadata of an import job.
4115  // This view does not include payload information.
4116  IMPORT_JOB_VIEW_BASIC = 1;
4117
4118  // The import job view includes all metadata of an import job.
4119  IMPORT_JOB_VIEW_FULL = 2;
4120}
4121
4122// ErrorFrameView can be specified in ErrorFrames List and Get requests to
4123// control the level of details that is returned for the original frame.
4124enum ErrorFrameView {
4125  // Value is unset. The system will fallback to the default value.
4126  ERROR_FRAME_VIEW_UNSPECIFIED = 0;
4127
4128  // Include basic frame data, but not the full contents.
4129  ERROR_FRAME_VIEW_BASIC = 1;
4130
4131  // Include everything.
4132  ERROR_FRAME_VIEW_FULL = 2;
4133}
4134
4135// The persistent disk (PD) types of Compute Engine virtual machines.
4136enum PersistentDiskType {
4137  // Unspecified (default value).
4138  // Selecting this value allows the system to use any disk type according
4139  // to reported usage. This a good value to start with.
4140  PERSISTENT_DISK_TYPE_UNSPECIFIED = 0;
4141
4142  // Standard HDD Persistent Disk.
4143  PERSISTENT_DISK_TYPE_STANDARD = 1;
4144
4145  // Balanced Persistent Disk.
4146  PERSISTENT_DISK_TYPE_BALANCED = 2;
4147
4148  // SSD Persistent Disk.
4149  PERSISTENT_DISK_TYPE_SSD = 3;
4150}
4151
4152// The License type for premium images (RHEL, RHEL for SAP, SLES, SLES for SAP,
4153// Windows Server).
4154enum LicenseType {
4155  // Unspecified (default value).
4156  LICENSE_TYPE_UNSPECIFIED = 0;
4157
4158  // Default Google Cloud licensing plan. Licensing is charged per usage.
4159  // This a good value to start with.
4160  LICENSE_TYPE_DEFAULT = 1;
4161
4162  // Bring-your-own-license (BYOL) plan. User provides the OS license.
4163  LICENSE_TYPE_BRING_YOUR_OWN_LICENSE = 2;
4164}
4165
4166// The sizing optimization strategy preferences of a virtual machine. This
4167// strategy, in addition to actual usage data of the virtual machine, can help
4168// determine the recommended shape on the target platform.
4169enum SizingOptimizationStrategy {
4170  // Unspecified (default value).
4171  SIZING_OPTIMIZATION_STRATEGY_UNSPECIFIED = 0;
4172
4173  // No optimization applied. Virtual machine sizing matches as closely as
4174  // possible the machine shape on the source site, not considering any actual
4175  // performance data.
4176  SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE = 1;
4177
4178  // Virtual machine sizing will match the reported usage and shape, with some
4179  // slack. This a good value to start with.
4180  SIZING_OPTIMIZATION_STRATEGY_MODERATE = 2;
4181
4182  // Virtual machine sizing will match the reported usage, with little slack.
4183  // Using this option can help reduce costs.
4184  SIZING_OPTIMIZATION_STRATEGY_AGGRESSIVE = 3;
4185}
4186
4187// The plan of commitments for VM resource-based committed use discount (CUD).
4188enum CommitmentPlan {
4189  // Unspecified commitment plan.
4190  COMMITMENT_PLAN_UNSPECIFIED = 0;
4191
4192  // No commitment plan.
4193  COMMITMENT_PLAN_NONE = 1;
4194
4195  // 1 year commitment.
4196  COMMITMENT_PLAN_ONE_YEAR = 2;
4197
4198  // 3 years commitment.
4199  COMMITMENT_PLAN_THREE_YEARS = 3;
4200}
4201
4202// The preference for a specific Google Cloud product platform.
4203enum ComputeMigrationTargetProduct {
4204  // Unspecified (default value).
4205  COMPUTE_MIGRATION_TARGET_PRODUCT_UNSPECIFIED = 0;
4206
4207  // Prefer to migrate to Google Cloud Compute Engine.
4208  COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE = 1;
4209
4210  // Prefer to migrate to Google Cloud VMware Engine.
4211  COMPUTE_MIGRATION_TARGET_PRODUCT_VMWARE_ENGINE = 2;
4212
4213  // Prefer to migrate to Google Cloud Sole Tenant Nodes.
4214  COMPUTE_MIGRATION_TARGET_PRODUCT_SOLE_TENANCY = 3;
4215}
4216
4217// Specifies the types of views that provide complete or partial details
4218// of a Report.
4219enum ReportView {
4220  // The report view is not specified. The API displays the basic view by
4221  // default.
4222  REPORT_VIEW_UNSPECIFIED = 0;
4223
4224  // The report view includes only basic metadata of the Report. Useful for
4225  // list views.
4226  REPORT_VIEW_BASIC = 1;
4227
4228  // The report view includes all the metadata of the Report. Useful for
4229  // preview.
4230  REPORT_VIEW_FULL = 2;
4231
4232  // The report view includes the standard metadata of an report. Useful for
4233  // detail view.
4234  REPORT_VIEW_STANDARD = 3;
4235}
4236