@google-cloud/dlp 5.7.0 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -160,7 +160,7 @@ service DlpService {
160
160
  rpc CreateInspectTemplate(CreateInspectTemplateRequest)
161
161
  returns (InspectTemplate) {
162
162
  option (google.api.http) = {
163
- post: "/v2/{parent=organizations/*}/inspectTemplates"
163
+ post: "/v2/{parent=projects/*/locations/*}/inspectTemplates"
164
164
  body: "*"
165
165
  additional_bindings {
166
166
  post: "/v2/{parent=organizations/*/locations/*}/inspectTemplates"
@@ -171,7 +171,7 @@ service DlpService {
171
171
  body: "*"
172
172
  }
173
173
  additional_bindings {
174
- post: "/v2/{parent=projects/*/locations/*}/inspectTemplates"
174
+ post: "/v2/{parent=organizations/*}/inspectTemplates"
175
175
  body: "*"
176
176
  }
177
177
  };
@@ -185,7 +185,7 @@ service DlpService {
185
185
  rpc UpdateInspectTemplate(UpdateInspectTemplateRequest)
186
186
  returns (InspectTemplate) {
187
187
  option (google.api.http) = {
188
- patch: "/v2/{name=organizations/*/inspectTemplates/*}"
188
+ patch: "/v2/{name=projects/*/locations/*/inspectTemplates/*}"
189
189
  body: "*"
190
190
  additional_bindings {
191
191
  patch: "/v2/{name=organizations/*/locations/*/inspectTemplates/*}"
@@ -196,7 +196,7 @@ service DlpService {
196
196
  body: "*"
197
197
  }
198
198
  additional_bindings {
199
- patch: "/v2/{name=projects/*/locations/*/inspectTemplates/*}"
199
+ patch: "/v2/{name=organizations/*/inspectTemplates/*}"
200
200
  body: "*"
201
201
  }
202
202
  };
@@ -209,13 +209,13 @@ service DlpService {
209
209
  // to learn more.
210
210
  rpc GetInspectTemplate(GetInspectTemplateRequest) returns (InspectTemplate) {
211
211
  option (google.api.http) = {
212
- get: "/v2/{name=organizations/*/inspectTemplates/*}"
212
+ get: "/v2/{name=projects/*/locations/*/inspectTemplates/*}"
213
213
  additional_bindings {
214
214
  get: "/v2/{name=organizations/*/locations/*/inspectTemplates/*}"
215
215
  }
216
216
  additional_bindings { get: "/v2/{name=projects/*/inspectTemplates/*}" }
217
217
  additional_bindings {
218
- get: "/v2/{name=projects/*/locations/*/inspectTemplates/*}"
218
+ get: "/v2/{name=organizations/*/inspectTemplates/*}"
219
219
  }
220
220
  };
221
221
  option (google.api.method_signature) = "name";
@@ -228,13 +228,13 @@ service DlpService {
228
228
  rpc ListInspectTemplates(ListInspectTemplatesRequest)
229
229
  returns (ListInspectTemplatesResponse) {
230
230
  option (google.api.http) = {
231
- get: "/v2/{parent=organizations/*}/inspectTemplates"
231
+ get: "/v2/{parent=projects/*/locations/*}/inspectTemplates"
232
232
  additional_bindings {
233
233
  get: "/v2/{parent=organizations/*/locations/*}/inspectTemplates"
234
234
  }
235
235
  additional_bindings { get: "/v2/{parent=projects/*}/inspectTemplates" }
236
236
  additional_bindings {
237
- get: "/v2/{parent=projects/*/locations/*}/inspectTemplates"
237
+ get: "/v2/{parent=organizations/*}/inspectTemplates"
238
238
  }
239
239
  };
240
240
  option (google.api.method_signature) = "parent";
@@ -247,13 +247,13 @@ service DlpService {
247
247
  rpc DeleteInspectTemplate(DeleteInspectTemplateRequest)
248
248
  returns (google.protobuf.Empty) {
249
249
  option (google.api.http) = {
250
- delete: "/v2/{name=organizations/*/inspectTemplates/*}"
250
+ delete: "/v2/{name=projects/*/locations/*/inspectTemplates/*}"
251
251
  additional_bindings {
252
252
  delete: "/v2/{name=organizations/*/locations/*/inspectTemplates/*}"
253
253
  }
254
254
  additional_bindings { delete: "/v2/{name=projects/*/inspectTemplates/*}" }
255
255
  additional_bindings {
256
- delete: "/v2/{name=projects/*/locations/*/inspectTemplates/*}"
256
+ delete: "/v2/{name=organizations/*/inspectTemplates/*}"
257
257
  }
258
258
  };
259
259
  option (google.api.method_signature) = "name";
@@ -798,6 +798,43 @@ service DlpService {
798
798
  option (google.api.method_signature) = "name";
799
799
  }
800
800
 
801
+ // Lists file store data profiles for an organization.
802
+ rpc ListFileStoreDataProfiles(ListFileStoreDataProfilesRequest)
803
+ returns (ListFileStoreDataProfilesResponse) {
804
+ option (google.api.http) = {
805
+ get: "/v2/{parent=organizations/*/locations/*}/fileStoreDataProfiles"
806
+ additional_bindings {
807
+ get: "/v2/{parent=projects/*/locations/*}/fileStoreDataProfiles"
808
+ }
809
+ };
810
+ option (google.api.method_signature) = "parent";
811
+ }
812
+
813
+ // Gets a file store data profile.
814
+ rpc GetFileStoreDataProfile(GetFileStoreDataProfileRequest)
815
+ returns (FileStoreDataProfile) {
816
+ option (google.api.http) = {
817
+ get: "/v2/{name=organizations/*/locations/*/fileStoreDataProfiles/*}"
818
+ additional_bindings {
819
+ get: "/v2/{name=projects/*/locations/*/fileStoreDataProfiles/*}"
820
+ }
821
+ };
822
+ option (google.api.method_signature) = "name";
823
+ }
824
+
825
+ // Delete a FileStoreDataProfile. Will not prevent the profile from being
826
+ // regenerated if the resource is still included in a discovery configuration.
827
+ rpc DeleteFileStoreDataProfile(DeleteFileStoreDataProfileRequest)
828
+ returns (google.protobuf.Empty) {
829
+ option (google.api.http) = {
830
+ delete: "/v2/{name=organizations/*/locations/*/fileStoreDataProfiles/*}"
831
+ additional_bindings {
832
+ delete: "/v2/{name=projects/*/locations/*/fileStoreDataProfiles/*}"
833
+ }
834
+ };
835
+ option (google.api.method_signature) = "name";
836
+ }
837
+
801
838
  // Gets a table data profile.
802
839
  rpc GetTableDataProfile(GetTableDataProfileRequest)
803
840
  returns (TableDataProfile) {
@@ -861,6 +898,10 @@ service DlpService {
861
898
  option (google.api.http) = {
862
899
  post: "/v2/{parent=projects/*/locations/*}/connections"
863
900
  body: "*"
901
+ additional_bindings {
902
+ post: "/v2/{parent=organizations/*/locations/*}/connections"
903
+ body: "*"
904
+ }
864
905
  };
865
906
  option (google.api.method_signature) = "parent, connection";
866
907
  }
@@ -869,15 +910,22 @@ service DlpService {
869
910
  rpc GetConnection(GetConnectionRequest) returns (Connection) {
870
911
  option (google.api.http) = {
871
912
  get: "/v2/{name=projects/*/locations/*/connections/*}"
913
+ additional_bindings {
914
+ get: "/v2/{name=organizations/*/locations/*/connections/*}"
915
+ }
872
916
  };
873
917
  option (google.api.method_signature) = "name";
874
918
  }
875
919
 
876
- // Lists Connections in a parent.
920
+ // Lists Connections in a parent. Use SearchConnections to see all connections
921
+ // within an organization.
877
922
  rpc ListConnections(ListConnectionsRequest)
878
923
  returns (ListConnectionsResponse) {
879
924
  option (google.api.http) = {
880
925
  get: "/v2/{parent=projects/*/locations/*}/connections"
926
+ additional_bindings {
927
+ get: "/v2/{parent=organizations/*/locations/*}/connections"
928
+ }
881
929
  };
882
930
  option (google.api.method_signature) = "parent";
883
931
  }
@@ -899,6 +947,9 @@ service DlpService {
899
947
  returns (google.protobuf.Empty) {
900
948
  option (google.api.http) = {
901
949
  delete: "/v2/{name=projects/*/locations/*/connections/*}"
950
+ additional_bindings {
951
+ delete: "/v2/{name=organizations/*/locations/*/connections/*}"
952
+ }
902
953
  };
903
954
  option (google.api.method_signature) = "name";
904
955
  }
@@ -908,6 +959,10 @@ service DlpService {
908
959
  option (google.api.http) = {
909
960
  patch: "/v2/{name=projects/*/locations/*/connections/*}"
910
961
  body: "*"
962
+ additional_bindings {
963
+ patch: "/v2/{name=organizations/*/locations/*/connections/*}"
964
+ body: "*"
965
+ }
911
966
  };
912
967
  option (google.api.method_signature) = "name";
913
968
  }
@@ -1174,6 +1229,15 @@ message ByteContentItem {
1174
1229
 
1175
1230
  // tsv
1176
1231
  TSV = 13;
1232
+
1233
+ // Audio file types. Only used for profiling.
1234
+ AUDIO = 15;
1235
+
1236
+ // Video file types. Only used for profiling.
1237
+ VIDEO = 16;
1238
+
1239
+ // Executable file types. Only used for profiling.
1240
+ EXECUTABLE = 17;
1177
1241
  }
1178
1242
 
1179
1243
  // The type of data stored in the bytes string. Default will be TEXT_UTF8.
@@ -1288,6 +1352,7 @@ message Finding {
1288
1352
  // No more than 10 labels can be associated with a given finding.
1289
1353
  //
1290
1354
  // Examples:
1355
+ //
1291
1356
  // * `"environment" : "production"`
1292
1357
  // * `"pipeline" : "etl"`
1293
1358
  map<string, string> labels = 10;
@@ -1519,10 +1584,10 @@ message RedactImageRequest {
1519
1584
  // processing
1520
1585
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
1521
1586
  //
1522
- // + Projects scope, location specified:<br/>
1523
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
1524
- // + Projects scope, no location specified (defaults to global):<br/>
1525
- // `projects/`<var>PROJECT_ID</var>
1587
+ // + Projects scope, location specified:
1588
+ // `projects/{project_id}/locations/{location_id}`
1589
+ // + Projects scope, no location specified (defaults to global):
1590
+ // `projects/{project_id}`
1526
1591
  //
1527
1592
  // The following example `parent` string specifies a parent project with the
1528
1593
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -1584,10 +1649,10 @@ message DeidentifyContentRequest {
1584
1649
  // processing
1585
1650
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
1586
1651
  //
1587
- // + Projects scope, location specified:<br/>
1588
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
1589
- // + Projects scope, no location specified (defaults to global):<br/>
1590
- // `projects/`<var>PROJECT_ID</var>
1652
+ // + Projects scope, location specified:
1653
+ // `projects/{project_id}/locations/{location_id}`
1654
+ // + Projects scope, no location specified (defaults to global):
1655
+ // `projects/{project_id}`
1591
1656
  //
1592
1657
  // The following example `parent` string specifies a parent project with the
1593
1658
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -1653,10 +1718,10 @@ message ReidentifyContentRequest {
1653
1718
  // processing
1654
1719
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
1655
1720
  //
1656
- // + Projects scope, location specified:<br/>
1657
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
1658
- // + Projects scope, no location specified (defaults to global):<br/>
1659
- // `projects/`<var>PROJECT_ID</var>
1721
+ // + Projects scope, location specified:
1722
+ // `projects/{project_id}/locations/{location_id}`
1723
+ // + Projects scope, no location specified (defaults to global):
1724
+ // `projects/{project_id}`
1660
1725
  //
1661
1726
  // The following example `parent` string specifies a parent project with the
1662
1727
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -1725,10 +1790,10 @@ message InspectContentRequest {
1725
1790
  // processing
1726
1791
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
1727
1792
  //
1728
- // + Projects scope, location specified:<br/>
1729
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
1730
- // + Projects scope, no location specified (defaults to global):<br/>
1731
- // `projects/`<var>PROJECT_ID</var>
1793
+ // + Projects scope, location specified:
1794
+ // `projects/{project_id}/locations/{location_id}`
1795
+ // + Projects scope, no location specified (defaults to global):
1796
+ // `projects/{project_id}`
1732
1797
  //
1733
1798
  // The following example `parent` string specifies a parent project with the
1734
1799
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -1878,6 +1943,9 @@ message DataProfileBigQueryRowSchema {
1878
1943
 
1879
1944
  // Column data profile column
1880
1945
  ColumnDataProfile column_profile = 2;
1946
+
1947
+ // File store data profile column.
1948
+ FileStoreDataProfile file_store_profile = 3;
1881
1949
  }
1882
1950
  }
1883
1951
 
@@ -1986,12 +2054,18 @@ message InfoTypeCategory {
1986
2054
  // The infoType is typically used in Argentina.
1987
2055
  ARGENTINA = 2;
1988
2056
 
2057
+ // The infoType is typically used in Armenia.
2058
+ ARMENIA = 51;
2059
+
1989
2060
  // The infoType is typically used in Australia.
1990
2061
  AUSTRALIA = 3;
1991
2062
 
1992
2063
  // The infoType is typically used in Azerbaijan.
1993
2064
  AZERBAIJAN = 48;
1994
2065
 
2066
+ // The infoType is typically used in Belarus.
2067
+ BELARUS = 50;
2068
+
1995
2069
  // The infoType is typically used in Belgium.
1996
2070
  BELGIUM = 4;
1997
2071
 
@@ -2202,7 +2276,7 @@ message ListInfoTypesRequest {
2202
2276
  //
2203
2277
  // The format of this value is as follows:
2204
2278
  //
2205
- // locations/<var>LOCATION_ID</var>
2279
+ // `locations/{location_id}`
2206
2280
  string parent = 4;
2207
2281
 
2208
2282
  // BCP-47 language code for localized infoType friendly
@@ -3200,9 +3274,10 @@ message FixedSizeBucketingConfig {
3200
3274
 
3201
3275
  // Generalization function that buckets values based on ranges. The ranges and
3202
3276
  // replacement values are dynamically provided by the user for custom behavior,
3203
- // such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH
3204
- // This can be used on
3205
- // data of type: number, long, string, timestamp.
3277
+ // such as 1-30 -> LOW, 31-65 -> MEDIUM, 66-100 -> HIGH.
3278
+ //
3279
+ // This can be used on data of type: number, long, string, timestamp.
3280
+ //
3206
3281
  // If the bound `Value` type differs from the type of data being transformed, we
3207
3282
  // will first attempt converting the type of the data to be transformed to match
3208
3283
  // the type of the bound before comparing.
@@ -3300,8 +3375,7 @@ message CryptoReplaceFfxFpeConfig {
3300
3375
  // This must be encoded as ASCII.
3301
3376
  // The order of characters does not matter.
3302
3377
  // The full list of allowed characters is:
3303
- // <code>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
3304
- // ~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/</code>
3378
+ // ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/``
3305
3379
  string custom_alphabet = 5;
3306
3380
 
3307
3381
  // The native way to select the alphabet. Must be in the range [2, 95].
@@ -3933,12 +4007,27 @@ message DeidentifyTemplate {
3933
4007
  // Details information about an error encountered during job execution or
3934
4008
  // the results of an unsuccessful activation of the JobTrigger.
3935
4009
  message Error {
4010
+ // Additional information about the error.
4011
+ enum ErrorExtraInfo {
4012
+ // Unused.
4013
+ ERROR_INFO_UNSPECIFIED = 0;
4014
+
4015
+ // Image scan is not available in the region.
4016
+ IMAGE_SCAN_UNAVAILABLE_IN_REGION = 1;
4017
+
4018
+ // File store cluster is not supported for profile generation.
4019
+ FILE_STORE_CLUSTER_UNSUPPORTED = 2;
4020
+ }
4021
+
3936
4022
  // Detailed error codes and messages.
3937
4023
  google.rpc.Status details = 1;
3938
4024
 
3939
4025
  // The times the error occurred. List includes the oldest timestamp and the
3940
4026
  // last 9 timestamps.
3941
4027
  repeated google.protobuf.Timestamp timestamps = 2;
4028
+
4029
+ // Additional information about the error.
4030
+ ErrorExtraInfo extra_info = 4;
3942
4031
  }
3943
4032
 
3944
4033
  // Contains a configuration to make API calls on a repeating basis.
@@ -4114,7 +4203,7 @@ message Action {
4114
4203
  // Where to store the output.
4115
4204
  oneof output {
4116
4205
  // Required. User settable Cloud Storage bucket and folders to store
4117
- // de-identified files. This field must be set for cloud storage
4206
+ // de-identified files. This field must be set for Cloud Storage
4118
4207
  // deidentification. The output Cloud Storage bucket must be different
4119
4208
  // from the input bucket. De-identified files will overwrite files in the
4120
4209
  // output path.
@@ -4124,12 +4213,12 @@ message Action {
4124
4213
  }
4125
4214
 
4126
4215
  // List of user-specified file type groups to transform. If specified, only
4127
- // the files with these filetypes will be transformed. If empty, all
4216
+ // the files with these file types will be transformed. If empty, all
4128
4217
  // supported files will be transformed. Supported types may be automatically
4129
4218
  // added over time. If a file type is set in this field that isn't supported
4130
4219
  // by the Deidentify action then the job will fail and will not be
4131
- // successfully created/started. Currently the only filetypes supported are:
4132
- // IMAGES, TEXT_FILES, CSV, TSV.
4220
+ // successfully created/started. Currently the only file types supported
4221
+ // are: IMAGES, TEXT_FILES, CSV, TSV.
4133
4222
  repeated FileType file_types_to_transform = 8;
4134
4223
  }
4135
4224
 
@@ -4208,14 +4297,14 @@ message CreateInspectTemplateRequest {
4208
4297
  // (project or organization) and whether you have [specified a processing
4209
4298
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
4210
4299
  //
4211
- // + Projects scope, location specified:<br/>
4212
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4213
- // + Projects scope, no location specified (defaults to global):<br/>
4214
- // `projects/`<var>PROJECT_ID</var>
4215
- // + Organizations scope, location specified:<br/>
4216
- // `organizations/`<var>ORG_ID</var>`/locations/`<var>LOCATION_ID</var>
4217
- // + Organizations scope, no location specified (defaults to global):<br/>
4218
- // `organizations/`<var>ORG_ID</var>
4300
+ // + Projects scope, location specified:
4301
+ // `projects/{project_id}/locations/{location_id}`
4302
+ // + Projects scope, no location specified (defaults to global):
4303
+ // `projects/{project_id}`
4304
+ // + Organizations scope, location specified:
4305
+ // `organizations/{org_id}/locations/{location_id}`
4306
+ // + Organizations scope, no location specified (defaults to global):
4307
+ // `organizations/{org_id}`
4219
4308
  //
4220
4309
  // The following example `parent` string specifies a parent project with the
4221
4310
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4282,14 +4371,14 @@ message ListInspectTemplatesRequest {
4282
4371
  // (project or organization) and whether you have [specified a processing
4283
4372
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
4284
4373
  //
4285
- // + Projects scope, location specified:<br/>
4286
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4287
- // + Projects scope, no location specified (defaults to global):<br/>
4288
- // `projects/`<var>PROJECT_ID</var>
4289
- // + Organizations scope, location specified:<br/>
4290
- // `organizations/`<var>ORG_ID</var>`/locations/`<var>LOCATION_ID</var>
4291
- // + Organizations scope, no location specified (defaults to global):<br/>
4292
- // `organizations/`<var>ORG_ID</var>
4374
+ // + Projects scope, location specified:
4375
+ // `projects/{project_id}/locations/{location_id}`
4376
+ // + Projects scope, no location specified (defaults to global):
4377
+ // `projects/{project_id}`
4378
+ // + Organizations scope, location specified:
4379
+ // `organizations/{org_id}/locations/{location_id}`
4380
+ // + Organizations scope, no location specified (defaults to global):
4381
+ // `organizations/{org_id}`
4293
4382
  //
4294
4383
  // The following example `parent` string specifies a parent project with the
4295
4384
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4311,7 +4400,7 @@ message ListInspectTemplatesRequest {
4311
4400
  // returns a page of max size 100.
4312
4401
  int32 page_size = 3;
4313
4402
 
4314
- // Comma separated list of fields to order by,
4403
+ // Comma-separated list of fields to order by,
4315
4404
  // followed by `asc` or `desc` postfix. This list is case insensitive. The
4316
4405
  // default sorting order is ascending. Redundant space characters are
4317
4406
  // insignificant.
@@ -4361,10 +4450,10 @@ message CreateJobTriggerRequest {
4361
4450
  // processing
4362
4451
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
4363
4452
  //
4364
- // + Projects scope, location specified:<br/>
4365
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4366
- // + Projects scope, no location specified (defaults to global):<br/>
4367
- // `projects/`<var>PROJECT_ID</var>
4453
+ // + Projects scope, location specified:
4454
+ // `projects/{project_id}/locations/{location_id}`
4455
+ // + Projects scope, no location specified (defaults to global):
4456
+ // `projects/{project_id}`
4368
4457
  //
4369
4458
  // The following example `parent` string specifies a parent project with the
4370
4459
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4431,8 +4520,13 @@ message GetJobTriggerRequest {
4431
4520
  message CreateDiscoveryConfigRequest {
4432
4521
  // Required. Parent resource name.
4433
4522
  //
4434
- // The format of this value is as follows:
4435
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4523
+ // The format of this value varies depending on the scope of the request
4524
+ // (project or organization):
4525
+ //
4526
+ // + Projects scope:
4527
+ // `projects/{project_id}/locations/{location_id}`
4528
+ // + Organizations scope:
4529
+ // `organizations/{org_id}/locations/{location_id}`
4436
4530
  //
4437
4531
  // The following example `parent` string specifies a parent project with the
4438
4532
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4491,7 +4585,7 @@ message ListDiscoveryConfigsRequest {
4491
4585
  // Required. Parent resource name.
4492
4586
  //
4493
4587
  // The format of this value is as follows:
4494
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4588
+ // `projects/{project_id}/locations/{location_id}`
4495
4589
  //
4496
4590
  // The following example `parent` string specifies a parent project with the
4497
4591
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4513,7 +4607,7 @@ message ListDiscoveryConfigsRequest {
4513
4607
  // Size of the page. This value can be limited by a server.
4514
4608
  int32 page_size = 3;
4515
4609
 
4516
- // Comma separated list of config fields to order by,
4610
+ // Comma-separated list of config fields to order by,
4517
4611
  // followed by `asc` or `desc` postfix. This list is case insensitive. The
4518
4612
  // default sorting order is ascending. Redundant space characters are
4519
4613
  // insignificant.
@@ -4560,10 +4654,10 @@ message CreateDlpJobRequest {
4560
4654
  // processing
4561
4655
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
4562
4656
  //
4563
- // + Projects scope, location specified:<br/>
4564
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4565
- // + Projects scope, no location specified (defaults to global):<br/>
4566
- // `projects/`<var>PROJECT_ID</var>
4657
+ // + Projects scope, location specified:
4658
+ // `projects/{project_id}/locations/{location_id}`
4659
+ // + Projects scope, no location specified (defaults to global):
4660
+ // `projects/{project_id}`
4567
4661
  //
4568
4662
  // The following example `parent` string specifies a parent project with the
4569
4663
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4605,10 +4699,10 @@ message ListJobTriggersRequest {
4605
4699
  // processing
4606
4700
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
4607
4701
  //
4608
- // + Projects scope, location specified:<br/>
4609
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4610
- // + Projects scope, no location specified (defaults to global):<br/>
4611
- // `projects/`<var>PROJECT_ID</var>
4702
+ // + Projects scope, location specified:
4703
+ // `projects/{project_id}/locations/{location_id}`
4704
+ // + Projects scope, no location specified (defaults to global):
4705
+ // `projects/{project_id}`
4612
4706
  //
4613
4707
  // The following example `parent` string specifies a parent project with the
4614
4708
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4630,7 +4724,7 @@ message ListJobTriggersRequest {
4630
4724
  // Size of the page. This value can be limited by a server.
4631
4725
  int32 page_size = 3;
4632
4726
 
4633
- // Comma separated list of triggeredJob fields to order by,
4727
+ // Comma-separated list of triggeredJob fields to order by,
4634
4728
  // followed by `asc` or `desc` postfix. This list is case insensitive. The
4635
4729
  // default sorting order is ascending. Redundant space characters are
4636
4730
  // insignificant.
@@ -4717,6 +4811,18 @@ message InspectJobConfig {
4717
4811
  repeated Action actions = 4;
4718
4812
  }
4719
4813
 
4814
+ // Whether a profile being created is the first generation or an update.
4815
+ enum ProfileGeneration {
4816
+ // Unused.
4817
+ PROFILE_GENERATION_UNSPECIFIED = 0;
4818
+
4819
+ // The profile is the first profile for the resource.
4820
+ PROFILE_GENERATION_NEW = 1;
4821
+
4822
+ // The profile is an update to a previous profile.
4823
+ PROFILE_GENERATION_UPDATE = 2;
4824
+ }
4825
+
4720
4826
  // A task to execute when a data profile has been generated.
4721
4827
  message DataProfileAction {
4722
4828
  // If set, the detailed data profiles will be persisted to the location
@@ -4748,6 +4854,9 @@ message DataProfileAction {
4748
4854
 
4749
4855
  // The name of the profiled resource.
4750
4856
  RESOURCE_NAME = 2;
4857
+
4858
+ // The full file store data profile.
4859
+ FILE_STORE_PROFILE = 3;
4751
4860
  }
4752
4861
 
4753
4862
  // Cloud Pub/Sub topic to send notifications to.
@@ -4788,6 +4897,60 @@ message DataProfileAction {
4788
4897
  ERROR_CHANGED = 4;
4789
4898
  }
4790
4899
 
4900
+ // If set, attaches the [tags]
4901
+ // (https://cloud.google.com/resource-manager/docs/tags/tags-overview)
4902
+ // provided to profiled resources. Tags support [access
4903
+ // control](https://cloud.google.com/iam/docs/tags-access-control). You can
4904
+ // conditionally grant or deny access to a resource based on whether the
4905
+ // resource has a specific tag.
4906
+ message TagResources {
4907
+ // The tag to attach to profiles matching the condition. At most one
4908
+ // `TagCondition` can be specified per sensitivity level.
4909
+ message TagCondition {
4910
+ // The tag value to attach to resources.
4911
+ TagValue tag = 1;
4912
+
4913
+ // The type of condition on which attaching the tag will be predicated.
4914
+ oneof type {
4915
+ // Conditions attaching the tag to a resource on its profile having this
4916
+ // sensitivity score.
4917
+ SensitivityScore sensitivity_score = 2;
4918
+ }
4919
+ }
4920
+
4921
+ // A value of a tag.
4922
+ message TagValue {
4923
+ // The format of the tag value.
4924
+ oneof format {
4925
+ // The namespaced name for the tag value to attach to resources. Must be
4926
+ // in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for
4927
+ // example, "123456/environment/prod".
4928
+ string namespaced_value = 1;
4929
+ }
4930
+ }
4931
+
4932
+ // The tags to associate with different conditions.
4933
+ repeated TagCondition tag_conditions = 1;
4934
+
4935
+ // The profile generations for which the tag should be attached to
4936
+ // resources. If you attach a tag to only new profiles, then if the
4937
+ // sensitivity score of a profile subsequently changes, its tag doesn't
4938
+ // change. By default, this field includes only new profiles. To include
4939
+ // both new and updated profiles for tagging, this field should explicitly
4940
+ // include both `PROFILE_GENERATION_NEW` and `PROFILE_GENERATION_UPDATE`.
4941
+ repeated ProfileGeneration profile_generations_to_tag = 2;
4942
+
4943
+ // Whether applying a tag to a resource should lower the risk of the profile
4944
+ // for that resource. For example, in conjunction with an [IAM deny
4945
+ // policy](https://cloud.google.com/iam/docs/deny-overview), you can deny
4946
+ // all principals a permission if a tag value is present, mitigating the
4947
+ // risk of the resource. This also lowers the data risk of resources at the
4948
+ // lower levels of the resource hierarchy. For example, reducing the data
4949
+ // risk of a table data profile also reduces the data risk of the
4950
+ // constituent column data profiles.
4951
+ bool lower_data_risk_to_low = 3;
4952
+ }
4953
+
4791
4954
  // Type of action to execute when a profile is generated.
4792
4955
  oneof action {
4793
4956
  // Export data profiles into a provided location.
@@ -4795,6 +4958,9 @@ message DataProfileAction {
4795
4958
 
4796
4959
  // Publish a message into the Pub/Sub topic.
4797
4960
  PubSubNotification pub_sub_notification = 2;
4961
+
4962
+ // Tags the profiled resources with the specified tag values.
4963
+ TagResources tag_resources = 8;
4798
4964
  }
4799
4965
  }
4800
4966
 
@@ -4925,7 +5091,7 @@ message DataProfileLocation {
4925
5091
  // The ID of an organization to scan.
4926
5092
  int64 organization_id = 1;
4927
5093
 
4928
- // The ID of the Folder within an organization to scan.
5094
+ // The ID of the folder within an organization to scan.
4929
5095
  int64 folder_id = 2;
4930
5096
  }
4931
5097
  }
@@ -5040,6 +5206,10 @@ message DiscoveryTarget {
5040
5206
  // resource metadata and reports them as vulnerabilities to Security Command
5041
5207
  // Center. Only one target of this type is allowed.
5042
5208
  SecretsDiscoveryTarget secrets_target = 3;
5209
+
5210
+ // Cloud Storage target for Discovery. The first target to match a table
5211
+ // will be the one applied.
5212
+ CloudStorageDiscoveryTarget cloud_storage_target = 4;
5043
5213
  }
5044
5214
  }
5045
5215
 
@@ -5157,6 +5327,15 @@ message DiscoveryGenerationCadence {
5157
5327
 
5158
5328
  // Governs when to update data profiles when a table is modified.
5159
5329
  DiscoveryTableModifiedCadence table_modified_cadence = 2;
5330
+
5331
+ // Governs when to update data profiles when the inspection rules
5332
+ // defined by the `InspectTemplate` change.
5333
+ // If not set, changing the template will not cause a data profile to update.
5334
+ DiscoveryInspectTemplateModifiedCadence inspect_template_modified_cadence = 3;
5335
+
5336
+ // Frequency at which profiles should be updated, regardless of whether the
5337
+ // underlying resource has changed. Defaults to never.
5338
+ DataProfileUpdateFrequency refresh_frequency = 4;
5160
5339
  }
5161
5340
 
5162
5341
  // The cadence at which to update data profiles when a table is modified.
@@ -5208,6 +5387,14 @@ enum BigQuerySchemaModification {
5208
5387
  SCHEMA_REMOVED_COLUMNS = 2;
5209
5388
  }
5210
5389
 
5390
+ // The cadence at which to update data profiles when the inspection rules
5391
+ // defined by the `InspectTemplate` change.
5392
+ message DiscoveryInspectTemplateModifiedCadence {
5393
+ // How frequently data profiles can be updated when the template is modified.
5394
+ // Defaults to never.
5395
+ DataProfileUpdateFrequency frequency = 1;
5396
+ }
5397
+
5211
5398
  // Target used to match against for discovery with Cloud SQL tables.
5212
5399
  message CloudSqlDiscoveryTarget {
5213
5400
  // Required. The tables the discovery cadence applies to. The first target
@@ -5410,6 +5597,225 @@ message DiscoveryCloudSqlGenerationCadence {
5410
5597
  // Security Command Center.
5411
5598
  message SecretsDiscoveryTarget {}
5412
5599
 
5600
+ // Target used to match against for discovery with Cloud Storage buckets.
5601
+ message CloudStorageDiscoveryTarget {
5602
+ // Required. The buckets the generation_cadence applies to. The first target
5603
+ // with a matching filter will be the one to apply to a bucket.
5604
+ DiscoveryCloudStorageFilter filter = 1
5605
+ [(google.api.field_behavior) = REQUIRED];
5606
+
5607
+ // Optional. In addition to matching the filter, these conditions must be true
5608
+ // before a profile is generated.
5609
+ DiscoveryFileStoreConditions conditions = 4
5610
+ [(google.api.field_behavior) = OPTIONAL];
5611
+
5612
+ // How often and when to update profiles.
5613
+ oneof cadence {
5614
+ // Optional. How often and when to update profiles. New buckets that match
5615
+ // both the filter and conditions are scanned as quickly as possible
5616
+ // depending on system capacity.
5617
+ DiscoveryCloudStorageGenerationCadence generation_cadence = 2
5618
+ [(google.api.field_behavior) = OPTIONAL];
5619
+
5620
+ // Optional. Disable profiling for buckets that match this filter.
5621
+ Disabled disabled = 3 [(google.api.field_behavior) = OPTIONAL];
5622
+ }
5623
+ }
5624
+
5625
+ // Determines which buckets will have profiles generated within an organization
5626
+ // or project. Includes the ability to filter by regular expression patterns
5627
+ // on project ID and bucket name.
5628
+ message DiscoveryCloudStorageFilter {
5629
+ // Whether the filter applies to a specific set of buckets or all
5630
+ // other buckets within the location being profiled. The first
5631
+ // filter to match will be applied, regardless of the condition. If none is
5632
+ // set, will default to `others`.
5633
+ oneof filter {
5634
+ // Optional. A specific set of buckets for this filter to apply to.
5635
+ FileStoreCollection collection = 1 [(google.api.field_behavior) = OPTIONAL];
5636
+
5637
+ // Optional. The bucket to scan. Targets including this can only include one
5638
+ // target (the target with this bucket). This enables profiling the contents
5639
+ // of a single bucket, while the other options allow for easy profiling of
5640
+ // many bucets within a project or an organization.
5641
+ CloudStorageResourceReference cloud_storage_resource_reference = 2
5642
+ [(google.api.field_behavior) = OPTIONAL];
5643
+
5644
+ // Optional. Catch-all. This should always be the last target in the list
5645
+ // because anything above it will apply first. Should only appear once in a
5646
+ // configuration. If none is specified, a default one will be added
5647
+ // automatically.
5648
+ AllOtherResources others = 100 [(google.api.field_behavior) = OPTIONAL];
5649
+ }
5650
+ }
5651
+
5652
+ // Match file stores (e.g. buckets) using regex filters.
5653
+ message FileStoreCollection {
5654
+ // The first filter containing a pattern that matches a file store will
5655
+ // be used.
5656
+ oneof pattern {
5657
+ // Optional. A collection of regular expressions to match a file store
5658
+ // against.
5659
+ FileStoreRegexes include_regexes = 1
5660
+ [(google.api.field_behavior) = OPTIONAL];
5661
+ }
5662
+ }
5663
+
5664
+ // A collection of regular expressions to determine what file store to match
5665
+ // against.
5666
+ message FileStoreRegexes {
5667
+ // Required. The group of regular expression patterns to match against one or
5668
+ // more file stores. Maximum of 100 entries. The sum of all regular
5669
+ // expression's length can't exceed 10 KiB.
5670
+ repeated FileStoreRegex patterns = 1 [(google.api.field_behavior) = REQUIRED];
5671
+ }
5672
+
5673
+ // A pattern to match against one or more file stores.
5674
+ message FileStoreRegex {
5675
+ // The type of resource regex to use.
5676
+ oneof resource_regex {
5677
+ // Optional. Regex for Cloud Storage.
5678
+ CloudStorageRegex cloud_storage_regex = 1
5679
+ [(google.api.field_behavior) = OPTIONAL];
5680
+ }
5681
+ }
5682
+
5683
+ // A pattern to match against one or more file stores. At least one
5684
+ // pattern must be specified. Regular expressions use RE2
5685
+ // [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found
5686
+ // under the google/re2 repository on GitHub.
5687
+ message CloudStorageRegex {
5688
+ // Optional. For organizations, if unset, will match all projects.
5689
+ string project_id_regex = 1 [(google.api.field_behavior) = OPTIONAL];
5690
+
5691
+ // Optional. Regex to test the bucket name against. If empty, all buckets
5692
+ // match. Example: "marketing2021" or "(marketing)\d{4}" will both match the
5693
+ // bucket gs://marketing2021
5694
+ string bucket_name_regex = 2 [(google.api.field_behavior) = OPTIONAL];
5695
+ }
5696
+
5697
+ // Identifies a single Cloud Storage bucket.
5698
+ message CloudStorageResourceReference {
5699
+ // Required. The bucket to scan.
5700
+ string bucket_name = 1 [(google.api.field_behavior) = REQUIRED];
5701
+
5702
+ // Required. If within a project-level config, then this must match the
5703
+ // config's project id.
5704
+ string project_id = 2 [(google.api.field_behavior) = REQUIRED];
5705
+ }
5706
+
5707
+ // How often existing buckets should have their profiles refreshed.
5708
+ // New buckets are scanned as quickly as possible depending on system
5709
+ // capacity.
5710
+ message DiscoveryCloudStorageGenerationCadence {
5711
+ // Optional. Data changes in Cloud Storage can't trigger reprofiling. If you
5712
+ // set this field, profiles are refreshed at this frequency regardless of
5713
+ // whether the underlying buckets have changed. Defaults to never.
5714
+ DataProfileUpdateFrequency refresh_frequency = 1
5715
+ [(google.api.field_behavior) = OPTIONAL];
5716
+
5717
+ // Optional. Governs when to update data profiles when the inspection rules
5718
+ // defined by the `InspectTemplate` change.
5719
+ // If not set, changing the template will not cause a data profile to update.
5720
+ DiscoveryInspectTemplateModifiedCadence inspect_template_modified_cadence = 2
5721
+ [(google.api.field_behavior) = OPTIONAL];
5722
+ }
5723
+
5724
+ // Requirements that must be true before a Cloud Storage bucket or object is
5725
+ // scanned in discovery for the first time. There is an AND relationship between
5726
+ // the top-level attributes.
5727
+ message DiscoveryCloudStorageConditions {
5728
+ // The attribute of an object. See
5729
+ // https://cloud.google.com/storage/docs/storage-classes for more information
5730
+ // on storage classes.
5731
+ enum CloudStorageObjectAttribute {
5732
+ // Unused.
5733
+ CLOUD_STORAGE_OBJECT_ATTRIBUTE_UNSPECIFIED = 0;
5734
+
5735
+ // Scan objects regardless of the attribute.
5736
+ ALL_SUPPORTED_OBJECTS = 1;
5737
+
5738
+ // Scan objects with the standard storage class.
5739
+ STANDARD = 2;
5740
+
5741
+ // Scan objects with the nearline storage class. This will incur retrieval
5742
+ // fees.
5743
+ NEARLINE = 3;
5744
+
5745
+ // Scan objects with the coldline storage class. This will incur retrieval
5746
+ // fees.
5747
+ COLDLINE = 4;
5748
+
5749
+ // Scan objects with the archive storage class. This will incur retrieval
5750
+ // fees.
5751
+ ARCHIVE = 5;
5752
+
5753
+ // Scan objects with the regional storage class.
5754
+ REGIONAL = 6;
5755
+
5756
+ // Scan objects with the multi-regional storage class.
5757
+ MULTI_REGIONAL = 7;
5758
+
5759
+ // Scan objects with the dual-regional storage class. This will incur
5760
+ // retrieval fees.
5761
+ DURABLE_REDUCED_AVAILABILITY = 8;
5762
+ }
5763
+
5764
+ // The attribute of a bucket.
5765
+ enum CloudStorageBucketAttribute {
5766
+ // Unused.
5767
+ CLOUD_STORAGE_BUCKET_ATTRIBUTE_UNSPECIFIED = 0;
5768
+
5769
+ // Scan buckets regardless of the attribute.
5770
+ ALL_SUPPORTED_BUCKETS = 1;
5771
+
5772
+ // Buckets with autoclass disabled
5773
+ // (https://cloud.google.com/storage/docs/autoclass). Only one of
5774
+ // AUTOCLASS_DISABLED or AUTOCLASS_ENABLED should be set.
5775
+ AUTOCLASS_DISABLED = 2;
5776
+
5777
+ // Buckets with autoclass enabled
5778
+ // (https://cloud.google.com/storage/docs/autoclass). Only one of
5779
+ // AUTOCLASS_DISABLED or AUTOCLASS_ENABLED should be set. Scanning
5780
+ // Autoclass-enabled buckets can affect object storage classes.
5781
+ AUTOCLASS_ENABLED = 3;
5782
+ }
5783
+
5784
+ // Required. Only objects with the specified attributes will be scanned. If an
5785
+ // object has one of the specified attributes but is inside an excluded
5786
+ // bucket, it will not be scanned. Defaults to [ALL_SUPPORTED_OBJECTS]. A
5787
+ // profile will be created even if no objects match the
5788
+ // included_object_attributes.
5789
+ repeated CloudStorageObjectAttribute included_object_attributes = 1
5790
+ [(google.api.field_behavior) = REQUIRED];
5791
+
5792
+ // Required. Only objects with the specified attributes will be scanned.
5793
+ // Defaults to [ALL_SUPPORTED_BUCKETS] if unset.
5794
+ repeated CloudStorageBucketAttribute included_bucket_attributes = 2
5795
+ [(google.api.field_behavior) = REQUIRED];
5796
+ }
5797
+
5798
+ // Requirements that must be true before a file store is scanned in discovery
5799
+ // for the first time. There is an AND relationship between the top-level
5800
+ // attributes.
5801
+ message DiscoveryFileStoreConditions {
5802
+ // Optional. File store must have been created after this date. Used to avoid
5803
+ // backfilling.
5804
+ google.protobuf.Timestamp created_after = 1
5805
+ [(google.api.field_behavior) = OPTIONAL];
5806
+
5807
+ // Optional. Minimum age a file store must have. If set, the value must be 1
5808
+ // hour or greater.
5809
+ google.protobuf.Duration min_age = 2 [(google.api.field_behavior) = OPTIONAL];
5810
+
5811
+ // File store specific conditions.
5812
+ oneof conditions {
5813
+ // Optional. Cloud Storage conditions.
5814
+ DiscoveryCloudStorageConditions cloud_storage_conditions = 3
5815
+ [(google.api.field_behavior) = OPTIONAL];
5816
+ }
5817
+ }
5818
+
5413
5819
  // The location to begin a discovery scan. Denotes an organization ID or folder
5414
5820
  // ID within an organization.
5415
5821
  message DiscoveryStartingLocation {
@@ -5418,11 +5824,14 @@ message DiscoveryStartingLocation {
5418
5824
  // The ID of an organization to scan.
5419
5825
  int64 organization_id = 1;
5420
5826
 
5421
- // The ID of the Folder within an organization to scan.
5827
+ // The ID of the folder within an organization to be scanned.
5422
5828
  int64 folder_id = 2;
5423
5829
  }
5424
5830
  }
5425
5831
 
5832
+ // Match discovery resources not covered by any other filter.
5833
+ message AllOtherResources {}
5834
+
5426
5835
  // Combines all of the information about a DLP job.
5427
5836
  message DlpJob {
5428
5837
  option (google.api.resource) = {
@@ -5517,10 +5926,10 @@ message ListDlpJobsRequest {
5517
5926
  // processing
5518
5927
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
5519
5928
  //
5520
- // + Projects scope, location specified:<br/>
5521
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
5522
- // + Projects scope, no location specified (defaults to global):<br/>
5523
- // `projects/`<var>PROJECT_ID</var>
5929
+ // + Projects scope, location specified:
5930
+ // `projects/{project_id}/locations/{location_id}`
5931
+ // + Projects scope, no location specified (defaults to global):
5932
+ // `projects/{project_id}`
5524
5933
  //
5525
5934
  // The following example `parent` string specifies a parent project with the
5526
5935
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -5573,7 +5982,7 @@ message ListDlpJobsRequest {
5573
5982
  // The type of job. Defaults to `DlpJobType.INSPECT`
5574
5983
  DlpJobType type = 5;
5575
5984
 
5576
- // Comma separated list of fields to order by,
5985
+ // Comma-separated list of fields to order by,
5577
5986
  // followed by `asc` or `desc` postfix. This list is case insensitive. The
5578
5987
  // default sorting order is ascending. Redundant space characters are
5579
5988
  // insignificant.
@@ -5636,14 +6045,14 @@ message CreateDeidentifyTemplateRequest {
5636
6045
  // (project or organization) and whether you have [specified a processing
5637
6046
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
5638
6047
  //
5639
- // + Projects scope, location specified:<br/>
5640
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
5641
- // + Projects scope, no location specified (defaults to global):<br/>
5642
- // `projects/`<var>PROJECT_ID</var>
5643
- // + Organizations scope, location specified:<br/>
5644
- // `organizations/`<var>ORG_ID</var>`/locations/`<var>LOCATION_ID</var>
5645
- // + Organizations scope, no location specified (defaults to global):<br/>
5646
- // `organizations/`<var>ORG_ID</var>
6048
+ // + Projects scope, location specified:
6049
+ // `projects/{project_id}/locations/{location_id}`
6050
+ // + Projects scope, no location specified (defaults to global):
6051
+ // `projects/{project_id}`
6052
+ // + Organizations scope, location specified:
6053
+ // `organizations/{org_id}/locations/{location_id}`
6054
+ // + Organizations scope, no location specified (defaults to global):
6055
+ // `organizations/{org_id}`
5647
6056
  //
5648
6057
  // The following example `parent` string specifies a parent project with the
5649
6058
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -5712,14 +6121,14 @@ message ListDeidentifyTemplatesRequest {
5712
6121
  // (project or organization) and whether you have [specified a processing
5713
6122
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
5714
6123
  //
5715
- // + Projects scope, location specified:<br/>
5716
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
5717
- // + Projects scope, no location specified (defaults to global):<br/>
5718
- // `projects/`<var>PROJECT_ID</var>
5719
- // + Organizations scope, location specified:<br/>
5720
- // `organizations/`<var>ORG_ID</var>`/locations/`<var>LOCATION_ID</var>
5721
- // + Organizations scope, no location specified (defaults to global):<br/>
5722
- // `organizations/`<var>ORG_ID</var>
6124
+ // + Projects scope, location specified:
6125
+ // `projects/{project_id}/locations/{location_id}`
6126
+ // + Projects scope, no location specified (defaults to global):
6127
+ // `projects/{project_id}`
6128
+ // + Organizations scope, location specified:
6129
+ // `organizations/{org_id}/locations/{location_id}`
6130
+ // + Organizations scope, no location specified (defaults to global):
6131
+ // `organizations/{org_id}`
5723
6132
  //
5724
6133
  // The following example `parent` string specifies a parent project with the
5725
6134
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -5741,7 +6150,7 @@ message ListDeidentifyTemplatesRequest {
5741
6150
  // returns a page of max size 100.
5742
6151
  int32 page_size = 3;
5743
6152
 
5744
- // Comma separated list of fields to order by,
6153
+ // Comma-separated list of fields to order by,
5745
6154
  // followed by `asc` or `desc` postfix. This list is case insensitive. The
5746
6155
  // default sorting order is ascending. Redundant space characters are
5747
6156
  // insignificant.
@@ -5909,14 +6318,14 @@ message CreateStoredInfoTypeRequest {
5909
6318
  // (project or organization) and whether you have [specified a processing
5910
6319
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
5911
6320
  //
5912
- // + Projects scope, location specified:<br/>
5913
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
5914
- // + Projects scope, no location specified (defaults to global):<br/>
5915
- // `projects/`<var>PROJECT_ID</var>
5916
- // + Organizations scope, location specified:<br/>
5917
- // `organizations/`<var>ORG_ID</var>`/locations/`<var>LOCATION_ID</var>
5918
- // + Organizations scope, no location specified (defaults to global):<br/>
5919
- // `organizations/`<var>ORG_ID</var>
6321
+ // + Projects scope, location specified:
6322
+ // `projects/{project_id}/locations/{location_id}`
6323
+ // + Projects scope, no location specified (defaults to global):
6324
+ // `projects/{project_id}`
6325
+ // + Organizations scope, location specified:
6326
+ // `organizations/{org_id}/locations/{location_id}`
6327
+ // + Organizations scope, no location specified (defaults to global):
6328
+ // `organizations/{org_id}`
5920
6329
  //
5921
6330
  // The following example `parent` string specifies a parent project with the
5922
6331
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -5985,10 +6394,10 @@ message ListStoredInfoTypesRequest {
5985
6394
  // (project or organization) and whether you have [specified a processing
5986
6395
  // location](https://cloud.google.com/sensitive-data-protection/docs/specifying-location):
5987
6396
  //
5988
- // + Projects scope, location specified:<br/>
5989
- // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
5990
- // + Projects scope, no location specified (defaults to global):<br/>
5991
- // `projects/`<var>PROJECT_ID</var>
6397
+ // + Projects scope, location specified:
6398
+ // `projects/{project_id}/locations/{location_id}`
6399
+ // + Projects scope, no location specified (defaults to global):
6400
+ // `projects/{project_id}`
5992
6401
  //
5993
6402
  // The following example `parent` string specifies a parent project with the
5994
6403
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -6010,7 +6419,7 @@ message ListStoredInfoTypesRequest {
6010
6419
  // returns a page of max size 100.
6011
6420
  int32 page_size = 3;
6012
6421
 
6013
- // Comma separated list of fields to order by,
6422
+ // Comma-separated list of fields to order by,
6014
6423
  // followed by `asc` or `desc` postfix. This list is case insensitive. The
6015
6424
  // default sorting order is ascending. Redundant space characters are
6016
6425
  // insignificant.
@@ -6126,6 +6535,7 @@ message HybridFindingDetails {
6126
6535
  // No more than 10 labels can be associated with a given finding.
6127
6536
  //
6128
6537
  // Examples:
6538
+ //
6129
6539
  // * `"environment" : "production"`
6130
6540
  // * `"pipeline" : "etl"`
6131
6541
  map<string, string> labels = 5;
@@ -6273,7 +6683,7 @@ message ListProjectDataProfilesRequest {
6273
6683
  // returns a page of max size 100.
6274
6684
  int32 page_size = 3;
6275
6685
 
6276
- // Comma separated list of fields to order by, followed by `asc` or `desc`
6686
+ // Comma-separated list of fields to order by, followed by `asc` or `desc`
6277
6687
  // postfix. This list is case insensitive. The default sorting order is
6278
6688
  // ascending. Redundant space characters are insignificant. Only one order
6279
6689
  // field at a time is allowed.
@@ -6343,7 +6753,7 @@ message ListTableDataProfilesRequest {
6343
6753
  // returns a page of max size 100.
6344
6754
  int32 page_size = 3;
6345
6755
 
6346
- // Comma separated list of fields to order by, followed by `asc` or `desc`
6756
+ // Comma-separated list of fields to order by, followed by `asc` or `desc`
6347
6757
  // postfix. This list is case insensitive. The default sorting order is
6348
6758
  // ascending. Redundant space characters are insignificant. Only one order
6349
6759
  // field at a time is allowed.
@@ -6424,12 +6834,13 @@ message ListColumnDataProfilesRequest {
6424
6834
  // returns a page of max size 100.
6425
6835
  int32 page_size = 3;
6426
6836
 
6427
- // Comma separated list of fields to order by, followed by `asc` or `desc`
6837
+ // Comma-separated list of fields to order by, followed by `asc` or `desc`
6428
6838
  // postfix. This list is case insensitive. The default sorting order is
6429
6839
  // ascending. Redundant space characters are insignificant. Only one order
6430
6840
  // field at a time is allowed.
6431
6841
  //
6432
6842
  // Examples:
6843
+ //
6433
6844
  // * `project_id asc`
6434
6845
  // * `table_id`
6435
6846
  // * `sensitivity_level desc`
@@ -6500,6 +6911,9 @@ message DataRiskLevel {
6500
6911
  // data found.
6501
6912
  RISK_LOW = 10;
6502
6913
 
6914
+ // Unable to determine risk.
6915
+ RISK_UNKNOWN = 12;
6916
+
6503
6917
  // Medium risk - Sensitive data may be present but additional access or fine
6504
6918
  // grain access restrictions appear to be present. Consider limiting
6505
6919
  // access even further or transform data to mask.
@@ -6541,6 +6955,12 @@ message ProjectDataProfile {
6541
6955
 
6542
6956
  // Success or error status of the last attempt to profile the project.
6543
6957
  ProfileStatus profile_status = 7;
6958
+
6959
+ // The number of table data profiles generated for this project.
6960
+ int64 table_data_profile_count = 9;
6961
+
6962
+ // The number of file store data profiles generated for this project.
6963
+ int64 file_store_data_profile_count = 10;
6544
6964
  }
6545
6965
 
6546
6966
  // How broadly the data in the resource has been shared. New items may be added
@@ -6554,7 +6974,7 @@ enum ResourceVisibility {
6554
6974
 
6555
6975
  // May contain public items.
6556
6976
  // For example, if a Cloud Storage bucket has uniform bucket level access
6557
- // disabled, some objects inside it may be public.
6977
+ // disabled, some objects inside it may be public, but none are known yet.
6558
6978
  RESOURCE_VISIBILITY_INCONCLUSIVE = 15;
6559
6979
 
6560
6980
  // Visible only to specific users.
@@ -6613,7 +7033,7 @@ message TableDataProfile {
6613
7033
  // The resource type that was profiled.
6614
7034
  DataSourceType data_source_type = 36;
6615
7035
 
6616
- // The resource name to the project data profile for this table.
7036
+ // The resource name of the project data profile for this table.
6617
7037
  string project_data_profile = 2;
6618
7038
 
6619
7039
  // The Google Cloud project ID that owns the resource.
@@ -6936,6 +7356,164 @@ message ColumnDataProfile {
6936
7356
  ColumnPolicyState policy_state = 15;
6937
7357
  }
6938
7358
 
7359
+ // The profile for a file store.
7360
+ //
7361
+ // * Cloud Storage: maps 1:1 with a bucket.
7362
+ message FileStoreDataProfile {
7363
+ option (google.api.resource) = {
7364
+ type: "dlp.googleapis.com/FileStoreDataProfile"
7365
+ pattern: "organizations/{organization}/locations/{location}/fileStoreDataProfiles/{file_store_data_profile}"
7366
+ pattern: "projects/{project}/locations/{location}/fileStoreDataProfiles/{file_store_data_profile}"
7367
+ };
7368
+
7369
+ // Possible states of a profile. New items may be added.
7370
+ enum State {
7371
+ // Unused.
7372
+ STATE_UNSPECIFIED = 0;
7373
+
7374
+ // The profile is currently running. Once a profile has finished it will
7375
+ // transition to DONE.
7376
+ RUNNING = 1;
7377
+
7378
+ // The profile is no longer generating.
7379
+ // If profile_status.status.code is 0, the profile succeeded, otherwise, it
7380
+ // failed.
7381
+ DONE = 2;
7382
+ }
7383
+
7384
+ // The name of the profile.
7385
+ string name = 1;
7386
+
7387
+ // The resource type that was profiled.
7388
+ DataSourceType data_source_type = 2;
7389
+
7390
+ // The resource name of the project data profile for this file store.
7391
+ string project_data_profile = 3;
7392
+
7393
+ // The Google Cloud project ID that owns the resource.
7394
+ string project_id = 4;
7395
+
7396
+ // The location of the file store.
7397
+ //
7398
+ // * Cloud Storage:
7399
+ // https://cloud.google.com/storage/docs/locations#available-locations
7400
+ string file_store_location = 5;
7401
+
7402
+ // For resources that have multiple storage locations, these are those
7403
+ // regions. For Cloud Storage this is the list of regions chosen for
7404
+ // dual-region storage. `file_store_location` will normally be the
7405
+ // corresponding multi-region for the list of individual locations. The first
7406
+ // region is always picked as the processing and storage location for the data
7407
+ // profile.
7408
+ repeated string data_storage_locations = 19;
7409
+
7410
+ // The location type of the bucket (region, dual-region, multi-region, etc).
7411
+ // If dual-region, expect data_storage_locations to be populated.
7412
+ string location_type = 20;
7413
+
7414
+ // The file store path.
7415
+ //
7416
+ // * Cloud Storage: `gs://{bucket}`
7417
+ string file_store_path = 6;
7418
+
7419
+ // The resource name of the resource profiled.
7420
+ // https://cloud.google.com/apis/design/resource_names#full_resource_name
7421
+ string full_resource = 24;
7422
+
7423
+ // The snapshot of the configurations used to generate the profile.
7424
+ DataProfileConfigSnapshot config_snapshot = 7;
7425
+
7426
+ // Success or error status from the most recent profile generation attempt.
7427
+ // May be empty if the profile is still being generated.
7428
+ ProfileStatus profile_status = 8;
7429
+
7430
+ // State of a profile.
7431
+ State state = 9;
7432
+
7433
+ // The last time the profile was generated.
7434
+ google.protobuf.Timestamp profile_last_generated = 10;
7435
+
7436
+ // How broadly a resource has been shared.
7437
+ ResourceVisibility resource_visibility = 11;
7438
+
7439
+ // The sensitivity score of this resource.
7440
+ SensitivityScore sensitivity_score = 12;
7441
+
7442
+ // The data risk level of this resource.
7443
+ DataRiskLevel data_risk_level = 13;
7444
+
7445
+ // The time the file store was first created.
7446
+ google.protobuf.Timestamp create_time = 14;
7447
+
7448
+ // The time the file store was last modified.
7449
+ google.protobuf.Timestamp last_modified_time = 15;
7450
+
7451
+ // FileClusterSummary per each cluster.
7452
+ repeated FileClusterSummary file_cluster_summaries = 16;
7453
+
7454
+ // Attributes of the resource being profiled.
7455
+ // Currently used attributes:
7456
+ //
7457
+ // * customer_managed_encryption: boolean
7458
+ // - true: the resource is encrypted with a customer-managed key.
7459
+ // - false: the resource is encrypted with a provider-managed key.
7460
+ map<string, Value> resource_attributes = 17;
7461
+
7462
+ // The labels applied to the resource at the time the profile was generated.
7463
+ map<string, string> resource_labels = 18;
7464
+
7465
+ // InfoTypes detected in this file store.
7466
+ repeated FileStoreInfoTypeSummary file_store_info_type_summaries = 21;
7467
+
7468
+ // The file store does not have any files.
7469
+ bool file_store_is_empty = 23;
7470
+ }
7471
+
7472
+ // Information regarding the discovered InfoType.
7473
+ message FileStoreInfoTypeSummary {
7474
+ // The InfoType seen.
7475
+ InfoType info_type = 1;
7476
+ }
7477
+
7478
+ // Information regarding the discovered file extension.
7479
+ message FileExtensionInfo {
7480
+ // The file extension if set. (aka .pdf, .jpg, .txt)
7481
+ string file_extension = 1;
7482
+ }
7483
+
7484
+ // The file cluster summary.
7485
+ message FileClusterSummary {
7486
+ // The file cluster type.
7487
+ FileClusterType file_cluster_type = 1;
7488
+
7489
+ // InfoTypes detected in this cluster.
7490
+ repeated FileStoreInfoTypeSummary file_store_info_type_summaries = 2;
7491
+
7492
+ // The sensitivity score of this cluster. The score will be SENSITIVITY_LOW
7493
+ // if nothing has been scanned.
7494
+ SensitivityScore sensitivity_score = 3;
7495
+
7496
+ // The data risk level of this cluster. RISK_LOW if nothing has been
7497
+ // scanned.
7498
+ DataRiskLevel data_risk_level = 4;
7499
+
7500
+ // A list of errors detected while scanning this cluster. The list is
7501
+ // truncated to 10 per cluster.
7502
+ repeated Error errors = 6;
7503
+
7504
+ // A sample of file types scanned in this cluster. Empty if no files were
7505
+ // scanned.
7506
+ repeated FileExtensionInfo file_extensions_scanned = 7;
7507
+
7508
+ // A sample of file types seen in this cluster. Empty if no files were seen.
7509
+ repeated FileExtensionInfo file_extensions_seen = 8;
7510
+
7511
+ // True if no files exist in this cluster. If the bucket had more files than
7512
+ // could be listed, this will be false even if no files for this cluster
7513
+ // were seen and file_extensions_seen is empty.
7514
+ bool no_files_exist = 9;
7515
+ }
7516
+
6939
7517
  // Request to get a project data profile.
6940
7518
  message GetProjectDataProfileRequest {
6941
7519
  // Required. Resource name, for example
@@ -6948,6 +7526,112 @@ message GetProjectDataProfileRequest {
6948
7526
  ];
6949
7527
  }
6950
7528
 
7529
+ // Request to get a file store data profile.
7530
+ message GetFileStoreDataProfileRequest {
7531
+ // Required. Resource name, for example
7532
+ // `organizations/12345/locations/us/fileStoreDataProfiles/53234423`.
7533
+ string name = 1 [
7534
+ (google.api.field_behavior) = REQUIRED,
7535
+ (google.api.resource_reference) = {
7536
+ type: "dlp.googleapis.com/ProjectDataProfile"
7537
+ }
7538
+ ];
7539
+ }
7540
+
7541
+ // Request to list the file store profiles generated for a given organization or
7542
+ // project.
7543
+ message ListFileStoreDataProfilesRequest {
7544
+ // Required. Resource name of the organization or project, for
7545
+ // example `organizations/433245324/locations/europe` or
7546
+ // `projects/project-id/locations/asia`.
7547
+ string parent = 1 [
7548
+ (google.api.field_behavior) = REQUIRED,
7549
+ (google.api.resource_reference) = {
7550
+ child_type: "dlp.googleapis.com/FileStoreDataProfile"
7551
+ }
7552
+ ];
7553
+
7554
+ // Optional. Page token to continue retrieval.
7555
+ string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
7556
+
7557
+ // Optional. Size of the page. This value can be limited by the server. If
7558
+ // zero, server returns a page of max size 100.
7559
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
7560
+
7561
+ // Optional. Comma-separated list of fields to order by, followed by `asc` or
7562
+ // `desc` postfix. This list is case insensitive. The default sorting order is
7563
+ // ascending. Redundant space characters are insignificant. Only one order
7564
+ // field at a time is allowed.
7565
+ //
7566
+ // Examples:
7567
+ //
7568
+ // * `project_id asc`
7569
+ // * `name`
7570
+ // * `sensitivity_level desc`
7571
+ //
7572
+ // Supported fields are:
7573
+ //
7574
+ // - `project_id`: The Google Cloud project ID.
7575
+ // - `sensitivity_level`: How sensitive the data in a table is, at most.
7576
+ // - `data_risk_level`: How much risk is associated with this data.
7577
+ // - `profile_last_generated`: When the profile was last updated in epoch
7578
+ // seconds.
7579
+ // - `last_modified`: The last time the resource was modified.
7580
+ // - `resource_visibility`: Visibility restriction for this resource.
7581
+ // - `name`: The name of the profile.
7582
+ // - `create_time`: The time the file store was first created.
7583
+ string order_by = 4 [(google.api.field_behavior) = OPTIONAL];
7584
+
7585
+ // Optional. Allows filtering.
7586
+ //
7587
+ // Supported syntax:
7588
+ //
7589
+ // * Filter expressions are made up of one or more restrictions.
7590
+ // * Restrictions can be combined by `AND` or `OR` logical operators. A
7591
+ // sequence of restrictions implicitly uses `AND`.
7592
+ // * A restriction has the form of `{field} {operator} {value}`.
7593
+ // * Supported fields/values:
7594
+ // - `project_id` - The Google Cloud project ID.
7595
+ // - `file_store_path` - The path like "gs://bucket".
7596
+ // - `sensitivity_level` - HIGH|MODERATE|LOW
7597
+ // - `data_risk_level` - HIGH|MODERATE|LOW
7598
+ // - `resource_visibility`: PUBLIC|RESTRICTED
7599
+ // - `status_code` - an RPC status code as defined in
7600
+ // https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
7601
+ // * The operator must be `=` or `!=`.
7602
+ //
7603
+ // Examples:
7604
+ //
7605
+ // * `project_id = 12345 AND status_code = 1`
7606
+ // * `project_id = 12345 AND sensitivity_level = HIGH`
7607
+ // * `project_id = 12345 AND resource_visibility = PUBLIC`
7608
+ // * `file_store_path = "gs://mybucket"`
7609
+ //
7610
+ // The length of this field should be no more than 500 characters.
7611
+ string filter = 5 [(google.api.field_behavior) = OPTIONAL];
7612
+ }
7613
+
7614
+ // List of file store data profiles generated for a given organization or
7615
+ // project.
7616
+ message ListFileStoreDataProfilesResponse {
7617
+ // List of data profiles.
7618
+ repeated FileStoreDataProfile file_store_data_profiles = 1;
7619
+
7620
+ // The next page token.
7621
+ string next_page_token = 2;
7622
+ }
7623
+
7624
+ // Request message for DeleteFileStoreProfile.
7625
+ message DeleteFileStoreDataProfileRequest {
7626
+ // Required. Resource name of the file store data profile.
7627
+ string name = 1 [
7628
+ (google.api.field_behavior) = REQUIRED,
7629
+ (google.api.resource_reference) = {
7630
+ type: "dlp.googleapis.com/FileStoreDataProfile"
7631
+ }
7632
+ ];
7633
+ }
7634
+
6951
7635
  // Request to get a table data profile.
6952
7636
  message GetTableDataProfileRequest {
6953
7637
  // Required. Resource name, for example
@@ -7032,14 +7716,26 @@ message DataProfilePubSubMessage {
7032
7716
  // `full_resource` will be populated.
7033
7717
  TableDataProfile profile = 1;
7034
7718
 
7719
+ // If `DetailLevel` is `FILE_STORE_PROFILE` this will be fully populated.
7720
+ // Otherwise, if `DetailLevel` is `RESOURCE_NAME`, then only `name` and
7721
+ // `file_store_path` will be populated.
7722
+ FileStoreDataProfile file_store_profile = 3;
7723
+
7035
7724
  // The event that caused the Pub/Sub message to be sent.
7036
7725
  DataProfileAction.EventType event = 2;
7037
7726
  }
7038
7727
 
7039
7728
  // Request message for CreateConnection.
7040
7729
  message CreateConnectionRequest {
7041
- // Required. Parent resource name in the format:
7042
- // `projects/{project}/locations/{location}`.
7730
+ // Required. Parent resource name.
7731
+ //
7732
+ // The format of this value varies depending on the scope of the request
7733
+ // (project or organization):
7734
+ //
7735
+ // + Projects scope:
7736
+ // `projects/{project_id}/locations/{location_id}`
7737
+ // + Organizations scope:
7738
+ // `organizations/{org_id}/locations/{location_id}`
7043
7739
  string parent = 1 [
7044
7740
  (google.api.field_behavior) = REQUIRED,
7045
7741
  (google.api.resource_reference) = {
@@ -7063,8 +7759,9 @@ message GetConnectionRequest {
7063
7759
 
7064
7760
  // Request message for ListConnections.
7065
7761
  message ListConnectionsRequest {
7066
- // Required. Parent name, for example:
7067
- // `projects/project-id/locations/global`.
7762
+ // Required. Resource name of the organization or project, for
7763
+ // example, `organizations/433245324/locations/europe` or
7764
+ // `projects/project-id/locations/asia`.
7068
7765
  string parent = 1 [
7069
7766
  (google.api.field_behavior) = REQUIRED,
7070
7767
  (google.api.resource_reference) = {
@@ -7085,8 +7782,9 @@ message ListConnectionsRequest {
7085
7782
 
7086
7783
  // Request message for SearchConnections.
7087
7784
  message SearchConnectionsRequest {
7088
- // Required. Parent name, typically an organization, without location.
7089
- // For example: `organizations/12345678`.
7785
+ // Required. Resource name of the organization or project with a wildcard
7786
+ // location, for example, `organizations/433245324/locations/-` or
7787
+ // `projects/project-id/locations/-`.
7090
7788
  string parent = 1 [
7091
7789
  (google.api.field_behavior) = REQUIRED,
7092
7790
  (google.api.resource_reference) = {
@@ -7160,6 +7858,7 @@ message Connection {
7160
7858
  option (google.api.resource) = {
7161
7859
  type: "dlp.googleapis.com/Connection"
7162
7860
  pattern: "projects/{project}/locations/{location}/connections/{connection}"
7861
+ pattern: "organizations/{organization}/locations/{location}/connections/{connection}"
7163
7862
  };
7164
7863
 
7165
7864
  // Output only. Name of the connection:
@@ -7288,3 +7987,46 @@ message DataSourceType {
7288
7987
  // Current values: google/bigquery/table, google/project
7289
7988
  string data_source = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
7290
7989
  }
7990
+
7991
+ // Message used to identify file cluster type being profiled.
7992
+ message FileClusterType {
7993
+ // Cluster type. Each cluster corresponds to a set of file types.
7994
+ // Over time, new types may be added and files may move between clusters.
7995
+ enum Cluster {
7996
+ // Unused.
7997
+ CLUSTER_UNSPECIFIED = 0;
7998
+
7999
+ // Unsupported files.
8000
+ CLUSTER_UNKNOWN = 1;
8001
+
8002
+ // Plain text.
8003
+ CLUSTER_TEXT = 2;
8004
+
8005
+ // Structured data like CSV, TSV etc.
8006
+ CLUSTER_STRUCTURED_DATA = 3;
8007
+
8008
+ // Source code.
8009
+ CLUSTER_SOURCE_CODE = 4;
8010
+
8011
+ // Rich document like docx, xlsx etc.
8012
+ CLUSTER_RICH_DOCUMENT = 5;
8013
+
8014
+ // Images like jpeg, bmp.
8015
+ CLUSTER_IMAGE = 6;
8016
+
8017
+ // Archives and containers like .zip, .tar etc.
8018
+ CLUSTER_ARCHIVE = 7;
8019
+
8020
+ // Multimedia like .mp4, .avi etc.
8021
+ CLUSTER_MULTIMEDIA = 8;
8022
+
8023
+ // Executable files like .exe, .class, .apk etc.
8024
+ CLUSTER_EXECUTABLE = 9;
8025
+ }
8026
+
8027
+ // File cluster type.
8028
+ oneof file_cluster_type {
8029
+ // Cluster type.
8030
+ Cluster cluster = 1;
8031
+ }
8032
+ }