xref: /aosp_15_r20/external/googleapis/google/cloud/dataplex/v1/data_taxonomy.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.dataplex.v1;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/cloud/dataplex/v1/security.proto";
24import "google/cloud/dataplex/v1/service.proto";
25import "google/longrunning/operations.proto";
26import "google/protobuf/empty.proto";
27import "google/protobuf/field_mask.proto";
28import "google/protobuf/timestamp.proto";
29
30option go_package = "cloud.google.com/go/dataplex/apiv1/dataplexpb;dataplexpb";
31option java_multiple_files = true;
32option java_outer_classname = "DataTaxonomyProto";
33option java_package = "com.google.cloud.dataplex.v1";
34
35// DataTaxonomyService enables attribute-based governance. The resources
36// currently offered include DataTaxonomy and DataAttribute.
37service DataTaxonomyService {
38  option (google.api.default_host) = "dataplex.googleapis.com";
39  option (google.api.oauth_scopes) =
40      "https://www.googleapis.com/auth/cloud-platform";
41
42  // Create a DataTaxonomy resource.
43  rpc CreateDataTaxonomy(CreateDataTaxonomyRequest)
44      returns (google.longrunning.Operation) {
45    option (google.api.http) = {
46      post: "/v1/{parent=projects/*/locations/*}/dataTaxonomies"
47      body: "data_taxonomy"
48    };
49    option (google.api.method_signature) =
50        "parent,data_taxonomy,data_taxonomy_id";
51    option (google.longrunning.operation_info) = {
52      response_type: "DataTaxonomy"
53      metadata_type: "OperationMetadata"
54    };
55  }
56
57  // Updates a DataTaxonomy resource.
58  rpc UpdateDataTaxonomy(UpdateDataTaxonomyRequest)
59      returns (google.longrunning.Operation) {
60    option (google.api.http) = {
61      patch: "/v1/{data_taxonomy.name=projects/*/locations/*/dataTaxonomies/*}"
62      body: "data_taxonomy"
63    };
64    option (google.api.method_signature) = "data_taxonomy,update_mask";
65    option (google.longrunning.operation_info) = {
66      response_type: "DataTaxonomy"
67      metadata_type: "OperationMetadata"
68    };
69  }
70
71  // Deletes a DataTaxonomy resource. All attributes within the DataTaxonomy
72  // must be deleted before the DataTaxonomy can be deleted.
73  rpc DeleteDataTaxonomy(DeleteDataTaxonomyRequest)
74      returns (google.longrunning.Operation) {
75    option (google.api.http) = {
76      delete: "/v1/{name=projects/*/locations/*/dataTaxonomies/*}"
77    };
78    option (google.api.method_signature) = "name";
79    option (google.longrunning.operation_info) = {
80      response_type: "google.protobuf.Empty"
81      metadata_type: "OperationMetadata"
82    };
83  }
84
85  // Lists DataTaxonomy resources in a project and location.
86  rpc ListDataTaxonomies(ListDataTaxonomiesRequest)
87      returns (ListDataTaxonomiesResponse) {
88    option (google.api.http) = {
89      get: "/v1/{parent=projects/*/locations/*}/dataTaxonomies"
90    };
91    option (google.api.method_signature) = "parent";
92  }
93
94  // Retrieves a DataTaxonomy resource.
95  rpc GetDataTaxonomy(GetDataTaxonomyRequest) returns (DataTaxonomy) {
96    option (google.api.http) = {
97      get: "/v1/{name=projects/*/locations/*/dataTaxonomies/*}"
98    };
99    option (google.api.method_signature) = "name";
100  }
101
102  // Create a DataAttributeBinding resource.
103  rpc CreateDataAttributeBinding(CreateDataAttributeBindingRequest)
104      returns (google.longrunning.Operation) {
105    option (google.api.http) = {
106      post: "/v1/{parent=projects/*/locations/*}/dataAttributeBindings"
107      body: "data_attribute_binding"
108    };
109    option (google.api.method_signature) =
110        "parent,data_attribute_binding,data_attribute_binding_id";
111    option (google.longrunning.operation_info) = {
112      response_type: "DataAttributeBinding"
113      metadata_type: "OperationMetadata"
114    };
115  }
116
117  // Updates a DataAttributeBinding resource.
118  rpc UpdateDataAttributeBinding(UpdateDataAttributeBindingRequest)
119      returns (google.longrunning.Operation) {
120    option (google.api.http) = {
121      patch: "/v1/{data_attribute_binding.name=projects/*/locations/*/dataAttributeBindings/*}"
122      body: "data_attribute_binding"
123    };
124    option (google.api.method_signature) = "data_attribute_binding,update_mask";
125    option (google.longrunning.operation_info) = {
126      response_type: "DataAttributeBinding"
127      metadata_type: "OperationMetadata"
128    };
129  }
130
131  // Deletes a DataAttributeBinding resource. All attributes within the
132  // DataAttributeBinding must be deleted before the DataAttributeBinding can be
133  // deleted.
134  rpc DeleteDataAttributeBinding(DeleteDataAttributeBindingRequest)
135      returns (google.longrunning.Operation) {
136    option (google.api.http) = {
137      delete: "/v1/{name=projects/*/locations/*/dataAttributeBindings/*}"
138    };
139    option (google.api.method_signature) = "name";
140    option (google.longrunning.operation_info) = {
141      response_type: "google.protobuf.Empty"
142      metadata_type: "OperationMetadata"
143    };
144  }
145
146  // Lists DataAttributeBinding resources in a project and location.
147  rpc ListDataAttributeBindings(ListDataAttributeBindingsRequest)
148      returns (ListDataAttributeBindingsResponse) {
149    option (google.api.http) = {
150      get: "/v1/{parent=projects/*/locations/*}/dataAttributeBindings"
151    };
152    option (google.api.method_signature) = "parent";
153  }
154
155  // Retrieves a DataAttributeBinding resource.
156  rpc GetDataAttributeBinding(GetDataAttributeBindingRequest)
157      returns (DataAttributeBinding) {
158    option (google.api.http) = {
159      get: "/v1/{name=projects/*/locations/*/dataAttributeBindings/*}"
160    };
161    option (google.api.method_signature) = "name";
162  }
163
164  // Create a DataAttribute resource.
165  rpc CreateDataAttribute(CreateDataAttributeRequest)
166      returns (google.longrunning.Operation) {
167    option (google.api.http) = {
168      post: "/v1/{parent=projects/*/locations/*/dataTaxonomies/*}/attributes"
169      body: "data_attribute"
170    };
171    option (google.api.method_signature) =
172        "parent,data_attribute,data_attribute_id";
173    option (google.longrunning.operation_info) = {
174      response_type: "DataAttribute"
175      metadata_type: "OperationMetadata"
176    };
177  }
178
179  // Updates a DataAttribute resource.
180  rpc UpdateDataAttribute(UpdateDataAttributeRequest)
181      returns (google.longrunning.Operation) {
182    option (google.api.http) = {
183      patch: "/v1/{data_attribute.name=projects/*/locations/*/dataTaxonomies/*/attributes/*}"
184      body: "data_attribute"
185    };
186    option (google.api.method_signature) = "data_attribute,update_mask";
187    option (google.longrunning.operation_info) = {
188      response_type: "DataAttribute"
189      metadata_type: "OperationMetadata"
190    };
191  }
192
193  // Deletes a Data Attribute resource.
194  rpc DeleteDataAttribute(DeleteDataAttributeRequest)
195      returns (google.longrunning.Operation) {
196    option (google.api.http) = {
197      delete: "/v1/{name=projects/*/locations/*/dataTaxonomies/*/attributes/*}"
198    };
199    option (google.api.method_signature) = "name";
200    option (google.longrunning.operation_info) = {
201      response_type: "google.protobuf.Empty"
202      metadata_type: "OperationMetadata"
203    };
204  }
205
206  // Lists Data Attribute resources in a DataTaxonomy.
207  rpc ListDataAttributes(ListDataAttributesRequest)
208      returns (ListDataAttributesResponse) {
209    option (google.api.http) = {
210      get: "/v1/{parent=projects/*/locations/*/dataTaxonomies/*}/attributes"
211    };
212    option (google.api.method_signature) = "parent";
213  }
214
215  // Retrieves a Data Attribute resource.
216  rpc GetDataAttribute(GetDataAttributeRequest) returns (DataAttribute) {
217    option (google.api.http) = {
218      get: "/v1/{name=projects/*/locations/*/dataTaxonomies/*/attributes/*}"
219    };
220    option (google.api.method_signature) = "name";
221  }
222}
223
224// DataTaxonomy represents a set of hierarchical DataAttributes resources,
225// grouped with a common theme Eg: 'SensitiveDataTaxonomy' can have attributes
226// to manage PII data. It is defined at project level.
227message DataTaxonomy {
228  option (google.api.resource) = {
229    type: "dataplex.googleapis.com/DataTaxonomy"
230    pattern: "projects/{project}/locations/{location}/dataTaxonomies/{data_taxonomy_id}"
231  };
232
233  // Output only. The relative resource name of the DataTaxonomy, of the form:
234  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}.
235  string name = 1 [
236    (google.api.field_behavior) = OUTPUT_ONLY,
237    (google.api.resource_reference) = {
238      type: "dataplex.googleapis.com/DataTaxonomy"
239    }
240  ];
241
242  // Output only. System generated globally unique ID for the dataTaxonomy. This
243  // ID will be different if the DataTaxonomy is deleted and re-created with the
244  // same name.
245  string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
246
247  // Output only. The time when the DataTaxonomy was created.
248  google.protobuf.Timestamp create_time = 3
249      [(google.api.field_behavior) = OUTPUT_ONLY];
250
251  // Output only. The time when the DataTaxonomy was last updated.
252  google.protobuf.Timestamp update_time = 4
253      [(google.api.field_behavior) = OUTPUT_ONLY];
254
255  // Optional. Description of the DataTaxonomy.
256  string description = 5 [(google.api.field_behavior) = OPTIONAL];
257
258  // Optional. User friendly display name.
259  string display_name = 6 [(google.api.field_behavior) = OPTIONAL];
260
261  // Optional. User-defined labels for the DataTaxonomy.
262  map<string, string> labels = 8 [(google.api.field_behavior) = OPTIONAL];
263
264  // Output only. The number of attributes in the DataTaxonomy.
265  int32 attribute_count = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
266
267  // This checksum is computed by the server based on the value of other
268  // fields, and may be sent on update and delete requests to ensure the
269  // client has an up-to-date value before proceeding.
270  string etag = 10;
271
272  // Output only. The number of classes in the DataTaxonomy.
273  int32 class_count = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
274}
275
276// Denotes one dataAttribute in a dataTaxonomy, for example, PII.
277// DataAttribute resources can be defined in a hierarchy.
278// A single dataAttribute resource can contain specs of multiple types
279//
280// ```
281// PII
282//   - ResourceAccessSpec :
283//                 - readers :[email protected]
284//   - DataAccessSpec :
285//                 - readers :[email protected]
286// ```
287message DataAttribute {
288  option (google.api.resource) = {
289    type: "dataplex.googleapis.com/DataAttribute"
290    pattern: "projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}"
291  };
292
293  // Output only. The relative resource name of the dataAttribute, of the form:
294  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}.
295  string name = 1 [
296    (google.api.field_behavior) = OUTPUT_ONLY,
297    (google.api.resource_reference) = {
298      type: "dataplex.googleapis.com/DataAttribute"
299    }
300  ];
301
302  // Output only. System generated globally unique ID for the DataAttribute.
303  // This ID will be different if the DataAttribute is deleted and re-created
304  // with the same name.
305  string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
306
307  // Output only. The time when the DataAttribute was created.
308  google.protobuf.Timestamp create_time = 3
309      [(google.api.field_behavior) = OUTPUT_ONLY];
310
311  // Output only. The time when the DataAttribute was last updated.
312  google.protobuf.Timestamp update_time = 4
313      [(google.api.field_behavior) = OUTPUT_ONLY];
314
315  // Optional. Description of the DataAttribute.
316  string description = 5 [(google.api.field_behavior) = OPTIONAL];
317
318  // Optional. User friendly display name.
319  string display_name = 6 [(google.api.field_behavior) = OPTIONAL];
320
321  // Optional. User-defined labels for the DataAttribute.
322  map<string, string> labels = 7 [(google.api.field_behavior) = OPTIONAL];
323
324  // Optional. The ID of the parent DataAttribute resource, should belong to the
325  // same data taxonomy. Circular dependency in parent chain is not valid.
326  // Maximum depth of the hierarchy allowed is 4.
327  // [a -> b -> c -> d -> e, depth = 4]
328  string parent_id = 8 [
329    (google.api.field_behavior) = OPTIONAL,
330    (google.api.resource_reference) = {
331      type: "dataplex.googleapis.com/DataAttribute"
332    }
333  ];
334
335  // Output only. The number of child attributes present for this attribute.
336  int32 attribute_count = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
337
338  // This checksum is computed by the server based on the value of other
339  // fields, and may be sent on update and delete requests to ensure the
340  // client has an up-to-date value before proceeding.
341  string etag = 10;
342
343  // Optional. Specified when applied to a resource (eg: Cloud Storage bucket,
344  // BigQuery dataset, BigQuery table).
345  ResourceAccessSpec resource_access_spec = 100
346      [(google.api.field_behavior) = OPTIONAL];
347
348  // Optional. Specified when applied to data stored on the resource (eg: rows,
349  // columns in BigQuery Tables).
350  DataAccessSpec data_access_spec = 101
351      [(google.api.field_behavior) = OPTIONAL];
352}
353
354// DataAttributeBinding represents binding of attributes to resources. Eg: Bind
355// 'CustomerInfo' entity with 'PII' attribute.
356message DataAttributeBinding {
357  option (google.api.resource) = {
358    type: "dataplex.googleapis.com/DataAttributeBinding"
359    pattern: "projects/{project}/locations/{location}/dataAttributeBindings/{data_attribute_binding_id}"
360  };
361
362  // Represents a subresource of the given resource, and associated bindings
363  // with it. Currently supported subresources are column and partition schema
364  // fields within a table.
365  message Path {
366    // Required. The name identifier of the path.
367    // Nested columns should be of the form: 'address.city'.
368    string name = 1 [(google.api.field_behavior) = REQUIRED];
369
370    // Optional. List of attributes to be associated with the path of the
371    // resource, provided in the form:
372    // projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
373    repeated string attributes = 2 [
374      (google.api.field_behavior) = OPTIONAL,
375      (google.api.resource_reference) = {
376        type: "dataplex.googleapis.com/DataAttribute"
377      }
378    ];
379  }
380
381  // Output only. The relative resource name of the Data Attribute Binding, of
382  // the form:
383  // projects/{project_number}/locations/{location}/dataAttributeBindings/{data_attribute_binding_id}
384  string name = 1 [
385    (google.api.field_behavior) = OUTPUT_ONLY,
386    (google.api.resource_reference) = {
387      type: "dataplex.googleapis.com/DataAttributeBinding"
388    }
389  ];
390
391  // Output only. System generated globally unique ID for the
392  // DataAttributeBinding. This ID will be different if the DataAttributeBinding
393  // is deleted and re-created with the same name.
394  string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
395
396  // Output only. The time when the DataAttributeBinding was created.
397  google.protobuf.Timestamp create_time = 3
398      [(google.api.field_behavior) = OUTPUT_ONLY];
399
400  // Output only. The time when the DataAttributeBinding was last updated.
401  google.protobuf.Timestamp update_time = 4
402      [(google.api.field_behavior) = OUTPUT_ONLY];
403
404  // Optional. Description of the DataAttributeBinding.
405  string description = 5 [(google.api.field_behavior) = OPTIONAL];
406
407  // Optional. User friendly display name.
408  string display_name = 6 [(google.api.field_behavior) = OPTIONAL];
409
410  // Optional. User-defined labels for the DataAttributeBinding.
411  map<string, string> labels = 7 [(google.api.field_behavior) = OPTIONAL];
412
413  // This checksum is computed by the server based on the value of other
414  // fields, and may be sent on update and delete requests to ensure the
415  // client has an up-to-date value before proceeding.
416  // Etags must be used when calling the DeleteDataAttributeBinding and the
417  // UpdateDataAttributeBinding method.
418  string etag = 8;
419
420  // The reference to the resource that is associated to attributes, or
421  // the query to match resources and associate attributes.
422  oneof resource_reference {
423    // Optional. Immutable. The resource name of the resource that is associated
424    // to attributes. Presently, only entity resource is supported in the form:
425    // projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/entities/{entity_id}
426    // Must belong in the same project and region as the attribute binding, and
427    // there can only exist one active binding for a resource.
428    string resource = 100 [
429      (google.api.field_behavior) = OPTIONAL,
430      (google.api.field_behavior) = IMMUTABLE
431    ];
432  }
433
434  // Optional. List of attributes to be associated with the resource, provided
435  // in the form:
436  // projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
437  repeated string attributes = 110 [
438    (google.api.field_behavior) = OPTIONAL,
439    (google.api.resource_reference) = {
440      type: "dataplex.googleapis.com/DataAttribute"
441    }
442  ];
443
444  // Optional. The list of paths for items within the associated resource (eg.
445  // columns and partitions within a table) along with attribute bindings.
446  repeated Path paths = 120 [(google.api.field_behavior) = OPTIONAL];
447}
448
449// Create DataTaxonomy request.
450message CreateDataTaxonomyRequest {
451  // Required. The resource name of the data taxonomy location, of the form:
452  // projects/{project_number}/locations/{location_id}
453  // where `location_id` refers to a GCP region.
454  string parent = 1 [
455    (google.api.field_behavior) = REQUIRED,
456    (google.api.resource_reference) = {
457      type: "locations.googleapis.com/Location"
458    }
459  ];
460
461  // Required. DataTaxonomy identifier.
462  // * Must contain only lowercase letters, numbers and hyphens.
463  // * Must start with a letter.
464  // * Must be between 1-63 characters.
465  // * Must end with a number or a letter.
466  // * Must be unique within the Project.
467  string data_taxonomy_id = 2 [(google.api.field_behavior) = REQUIRED];
468
469  // Required. DataTaxonomy resource.
470  DataTaxonomy data_taxonomy = 3 [(google.api.field_behavior) = REQUIRED];
471
472  // Optional. Only validate the request, but do not perform mutations.
473  // The default is false.
474  bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL];
475}
476
477// Update DataTaxonomy request.
478message UpdateDataTaxonomyRequest {
479  // Required. Mask of fields to update.
480  google.protobuf.FieldMask update_mask = 1
481      [(google.api.field_behavior) = REQUIRED];
482
483  // Required. Only fields specified in `update_mask` are updated.
484  DataTaxonomy data_taxonomy = 2 [(google.api.field_behavior) = REQUIRED];
485
486  // Optional. Only validate the request, but do not perform mutations.
487  // The default is false.
488  bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL];
489}
490
491// Get DataTaxonomy request.
492message GetDataTaxonomyRequest {
493  // Required. The resource name of the DataTaxonomy:
494  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
495  string name = 1 [
496    (google.api.field_behavior) = REQUIRED,
497    (google.api.resource_reference) = {
498      type: "dataplex.googleapis.com/DataTaxonomy"
499    }
500  ];
501}
502
503// List DataTaxonomies request.
504message ListDataTaxonomiesRequest {
505  // Required. The resource name of the DataTaxonomy location, of the form:
506  // projects/{project_number}/locations/{location_id}
507  // where `location_id` refers to a GCP region.
508  string parent = 1 [
509    (google.api.field_behavior) = REQUIRED,
510    (google.api.resource_reference) = {
511      type: "locations.googleapis.com/Location"
512    }
513  ];
514
515  // Optional. Maximum number of DataTaxonomies to return. The service may
516  // return fewer than this value. If unspecified, at most 10 DataTaxonomies
517  // will be returned. The maximum value is 1000; values above 1000 will be
518  // coerced to 1000.
519  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
520
521  // Optional. Page token received from a previous ` ListDataTaxonomies` call.
522  // Provide this to retrieve the subsequent page. When paginating, all other
523  // parameters provided to ` ListDataTaxonomies` must match the call that
524  // provided the page token.
525  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
526
527  // Optional. Filter request.
528  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
529
530  // Optional. Order by fields for the result.
531  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
532}
533
534// List DataTaxonomies response.
535message ListDataTaxonomiesResponse {
536  // DataTaxonomies under the given parent location.
537  repeated DataTaxonomy data_taxonomies = 1;
538
539  // Token to retrieve the next page of results, or empty if there are no more
540  // results in the list.
541  string next_page_token = 2;
542
543  // Locations that could not be reached.
544  repeated string unreachable_locations = 3;
545}
546
547// Delete DataTaxonomy request.
548message DeleteDataTaxonomyRequest {
549  // Required. The resource name of the DataTaxonomy:
550  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
551  string name = 1 [
552    (google.api.field_behavior) = REQUIRED,
553    (google.api.resource_reference) = {
554      type: "dataplex.googleapis.com/DataTaxonomy"
555    }
556  ];
557
558  // Optional. If the client provided etag value does not match the current etag
559  // value,the DeleteDataTaxonomy method returns an ABORTED error.
560  string etag = 2 [(google.api.field_behavior) = OPTIONAL];
561}
562
563// Create DataAttribute request.
564message CreateDataAttributeRequest {
565  // Required. The resource name of the parent data taxonomy
566  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
567  string parent = 1 [
568    (google.api.field_behavior) = REQUIRED,
569    (google.api.resource_reference) = {
570      type: "dataplex.googleapis.com/DataTaxonomy"
571    }
572  ];
573
574  // Required. DataAttribute identifier.
575  // * Must contain only lowercase letters, numbers and hyphens.
576  // * Must start with a letter.
577  // * Must be between 1-63 characters.
578  // * Must end with a number or a letter.
579  // * Must be unique within the DataTaxonomy.
580  string data_attribute_id = 2 [(google.api.field_behavior) = REQUIRED];
581
582  // Required. DataAttribute resource.
583  DataAttribute data_attribute = 3 [(google.api.field_behavior) = REQUIRED];
584
585  // Optional. Only validate the request, but do not perform mutations.
586  // The default is false.
587  bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL];
588}
589
590// Update DataAttribute request.
591message UpdateDataAttributeRequest {
592  // Required. Mask of fields to update.
593  google.protobuf.FieldMask update_mask = 1
594      [(google.api.field_behavior) = REQUIRED];
595
596  // Required. Only fields specified in `update_mask` are updated.
597  DataAttribute data_attribute = 2 [(google.api.field_behavior) = REQUIRED];
598
599  // Optional. Only validate the request, but do not perform mutations.
600  // The default is false.
601  bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL];
602}
603
604// Get DataAttribute request.
605message GetDataAttributeRequest {
606  // Required. The resource name of the dataAttribute:
607  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
608  string name = 1 [
609    (google.api.field_behavior) = REQUIRED,
610    (google.api.resource_reference) = {
611      type: "dataplex.googleapis.com/DataAttribute"
612    }
613  ];
614}
615
616// List DataAttributes request.
617message ListDataAttributesRequest {
618  // Required. The resource name of the DataTaxonomy:
619  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
620  string parent = 1 [
621    (google.api.field_behavior) = REQUIRED,
622    (google.api.resource_reference) = {
623      type: "dataplex.googleapis.com/DataTaxonomy"
624    }
625  ];
626
627  // Optional. Maximum number of DataAttributes to return. The service may
628  // return fewer than this value. If unspecified, at most 10 dataAttributes
629  // will be returned. The maximum value is 1000; values above 1000 will be
630  // coerced to 1000.
631  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
632
633  // Optional. Page token received from a previous `ListDataAttributes` call.
634  // Provide this to retrieve the subsequent page. When paginating, all other
635  // parameters provided to `ListDataAttributes` must match the call that
636  // provided the page token.
637  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
638
639  // Optional. Filter request.
640  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
641
642  // Optional. Order by fields for the result.
643  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
644}
645
646// List DataAttributes response.
647message ListDataAttributesResponse {
648  // DataAttributes under the given parent DataTaxonomy.
649  repeated DataAttribute data_attributes = 1;
650
651  // Token to retrieve the next page of results, or empty if there are no more
652  // results in the list.
653  string next_page_token = 2;
654
655  // Locations that could not be reached.
656  repeated string unreachable_locations = 3;
657}
658
659// Delete DataAttribute request.
660message DeleteDataAttributeRequest {
661  // Required. The resource name of the DataAttribute:
662  // projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
663  string name = 1 [
664    (google.api.field_behavior) = REQUIRED,
665    (google.api.resource_reference) = {
666      type: "dataplex.googleapis.com/DataAttribute"
667    }
668  ];
669
670  // Optional. If the client provided etag value does not match the current etag
671  // value, the DeleteDataAttribute method returns an ABORTED error response.
672  string etag = 2 [(google.api.field_behavior) = OPTIONAL];
673}
674
675// Create DataAttributeBinding request.
676message CreateDataAttributeBindingRequest {
677  // Required. The resource name of the parent data taxonomy
678  // projects/{project_number}/locations/{location_id}
679  string parent = 1 [
680    (google.api.field_behavior) = REQUIRED,
681    (google.api.resource_reference) = {
682      type: "locations.googleapis.com/Location"
683    }
684  ];
685
686  // Required. DataAttributeBinding identifier.
687  // * Must contain only lowercase letters, numbers and hyphens.
688  // * Must start with a letter.
689  // * Must be between 1-63 characters.
690  // * Must end with a number or a letter.
691  // * Must be unique within the Location.
692  string data_attribute_binding_id = 2 [(google.api.field_behavior) = REQUIRED];
693
694  // Required. DataAttributeBinding resource.
695  DataAttributeBinding data_attribute_binding = 3
696      [(google.api.field_behavior) = REQUIRED];
697
698  // Optional. Only validate the request, but do not perform mutations.
699  // The default is false.
700  bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL];
701}
702
703// Update DataAttributeBinding request.
704message UpdateDataAttributeBindingRequest {
705  // Required. Mask of fields to update.
706  google.protobuf.FieldMask update_mask = 1
707      [(google.api.field_behavior) = REQUIRED];
708
709  // Required. Only fields specified in `update_mask` are updated.
710  DataAttributeBinding data_attribute_binding = 2
711      [(google.api.field_behavior) = REQUIRED];
712
713  // Optional. Only validate the request, but do not perform mutations.
714  // The default is false.
715  bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL];
716}
717
718// Get DataAttributeBinding request.
719message GetDataAttributeBindingRequest {
720  // Required. The resource name of the DataAttributeBinding:
721  // projects/{project_number}/locations/{location_id}/dataAttributeBindings/{data_attribute_binding_id}
722  string name = 1 [
723    (google.api.field_behavior) = REQUIRED,
724    (google.api.resource_reference) = {
725      type: "dataplex.googleapis.com/DataAttributeBinding"
726    }
727  ];
728}
729
730// List DataAttributeBindings request.
731message ListDataAttributeBindingsRequest {
732  // Required. The resource name of the Location:
733  // projects/{project_number}/locations/{location_id}
734  string parent = 1 [
735    (google.api.field_behavior) = REQUIRED,
736    (google.api.resource_reference) = {
737      type: "locations.googleapis.com/Location"
738    }
739  ];
740
741  // Optional. Maximum number of DataAttributeBindings to return. The service
742  // may return fewer than this value. If unspecified, at most 10
743  // DataAttributeBindings will be returned. The maximum value is 1000; values
744  // above 1000 will be coerced to 1000.
745  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
746
747  // Optional. Page token received from a previous `ListDataAttributeBindings`
748  // call. Provide this to retrieve the subsequent page. When paginating, all
749  // other parameters provided to `ListDataAttributeBindings` must match the
750  // call that provided the page token.
751  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
752
753  // Optional. Filter request.
754  // Filter using resource: filter=resource:"resource-name"
755  // Filter using attribute: filter=attributes:"attribute-name"
756  // Filter using attribute in paths list:
757  // filter=paths.attributes:"attribute-name"
758  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
759
760  // Optional. Order by fields for the result.
761  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
762}
763
764// List DataAttributeBindings response.
765message ListDataAttributeBindingsResponse {
766  // DataAttributeBindings under the given parent Location.
767  repeated DataAttributeBinding data_attribute_bindings = 1;
768
769  // Token to retrieve the next page of results, or empty if there are no more
770  // results in the list.
771  string next_page_token = 2;
772
773  // Locations that could not be reached.
774  repeated string unreachable_locations = 3;
775}
776
777// Delete DataAttributeBinding request.
778message DeleteDataAttributeBindingRequest {
779  // Required. The resource name of the DataAttributeBinding:
780  // projects/{project_number}/locations/{location_id}/dataAttributeBindings/{data_attribute_binding_id}
781  string name = 1 [
782    (google.api.field_behavior) = REQUIRED,
783    (google.api.resource_reference) = {
784      type: "dataplex.googleapis.com/DataAttributeBinding"
785    }
786  ];
787
788  // Required. If the client provided etag value does not match the current etag
789  // value, the DeleteDataAttributeBindingRequest method returns an ABORTED
790  // error response. Etags must be used when calling the
791  // DeleteDataAttributeBinding.
792  string etag = 2 [(google.api.field_behavior) = REQUIRED];
793}
794