xref: /aosp_15_r20/external/googleapis/google/cloud/datacatalog/v1/datacatalog.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.datacatalog.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/datacatalog/v1/bigquery.proto";
24import "google/cloud/datacatalog/v1/common.proto";
25import "google/cloud/datacatalog/v1/data_source.proto";
26import "google/cloud/datacatalog/v1/dataplex_spec.proto";
27import "google/cloud/datacatalog/v1/gcs_fileset_spec.proto";
28import "google/cloud/datacatalog/v1/schema.proto";
29import "google/cloud/datacatalog/v1/search.proto";
30import "google/cloud/datacatalog/v1/table_spec.proto";
31import "google/cloud/datacatalog/v1/tags.proto";
32import "google/cloud/datacatalog/v1/timestamps.proto";
33import "google/cloud/datacatalog/v1/usage.proto";
34import "google/iam/v1/iam_policy.proto";
35import "google/iam/v1/policy.proto";
36import "google/longrunning/operations.proto";
37import "google/protobuf/empty.proto";
38import "google/protobuf/field_mask.proto";
39import "google/rpc/status.proto";
40
41option cc_enable_arenas = true;
42option csharp_namespace = "Google.Cloud.DataCatalog.V1";
43option go_package = "cloud.google.com/go/datacatalog/apiv1/datacatalogpb;datacatalogpb";
44option java_multiple_files = true;
45option java_package = "com.google.cloud.datacatalog.v1";
46option php_namespace = "Google\\Cloud\\DataCatalog\\V1";
47option ruby_package = "Google::Cloud::DataCatalog::V1";
48option (google.api.resource_definition) = {
49  type: "datacatalog.googleapis.com/TagTemplateFieldEnumValue"
50  pattern: "projects/{project}/locations/{location}/tagTemplates/{tag_template}/fields/{tag_template_field_id}/enumValues/{enum_value_display_name}"
51};
52
53// Data Catalog API service allows you to discover, understand, and manage
54// your data.
55service DataCatalog {
56  option (google.api.default_host) = "datacatalog.googleapis.com";
57  option (google.api.oauth_scopes) =
58      "https://www.googleapis.com/auth/cloud-platform";
59
60  // Searches Data Catalog for multiple resources like entries and tags that
61  // match a query.
62  //
63  // This is a [Custom Method]
64  // (https://cloud.google.com/apis/design/custom_methods) that doesn't return
65  // all information on a resource, only its ID and high level fields. To get
66  // more information, you can subsequently call specific get methods.
67  //
68  // Note: Data Catalog search queries don't guarantee full recall. Results
69  // that match your query might not be returned, even in subsequent
70  // result pages. Additionally, returned (and not returned) results can vary
71  // if you repeat search queries.
72  //
73  // For more information, see [Data Catalog search syntax]
74  // (https://cloud.google.com/data-catalog/docs/how-to/search-reference).
75  rpc SearchCatalog(SearchCatalogRequest) returns (SearchCatalogResponse) {
76    option (google.api.http) = {
77      post: "/v1/catalog:search"
78      body: "*"
79    };
80    option (google.api.method_signature) = "scope,query";
81  }
82
83  // Creates an entry group.
84  //
85  // An entry group contains logically related entries together with [Cloud
86  // Identity and Access Management](/data-catalog/docs/concepts/iam) policies.
87  // These policies specify users who can create, edit, and view entries
88  // within entry groups.
89  //
90  // Data Catalog automatically creates entry groups with names that start with
91  // the `@` symbol for the following resources:
92  //
93  // * BigQuery entries (`@bigquery`)
94  // * Pub/Sub topics (`@pubsub`)
95  // * Dataproc Metastore services (`@dataproc_metastore_{SERVICE_NAME_HASH}`)
96  //
97  // You can create your own entry groups for Cloud Storage fileset entries
98  // and custom entries together with the corresponding IAM policies.
99  // User-created entry groups can't contain the `@` symbol, it is reserved
100  // for automatically created groups.
101  //
102  // Entry groups, like entries, can be searched.
103  //
104  // A maximum of 10,000 entry groups may be created per organization across all
105  // locations.
106  //
107  // You must enable the Data Catalog API in the project identified by
108  // the `parent` parameter. For more information, see [Data Catalog resource
109  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
110  rpc CreateEntryGroup(CreateEntryGroupRequest) returns (EntryGroup) {
111    option (google.api.http) = {
112      post: "/v1/{parent=projects/*/locations/*}/entryGroups"
113      body: "entry_group"
114    };
115    option (google.api.method_signature) = "parent,entry_group_id,entry_group";
116  }
117
118  // Gets an entry group.
119  rpc GetEntryGroup(GetEntryGroupRequest) returns (EntryGroup) {
120    option (google.api.http) = {
121      get: "/v1/{name=projects/*/locations/*/entryGroups/*}"
122    };
123    option (google.api.method_signature) = "name";
124    option (google.api.method_signature) = "name,read_mask";
125  }
126
127  // Updates an entry group.
128  //
129  // You must enable the Data Catalog API in the project identified by
130  // the `entry_group.name` parameter. For more information, see [Data Catalog
131  // resource
132  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
133  rpc UpdateEntryGroup(UpdateEntryGroupRequest) returns (EntryGroup) {
134    option (google.api.http) = {
135      patch: "/v1/{entry_group.name=projects/*/locations/*/entryGroups/*}"
136      body: "entry_group"
137    };
138    option (google.api.method_signature) = "entry_group";
139    option (google.api.method_signature) = "entry_group,update_mask";
140  }
141
142  // Deletes an entry group.
143  //
144  // You must enable the Data Catalog API in the project
145  // identified by the `name` parameter. For more information, see [Data Catalog
146  // resource
147  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
148  rpc DeleteEntryGroup(DeleteEntryGroupRequest)
149      returns (google.protobuf.Empty) {
150    option (google.api.http) = {
151      delete: "/v1/{name=projects/*/locations/*/entryGroups/*}"
152    };
153    option (google.api.method_signature) = "name";
154  }
155
156  // Lists entry groups.
157  rpc ListEntryGroups(ListEntryGroupsRequest)
158      returns (ListEntryGroupsResponse) {
159    option (google.api.http) = {
160      get: "/v1/{parent=projects/*/locations/*}/entryGroups"
161    };
162    option (google.api.method_signature) = "parent";
163  }
164
165  // Creates an entry.
166  //
167  // You can create entries only with 'FILESET', 'CLUSTER', 'DATA_STREAM',
168  // or custom types. Data Catalog automatically creates entries with other
169  // types during metadata ingestion from integrated systems.
170  //
171  // You must enable the Data Catalog API in the project identified by
172  // the `parent` parameter. For more information, see [Data Catalog resource
173  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
174  //
175  // An entry group can have a maximum of 100,000 entries.
176  rpc CreateEntry(CreateEntryRequest) returns (Entry) {
177    option (google.api.http) = {
178      post: "/v1/{parent=projects/*/locations/*/entryGroups/*}/entries"
179      body: "entry"
180    };
181    option (google.api.method_signature) = "parent,entry_id,entry";
182  }
183
184  // Updates an existing entry.
185  //
186  // You must enable the Data Catalog API in the project identified by
187  // the `entry.name` parameter. For more information, see [Data Catalog
188  // resource
189  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
190  rpc UpdateEntry(UpdateEntryRequest) returns (Entry) {
191    option (google.api.http) = {
192      patch: "/v1/{entry.name=projects/*/locations/*/entryGroups/*/entries/*}"
193      body: "entry"
194    };
195    option (google.api.method_signature) = "entry";
196    option (google.api.method_signature) = "entry,update_mask";
197  }
198
199  // Deletes an existing entry.
200  //
201  // You can delete only the entries created by the
202  // [CreateEntry][google.cloud.datacatalog.v1.DataCatalog.CreateEntry]
203  // method.
204  //
205  // You must enable the Data Catalog API in the project identified by
206  // the `name` parameter. For more information, see [Data Catalog
207  // resource
208  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
209  rpc DeleteEntry(DeleteEntryRequest) returns (google.protobuf.Empty) {
210    option (google.api.http) = {
211      delete: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}"
212    };
213    option (google.api.method_signature) = "name";
214  }
215
216  // Gets an entry.
217  rpc GetEntry(GetEntryRequest) returns (Entry) {
218    option (google.api.http) = {
219      get: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}"
220    };
221    option (google.api.method_signature) = "name";
222  }
223
224  // Gets an entry by its target resource name.
225  //
226  // The resource name comes from the source Google Cloud Platform service.
227  rpc LookupEntry(LookupEntryRequest) returns (Entry) {
228    option (google.api.http) = {
229      get: "/v1/entries:lookup"
230    };
231  }
232
233  // Lists entries.
234  //
235  // Note: Currently, this method can list only custom entries.
236  // To get a list of both custom and automatically created entries, use
237  // [SearchCatalog][google.cloud.datacatalog.v1.DataCatalog.SearchCatalog].
238  rpc ListEntries(ListEntriesRequest) returns (ListEntriesResponse) {
239    option (google.api.http) = {
240      get: "/v1/{parent=projects/*/locations/*/entryGroups/*}/entries"
241    };
242    option (google.api.method_signature) = "parent";
243  }
244
245  // Modifies entry overview, part of the business context of an
246  // [Entry][google.cloud.datacatalog.v1.Entry].
247  //
248  // To call this method, you must have the `datacatalog.entries.updateOverview`
249  // IAM permission on the corresponding project.
250  rpc ModifyEntryOverview(ModifyEntryOverviewRequest) returns (EntryOverview) {
251    option (google.api.http) = {
252      post: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}:modifyEntryOverview"
253      body: "*"
254    };
255  }
256
257  // Modifies contacts, part of the business context of an
258  // [Entry][google.cloud.datacatalog.v1.Entry].
259  //
260  // To call this method, you must have the `datacatalog.entries.updateContacts`
261  // IAM permission on the corresponding project.
262  rpc ModifyEntryContacts(ModifyEntryContactsRequest) returns (Contacts) {
263    option (google.api.http) = {
264      post: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}:modifyEntryContacts"
265      body: "*"
266    };
267  }
268
269  // Creates a tag template.
270  //
271  // You must enable the Data Catalog API in the project identified by the
272  // `parent` parameter.
273  // For more information, see [Data Catalog resource project]
274  // (https://cloud.google.com/data-catalog/docs/concepts/resource-project).
275  rpc CreateTagTemplate(CreateTagTemplateRequest) returns (TagTemplate) {
276    option (google.api.http) = {
277      post: "/v1/{parent=projects/*/locations/*}/tagTemplates"
278      body: "tag_template"
279    };
280    option (google.api.method_signature) =
281        "parent,tag_template_id,tag_template";
282  }
283
284  // Gets a tag template.
285  rpc GetTagTemplate(GetTagTemplateRequest) returns (TagTemplate) {
286    option (google.api.http) = {
287      get: "/v1/{name=projects/*/locations/*/tagTemplates/*}"
288    };
289    option (google.api.method_signature) = "name";
290  }
291
292  // Updates a tag template.
293  //
294  // You can't update template fields with this method. These fields are
295  // separate resources with their own create, update, and delete methods.
296  //
297  // You must enable the Data Catalog API in the project identified by
298  // the `tag_template.name` parameter. For more information, see [Data Catalog
299  // resource
300  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
301  rpc UpdateTagTemplate(UpdateTagTemplateRequest) returns (TagTemplate) {
302    option (google.api.http) = {
303      patch: "/v1/{tag_template.name=projects/*/locations/*/tagTemplates/*}"
304      body: "tag_template"
305    };
306    option (google.api.method_signature) = "tag_template";
307    option (google.api.method_signature) = "tag_template,update_mask";
308  }
309
310  // Deletes a tag template and all tags that use it.
311  //
312  // You must enable the Data Catalog API in the project identified by
313  // the `name` parameter. For more information, see [Data Catalog resource
314  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
315  rpc DeleteTagTemplate(DeleteTagTemplateRequest)
316      returns (google.protobuf.Empty) {
317    option (google.api.http) = {
318      delete: "/v1/{name=projects/*/locations/*/tagTemplates/*}"
319    };
320    option (google.api.method_signature) = "name,force";
321  }
322
323  // Creates a field in a tag template.
324  //
325  // You must enable the Data Catalog API in the project identified by
326  // the `parent` parameter. For more information, see [Data Catalog resource
327  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
328  rpc CreateTagTemplateField(CreateTagTemplateFieldRequest)
329      returns (TagTemplateField) {
330    option (google.api.http) = {
331      post: "/v1/{parent=projects/*/locations/*/tagTemplates/*}/fields"
332      body: "tag_template_field"
333    };
334    option (google.api.method_signature) =
335        "parent,tag_template_field_id,tag_template_field";
336  }
337
338  // Updates a field in a tag template.
339  //
340  // You can't update the field type with this method.
341  //
342  // You must enable the Data Catalog API in the project
343  // identified by the `name` parameter. For more information, see [Data Catalog
344  // resource
345  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
346  rpc UpdateTagTemplateField(UpdateTagTemplateFieldRequest)
347      returns (TagTemplateField) {
348    option (google.api.http) = {
349      patch: "/v1/{name=projects/*/locations/*/tagTemplates/*/fields/*}"
350      body: "tag_template_field"
351    };
352    option (google.api.method_signature) = "name,tag_template_field";
353    option (google.api.method_signature) =
354        "name,tag_template_field,update_mask";
355  }
356
357  // Renames a field in a tag template.
358  //
359  // You must enable the Data Catalog API in the project identified by the
360  // `name` parameter. For more information, see [Data Catalog resource project]
361  // (https://cloud.google.com/data-catalog/docs/concepts/resource-project).
362  rpc RenameTagTemplateField(RenameTagTemplateFieldRequest)
363      returns (TagTemplateField) {
364    option (google.api.http) = {
365      post: "/v1/{name=projects/*/locations/*/tagTemplates/*/fields/*}:rename"
366      body: "*"
367    };
368    option (google.api.method_signature) = "name,new_tag_template_field_id";
369  }
370
371  // Renames an enum value in a tag template.
372  //
373  // Within a single enum field, enum values must be unique.
374  rpc RenameTagTemplateFieldEnumValue(RenameTagTemplateFieldEnumValueRequest)
375      returns (TagTemplateField) {
376    option (google.api.http) = {
377      post: "/v1/{name=projects/*/locations/*/tagTemplates/*/fields/*/enumValues/*}:rename"
378      body: "*"
379    };
380    option (google.api.method_signature) = "name,new_enum_value_display_name";
381  }
382
383  // Deletes a field in a tag template and all uses of this field from the tags
384  // based on this template.
385  //
386  // You must enable the Data Catalog API in the project identified by
387  // the `name` parameter. For more information, see [Data Catalog resource
388  // project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).
389  rpc DeleteTagTemplateField(DeleteTagTemplateFieldRequest)
390      returns (google.protobuf.Empty) {
391    option (google.api.http) = {
392      delete: "/v1/{name=projects/*/locations/*/tagTemplates/*/fields/*}"
393    };
394    option (google.api.method_signature) = "name,force";
395  }
396
397  // Creates a tag and assigns it to:
398  //
399  // * An [Entry][google.cloud.datacatalog.v1.Entry] if the method name is
400  //   `projects.locations.entryGroups.entries.tags.create`.
401  // * Or [EntryGroup][google.cloud.datacatalog.v1.EntryGroup]if the method
402  //   name is `projects.locations.entryGroups.tags.create`.
403  //
404  // Note: The project identified by the `parent` parameter for the [tag]
405  // (https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries.tags/create#path-parameters)
406  // and the [tag template]
407  // (https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates/create#path-parameters)
408  // used to create the tag must be in the same organization.
409  rpc CreateTag(CreateTagRequest) returns (Tag) {
410    option (google.api.http) = {
411      post: "/v1/{parent=projects/*/locations/*/entryGroups/*/entries/*}/tags"
412      body: "tag"
413      additional_bindings {
414        post: "/v1/{parent=projects/*/locations/*/entryGroups/*}/tags"
415        body: "tag"
416      }
417    };
418    option (google.api.method_signature) = "parent,tag";
419  }
420
421  // Updates an existing tag.
422  rpc UpdateTag(UpdateTagRequest) returns (Tag) {
423    option (google.api.http) = {
424      patch: "/v1/{tag.name=projects/*/locations/*/entryGroups/*/entries/*/tags/*}"
425      body: "tag"
426      additional_bindings {
427        patch: "/v1/{tag.name=projects/*/locations/*/entryGroups/*/tags/*}"
428        body: "tag"
429      }
430    };
431    option (google.api.method_signature) = "tag";
432    option (google.api.method_signature) = "tag,update_mask";
433  }
434
435  // Deletes a tag.
436  rpc DeleteTag(DeleteTagRequest) returns (google.protobuf.Empty) {
437    option (google.api.http) = {
438      delete: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*/tags/*}"
439      additional_bindings {
440        delete: "/v1/{name=projects/*/locations/*/entryGroups/*/tags/*}"
441      }
442    };
443    option (google.api.method_signature) = "name";
444  }
445
446  // Lists tags assigned to an [Entry][google.cloud.datacatalog.v1.Entry].
447  // The [columns][google.cloud.datacatalog.v1.Tag.column] in the response are
448  // lowercased.
449  rpc ListTags(ListTagsRequest) returns (ListTagsResponse) {
450    option (google.api.http) = {
451      get: "/v1/{parent=projects/*/locations/*/entryGroups/*/entries/*}/tags"
452      additional_bindings {
453        get: "/v1/{parent=projects/*/locations/*/entryGroups/*}/tags"
454      }
455    };
456    option (google.api.method_signature) = "parent";
457  }
458
459  // `ReconcileTags` creates or updates a list of tags on the entry.
460  // If the
461  // [ReconcileTagsRequest.force_delete_missing][google.cloud.datacatalog.v1.ReconcileTagsRequest.force_delete_missing]
462  // parameter is set, the operation deletes tags not included in the input tag
463  // list.
464  //
465  // `ReconcileTags` returns a [long-running operation]
466  // [google.longrunning.Operation] resource that can be queried with
467  // [Operations.GetOperation][google.longrunning.Operations.GetOperation]
468  // to return [ReconcileTagsMetadata]
469  // [google.cloud.datacatalog.v1.ReconcileTagsMetadata] and
470  // a [ReconcileTagsResponse]
471  // [google.cloud.datacatalog.v1.ReconcileTagsResponse] message.
472  rpc ReconcileTags(ReconcileTagsRequest)
473      returns (google.longrunning.Operation) {
474    option (google.api.http) = {
475      post: "/v1/{parent=projects/*/locations/*/entryGroups/*/entries/*}/tags:reconcile"
476      body: "*"
477    };
478    option (google.longrunning.operation_info) = {
479      response_type: "ReconcileTagsResponse"
480      metadata_type: "ReconcileTagsMetadata"
481    };
482  }
483
484  // Marks an [Entry][google.cloud.datacatalog.v1.Entry] as starred by
485  // the current user. Starring information is private to each user.
486  rpc StarEntry(StarEntryRequest) returns (StarEntryResponse) {
487    option (google.api.http) = {
488      post: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}:star"
489      body: "*"
490    };
491    option (google.api.method_signature) = "name";
492  }
493
494  // Marks an [Entry][google.cloud.datacatalog.v1.Entry] as NOT starred by
495  // the current user. Starring information is private to each user.
496  rpc UnstarEntry(UnstarEntryRequest) returns (UnstarEntryResponse) {
497    option (google.api.http) = {
498      post: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}:unstar"
499      body: "*"
500    };
501    option (google.api.method_signature) = "name";
502  }
503
504  // Sets an access control policy for a resource. Replaces any existing
505  // policy.
506  //
507  // Supported resources are:
508  //
509  // - Tag templates
510  // - Entry groups
511  //
512  // Note: This method sets policies only within Data Catalog and can't be
513  // used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any
514  // external Google Cloud Platform resources synced with the Data Catalog.
515  //
516  // To call this method, you must have the following Google IAM permissions:
517  //
518  // - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag
519  //   templates.
520  // - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.
521  rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
522      returns (google.iam.v1.Policy) {
523    option (google.api.http) = {
524      post: "/v1/{resource=projects/*/locations/*/tagTemplates/*}:setIamPolicy"
525      body: "*"
526      additional_bindings {
527        post: "/v1/{resource=projects/*/locations/*/entryGroups/*}:setIamPolicy"
528        body: "*"
529      }
530    };
531    option (google.api.method_signature) = "resource,policy";
532  }
533
534  // Gets the access control policy for a resource.
535  //
536  // May return:
537  //
538  // * A`NOT_FOUND` error if the resource doesn't exist or you don't have the
539  //   permission to view it.
540  // * An empty policy if the resource exists but doesn't have a set policy.
541  //
542  // Supported resources are:
543  //
544  // - Tag templates
545  // - Entry groups
546  //
547  // Note: This method doesn't get policies from Google Cloud Platform
548  // resources ingested into Data Catalog.
549  //
550  // To call this method, you must have the following Google IAM permissions:
551  //
552  // - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag
553  //   templates.
554  // - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.
555  rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
556      returns (google.iam.v1.Policy) {
557    option (google.api.http) = {
558      post: "/v1/{resource=projects/*/locations/*/tagTemplates/*}:getIamPolicy"
559      body: "*"
560      additional_bindings {
561        post: "/v1/{resource=projects/*/locations/*/entryGroups/*}:getIamPolicy"
562        body: "*"
563      }
564      additional_bindings {
565        post: "/v1/{resource=projects/*/locations/*/entryGroups/*/entries/*}:getIamPolicy"
566        body: "*"
567      }
568    };
569    option (google.api.method_signature) = "resource";
570  }
571
572  // Gets your permissions on a resource.
573  //
574  // Returns an empty set of permissions if the resource doesn't exist.
575  //
576  // Supported resources are:
577  //
578  // - Tag templates
579  // - Entry groups
580  //
581  // Note: This method gets policies only within Data Catalog and can't be
582  // used to get policies from BigQuery, Pub/Sub, Dataproc Metastore, and any
583  // external Google Cloud Platform resources ingested into Data Catalog.
584  //
585  // No Google IAM permissions are required to call this method.
586  rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
587      returns (google.iam.v1.TestIamPermissionsResponse) {
588    option (google.api.http) = {
589      post: "/v1/{resource=projects/*/locations/*/tagTemplates/*}:testIamPermissions"
590      body: "*"
591      additional_bindings {
592        post: "/v1/{resource=projects/*/locations/*/entryGroups/*}:testIamPermissions"
593        body: "*"
594      }
595      additional_bindings {
596        post: "/v1/{resource=projects/*/locations/*/entryGroups/*/entries/*}:testIamPermissions"
597        body: "*"
598      }
599    };
600  }
601
602  // Imports entries from a source, such as data previously dumped into a
603  // Cloud Storage bucket, into Data Catalog. Import of entries
604  // is a sync operation that reconciles the state of the third-party system
605  // with the Data Catalog.
606  //
607  // `ImportEntries` accepts source data snapshots of a third-party system.
608  // Snapshot should be delivered as a .wire or base65-encoded .txt file
609  // containing a sequence of Protocol Buffer messages of
610  // [DumpItem][google.cloud.datacatalog.v1.DumpItem] type.
611  //
612  // `ImportEntries` returns a [long-running operation]
613  // [google.longrunning.Operation] resource that can be queried with
614  // [Operations.GetOperation][google.longrunning.Operations.GetOperation]
615  // to return
616  // [ImportEntriesMetadata][google.cloud.datacatalog.v1.ImportEntriesMetadata]
617  // and an
618  // [ImportEntriesResponse][google.cloud.datacatalog.v1.ImportEntriesResponse]
619  // message.
620  rpc ImportEntries(ImportEntriesRequest)
621      returns (google.longrunning.Operation) {
622    option (google.api.http) = {
623      post: "/v1/{parent=projects/*/locations/*/entryGroups/*}/entries:import"
624      body: "*"
625    };
626    option (google.longrunning.operation_info) = {
627      response_type: "ImportEntriesResponse"
628      metadata_type: "ImportEntriesMetadata"
629    };
630  }
631}
632
633// Request message for
634// [SearchCatalog][google.cloud.datacatalog.v1.DataCatalog.SearchCatalog].
635message SearchCatalogRequest {
636  // The criteria that select the subspace used for query matching.
637  message Scope {
638    // The list of organization IDs to search within.
639    //
640    // To find your organization ID, follow the steps from
641    // [Creating and managing organizations]
642    // (/resource-manager/docs/creating-managing-organization).
643    repeated string include_org_ids = 2;
644
645    // The list of project IDs to search within.
646    //
647    // For more information on the distinction between project names, IDs, and
648    // numbers, see [Projects](/docs/overview/#projects).
649    repeated string include_project_ids = 3;
650
651    // If `true`, include Google Cloud public datasets in
652    // search results. By default, they are excluded.
653    //
654    // See [Google Cloud Public Datasets](/public-datasets) for more
655    // information.
656    bool include_gcp_public_datasets = 7;
657
658    // Optional. The list of locations to search within. If empty, all locations
659    // are searched.
660    //
661    // Returns an error if any location in the list isn't one of the [Supported
662    // regions](https://cloud.google.com/data-catalog/docs/concepts/regions#supported_regions).
663    //
664    // If a location is unreachable, its name is returned in the
665    // `SearchCatalogResponse.unreachable` field. To get additional information
666    // on the error, repeat the search request and set the location name as the
667    // value of this parameter.
668    repeated string restricted_locations = 16
669        [(google.api.field_behavior) = OPTIONAL];
670
671    // Optional. If `true`, search only among starred entries.
672    //
673    // By default, all results are returned, starred or not.
674    bool starred_only = 18 [(google.api.field_behavior) = OPTIONAL];
675
676    // Optional. This field is deprecated. The search mechanism for public and
677    // private tag templates is the same.
678    bool include_public_tag_templates = 19
679        [deprecated = true, (google.api.field_behavior) = OPTIONAL];
680  }
681
682  // Required. The scope of this search request.
683  //
684  // The `scope` is invalid if `include_org_ids`, `include_project_ids` are
685  // empty AND `include_gcp_public_datasets` is set to `false`. In this case,
686  // the request returns an error.
687  Scope scope = 6 [(google.api.field_behavior) = REQUIRED];
688
689  // Optional. The query string with a minimum of 3 characters and specific
690  // syntax. For more information, see [Data Catalog search
691  // syntax](https://cloud.google.com/data-catalog/docs/how-to/search-reference).
692  //
693  // An empty query string returns all data assets (in the specified scope)
694  // that you have access to.
695  //
696  // A query string can be a simple `xyz` or qualified by predicates:
697  //
698  // * `name:x`
699  // * `column:y`
700  // * `description:z`
701  string query = 1 [(google.api.field_behavior) = OPTIONAL];
702
703  // Upper bound on the number of results you can get in a single response.
704  //
705  // Can't be negative or 0, defaults to 10 in this case.
706  // The maximum number is 1000. If exceeded, throws an "invalid argument"
707  // exception.
708  int32 page_size = 2;
709
710  // Optional. Pagination token that, if specified, returns the next page of
711  // search results. If empty, returns the first page.
712  //
713  // This token is returned in the
714  // [SearchCatalogResponse.next_page_token][google.cloud.datacatalog.v1.SearchCatalogResponse.next_page_token]
715  // field of the response to a previous
716  // [SearchCatalogRequest][google.cloud.datacatalog.v1.DataCatalog.SearchCatalog]
717  // call.
718  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
719
720  // Specifies the order of results.
721  //
722  // Currently supported case-sensitive values are:
723  //
724  // * `relevance` that can only be descending
725  // * `last_modified_timestamp [asc|desc]` with descending (`desc`) as default
726  // * `default` that can only be descending
727  //
728  // Search queries don't guarantee full recall. Results that match your query
729  // might not be returned, even in subsequent result pages. Additionally,
730  // returned (and not returned) results can vary if you repeat search queries.
731  // If you are experiencing recall issues and you don't have to fetch the
732  // results in any specific order, consider setting this parameter to
733  // `default`.
734  //
735  // If this parameter is omitted, it defaults to the descending `relevance`.
736  string order_by = 5;
737
738  // Optional. If set, use searchAll permission granted on organizations from
739  // `include_org_ids` and projects from `include_project_ids` instead of the
740  // fine grained per resource permissions when filtering the search results.
741  // The only allowed `order_by` criteria for admin_search mode is `default`.
742  // Using this flags guarantees a full recall of the search results.
743  bool admin_search = 17 [(google.api.field_behavior) = OPTIONAL];
744}
745
746// Response message for
747// [SearchCatalog][google.cloud.datacatalog.v1.DataCatalog.SearchCatalog].
748message SearchCatalogResponse {
749  // Search results.
750  repeated SearchCatalogResult results = 1;
751
752  // The approximate total number of entries matched by the query.
753  int32 total_size = 2;
754
755  // Pagination token that can be used in subsequent calls to retrieve the next
756  // page of results.
757  string next_page_token = 3;
758
759  // Unreachable locations. Search results don't include data from those
760  // locations.
761  //
762  // To get additional information on an error, repeat the search request and
763  // restrict it to specific locations by setting the
764  // `SearchCatalogRequest.scope.restricted_locations` parameter.
765  repeated string unreachable = 6;
766}
767
768// Request message for
769// [CreateEntryGroup][google.cloud.datacatalog.v1.DataCatalog.CreateEntryGroup].
770message CreateEntryGroupRequest {
771  // Required. The names of the project and location that the new entry group
772  // belongs to.
773  //
774  // Note: The entry group itself and its child resources might not be
775  // stored in the location specified in its name.
776  string parent = 1 [
777    (google.api.field_behavior) = REQUIRED,
778    (google.api.resource_reference) = {
779      child_type: "datacatalog.googleapis.com/EntryGroup"
780    }
781  ];
782
783  // Required. The ID of the entry group to create.
784  //
785  // The ID must contain only letters (a-z, A-Z), numbers (0-9),
786  // underscores (_), and must start with a letter or underscore.
787  // The maximum size is 64 bytes when encoded in UTF-8.
788  string entry_group_id = 3 [(google.api.field_behavior) = REQUIRED];
789
790  // The entry group to create. Defaults to empty.
791  EntryGroup entry_group = 2;
792}
793
794// Request message for
795// [UpdateEntryGroup][google.cloud.datacatalog.v1.DataCatalog.UpdateEntryGroup].
796message UpdateEntryGroupRequest {
797  // Required. Updates for the entry group. The `name` field must be set.
798  EntryGroup entry_group = 1 [(google.api.field_behavior) = REQUIRED];
799
800  // Names of fields whose values to overwrite on an entry group.
801  //
802  // If this parameter is absent or empty, all modifiable fields
803  // are overwritten. If such fields are non-required and omitted in the
804  // request body, their values are emptied.
805  google.protobuf.FieldMask update_mask = 2;
806}
807
808// Request message for
809// [GetEntryGroup][google.cloud.datacatalog.v1.DataCatalog.GetEntryGroup].
810message GetEntryGroupRequest {
811  // Required. The name of the entry group to get.
812  string name = 1 [
813    (google.api.field_behavior) = REQUIRED,
814    (google.api.resource_reference) = {
815      type: "datacatalog.googleapis.com/EntryGroup"
816    }
817  ];
818
819  // The fields to return. If empty or omitted, all fields are returned.
820  google.protobuf.FieldMask read_mask = 2;
821}
822
823// Request message for
824// [DeleteEntryGroup][google.cloud.datacatalog.v1.DataCatalog.DeleteEntryGroup].
825message DeleteEntryGroupRequest {
826  // Required. The name of the entry group to delete.
827  string name = 1 [
828    (google.api.field_behavior) = REQUIRED,
829    (google.api.resource_reference) = {
830      type: "datacatalog.googleapis.com/EntryGroup"
831    }
832  ];
833
834  // Optional. If true, deletes all entries in the entry group.
835  bool force = 2 [(google.api.field_behavior) = OPTIONAL];
836}
837
838// Request message for
839// [ListEntryGroups][google.cloud.datacatalog.v1.DataCatalog.ListEntryGroups].
840message ListEntryGroupsRequest {
841  // Required. The name of the location that contains the entry groups to list.
842  //
843  // Can be provided as a URL.
844  string parent = 1 [
845    (google.api.field_behavior) = REQUIRED,
846    (google.api.resource_reference) = {
847      child_type: "datacatalog.googleapis.com/EntryGroup"
848    }
849  ];
850
851  // Optional. The maximum number of items to return.
852  //
853  // Default is 10. Maximum limit is 1000.
854  // Throws an invalid argument if `page_size` is greater than 1000.
855  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
856
857  // Optional. Pagination token that specifies the next page to return.
858  // If empty, returns the first page.
859  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
860}
861
862// Response message for
863// [ListEntryGroups][google.cloud.datacatalog.v1.DataCatalog.ListEntryGroups].
864message ListEntryGroupsResponse {
865  // Entry group details.
866  repeated EntryGroup entry_groups = 1;
867
868  // Pagination token to specify in the next call to retrieve the next page of
869  // results. Empty if there are no more items.
870  string next_page_token = 2;
871}
872
873// Request message for
874// [CreateEntry][google.cloud.datacatalog.v1.DataCatalog.CreateEntry].
875message CreateEntryRequest {
876  // Required. The name of the entry group this entry belongs to.
877  //
878  // Note: The entry itself and its child resources might not be stored in
879  // the location specified in its name.
880  string parent = 1 [
881    (google.api.field_behavior) = REQUIRED,
882    (google.api.resource_reference) = {
883      type: "datacatalog.googleapis.com/EntryGroup"
884    }
885  ];
886
887  // Required. The ID of the entry to create.
888  //
889  // The ID must contain only letters (a-z, A-Z), numbers (0-9),
890  // and underscores (_).
891  // The maximum size is 64 bytes when encoded in UTF-8.
892  string entry_id = 3 [(google.api.field_behavior) = REQUIRED];
893
894  // Required. The entry to create.
895  Entry entry = 2 [(google.api.field_behavior) = REQUIRED];
896}
897
898// Request message for
899// [UpdateEntry][google.cloud.datacatalog.v1.DataCatalog.UpdateEntry].
900message UpdateEntryRequest {
901  // Required. Updates for the entry. The `name` field must be set.
902  Entry entry = 1 [(google.api.field_behavior) = REQUIRED];
903
904  // Names of fields whose values to overwrite on an entry.
905  //
906  // If this parameter is absent or empty, all modifiable fields
907  // are overwritten. If such fields are non-required and omitted in the
908  // request body, their values are emptied.
909  //
910  // You can modify only the fields listed below.
911  //
912  // For entries with type `DATA_STREAM`:
913  //
914  // * `schema`
915  //
916  // For entries with type `FILESET`:
917  //
918  // * `schema`
919  // * `display_name`
920  // * `description`
921  // * `gcs_fileset_spec`
922  // * `gcs_fileset_spec.file_patterns`
923  //
924  // For entries with `user_specified_type`:
925  //
926  // * `schema`
927  // * `display_name`
928  // * `description`
929  // * `user_specified_type`
930  // * `user_specified_system`
931  // * `linked_resource`
932  // * `source_system_timestamps`
933  google.protobuf.FieldMask update_mask = 2;
934}
935
936// Request message for
937// [DeleteEntry][google.cloud.datacatalog.v1.DataCatalog.DeleteEntry].
938message DeleteEntryRequest {
939  // Required. The name of the entry to delete.
940  string name = 1 [
941    (google.api.field_behavior) = REQUIRED,
942    (google.api.resource_reference) = {
943      type: "datacatalog.googleapis.com/Entry"
944    }
945  ];
946}
947
948// Request message for
949// [GetEntry][google.cloud.datacatalog.v1.DataCatalog.GetEntry].
950message GetEntryRequest {
951  // Required. The name of the entry to get.
952  string name = 1 [
953    (google.api.field_behavior) = REQUIRED,
954    (google.api.resource_reference) = {
955      type: "datacatalog.googleapis.com/Entry"
956    }
957  ];
958}
959
960// Request message for
961// [LookupEntry][google.cloud.datacatalog.v1.DataCatalog.LookupEntry].
962message LookupEntryRequest {
963  // Required. A full name, SQL name, or a fully qualified name of a
964  // Google Cloud Platform resource.
965  oneof target_name {
966    // The full name of the Google Cloud Platform resource the Data Catalog
967    // entry represents. For more information, see [Full Resource Name]
968    // (https://cloud.google.com/apis/design/resource_names#full_resource_name).
969    //
970    // Full names are case-sensitive. For example:
971    //
972    //  * `//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{TABLE_ID}`
973    //  * `//pubsub.googleapis.com/projects/{PROJECT_ID}/topics/{TOPIC_ID}`
974    string linked_resource = 1;
975
976    // The SQL name of the entry. SQL names are case-sensitive.
977    //
978    // Examples:
979    //
980    // * `pubsub.topic.{PROJECT_ID}.{TOPIC_ID}`
981    // * `pubsub.topic.{PROJECT_ID}.`\``{TOPIC.ID.SEPARATED.WITH.DOTS}`\`
982    // * `bigquery.table.{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}`
983    // * `bigquery.dataset.{PROJECT_ID}.{DATASET_ID}`
984    // * `datacatalog.entry.{PROJECT_ID}.{LOCATION_ID}.{ENTRY_GROUP_ID}.{ENTRY_ID}`
985    //
986    // Identifiers (`*_ID`) should comply with the
987    // [Lexical structure in Standard SQL]
988    // (https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical).
989    string sql_resource = 3;
990
991    // [Fully Qualified Name
992    // (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names)
993    // of the resource.
994    //
995    // FQNs take two forms:
996    //
997    // * For non-regionalized resources:
998    //
999    //   `{SYSTEM}:{PROJECT}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}`
1000    //
1001    // * For regionalized resources:
1002    //
1003    //   `{SYSTEM}:{PROJECT}.{LOCATION_ID}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}`
1004    //
1005    // Example for a DPMS table:
1006    //
1007    // `dataproc_metastore:{PROJECT_ID}.{LOCATION_ID}.{INSTANCE_ID}.{DATABASE_ID}.{TABLE_ID}`
1008    string fully_qualified_name = 5;
1009  }
1010
1011  // Project where the lookup should be performed. Required to lookup
1012  // entry that is not a part of `DPMS` or `DATAPLEX` `integrated_system`
1013  // using its `fully_qualified_name`. Ignored in other cases.
1014  string project = 6;
1015
1016  // Location where the lookup should be performed. Required to lookup
1017  // entry that is not a part of `DPMS` or `DATAPLEX` `integrated_system`
1018  // using its `fully_qualified_name`. Ignored in other cases.
1019  string location = 7;
1020}
1021
1022// Entry metadata.
1023// A Data Catalog entry represents another resource in Google
1024// Cloud Platform (such as a BigQuery dataset or a Pub/Sub topic) or
1025// outside of it. You can use the `linked_resource` field
1026// in the entry resource to refer to the original resource ID of the source
1027// system.
1028//
1029// An entry resource contains resource details, for example, its schema.
1030// Additionally, you can attach flexible metadata to an entry in the form of a
1031// [Tag][google.cloud.datacatalog.v1.Tag].
1032message Entry {
1033  option (google.api.resource) = {
1034    type: "datacatalog.googleapis.com/Entry"
1035    pattern: "projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}"
1036  };
1037
1038  // Output only. The resource name of an entry in URL format.
1039  //
1040  // Note: The entry itself and its child resources might not be
1041  // stored in the location specified in its name.
1042  string name = 1 [
1043    (google.api.field_behavior) = OUTPUT_ONLY,
1044    (google.api.resource_reference) = {
1045      type: "datacatalog.googleapis.com/EntryGroup"
1046    }
1047  ];
1048
1049  // The resource this metadata entry refers to.
1050  //
1051  // For Google Cloud Platform resources, `linked_resource` is the
1052  // [Full Resource Name]
1053  // (https://cloud.google.com/apis/design/resource_names#full_resource_name).
1054  // For example, the `linked_resource` for a table resource from BigQuery is:
1055  //
1056  // `//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{TABLE_ID}`
1057  //
1058  // Output only when the entry is one of the types in the `EntryType` enum.
1059  //
1060  // For entries with a `user_specified_type`, this field is optional and
1061  // defaults to an empty string.
1062  //
1063  // The resource string must contain only letters (a-z, A-Z), numbers (0-9),
1064  // underscores (_), periods (.), colons (:), slashes (/), dashes (-),
1065  // and hashes (#).
1066  // The maximum size is 200 bytes when encoded in UTF-8.
1067  string linked_resource = 9;
1068
1069  // [Fully Qualified Name
1070  // (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names)
1071  // of the resource. Set automatically for entries representing resources from
1072  // synced systems. Settable only during creation, and read-only later. Can
1073  // be used for search and lookup of the entries.
1074  //
1075  string fully_qualified_name = 29;
1076
1077  // Required. Entry type.
1078  oneof entry_type {
1079    // The type of the entry.
1080    //
1081    // For details, see [`EntryType`](#entrytype).
1082    EntryType type = 2;
1083
1084    // Custom entry type that doesn't match any of the values allowed for input
1085    // and listed in the `EntryType` enum.
1086    //
1087    // When creating an entry, first check the type values in the enum.
1088    // If there are no appropriate types for the new entry,
1089    // provide a custom value, for example, `my_special_type`.
1090    //
1091    // The `user_specified_type` string has the following limitations:
1092    //
1093    // * Is case insensitive.
1094    // * Must begin with a letter or underscore.
1095    // * Can only contain letters, numbers, and underscores.
1096    // * Must be at least 1 character and at most 64 characters long.
1097    string user_specified_type = 16;
1098  }
1099
1100  // The source system of the entry.
1101  oneof system {
1102    // Output only. Indicates the entry's source system that Data Catalog
1103    // integrates with, such as BigQuery, Pub/Sub, or Dataproc Metastore.
1104    IntegratedSystem integrated_system = 17
1105        [(google.api.field_behavior) = OUTPUT_ONLY];
1106
1107    // Indicates the entry's source system that Data Catalog doesn't
1108    // automatically integrate with.
1109    //
1110    // The `user_specified_system` string has the following limitations:
1111    //
1112    // * Is case insensitive.
1113    // * Must begin with a letter or underscore.
1114    // * Can only contain letters, numbers, and underscores.
1115    // * Must be at least 1 character and at most 64 characters long.
1116    string user_specified_system = 18;
1117  }
1118
1119  // System specification.
1120  // Can be used as a complement for `spec`, when some metadata is relevant for
1121  // all entries existing within given system
1122  oneof system_spec {
1123    // Specification that applies to a relational database system. Only settable
1124    // when `user_specified_system` is equal to `SQL_DATABASE`
1125    SqlDatabaseSystemSpec sql_database_system_spec = 39;
1126
1127    // Specification that applies to Looker sysstem. Only settable when
1128    // `user_specified_system` is equal to `LOOKER`
1129    LookerSystemSpec looker_system_spec = 40;
1130
1131    // Specification that applies to Cloud Bigtable system. Only settable when
1132    // `integrated_system` is equal to `CLOUD_BIGTABLE`
1133    CloudBigtableSystemSpec cloud_bigtable_system_spec = 41;
1134  }
1135
1136  // Type specification.
1137  oneof type_spec {
1138    // Specification that applies to a Cloud Storage fileset. Valid only
1139    // for entries with the `FILESET` type.
1140    GcsFilesetSpec gcs_fileset_spec = 6;
1141
1142    // Output only. Specification that applies to a BigQuery table. Valid only
1143    // for entries with the `TABLE` type.
1144    BigQueryTableSpec bigquery_table_spec = 12
1145        [(google.api.field_behavior) = OUTPUT_ONLY];
1146
1147    // Output only. Specification for a group of BigQuery tables with
1148    // the `[prefix]YYYYMMDD` name pattern.
1149    //
1150    // For more information, see [Introduction to partitioned tables]
1151    // (https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding).
1152    BigQueryDateShardedSpec bigquery_date_sharded_spec = 15
1153        [(google.api.field_behavior) = OUTPUT_ONLY];
1154  }
1155
1156  // Type- and system-specific information. Specifications for types contain
1157  // fields common to all entries of a given type, and sub-specifications with
1158  // fields specific to a given source system.
1159  //
1160  // When extending the API with new types and systems, use this field instead
1161  // of the legacy `type_spec`.
1162  oneof spec {
1163    // Specification that applies to a table resource. Valid only
1164    // for entries with the `TABLE` or `EXPLORE` type.
1165    DatabaseTableSpec database_table_spec = 24;
1166
1167    // Specification that applies to a data source connection. Valid only
1168    // for entries with the `DATA_SOURCE_CONNECTION` type.
1169    DataSourceConnectionSpec data_source_connection_spec = 27;
1170
1171    // Specification that applies to a user-defined function or procedure. Valid
1172    // only for entries with the `ROUTINE` type.
1173    RoutineSpec routine_spec = 28;
1174
1175    // Specification that applies to a dataset.
1176    DatasetSpec dataset_spec = 32;
1177
1178    // Specification that applies to a fileset resource. Valid only
1179    // for entries with the `FILESET` type.
1180    FilesetSpec fileset_spec = 33;
1181
1182    // Specification that applies to a Service resource.
1183    ServiceSpec service_spec = 42;
1184
1185    // Model specification.
1186    ModelSpec model_spec = 43;
1187  }
1188
1189  // Display name of an entry.
1190  //
1191  // The maximum size is 500 bytes when encoded in UTF-8.
1192  // Default value is an empty string.
1193  string display_name = 3;
1194
1195  // Entry description that can consist of several sentences or paragraphs
1196  // that describe entry contents.
1197  //
1198  // The description must not contain Unicode non-characters as well as C0
1199  // and C1 control codes except tabs (HT), new lines (LF), carriage returns
1200  // (CR), and page breaks (FF).
1201  // The maximum size is 2000 bytes when encoded in UTF-8.
1202  // Default value is an empty string.
1203  string description = 4;
1204
1205  // Business Context of the entry. Not supported for BigQuery datasets
1206  BusinessContext business_context = 37;
1207
1208  // Schema of the entry. An entry might not have any schema attached to it.
1209  Schema schema = 5;
1210
1211  // Timestamps from the underlying resource, not from the Data Catalog
1212  // entry.
1213  //
1214  // Output only when the entry has a system listed in the `IntegratedSystem`
1215  // enum. For entries with `user_specified_system`, this field is optional
1216  // and defaults to an empty timestamp.
1217  SystemTimestamps source_system_timestamps = 7;
1218
1219  // Resource usage statistics.
1220  UsageSignal usage_signal = 13;
1221
1222  // Cloud labels attached to the entry.
1223  //
1224  // In Data Catalog, you can create and modify labels attached only to custom
1225  // entries. Synced entries have unmodifiable labels that come from the source
1226  // system.
1227  map<string, string> labels = 14;
1228
1229  // Output only. Physical location of the entry.
1230  DataSource data_source = 20 [(google.api.field_behavior) = OUTPUT_ONLY];
1231
1232  // Output only. Additional information related to the entry. Private to the
1233  // current user.
1234  PersonalDetails personal_details = 26
1235      [(google.api.field_behavior) = OUTPUT_ONLY];
1236}
1237
1238// Specification that applies to a table resource. Valid only
1239// for entries with the `TABLE` type.
1240message DatabaseTableSpec {
1241  // Type of the table.
1242  enum TableType {
1243    // Default unknown table type.
1244    TABLE_TYPE_UNSPECIFIED = 0;
1245
1246    // Native table.
1247    NATIVE = 1;
1248
1249    // External table.
1250    EXTERNAL = 2;
1251  }
1252
1253  // Specification that applies to database view.
1254  message DatabaseViewSpec {
1255    // Concrete type of the view.
1256    enum ViewType {
1257      // Default unknown view type.
1258      VIEW_TYPE_UNSPECIFIED = 0;
1259
1260      // Standard view.
1261      STANDARD_VIEW = 1;
1262
1263      // Materialized view.
1264      MATERIALIZED_VIEW = 2;
1265    }
1266
1267    // Type of this view.
1268    ViewType view_type = 1;
1269
1270    // Definition of the view.
1271    oneof source_definition {
1272      // Name of a singular table this view reflects one to one.
1273      string base_table = 2;
1274
1275      // SQL query used to generate this view.
1276      string sql_query = 3;
1277    }
1278  }
1279
1280  // Type of this table.
1281  TableType type = 1;
1282
1283  // Output only. Fields specific to a Dataplex table and present only in the
1284  // Dataplex table entries.
1285  DataplexTableSpec dataplex_table = 2
1286      [(google.api.field_behavior) = OUTPUT_ONLY];
1287
1288  // Spec what aplies to tables that are actually views.
1289  // Not set for "real" tables.
1290  DatabaseViewSpec database_view_spec = 3;
1291}
1292
1293// Specification that applies to a fileset. Valid only for entries with the
1294// 'FILESET' type.
1295message FilesetSpec {
1296  // Fields specific to a Dataplex fileset and present only in the Dataplex
1297  // fileset entries.
1298  DataplexFilesetSpec dataplex_fileset = 1;
1299}
1300
1301// Specification that applies to a data source connection. Valid only for
1302// entries with the `DATA_SOURCE_CONNECTION` type.
1303// Only one of internal specs can be set at the time, and cannot
1304// be changed later.
1305message DataSourceConnectionSpec {
1306  // Output only. Fields specific to BigQuery connections.
1307  BigQueryConnectionSpec bigquery_connection_spec = 1;
1308}
1309
1310// Specification that applies to a routine. Valid only for
1311// entries with the `ROUTINE` type.
1312message RoutineSpec {
1313  // The fine-grained type of the routine.
1314  enum RoutineType {
1315    // Unspecified type.
1316    ROUTINE_TYPE_UNSPECIFIED = 0;
1317
1318    // Non-builtin permanent scalar function.
1319    SCALAR_FUNCTION = 1;
1320
1321    // Stored procedure.
1322    PROCEDURE = 2;
1323  }
1324
1325  // Input or output argument of a function or stored procedure.
1326  message Argument {
1327    // The input or output mode of the argument.
1328    enum Mode {
1329      // Unspecified mode.
1330      MODE_UNSPECIFIED = 0;
1331
1332      // The argument is input-only.
1333      IN = 1;
1334
1335      // The argument is output-only.
1336      OUT = 2;
1337
1338      // The argument is both an input and an output.
1339      INOUT = 3;
1340    }
1341
1342    // The name of the argument. A return argument of a function might not have
1343    // a name.
1344    string name = 1;
1345
1346    // Specifies whether the argument is input or output.
1347    Mode mode = 2;
1348
1349    // Type of the argument. The exact value depends on the source system and
1350    // the language.
1351    string type = 3;
1352  }
1353
1354  // The type of the routine.
1355  RoutineType routine_type = 1;
1356
1357  // The language the routine is written in. The exact value depends on the
1358  // source system. For BigQuery routines, possible values are:
1359  //
1360  // * `SQL`
1361  // * `JAVASCRIPT`
1362  string language = 2;
1363
1364  // Arguments of the routine.
1365  repeated Argument routine_arguments = 3;
1366
1367  // Return type of the argument. The exact value depends on the source system
1368  // and the language.
1369  string return_type = 4;
1370
1371  // The body of the routine.
1372  string definition_body = 5;
1373
1374  // Contains fields specific to the source system.
1375  oneof system_spec {
1376    // Fields specific for BigQuery routines.
1377    BigQueryRoutineSpec bigquery_routine_spec = 6;
1378  }
1379}
1380
1381// Specification that applies to a dataset. Valid only for
1382// entries with the `DATASET` type.
1383message DatasetSpec {
1384  // Fields specific to the source system.
1385  oneof system_spec {
1386    // Vertex AI Dataset specific fields
1387    VertexDatasetSpec vertex_dataset_spec = 2;
1388  }
1389}
1390
1391// Specification that applies to
1392// entries that are part `SQL_DATABASE` system
1393// (user_specified_type)
1394message SqlDatabaseSystemSpec {
1395  // SQL Database Engine.
1396  // enum SqlEngine {
1397  //  UNDEFINED = 0;
1398  //  MY_SQL = 1;
1399  //  POSTGRE_SQL = 2;
1400  //  SQL_SERVER = 3;
1401  // }
1402  // Engine of the enclosing database instance.
1403  string sql_engine = 1;
1404
1405  // Version of the database engine.
1406  string database_version = 2;
1407
1408  // Host of the SQL database
1409  // enum InstanceHost {
1410  //  UNDEFINED = 0;
1411  //  SELF_HOSTED = 1;
1412  //  CLOUD_SQL = 2;
1413  //  AMAZON_RDS = 3;
1414  //  AZURE_SQL = 4;
1415  // }
1416  // Host of the enclousing database instance.
1417  string instance_host = 3;
1418}
1419
1420// Specification that applies to
1421// entries that are part `LOOKER` system
1422// (user_specified_type)
1423message LookerSystemSpec {
1424  // ID of the parent Looker Instance. Empty if it does not exist.
1425  // Example value: `someinstance.looker.com`
1426  string parent_instance_id = 1;
1427
1428  // Name of the parent Looker Instance. Empty if it does not exist.
1429  string parent_instance_display_name = 2;
1430
1431  // ID of the parent Model. Empty if it does not exist.
1432  string parent_model_id = 3;
1433
1434  // Name of the parent Model. Empty if it does not exist.
1435  string parent_model_display_name = 4;
1436
1437  // ID of the parent View. Empty if it does not exist.
1438  string parent_view_id = 5;
1439
1440  // Name of the parent View. Empty if it does not exist.
1441  string parent_view_display_name = 6;
1442}
1443
1444// Specification that applies to
1445// all entries that are part of `CLOUD_BIGTABLE` system
1446// (user_specified_type)
1447message CloudBigtableSystemSpec {
1448  // Display name of the Instance. This is user specified and different from
1449  // the resource name.
1450  string instance_display_name = 1;
1451}
1452
1453// Specification that applies to Instance
1454// entries that are part of `CLOUD_BIGTABLE` system.
1455// (user_specified_type)
1456message CloudBigtableInstanceSpec {
1457  // Spec that applies to clusters of an Instance of Cloud Bigtable.
1458  message CloudBigtableClusterSpec {
1459    // Name of the cluster.
1460    string display_name = 1;
1461
1462    // Location of the cluster, typically a Cloud zone.
1463    string location = 2;
1464
1465    // Type of the resource. For a cluster this would be "CLUSTER".
1466    string type = 3;
1467
1468    // A link back to the parent resource, in this case Instance.
1469    string linked_resource = 4;
1470  }
1471
1472  // The list of clusters for the Instance.
1473  repeated CloudBigtableClusterSpec cloud_bigtable_cluster_specs = 1;
1474}
1475
1476// Specification that applies to a Service resource. Valid only
1477// for entries with the `SERVICE` type.
1478message ServiceSpec {
1479  // System spec
1480  oneof system_spec {
1481    // Specification that applies to Instance entries of `CLOUD_BIGTABLE`
1482    // system.
1483    CloudBigtableInstanceSpec cloud_bigtable_instance_spec = 1;
1484  }
1485}
1486
1487// Detail description of the source information of a Vertex model.
1488message VertexModelSourceInfo {
1489  // Source of the model.
1490  enum ModelSourceType {
1491    // Should not be used.
1492    MODEL_SOURCE_TYPE_UNSPECIFIED = 0;
1493
1494    // The Model is uploaded by automl training pipeline.
1495    AUTOML = 1;
1496
1497    // The Model is uploaded by user or custom training pipeline.
1498    CUSTOM = 2;
1499
1500    // The Model is registered and sync'ed from BigQuery ML.
1501    BQML = 3;
1502
1503    // The Model is saved or tuned from Model Garden.
1504    MODEL_GARDEN = 4;
1505  }
1506
1507  // Type of the model source.
1508  ModelSourceType source_type = 1;
1509
1510  // If this Model is copy of another Model. If true then
1511  // [source_type][google.cloud.datacatalog.v1.VertexModelSourceInfo.source_type]
1512  // pertains to the original.
1513  bool copy = 2;
1514}
1515
1516// Specification for vertex model resources.
1517message VertexModelSpec {
1518  // The version ID of the model.
1519  string version_id = 1;
1520
1521  // User provided version aliases so that a model version can be referenced via
1522  // alias
1523  repeated string version_aliases = 2;
1524
1525  // The description of this version.
1526  string version_description = 3;
1527
1528  // Source of a Vertex model.
1529  VertexModelSourceInfo vertex_model_source_info = 4;
1530
1531  // URI of the Docker image to be used as the custom container for serving
1532  // predictions.
1533  string container_image_uri = 5;
1534}
1535
1536// Specification for vertex dataset resources.
1537message VertexDatasetSpec {
1538  // Type of data stored in the dataset.
1539  enum DataType {
1540    // Should not be used.
1541    DATA_TYPE_UNSPECIFIED = 0;
1542
1543    // Structured data dataset.
1544    TABLE = 1;
1545
1546    // Image dataset which supports ImageClassification, ImageObjectDetection
1547    // and ImageSegmentation problems.
1548    IMAGE = 2;
1549
1550    // Document dataset which supports TextClassification, TextExtraction and
1551    // TextSentiment problems.
1552    TEXT = 3;
1553
1554    // Video dataset which supports VideoClassification, VideoObjectTracking and
1555    // VideoActionRecognition problems.
1556    VIDEO = 4;
1557
1558    // Conversation dataset which supports conversation problems.
1559    CONVERSATION = 5;
1560
1561    // TimeSeries dataset.
1562    TIME_SERIES = 6;
1563
1564    // Document dataset which supports DocumentAnnotation problems.
1565    DOCUMENT = 7;
1566
1567    // TextToSpeech dataset which supports TextToSpeech problems.
1568    TEXT_TO_SPEECH = 8;
1569
1570    // Translation dataset which supports Translation problems.
1571    TRANSLATION = 9;
1572
1573    // Store Vision dataset which is used for HITL integration.
1574    STORE_VISION = 10;
1575
1576    // Enterprise Knowledge Graph dataset which is used for HITL labeling
1577    // integration.
1578    ENTERPRISE_KNOWLEDGE_GRAPH = 11;
1579
1580    // Text prompt dataset which supports Large Language Models.
1581    TEXT_PROMPT = 12;
1582  }
1583
1584  // The number of DataItems in this Dataset. Only apply for non-structured
1585  // Dataset.
1586  int64 data_item_count = 1;
1587
1588  // Type of the dataset.
1589  DataType data_type = 2;
1590}
1591
1592// Specification that applies to a model. Valid only for
1593// entries with the `MODEL` type.
1594message ModelSpec {
1595  // System spec
1596  oneof system_spec {
1597    // Specification for vertex model resources.
1598    VertexModelSpec vertex_model_spec = 1;
1599  }
1600}
1601
1602// Business Context of the entry.
1603message BusinessContext {
1604  // Entry overview fields for rich text descriptions of entries.
1605  EntryOverview entry_overview = 1;
1606
1607  // Contact people for the entry.
1608  Contacts contacts = 2;
1609}
1610
1611// Entry overview fields for rich text descriptions of entries.
1612message EntryOverview {
1613  // Entry overview with support for rich text.
1614  //
1615  // The overview must only contain Unicode characters, and should be
1616  // formatted using HTML.
1617  // The maximum length is 10 MiB as this value holds HTML descriptions
1618  // including encoded images. The maximum length of the text without images
1619  // is 100 KiB.
1620  string overview = 1;
1621}
1622
1623// Contact people for the entry.
1624message Contacts {
1625  // A contact person for the entry.
1626  message Person {
1627    // Designation of the person, for example, Data Steward.
1628    string designation = 1;
1629
1630    // Email of the person in the format of `john.doe@xyz`,
1631    // `<john.doe@xyz>`, or `John Doe<john.doe@xyz>`.
1632    string email = 2;
1633  }
1634
1635  // The list of contact people for the entry.
1636  repeated Person people = 1;
1637}
1638
1639// Entry group metadata.
1640//
1641// An `EntryGroup` resource represents a logical grouping of zero or more
1642// Data Catalog [Entry][google.cloud.datacatalog.v1.Entry] resources.
1643message EntryGroup {
1644  option (google.api.resource) = {
1645    type: "datacatalog.googleapis.com/EntryGroup"
1646    pattern: "projects/{project}/locations/{location}/entryGroups/{entry_group}"
1647  };
1648
1649  // The resource name of the entry group in URL format.
1650  //
1651  // Note: The entry group itself and its child resources might not be
1652  // stored in the location specified in its name.
1653  string name = 1;
1654
1655  // A short name to identify the entry group, for example,
1656  // "analytics data - jan 2011". Default value is an empty string.
1657  string display_name = 2;
1658
1659  // Entry group description. Can consist of several sentences or
1660  // paragraphs that describe the entry group contents.
1661  // Default value is an empty string.
1662  string description = 3;
1663
1664  // Output only. Timestamps of the entry group. Default value is empty.
1665  SystemTimestamps data_catalog_timestamps = 4
1666      [(google.api.field_behavior) = OUTPUT_ONLY];
1667}
1668
1669// Request message for
1670// [CreateTagTemplate][google.cloud.datacatalog.v1.DataCatalog.CreateTagTemplate].
1671message CreateTagTemplateRequest {
1672  // Required. The name of the project and the template location
1673  // [region](https://cloud.google.com/data-catalog/docs/concepts/regions).
1674  string parent = 1 [
1675    (google.api.field_behavior) = REQUIRED,
1676    (google.api.resource_reference) = {
1677      child_type: "datacatalog.googleapis.com/TagTemplate"
1678    }
1679  ];
1680
1681  // Required. The ID of the tag template to create.
1682  //
1683  // The ID must contain only lowercase letters (a-z), numbers (0-9),
1684  // or underscores (_), and must start with a letter or underscore.
1685  // The maximum size is 64 bytes when encoded in UTF-8.
1686  string tag_template_id = 3 [(google.api.field_behavior) = REQUIRED];
1687
1688  // Required. The tag template to create.
1689  TagTemplate tag_template = 2 [(google.api.field_behavior) = REQUIRED];
1690}
1691
1692// Request message for
1693// [GetTagTemplate][google.cloud.datacatalog.v1.DataCatalog.GetTagTemplate].
1694message GetTagTemplateRequest {
1695  // Required. The name of the tag template to get.
1696  string name = 1 [
1697    (google.api.field_behavior) = REQUIRED,
1698    (google.api.resource_reference) = {
1699      type: "datacatalog.googleapis.com/TagTemplate"
1700    }
1701  ];
1702}
1703
1704// Request message for
1705// [UpdateTagTemplate][google.cloud.datacatalog.v1.DataCatalog.UpdateTagTemplate].
1706message UpdateTagTemplateRequest {
1707  // Required. The template to update. The `name` field must be set.
1708  TagTemplate tag_template = 1 [(google.api.field_behavior) = REQUIRED];
1709
1710  // Names of fields whose values to overwrite on a tag template. Currently,
1711  // only `display_name` and `is_publicly_readable` can be overwritten.
1712  //
1713  // If this parameter is absent or empty, all modifiable fields
1714  // are overwritten. If such fields are non-required and omitted in the
1715  // request body, their values are emptied.
1716  //
1717  // Note: Updating the `is_publicly_readable` field may require up to 12
1718  // hours to take effect in search results.
1719  google.protobuf.FieldMask update_mask = 2;
1720}
1721
1722// Request message for
1723// [DeleteTagTemplate][google.cloud.datacatalog.v1.DataCatalog.DeleteTagTemplate].
1724message DeleteTagTemplateRequest {
1725  // Required. The name of the tag template to delete.
1726  string name = 1 [
1727    (google.api.field_behavior) = REQUIRED,
1728    (google.api.resource_reference) = {
1729      type: "datacatalog.googleapis.com/TagTemplate"
1730    }
1731  ];
1732
1733  // Required. If true, deletes all tags that use this template.
1734  //
1735  // Currently, `true` is the only supported value.
1736  bool force = 2 [(google.api.field_behavior) = REQUIRED];
1737}
1738
1739// Request message for
1740// [CreateTag][google.cloud.datacatalog.v1.DataCatalog.CreateTag].
1741message CreateTagRequest {
1742  // Required. The name of the resource to attach this tag to.
1743  //
1744  // Tags can be attached to entries or entry groups. An entry can have up to
1745  // 1000 attached tags.
1746  //
1747  // Note: The tag and its child resources might not be stored in
1748  // the location specified in its name.
1749  string parent = 1 [
1750    (google.api.field_behavior) = REQUIRED,
1751    (google.api.resource_reference) = {
1752      child_type: "datacatalog.googleapis.com/Tag"
1753    }
1754  ];
1755
1756  // Required. The tag to create.
1757  Tag tag = 2 [(google.api.field_behavior) = REQUIRED];
1758}
1759
1760// Request message for
1761// [UpdateTag][google.cloud.datacatalog.v1.DataCatalog.UpdateTag].
1762message UpdateTagRequest {
1763  // Required. The updated tag. The "name" field must be set.
1764  Tag tag = 1 [(google.api.field_behavior) = REQUIRED];
1765
1766  // Names of fields whose values to overwrite on a tag. Currently, a tag has
1767  // the only modifiable field with the name `fields`.
1768  //
1769  // In general, if this parameter is absent or empty, all modifiable fields
1770  // are overwritten. If such fields are non-required and omitted in the
1771  // request body, their values are emptied.
1772  google.protobuf.FieldMask update_mask = 2;
1773}
1774
1775// Request message for
1776// [DeleteTag][google.cloud.datacatalog.v1.DataCatalog.DeleteTag].
1777message DeleteTagRequest {
1778  // Required. The name of the tag to delete.
1779  string name = 1 [
1780    (google.api.field_behavior) = REQUIRED,
1781    (google.api.resource_reference) = {
1782      child_type: "datacatalog.googleapis.com/Tag"
1783    }
1784  ];
1785}
1786
1787// Request message for
1788// [CreateTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.CreateTagTemplateField].
1789message CreateTagTemplateFieldRequest {
1790  // Required. The name of the project and the template location
1791  // [region](https://cloud.google.com/data-catalog/docs/concepts/regions).
1792  string parent = 1 [
1793    (google.api.field_behavior) = REQUIRED,
1794    (google.api.resource_reference) = {
1795      type: "datacatalog.googleapis.com/TagTemplate"
1796    }
1797  ];
1798
1799  // Required. The ID of the tag template field to create.
1800  //
1801  // Note: Adding a required field to an existing template is *not* allowed.
1802  //
1803  // Field IDs can contain letters (both uppercase and lowercase), numbers
1804  // (0-9), underscores (_) and dashes (-). Field IDs must be at least 1
1805  // character long and at most 128 characters long. Field IDs must also be
1806  // unique within their template.
1807  string tag_template_field_id = 2 [(google.api.field_behavior) = REQUIRED];
1808
1809  // Required. The tag template field to create.
1810  TagTemplateField tag_template_field = 3
1811      [(google.api.field_behavior) = REQUIRED];
1812}
1813
1814// Request message for
1815// [UpdateTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.UpdateTagTemplateField].
1816message UpdateTagTemplateFieldRequest {
1817  // Required. The name of the tag template field.
1818  string name = 1 [
1819    (google.api.field_behavior) = REQUIRED,
1820    (google.api.resource_reference) = {
1821      type: "datacatalog.googleapis.com/TagTemplateField"
1822    }
1823  ];
1824
1825  // Required. The template to update.
1826  TagTemplateField tag_template_field = 2
1827      [(google.api.field_behavior) = REQUIRED];
1828
1829  // Optional. Names of fields whose values to overwrite on an individual field
1830  // of a tag template. The following fields are modifiable:
1831  //
1832  // * `display_name`
1833  // * `type.enum_type`
1834  // * `is_required`
1835  //
1836  // If this parameter is absent or empty, all modifiable fields
1837  // are overwritten. If such fields are non-required and omitted in the request
1838  // body, their values are emptied with one exception: when updating an enum
1839  // type, the provided values are merged with the existing values. Therefore,
1840  // enum values can only be added, existing enum values cannot be deleted or
1841  // renamed.
1842  //
1843  // Additionally, updating a template field from optional to required is
1844  // *not* allowed.
1845  google.protobuf.FieldMask update_mask = 3
1846      [(google.api.field_behavior) = OPTIONAL];
1847}
1848
1849// Request message for
1850// [RenameTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.RenameTagTemplateField].
1851message RenameTagTemplateFieldRequest {
1852  // Required. The name of the tag template field.
1853  string name = 1 [
1854    (google.api.field_behavior) = REQUIRED,
1855    (google.api.resource_reference) = {
1856      type: "datacatalog.googleapis.com/TagTemplateField"
1857    }
1858  ];
1859
1860  // Required. The new ID of this tag template field. For example,
1861  // `my_new_field`.
1862  string new_tag_template_field_id = 2 [(google.api.field_behavior) = REQUIRED];
1863}
1864
1865// Request message for
1866// [RenameTagTemplateFieldEnumValue][google.cloud.datacatalog.v1.DataCatalog.RenameTagTemplateFieldEnumValue].
1867message RenameTagTemplateFieldEnumValueRequest {
1868  // Required. The name of the enum field value.
1869  string name = 1 [
1870    (google.api.field_behavior) = REQUIRED,
1871    (google.api.resource_reference) = {
1872      type: "datacatalog.googleapis.com/TagTemplateFieldEnumValue"
1873    }
1874  ];
1875
1876  // Required. The new display name of the enum value. For example,
1877  // `my_new_enum_value`.
1878  string new_enum_value_display_name = 2
1879      [(google.api.field_behavior) = REQUIRED];
1880}
1881
1882// Request message for
1883// [DeleteTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.DeleteTagTemplateField].
1884message DeleteTagTemplateFieldRequest {
1885  // Required. The name of the tag template field to delete.
1886  string name = 1 [
1887    (google.api.field_behavior) = REQUIRED,
1888    (google.api.resource_reference) = {
1889      type: "datacatalog.googleapis.com/TagTemplateField"
1890    }
1891  ];
1892
1893  // Required. If true, deletes this field from any tags that use it.
1894  //
1895  // Currently, `true` is the only supported value.
1896  bool force = 2 [(google.api.field_behavior) = REQUIRED];
1897}
1898
1899// Request message for
1900// [ListTags][google.cloud.datacatalog.v1.DataCatalog.ListTags].
1901message ListTagsRequest {
1902  // Required. The name of the Data Catalog resource to list the tags of.
1903  //
1904  // The resource can be an [Entry][google.cloud.datacatalog.v1.Entry]
1905  // or an [EntryGroup][google.cloud.datacatalog.v1.EntryGroup]
1906  // (without `/entries/{entries}` at the end).
1907  string parent = 1 [
1908    (google.api.field_behavior) = REQUIRED,
1909    (google.api.resource_reference) = {
1910      child_type: "datacatalog.googleapis.com/Tag"
1911    }
1912  ];
1913
1914  // The maximum number of tags to return. Default is 10. Maximum limit is 1000.
1915  int32 page_size = 2;
1916
1917  // Pagination token that specifies the next page to return. If empty, the
1918  // first page is returned.
1919  string page_token = 3;
1920}
1921
1922// Response message for
1923// [ListTags][google.cloud.datacatalog.v1.DataCatalog.ListTags].
1924message ListTagsResponse {
1925  // [Tag][google.cloud.datacatalog.v1.Tag] details.
1926  repeated Tag tags = 1;
1927
1928  // Pagination token of the next results page. Empty if there are
1929  // no more items in results.
1930  string next_page_token = 2;
1931}
1932
1933// Request message for
1934// [ReconcileTags][google.cloud.datacatalog.v1.DataCatalog.ReconcileTags].
1935message ReconcileTagsRequest {
1936  // Required. Name of [Entry][google.cloud.datacatalog.v1.Entry] to be tagged.
1937  string parent = 1 [
1938    (google.api.field_behavior) = REQUIRED,
1939    (google.api.resource_reference) = {
1940      type: "datacatalog.googleapis.com/Entry"
1941    }
1942  ];
1943
1944  // Required. The name of the tag template, which is used for reconciliation.
1945  string tag_template = 2 [
1946    (google.api.field_behavior) = REQUIRED,
1947    (google.api.resource_reference) = {
1948      type: "datacatalog.googleapis.com/TagTemplate"
1949    }
1950  ];
1951
1952  // If set to `true`, deletes entry tags related to a tag template
1953  // not listed in the tags source from an entry. If set to `false`,
1954  // unlisted tags are retained.
1955  bool force_delete_missing = 3;
1956
1957  // A list of tags to apply to an entry. A tag can specify a
1958  // tag template, which must be the template specified in the
1959  // `ReconcileTagsRequest`.
1960  // The sole entry and each of its columns must be mentioned at most once.
1961  repeated Tag tags = 4;
1962}
1963
1964// [Long-running operation][google.longrunning.Operation]
1965// response message returned by
1966// [ReconcileTags][google.cloud.datacatalog.v1.DataCatalog.ReconcileTags].
1967message ReconcileTagsResponse {
1968  // Number of tags created in the request.
1969  int64 created_tags_count = 1;
1970
1971  // Number of tags updated in the request.
1972  int64 updated_tags_count = 2;
1973
1974  // Number of tags deleted in the request.
1975  int64 deleted_tags_count = 3;
1976}
1977
1978// [Long-running operation][google.longrunning.Operation]
1979// metadata message returned by the
1980// [ReconcileTags][google.cloud.datacatalog.v1.DataCatalog.ReconcileTags].
1981message ReconcileTagsMetadata {
1982  // Enum holding possible states of the reconciliation operation.
1983  enum ReconciliationState {
1984    // Default value. This value is unused.
1985    RECONCILIATION_STATE_UNSPECIFIED = 0;
1986
1987    // The reconciliation has been queued and awaits for execution.
1988    RECONCILIATION_QUEUED = 1;
1989
1990    // The reconciliation is in progress.
1991    RECONCILIATION_IN_PROGRESS = 2;
1992
1993    // The reconciliation has been finished.
1994    RECONCILIATION_DONE = 3;
1995  }
1996
1997  // State of the reconciliation operation.
1998  ReconciliationState state = 1;
1999
2000  // Maps the name of each tagged column (or empty string for a
2001  // sole entry) to tagging operation [status][google.rpc.Status].
2002  map<string, google.rpc.Status> errors = 2;
2003}
2004
2005// Request message for
2006// [ListEntries][google.cloud.datacatalog.v1.DataCatalog.ListEntries].
2007message ListEntriesRequest {
2008  // Required. The name of the entry group that contains the entries to list.
2009  //
2010  // Can be provided in URL format.
2011  string parent = 1 [
2012    (google.api.field_behavior) = REQUIRED,
2013    (google.api.resource_reference) = {
2014      type: "datacatalog.googleapis.com/EntryGroup"
2015    }
2016  ];
2017
2018  // The maximum number of items to return. Default is 10. Maximum limit is
2019  // 1000. Throws an invalid argument if `page_size` is more than 1000.
2020  int32 page_size = 2;
2021
2022  // Pagination token that specifies the next page to return. If empty, the
2023  // first page is returned.
2024  string page_token = 3;
2025
2026  // The fields to return for each entry. If empty or omitted, all
2027  // fields are returned.
2028  //
2029  // For example, to return a list of entries with only the `name` field,
2030  // set `read_mask` to only one path with the `name` value.
2031  google.protobuf.FieldMask read_mask = 4;
2032}
2033
2034// Response message for
2035// [ListEntries][google.cloud.datacatalog.v1.DataCatalog.ListEntries].
2036message ListEntriesResponse {
2037  // Entry details.
2038  repeated Entry entries = 1;
2039
2040  // Pagination token of the next results page. Empty if there are no more items
2041  // in results.
2042  string next_page_token = 2;
2043}
2044
2045// Request message for
2046// [StarEntry][google.cloud.datacatalog.v1.DataCatalog.StarEntry].
2047message StarEntryRequest {
2048  // Required. The name of the entry to mark as starred.
2049  string name = 1 [
2050    (google.api.field_behavior) = REQUIRED,
2051    (google.api.resource_reference) = {
2052      type: "datacatalog.googleapis.com/Entry"
2053    }
2054  ];
2055}
2056
2057// Response message for
2058// [StarEntry][google.cloud.datacatalog.v1.DataCatalog.StarEntry].
2059// Empty for now
2060message StarEntryResponse {}
2061
2062// Request message for
2063// [UnstarEntry][google.cloud.datacatalog.v1.DataCatalog.UnstarEntry].
2064message UnstarEntryRequest {
2065  // Required. The name of the entry to mark as **not** starred.
2066  string name = 1 [
2067    (google.api.field_behavior) = REQUIRED,
2068    (google.api.resource_reference) = {
2069      type: "datacatalog.googleapis.com/Entry"
2070    }
2071  ];
2072}
2073
2074// Response message for
2075// [UnstarEntry][google.cloud.datacatalog.v1.DataCatalog.UnstarEntry].
2076// Empty for now
2077message UnstarEntryResponse {}
2078
2079// Request message for
2080// [ImportEntries][google.cloud.datacatalog.v1.DataCatalog.ImportEntries]
2081// method.
2082message ImportEntriesRequest {
2083  // Required. Target entry group for ingested entries.
2084  string parent = 1 [
2085    (google.api.field_behavior) = REQUIRED,
2086    (google.api.resource_reference) = {
2087      child_type: "datacatalog.googleapis.com/Entry"
2088    }
2089  ];
2090
2091  // Source of imported entries, e.g. dump stored in a Cloud Storage
2092  oneof source {
2093    // Path to a Cloud Storage bucket that contains a dump ready for ingestion.
2094    string gcs_bucket_path = 2;
2095  }
2096
2097  // Optional. (Optional) Dataplex task job id, if specified will be used as
2098  // part of ImportEntries LRO ID
2099  string job_id = 3 [(google.api.field_behavior) = OPTIONAL];
2100}
2101
2102// Response message for [long-running operation][google.longrunning.Operation]
2103// returned by the
2104// [ImportEntries][google.cloud.datacatalog.v1.DataCatalog.ImportEntries].
2105message ImportEntriesResponse {
2106  // Cumulative number of entries created and entries updated as a result of
2107  // import operation.
2108  optional int64 upserted_entries_count = 5;
2109
2110  // Number of entries deleted as a result of import operation.
2111  optional int64 deleted_entries_count = 6;
2112}
2113
2114// Metadata message for [long-running operation][google.longrunning.Operation]
2115// returned by the
2116// [ImportEntries][google.cloud.datacatalog.v1.DataCatalog.ImportEntries].
2117message ImportEntriesMetadata {
2118  // Enum holding possible states of the import operation.
2119  enum ImportState {
2120    // Default value. This value is unused.
2121    IMPORT_STATE_UNSPECIFIED = 0;
2122
2123    // The dump with entries has been queued for import.
2124    IMPORT_QUEUED = 1;
2125
2126    // The import of entries is in progress.
2127    IMPORT_IN_PROGRESS = 2;
2128
2129    // The import of entries has been finished.
2130    IMPORT_DONE = 3;
2131
2132    // The import of entries has been abandoned in favor of a newer request.
2133    IMPORT_OBSOLETE = 4;
2134  }
2135
2136  // State of the import operation.
2137  ImportState state = 1;
2138
2139  // Partial errors that are encountered during the ImportEntries operation.
2140  // There is no guarantee that all the encountered errors are reported.
2141  // However, if no errors are reported, it means that no errors were
2142  // encountered.
2143  repeated google.rpc.Status errors = 2;
2144}
2145
2146// Request message for
2147// [ModifyEntryOverview][google.cloud.datacatalog.v1.DataCatalog.ModifyEntryOverview].
2148message ModifyEntryOverviewRequest {
2149  // Required. The full resource name of the entry.
2150  string name = 1 [
2151    (google.api.field_behavior) = REQUIRED,
2152    (google.api.resource_reference) = {
2153      type: "datacatalog.googleapis.com/Entry"
2154    }
2155  ];
2156
2157  // Required. The new value for the Entry Overview.
2158  EntryOverview entry_overview = 2 [(google.api.field_behavior) = REQUIRED];
2159}
2160
2161// Request message for
2162// [ModifyEntryContacts][google.cloud.datacatalog.v1.DataCatalog.ModifyEntryContacts].
2163message ModifyEntryContactsRequest {
2164  // Required. The full resource name of the entry.
2165  string name = 1 [
2166    (google.api.field_behavior) = REQUIRED,
2167    (google.api.resource_reference) = {
2168      type: "datacatalog.googleapis.com/Entry"
2169    }
2170  ];
2171
2172  // Required. The new value for the Contacts.
2173  Contacts contacts = 2 [(google.api.field_behavior) = REQUIRED];
2174}
2175
2176// Metadata automatically ingested from Google Cloud resources like BigQuery
2177// tables or Pub/Sub topics always uses enum values from `EntryType` as the type
2178// of entry.
2179//
2180// Other sources of metadata like Hive or Oracle databases can identify the type
2181// by either using one of the enum values from `EntryType` (for example,
2182// `FILESET` for a Cloud Storage fileset) or specifying a custom value using
2183// the [`Entry`](#resource:-entry) field `user_specified_type`. For more
2184// information, see
2185// [Surface files from Cloud Storage with fileset
2186// entries](/data-catalog/docs/how-to/filesets) or [Create custom entries for
2187// your data sources](/data-catalog/docs/how-to/custom-entries).
2188enum EntryType {
2189  // Default unknown type.
2190  ENTRY_TYPE_UNSPECIFIED = 0;
2191
2192  // The entry type that has a GoogleSQL schema, including
2193  // logical views.
2194  TABLE = 2;
2195
2196  // The type of models.
2197  //
2198  // For more information, see [Supported models in BigQuery
2199  // ML](/bigquery/docs/bqml-introduction#supported_models).
2200  MODEL = 5;
2201
2202  // An entry type for streaming entries. For example, a Pub/Sub topic.
2203  DATA_STREAM = 3;
2204
2205  // An entry type for a set of files or objects. For example, a
2206  // Cloud Storage fileset.
2207  FILESET = 4;
2208
2209  // A group of servers that work together. For example, a Kafka cluster.
2210  CLUSTER = 6;
2211
2212  // A database.
2213  DATABASE = 7;
2214
2215  // Connection to a data source. For example, a BigQuery
2216  // connection.
2217  DATA_SOURCE_CONNECTION = 8;
2218
2219  // Routine, for example, a BigQuery routine.
2220  ROUTINE = 9;
2221
2222  // A Dataplex lake.
2223  LAKE = 10;
2224
2225  // A Dataplex zone.
2226  ZONE = 11;
2227
2228  // A service, for example, a Dataproc Metastore service.
2229  SERVICE = 14;
2230
2231  // Schema within a relational database.
2232  DATABASE_SCHEMA = 15;
2233
2234  // A Dashboard, for example from Looker.
2235  DASHBOARD = 16;
2236
2237  // A Looker Explore.
2238  //
2239  // For more information, see [Looker Explore API]
2240  // (https://developers.looker.com/api/explorer/4.0/methods/LookmlModel/lookml_model_explore).
2241  EXPLORE = 17;
2242
2243  // A Looker Look.
2244  //
2245  // For more information, see [Looker Look API]
2246  // (https://developers.looker.com/api/explorer/4.0/methods/Look).
2247  LOOK = 18;
2248}
2249